Posts with «arduino» label

Wood and Brass Drink Temperature Monitor Looks Good, Has Class

We’ve all been there. Your current project has hit a wall, or the next step will take days to complete, and you need something to do in the meantime. So you start a project that you envision will fit nicely in the gap, and then, inevitably, it doesn’t. Maybe it even takes so long that the original project gets finished first. So what? There’s nothing wrong with that, especially when the filler project turns out as well as this drink temperature monitor disguised as a circuit sculpture (video, embedded below). Just put your mug on the coaster, and the weight of it activates a hidden switch, which causes the sculpture to display its secret LEDs.

[MakeFunStuff] wanted to make something that looked less like a circuit and more like art, while building a tool that could determine the relative hotness of a beverage. Such a a useful circuit sculpture sounds like a tall order to us, but [MakeFunStuff] pulled it off with finesse and style.

The circuit is based around this Sputnik-looking standalone IR temperature sensor which, as [MakeFunStuff] aptly describes, is “a single-pixel infrared camera that picks up everything in a 90° cone starting at the sensor.”

[MakeFunStuff] paired this easy-to-use sensor with an Arduino Nano and five LEDs that show how hot a beverage is on a scale from 1 to 5. The sensor is hidden in plain sight, suspended from the top of the brass rod sculpture and blending in perfectly. We love that the LEDs are hidden behind a thin layer of carefully-drilled wood and agree that a drill press would have been much easier.

The code is set up for just about every temperature scale from Celsius to Rømer, so that solves that argument. [MakeFunStuff] went with the Kelvin scale because science. Our favorite thing about this video is that [MakeFunStuff] shared their failures and fixes as they built their way toward answering the questions of how to suspend the sensor over the drink, and how best to display the heat level while hiding the electronics. Go grab a hot cup of something and check it out after the break while you let it cool off the normie way.

We admit that we would likely zone out while waiting for the LEDs to disappear. Here’s a smart coaster that uses an ESP8266 to send a message to Discord when your beverage has reached the perfect drinking temperature.

Thanks for the hot tip, [Perry]!

Sunlight-Based Life Clock Predicts Your Darkest Hour

The past year has been quite a ride for everyone on Earth. But you never know which day is going to be your last, so you might as well live a little, eh? This clock doesn’t actually know when you’ll kick off, either. But just for fun, it predicts the number of years remaining until you go to that hackerspace in the sky by hazarding a guess that’s based on your current age and the latest life expectancy tables. Don’t like the outcome? It’s completely randomized, so just push the button and get a set of numbers: the age you might die, and the percentage of life elapsed and remaining.

We love the design of this calculated doom clock, and it’s quite simple inside — an Arduino Pro Mini outputs the graph on an 2.9″ e-paper display, and both are powered with a 5.5 V solar panel. Just suction cup that puppy to the window and you’ll get automatic updates about your impending demise on sunny days, and none on cloudy days.

Want a more realistic picture of your mortality? Here’s a clock that counts down to your 80th birthday.

The HackadayPrize2021 is Sponsored by:

Cheap, Expandable Floor Piano Plays with Heart and Soul

Ever since we saw the movie Big, we’ve wanted a floor piano. Still do, actually. We sometimes wonder how many floor pianos that movie has sold. It’s definitely launched some builds, too, but perhaps none as robust as this acrylic and wooden beauty by [FredTSL]. If you want more technical detail, check out the project on IO.

The best part is that this piano is modular and easily expands from 1 to 8 octaves. Each octave runs on an Arduino Mega, with the first octave set up as a primary and the others as secondaries. When [FredTSL] turns it on, the primary octave sends a message to find out how many octaves are out there, and then it assigns each one a number. Whenever a note is played via conductive fabric and sensor, the program fetches the key number and octave number and sends the message back to the primary Mega, which plays the note through a MIDI music shield.

We think this looks fantastic and super fun to dance around on. Be sure to check out the build log in photos, and stick around after the break, because you’d better believe they busted out some Heart and Soul on this baby. After all, it’s pretty much mandatory at this point.

Wish you could build a floor piano but don’t have the space or woodworking skills? Here’s a smaller, wireless version that was built in 24 hours.

Circuit VR: Arduino Virtually Meets Analog

There was a time when building electronics and building software were two distinct activities. These days, almost any significant electronic project will use a CPU somewhere, or — at least — could. Using a circuit simulator can get you part of the way and software simulators abound. But cosimulation — simulating both analog circuits and a running processor — is often only found in high-end simulation products. But I noticed the other day the feature quietly snuck into our favorite Web-based simulator, Falstad.

The classic simulator is on the left and the virtual Arduino is on the right.

Back in March, the main project added work from [Mark McGarry] to support AVR8js written by [Uri Shaked]. The end result is you can have the circuit simulator on the left of the screen and a Web-based Arduino IDE on the right side. But how does it work beyond the simple demo? We wanted to find out.

The screen looks promising. The familiar simulator is to the left and the Arduino IDE — sort of — is to the right. There’s serial output under the source code, but it doesn’t scroll very well, so if you output a lot of serial data, it is hard to read.

Nothing is Perfect

I love just about everything about the Falstad simulator and having an Arduino cosimulation is great. But there is one really important issue that may get resolved eventually. Normally when you draw a schematic you can save it as text or encoded in a link. If you click the link or import the text, everything is back to the way it was when you saved. I use that in a lot of Circuit VR posts so you can click on a circuit and see it live.

However, the simulator does not save the source code in the virtual Arduino. You have to do that yourself. That means if you have everything working, save your circuit, and close your browser you’ll have to recreate your Arduino code next time. Luckily, I tested this out before I lost any work. There should be a big red warning on the page, though.

What that means, though, is that I can’t give you a link to follow along with examples. Here’s what you can do:

  1. Have a look at the source code.
  2. Open the simulator.
  3. Copy the text from the top of the source code comments and paste it into the simulator (detailed instructions in the comments).

Just don’t forget to save your source code changes. If you make changes to the circuit, you’ll want to export them to text and copy them into the source code so you can save everything together.

An Example

Test schematic.

I wanted an easy example that showed the benefit of using cosimulation. I settled on looking at some alternatives for doing an analog to digital conversion using successive approximation. A virtual potentiometer provides an input voltage. There’s a comparator and a buffered PWM output. Here’s the schematic:

Input/Output

There are three interface points to the Arduino. The PWM output is set as an external voltage using the “Inputs and Sources” components (remember, the output from the Arduino is the input to the circuit). Conversely, the comparator output and the connection to the Arduino’s analog converter (A0) are labeled nodes from the “Output and Labels” menu. The names are significant, including the spaces.

The Code

In theory, the code is pretty simple. You guess a voltage and read the output of the comparator to see if you are right. There are two methods in the code and you can switch between them by setting the convert define to convert0 or convert1.

On every pass through the loop, the code calls one of the convert functions to manage the successive approximation process through a different algorithm. It also updates the PWM output on each pass.

The first approximation algorithm is very simple but not very efficient. It guesses each output voltage starting at 0 and moving up 1/255 V on each pass. When the comparator goes from false to true, you know the input voltage must be less than the current voltage but more than the previous voltage.

The second algorithm is smarter and works like a binary search. The first guess is 128/255. That voltage is either higher or lower than our target. If it is lower, we remember that the bit should be on and, either way, move to the next bit. In other words, the second test will be either 64/255 or 128/255 + Simulide64/255. Again, the new value is either high or low and will determine the state of the next bit.

The first algorithm could finish fast or it may have to count all the way to 255 to find the answer. The second algorithm always takes 8 measurements. There’s no way for the comparator to tell us our reference voltage is exactly equal to the input even if we could define what that means for an analog signal. So we have to measure each bit and decide if it should be on or off.

The output appears in the serial terminal. The first number is the result of the conversion and the second is the value from the built-in converter for the same voltage.

Voltage Reference

Generating the reference voltage is the key. It would be possible to use 8 output bits and an R2R network to generate an output voltage quickly, but that eats up a lot of pins. Instead, I used one pin to generate voltages using PWM. This isn’t as fast, of course, because you have to allow the RC filter time for the voltage to reach its desired value.

Pin 9 generates a PWM signal using a time-honored technique. Suppose you want to generate 20/255 (about 8% duty cycle). You take an 8-bit accumulator and add 20 to it repeatedly. The PWM output is the carry out of the top bit. You can find a spreadsheet with the logic, but you’ll have to imagine the output waves are squares since the spreadsheet helpfully draws straight lines between points.

This spreadsheet models the PWM output logic.

To do this right, the code should run on a precise interrupt and equalize the time between outputs. However, for this quick demo, I’ve assumed the time for calling the main loop will be regular enough. I considered doing it on an interrupt, but — honestly — I’m not sure how faithful the simulator is, how time-accurate it is, and it doesn’t appear you can easily add libraries to it, so you’d almost certainly have to manage the interrupts at the register level.

The output signal gets smoothed by an RC filter. The values here are interesting and it is fun to watch the scope as you vary the parameters in this part of the circuit. You want a noise-free reference signal. So that implies a big capacitor. However, a big capacitor takes more time to charge and discharge, so the voltage will take longer to settle. It is a classic trade-off. Do you want a noisy fast response or a clean slow response?

In this case, the pot probably doesn’t change very fast, but in real life, the input signal might be changing all the time and you might even consider a sample and hold on that input to make sure it doesn’t change while you are in the middle of guessing.

Tuning

Obviously, you can change the RC values easily in the simulator. It is even possible to add sliders to set the values graphically while the simulation is running (the pot is set up to do this already). Changing the code, however, requires a stop and restart.

In the code, you can change the number of loop cycles the convert routines wait to allow a new PWM value to settle (SETTLELOOPS) and how long to pause between readings (SAMPLOOP). The interactions between these numbers and the RC values are critical. Larger RC time constants require more time to produce correct results. Smaller RC numbers will require less time, but the noise will introduce errors. Take your pick.

PWM signal with 2uF capacitor.
PWM signal with 47uF capacitor.

The Verdict

This is a toy example. The PWM generation suffers from some issues and PWM isn’t a great idea for a conversion reference. Still, it shows a good bit of what is possible with the cosimulation available with Falstad. I am really looking forward to the next time I need some exotic signal fed into a circuit. Just using the Arduino as a function generator will have its uses.

I do wish you could add libraries and save an entire project more easily. Still, there are many what-if scenarios you could simulate quickly and easily using this tool. Since it has only been in the code base for a few months, I’m hopeful some of these issues will work out over time. Add debugging to the mix, and it would be a real winner.

Tinkercad allows you to simulate Arduino, but not with the circuit sophistication of Falstad. It does require an install, but we are always surprised we don’t hear more about Simulide.

12-Arduino Orchestra Plays Star Wars Fanfare

Back in the early days of the musical synthesizer, some designers who wished for polyphony in their instruments would simply build multiple tone-generators for as many notes as they wished to play. [Kevin] took that same approach with his Arduino orchestra, and set about having it play the closing number from Star Wars: A New Hope.

The build consists of twelve Arduino Nanos, each wired up to power, a speaker, and the same MIDI cable. The MIDI cable carries note data for each Arduino on a separate MIDI channel, allowing each to play its own role in the orchestra. [Kevin] then set about arranging the Star Wars music into a MIDI file suitable for the Arduinos, roughly setting six voices to high parts and six voices low. The Arduinos play the notes received using the simple tone() function. The result is a very chiptune rendition of the end of the fourth episode of the world’s most famous space opera.

It may not be neat, tidy, or efficient, but it certainly is fun. Twelve Arduinos bleeping away with their flashing LEDs and cute little speakers makes quite the conversation piece. It’s a similar approach to the Floppotron, which plays more notes by adding more floppy drives. We’ve also seen the same thing done with SEGA sound chips. Video after the break.

Hack a Day 11 Jun 16:00

Redox Redux: Split Keeb Gets a Num Pad

What’s the worst thing about split keyboards? If they have one general fault, it’s that almost none of them have a number pad. If you can fly on that thing, but struggle with using the top row numbers, you will miss the num pad terribly, trust us. So what’s the answer? Design your own keyboard, of course. [ToasterFuel] had enough bread lying around to cook up a little experiment for his first keyboard build, and we think the result is well done, which is kind of rare for first keebs.

This design is based on the Redox, itself a remix of the ErgoDox that aims to address the common complaints about the latter — it’s just too darn big, and the thumb clusters are almost unusable. We love how customized this layout is, with its sprinkling of F keys and Escape in the Caps Lock position. Under those keycaps you’ll find 100% Cherry MX greens, so [ToasterFuel] must have pretty strong fingers to pound those super clackers.

Everything else under the hood is pretty standard, with a pair of Arduino Pro Micros running the show. [ToasterFuel] had to wire up the whole thing by hand because of the num pad, and we’re impressed that he built this entire project in just three weeks. And that includes writing his own firmware!

Already found or built a split you love, but still miss the num pad? Why not build one to match your keyboard?

Automated Sentry Turret For Your Secret Lab

There are few things as frustrating when you’re trying to get some serious hacking done than intruders repeatedly showing up without permission. [All Parts Combined] has the solution for you, with a Kinect-based robotic sentry turret to keep them at bay.

The system consists of a Microsoft Kinect V2 connected to a PC, which runs an app to do all the processing, and outputs the targeting information to an Arduino over serial. The Arduino controls a simple 2-axis servo mount with an electric airsoft gun zip-tied to it. The trigger switch is replaced with a relay, also connected to the Arduino.

The Kinect V2 comes with SDKs that really simplify tracking human movement, and outputs the data in an easy-to-use format. [All Parts Combined] used the SDK in Unity, which allows him to choose which body parts to track. He added scripts that detect a few basic gestures, issues voice commands, and generates the serial commands for the Arduino. The servo angles are calculated with simple geometry, using XY coordinates of the target received from the SDK, and the known distance between the Kinect and turret. When an intruder enters the Kinect’s field of view it immediately starts aiming at the intruder’s heart, issues a “Hands Up!” command, and tells the intruder to leave. If the intruder doesn’t comply, it starts an audible countdown before firing. [All Parts Combined] also added a secret disarming gesture (double hand pistols), which turns the turret into an apologetic comrade. All it needs is a Portal-inspired enclosure.

It’s a fun project that illustrates how the Kinect can make complex computer vision tasks relatively simple. Unfortunately the V2 is no longer in production, having been replaced by the more expensive, developer focused Azure Kinect. We’ve covered several Kinect-based projects, including a 3D room scanner and a robotic basketball hoop.

Hack a Day 07 Jun 03:01

[Emily]’s Eerie Educational Electric Eyeball Entertains

Like many of us, [Emily’s Electric Oddities] has had a lot of time for projects over the past year or so, including one that had been kicking around since late 2018. It all started at the Hackaday Superconference, when [Emily] encountered the Adafruit Hallowing board in the swag bag. Since that time, [Emily] has wanted to display the example code eyeball movement on a CRT, but didn’t really know how to go about it. Spoiler alert: it works now.

See? It’s educational.

Eventually, [Emily] learned about the TV out library for Arduino and got everything working properly — the eyeball would move around with the joystick, blink when the button is pressed, and the pupil would respond visually to changes in ambient light. The only problem was that the animation moved at a lousy four frames per second. Well, until she got Hackaday’s own [Roger Cheng] involved.

[Roger] was able to streamline the code to align with [Emily]’s dreams, and then it was on to our favorite part of this build — the cabinet design. Since the TV out library is limited to black and white output without shades of gray, Emily took design cues from the late 70s/early 80s, particularly the yellow and wood of the classic PONG cabinet. We love it!

Is Your Pet Eye the worst video game ever, as [Emily] proclaims it to be? Not a chance, and we’re pretty sure that the title still rests with Desert Bus, anyway. Even though the game only lasts until the eye gets tired and goes to sleep, it’s way more fun than Your Pet Rock. Don’t miss the infomercial/explanation/demonstration video after the break. If one video is just not enough, learn more about [Emily’s] philosophy of building weird projects from the Supercon talk she presented. It’s also worth mentioning that this one fits right into the Reinvented Retro contest.

Why are eyeballs so compelling? We can’t say for sure, but boy, this eyeball web cam sure is disconcerting.

Thanks for the tip, [Jake_of_All_Trades]!

Hack a Day 31 May 21:01

Robot Arm Adds Freedom to 3D Printer

3D printers are an excellent tool to have on hand, largely because they can print other tools and parts rapidly without needing to have them machined or custom-ordered. 3D printers have dropped in price as well, so it’s possible to have a fairly capable machine in your own home for only a few hundred dollars. With that being said, there are some limitations to their function but some of them can be mitigated by placing the printer head on a robot arm rather than on a traditional fixed frame.

The experimental 3D printer at the University of Nottingham adds a six-axis robotic arm to their printer head, which allows for a few interesting enhancements. Since the printer head can print in any direction, it allows material to be laid down in ways which enhance the strength of the material by ensuring the printed surface is always correctly positioned with respect to new material from the printer head. Compared to traditional 3D printers which can only print on a single plane, this method also allows for carbon fiber-reinforced prints since the printer head can follow non-planar paths.

Of course, the control of this printer is much more complicated than a traditional three-axis printer, but it is still within the realm of possibility with readily-available robotics and microcontrollers. And this is a hot topic right now: we’ve seen five-axis 3D printers, four-axis 3D printers, and even some clever slicer hacks that do much the same thing. Things are finally heating up in non-planar 3D printing!

Thanks to [Feinfinger] for the tip!

Ground Effect Drone Flies Autonomously

There are a number of famous (yet fictional) sea monsters in the lakes and oceans around the world, but in the Caspian Sea one turned out to be real. This is where the first vehicles specifically built to take advantage of the ground effect were built by the Soviet Union, and one of the first was known as the Caspian Sea Monster due to the mystery surrounding its discovery. While these unique airplane/boat hybrids were eventually abandoned after several were built for military use, the style of aircraft still has some niche uses and can even be used as a platform for autonomous drones.

This build from [Think Flight] started off as a simple foam model of just such a ground effect vehicle (or “ekranoplan”) in his driveway. With a few test flights the model was refined enough to attach a small propeller and battery. The location of the propeller changed from rear-mounted to front-mounted and then back to rear-mounted for the final version, with each configuration having different advantages and disadvantages. The final model includes an Arudino running an autopilot program called Ardupilot, and with an air speed sensor installed the drone is able to maintain flight in the ground effect and autonomously navigate pre-programmed waypoints around a lake at high speed.

For a Cold War technology that’s been largely abandoned by militaries in favor of other modes of transportation due to its limited use case and extremely narrow flight tolerances, ground effect vehicles are relatively popular as remote controlled vehicles. This RC ekranoplan used the same Ardupilot software but paired with a LIDAR system instead of GPS to navigate its way around its environment.

Thanks to [TTN] for the tip!