Posts with «arduino hacks» label

Laser Rangefinder Brought to Life With Arduino

Range finders are amazing tools for doing pretty much anything involving distance calculations. Want to blink some lights when people are nearby? There’s a rangefinder for that. Need to tell how far away the next peak of a mountain range is? There’s a rangefinder for that. But if you’re new to range finders and want one that’s hackable and configurable, look no further than the SF02/F rangefinder with the Arduino shield, and [Laser Developer]’s dive into what this pair can do.

Once the rangefinder and shield have been paired is when the magic really starts to happen. Using USB, the Arduino can instantly report a huge amount of raw data coming from the rangefinder. From there, [Laser Developer] shows us how to put the device into a “settings” mode which expands the capabilities of the rangefinder even more. The data can be dumped into a graph, for example, which can show trends between distance, laser strength, and many other data sets. [Laser Developer] goes one step further and demonstrates how to use this to calculate the speed of light, but from there pretty much anything else is possible as well.

And while you can just buy a rangefinder off the shelf, they are fairly limiting in their features and can cost exponentially more. This is a great start into using a tool like this, especially if you need specific data or have a unique application. But, if laser range finding isn’t for you or if this project is too expensive, maybe this $5 ultrasonic rangefinder will work better for your application.


Filed under: Arduino Hacks
Hack a Day 22 Oct 03:00

The Case for Arduino in “Real Engineering”

For over ten years, Arduino has held onto its popularity as “that small dev-board aimed to get both artists and electronics enthusiasts excited about physical computing.” Along the way, it’s found a corner in college courses, one-off burning man rigs, and countless projects that have landed here. Without a doubt, the Arduino has a cushy home among hobbyists, but it also lives elsewhere. Arduino lives in engineering design labs as consumer products move from feature iterations into user testing. It’s in the chem labs when scientists need to get some sensor data into their pc in a pinch. Despite the frowns we’ll see when someone blinks an LED with an Arduino and puts it into a project box, Arduino is here to stay. I thought I’d dig a little bit deeper into why both artists and engineers keep revisiting this board so much.

Arduino, do we actually love to hate it?

It’s not unusual for the seasoned engineers to cast some glares towards the latest Arduino-based cat-feeding Kickstarter, shamelessly hiding the actual Arduino board inside that 3D-printed enclosure. Hasty? Sure. Crude, or unpolished? Certainly. Worth selling? Well, that depends on the standards of the consumer. Nevertheless, those exact same critical engineers might also be kicking around ideas for their next Burning Man Persistence-of-Vision LED display–and guess what? It’s got an Arduino for brains! What may seem like hypocrisy is actually perfectly reasonable. In both cases, each designer is using Arduino for what it does best: abstracting away the gritty details so that designs can happen quickly. How? The magic (or not) of hardware abstraction.

Meet HAL, the Hardware-Abstraction Layer

In a world where “we just want to get things blinking,” Arduino has a few nifty out-of-the-box features that get us up-and-running quickly. Sure, development tools are cross-platform. Sure, programming happens over a convenient usb interface. None of these features, however, can rival Arduino’s greatest strength, the Hardware Abstraction Layer (HAL).

HAL is nothing new in the embedded world, but simply having one can make a world of difference, one that can enable both the artist and the embedded engineer to achieve the same end goal of both quickly and programmatically interacting with the physical world through a microcontroller. In Arduino, the HAL is nothing more than the collection of classes and function calls that overlay on top of the C++ programming language and, in a sense, “turn it into the Arduino programming language” (I know, there is no Arduino Language). If you’re curious as to how these functions are implemented, take a peek at the AVR directory in Arduino’s source code.

With a hardware abstraction layer, we don’t need to know the details about how our program’s function calls translate to various peripherals available on the Uno’s ATMEGA328p chip. We don’t need to know how data was received when Serial.available() is true. We don’t “need to know” if Wire.begin() is using 7-bit addressing or 10-bit addressing for slave devices. The copious amounts of setup needed to make these high-level calls possible is already taken care of for us through the HAL. The result? We save time reading the chip’s datasheet, writing helper functions to enable chip features, and learning about unique characteristics and quirks of our microcontroller if we’re just trying to perform some simple interaction with the physical world.

Cross-Platform Compatibility

Teensy 3.2 keeps form factor but adds on-chip hardware features compared to 3.1

There are some cases where the HAL starts to break down. Maybe the microcontroller doesn’t have the necessary hardware to simultaneously drive 16 servos while polling a serial port and decoding serial data. In some cases, we can solve this issue by switching Arduino platforms. Maybe we actually do need three serial ports instead of one (Teensy 3.2). Maybe we do need pulse-width-modulation (PWM) capability on every pin (Due). Because of the hardware abstraction layer, the rest of the source code can remain mostly unchanged although we may be switching chip architectures and even compilers in the process! Of course, in an environment where developing code for the target platform does matter, it doesn’t make sense to go to such efforts to write the general-purpose code that we see in Arduino, or even use Arduino in the first place if it doesn’t have the necessary features needed for the target end-goal. Nevertheless, for producing an end-to-end solution where “the outcome matters but the road to getting there does not,” writing Arduino code saves time if the target hardware needs to change before getting to that end goal.

HAL’s drawbacks

Of course, there’s also a price to pay for such nice things like speedy development-time using the HAL, and sometimes switching platforms won’t fix the problem. First off, reading the Arduino programming language documentation doesn’t tell us anything about the limitations of the hardware it’s running on. What happens, let’s say, if the Serial data keeps arriving but we don’t read it with Serial.read() until hundreds of bytes have been sent across? What happens if we do need to talk to an I2C device that mandates 10-bit addressing? Without reading the original source code, we don’t know the answers to these questions. Second, if we choose to use the functions given to us through the HAL, we’re limited by their implementation, that is, of course, unless we want to change the source code of the core libraries. It turns out that the Serial class implements a 64-byte ring buffer to hold onto the most recently received serial data. Is 64 bytes big enough for our application? Unless we change the core library source code, we’ll have to use their implementation.

Both of the limitations above involve understanding how the original HAL works and than changing it by changing the Arduino core library source code. Despite that freedom, most people don’t customize it! This odd fact is a testament to how well the core libraries were written to suit the needs of their target audience (artists) and, hence, Arduino garnered a large audience of users.

Pros of Bare-Metalspeak

digitalWrite takes a whopping 52-55 cycles to change pin direction! [image source]
Are there benefits to invoking the hardware directly? Absolutely. A few curious inquirers before us have measured the max pin-toggling frequency with digitalWrite to be on the order of ~100 KHz while manipulating the hardware directly results in a pin-toggling frequency of about 2 MHz, about 20 times faster. That said, is invoking the hardware directly worth it? Depends, but in many cases where tight timing isn’t a big deal and where the goal of a functional end-to-end system matters more than “how we got there,” then probably not! Of course, there are cases when tight timing does matter and an Arduino won’t make the cut, but in that case, it’s a job for the embedded engineer.

Use the HAL, Luke!

To achieve an end-to-end solution where the process of “how we got there” matters not, Arduino shines for many simple scenarios. Keep in mind that while the HAL keeps us from knowing too many details about our microcontroller that we’d otherwise find in the datasheet, I don’t proclaim that everyone throw out their datasheets from here on out. I am, however, a proponent of “knowing no more than you need to know to get the job done well.” If I’m trying to log some sensor data to a PC, and I discover I’ll be saving a few days reading a datasheet and configuring an SPI port because someone already wrote SPI.begin(), I’ll take an Arduino, please.

If you’ve rolled up your sleeves and pulled out an Arduino as your first option at work, we’d love to hear what uses you’ve come up with beyond the occasional side-project. Let us know in the comments below.


Filed under: Arduino Hacks, Hackaday Columns, tool hacks

Open Source Tracked Robot Supports STEM in Africa

A lot of hacker projects start with education in mind. The Raspberry Pi, for example, started with the goal of making an affordable classroom computer. The Shrimp is a UK-based bare-bones Arduino targeted at schools. We recently saw an effort to make a 3D printed robotic platform aimed at African STEM education: The Azibot.

Azibot has 3D printed treads, a simple gripper arm, and uses an Arduino combined with Scratch. Their web site has the instructions on how to put together the parts and promises to have the custom part of the software available for download soon.

We’d bet most Hackaday readers won’t need the software, anyway. The robot clearly uses RC servos for the drive and the little arm at the front, so controlling it directly from the Arduino ought to be easy enough. If you don’t want to roll your own, Senegal-based Azibot is taking preorders for kits for $99. We were a little surprised you couldn’t kick in a little more when you ordered to subsidize other kits for schools in need.

We talked about another low-cost school aimed project, the Shrimp, If you think the needy schools won’t have 3D printers, maybe this 3D printer could come to the rescue.


Filed under: 3d Printer hacks, Arduino Hacks, robots hacks

LED Pendulum Pulses Out Clock Face

You have to admit [Dylan Rush’s] clock is a real swinger. Literally. You’ve seen the desk novelties where an arm with leds mounted on it sweeps out a message? [Dylan] did the same thing to make a clock but instead of drawing numbers, he actually draws an analog clock face. Y’know one of those round things with arms?

Behind the clock is an Arduino driving a MAX7219 LED controller. Using the MAX7219 was a challenge because it expects a grid of LEDs while the clock needs a linear array. [Dylan] used a line of individual LEDs wired to match what the controller wanted. A rotary encoder tells the processor the position of the arm so the Arduino sketch can determine which LEDs should be lit to show the time and clock face.

What’s even more amazing is [Dylan] created this before clocks became infamous.

Swing over to the video after the break.


Filed under: Arduino Hacks, clock hacks, led hacks

3D Printed Gun is Off the Rails

There are certain topics that cause people to have knee-jerk reactions: Try asking a crowd which Star Trek was best or–around here–take a stance for or against the Arduino and you’ll see what we mean. Certainly people polarize quickly when you talk about a 3D printed gun. However, if anyone can sneak [xtamared’s] 3D printed rail gun through airport security, then some guards will have to be fired. It looks like a cool prop from a bad movie, but (as you can see in the videos below) it can project a conductive slug into a decidedly low-tech target.

There aren’t many build details, although you can deduce a few things from the pictures and the captions. At the rear of the gun is a paintball tank that gets the slug moving before it hits the rails which further accelerate the projectile. The electric part is Arduino-based and the very prominent capacitors at the front end can deliver 1800 joules of energy (and add 20 pounds of weight to the gun).

It looks like a lot of the gun is printed in PLA, but the electronics case is ABS (doubtlessly to avoid exposing PLA to the heat sink attached to the 1500V rectifier). The paintball tank’s pressure gets the slug moving to 100 meters/second before it hits the rails. In early testing, a PLA part and a steel bolt broke, so the items got replaced with polycarbonate and nylon. Apparently, parts of the injector are polypropylene.

The rails themselves are made for replacement, since each shot damages them a bit. They are constructed of garolite (fiberglass and resin composite sort of like PCB material) and wrapped in carbon fiber. That’s one of the things that impressed us–this is a highly multimedia build with different materials used to do different jobs, digital and high voltage electronics, and pneumatics.

We’ve covered a lot of rail guns over the years and we’ve looked at robot-mounted coil guns, too. If you want something more portable, check out this tiny rail gun (although the Geocities cache for the article is dead, but there are others).

Thanks [caffeine_addict] for the tip!


Filed under: Arduino Hacks, weapons hacks

Intel and Arduino Introduce Curie-Based Educational Board

This week, Intel and Arduino are releasing their first product pushed directly on the education market, the Arduino/Genuino 101 board powered by the Intel Curie module.

The Intel Curie Module

The Arduino/Genuino 101 is the first development platform for the Intel Curie modules which are a recent development from Intel’s Maker and Innovator group. The button-sized Curie is a single package encapsulating microcontroller, Bluetooth, a 6-DOF IMU, and battery charging circuitry; the requisite hardware for anything marketed as a ‘wearable’. The Curie’s brain is a 32-bit Intel Quark microcontroller with 384kB of Flash 80kB SRAM, giving it about the same storage and RAM as a low-end ARM Cortex microcontroller.

Called a module, it needs a carrier board to interface with this hardware. This is where the Arduino/Genuino 101 comes in. This board – the third such collaboration between Intel and Arduino – provides the same form factor and pinout found in the most popular Arduino offering. While the Curie-based Arduino/Genuino 101 is not replacing the extraordinarily popular Arduino Uno and Leonardo, it is going after the same market – educators and makers – at a similar price, $30 USD or €27. For the same price as an Arduino Uno, the Arduino/Genuino 101 offers Bluetooth, an IMU, and strangely the same USB standard-B receptacle.

Intel has further plans in store for the Curie module; In 2016, Intel, [Mark Burnett] of reality television fame, and United Artists Media group will produce America’s Greatest Makers, a reality show featuring makers developing wearable electronics on TV. No, it’s not Junkyard Wars, but until the MacGyver reboot airs, it’s the closest we’re going to get to people building stuff on TV.

Intel’s Prior Arduino Offerings

In 2013, Intel and Arduino introduced the Galileo board, a dev board packed with I/Os, Ethernet, PCIe, and an Intel instruction set. This was a massive move away from all ARM, AVR, or PIC dev boards made in recent years, and marked Intel’s first foray into the world of education, making, and an Internet of Things. In 2014, Intel and Arduino released the Edison, a tiny, tiny board designed for the embedded market and entrepreneurs.

The Arduino 101 and Genuino 101 – different names for the same thing and the first great expression of arduino.cc’s troubles with trademarks and the Arduino vs Arduino war – are targeted specifically at the ‘maker’ market, however ephemeral and hard to define that is. The form of the Arduino 101 follows directly in the footsteps of the Arduino Uno and Leonardo; The 101 has the same footprint, the same pinout, a single USB port as the Leonardo.

Being the ‘maker market Arduino’, this board is designed to bring technology to the classroom. In a conference earlier this week, [Massimo] framed the Arduino 101 as the educational intersection between technology, coding, art, and design. Students who would not otherwise learn microcontroller development will learn to program an Arduino for art and design projects. The Arduino/Genuino 101 is the board that puts the STEAM in STEM education.

Where the Curie is Going

Intel has big plans for the Curie module, with a few products in the works already. The Intel Edison has made its way into consumer electronics and wearables, including an electronic ski coach that will tell you when to pizza and when to french fry. The Curie will be available independently of the Arduino/Genuino 101, with both products being released in early 2016.


Filed under: Arduino Hacks, news

Serial Data from the Web to an Arduino

In the old days, a serial port often connected to an acoustic coupler that gripped a phone handset and allowed a remote connection to a far away serial port (via another phone and acoustic coupler) at a blistering 300 baud or less. The acoustic coupler would do the job of converting serial data to audio and reconstituting it after its trip through the phone lines. Modems advanced, but have mostly given way to DSL, Cable, Fiber, and other high speed networking options.

In a decidedly retro move, [James Halliday] and [jerky] put a modern spin on that old idea. They used the webaudio API to send serial data to a remote Arduino. The hack uses a FET, a capacitor, and a few resistors. They didn’t quite build a real modem with the audio. Instead, they basically spoof the audio port into sending serial data and recover it with the external circuitry. They also only implement serial sending (so the Arduino receives) so far, although they mention the next step would be to build the other side of the connection.

They say the data transmission is finicky, but it works (see the video below). We imagine using proper modem tones and decoders might work better, but would be a lot more effort. We’ve covered a 1200 baud modem before. We’ve also covered a bit of the theory behind them.


Filed under: Arduino Hacks, Network Hacks

Controlling Guitar Amps With Servos

[fichl] plays electric guitar, and with that hobby comes an incredible amount of knob twisting and dial turning. This comes at a cost; he can’t change the settings on his small amp without taking his hands off the guitar. While larger, more expensive amps have multiple channels and footswitches, this tiny amp does not. Instead of upgrading, [fichl] came up with a device that turns his single channel amp into a completely programmable one, with just an Arduino and a handful of servos.

The amp in question – an Orange Dark Terror head – has just three knobs on the front of the chassis, volume, shape, and gain. [fichl] had the idea of controlling these knobs electronically, and the simplest solution he came up with is cheap hobby servos. These servos are mounted in an aluminum box, and mount to the knobs with a few shaft couplings.

The footswitch is the brains of the setup, with three buttons, four LEDs, and a DIN-5 output jack that delivers power, ground, and three PWM signals to the servo box. With the help of an Arduino Nano, [fichl] can change any of the knobs independently, or switch between twelve programmed settings. It’s an interesting setup, and something that could serve as a prototype for a much larger system on a much larger amp.


Filed under: Arduino Hacks, musical hacks

Bootstrapping Motion Input with Cheap Components

Motion control is a Holy Grail of input technology. Who doesn’t want an interface that they can control with simple and natural movements? But making this feel intuitive to the user, and making it work robustly are huge hills to climb. Leap Motion has done an excellent job creating just such a sensor, but what about bootstrapping your own? It’s a fun hack, and it will give you much greater appreciation for the currently available hardware.

Let’s get one thing straight: This device isn’t going to perform like a Leap controller. Sure the idea is the same. Wave your hands and control your PC. However, the Leap is a pretty sophisticated device and we are going to use a SONAR (or is it really SODAR?) device that costs a couple of bucks. On the plus side, it is very customizable, requires absolutely no software on the computer side, and is a good example of using SONAR and sending keyboard commands from an Arduino Leonardo to a PC. Along the way, I had to deal with the low quality of the sensor data and figure out how to extend the Arduino to send keys it doesn’t know about by default.

The Plan

The plan is to take an inexpensive SONAR module (the HC-SR04) and an Arduino Leonardo and use it to perform some simple tasks by mimicking keyboard input from the user. The Leonardo is a key element because it is one of the Arduinos that can impersonate a USB keyboard (or mouse) easily. The Due, Zero, and Micro can also do the trick using the Arduino library.

I wanted to determine how many gestures I could really determine from the HC-SR04 and then do different things depending on the gesture. My first attempt was just to have the Arduino detect a few fingers or a hand over the sensor and adjust the volume based on moving your hand up or down. What I didn’t know is that the default Arduino library doesn’t send multimedia keys! More on that later.

How the SONAR Works

The SONAR boards come in several flavors, but the one I used takes 4 pins. Power and ground, of course, are half of the pins. In fact, my early tests didn’t work and I finally realized the module requires more power than I could draw from the Arduino. I had to add a bench supply to power the module (and, of course, I could have powered the module and the Arduino from the same supply).

The other two pins are logic signals. One is an input and a high-going pulse causes the module to ping (8 cycles at 40kHz). There is a delay and then the other pin (an output) will go high and return low when the module detects the return ping. By measuring the time between your signal to ping and the return, you can judge the distance. In my case, I didn’t care about the actual distance (although that’s easy to compute). I just wanted to know if something was farther away or closer.

The scope trace to the right shows the sensor pointing at something relatively near. The top trace is the start pulse and the bottom trace is the input to the Arduino. The center trace is the output of the SONAR transducer. All the signal conditioning is inside the sensor, so you don’t need to worry about the actual signal processing to generate and recover the audio. You only need to measure the width of that bottom pulse.

The scope has persistence and you can see that the bottom trace does not always come out right at the same time (look at falling edge and you can see “ghosts” for previous samples. It shouldn’t come as a surprise that it may take a little effort to reduce the variations of the signal coming back from the SONAR.

Noise Reduction and Actions

Averaging

I wound up trying several different things to attempt to stabilize the input readings. The most obvious was to average more than one sample. The idea is that one or two samples that are way off will get wiped out by the majority of samples that are hovering around some center value. I also found that sometimes you just miss–especially when looking for fingers–and you get a very large number back. I elected to throw out any data that seemed way off when compared to the majority of received data.

Verifying

One other tactic I used was to verify certain elements with a second reading. For example, the start event occurs when the SONAR reports a value under the idle limit. The idle limit is a number less than the reading you get when the SONAR is pointed at the ceiling (or wherever it is pointing) and you don’t have anything blocking it. To recognize a valid start, the code reads twice to make sure the value is under the limit.

The code inside the Arduino loop is essentially a state machine. In the IDLE state, it looks for a reading that is below the idle limit. When found, that causes a transition to the sampling state. When the reading goes up or down more than some preset value, the code in the sample state sends a volume up or down key via the keyboard interface. If the sample goes back over the idle limit, the state machine returns to IDLE.

I got pretty good results with this data reduction,  but I also found the NewPing library and installed it. Even though it isn’t hard to write out a pulse and then read the input pulse, the NewPing library makes it even easier (and the code shorter). It also has a method, ping_median, that does some sort of data filtering and reduction, as well.

You can select either method by changing the USE_NEW_PING #define at the top of the file. Each method has different configuration parameters since the return values are slightly different between the two methods.

I said earlier that the code sends volume up and down commands when it detects action. Actually, the main code doesn’t do that. It calls an action subroutine and that subroutine is what sends the keys. It would be easy to make the program do other things, as well. In this case, it simply prints some debugging information and sends the keys (see below). I didn’t react to the actual position, although since the action routine gets that as a parameter, you could act on it. For example, you could make extreme positions move the volume up two or three steps at a time.

Sending Keyboard Commands

I wanted to send standard multimedia keys to the PC for volume up and down. Many keyboards have these already and usually your software will understand them with no effort on  your part. The problem, though, is that the default Arduino library doesn’t know how to send them.

Fortunately, I found an article about modifying the Arduino’s library to provide a Remote object that wasn’t exactly what I had in mind, but would work. Instead of sending keys, you have methods on a global Remote object that you can call to do things like change or mute the volume. The article was for an older version of the Arduino IDE, but it wasn’t hard to adapt it to the version I was using (version 2.1.0.5).

The action routine really only needs the UP_IN and DN_IN cases for this example. However, I put in all four branches for future expansion. Here’s the action subroutine:

void action(int why, unsigned value=0)
{
 Serial.print(value);
 switch (why)
 {
 case START_IN:
 Serial.println(" Start");
 break;
 case STOP_IN:
 Serial.println(" Stop");
 break;
 case UP_IN:
 Serial.println(" Up");
 Remote.increase();
 break;
 case DN_IN:
 Serial.println(" Down");
 Remote.decrease();
 break;
 }
}

The Final Result

The final result works pretty well, although the averaging makes it less responsive than you might wish. You can turn down the number of samples to make it faster, but then it becomes unreliable. You can download the complete code from Github. The first thing you’ll want to do is check the top of the file to make sure your module is wired the same (pin 3 is the trigger pin and pin 8 is the echo return pin). You’ll also want to select if you are going to use the NewPing library or not. If you choose to use it, you’ll need to install it. I flipped my Leonardo upside down and mounted it on a breadboard with some adapters (see picture to right). It really needs a more permanent enclosure to be useful. Don’t forget to give the SONAR module its own 5V power supply.

If you look near the top of the loop function there is an #if statement blocking out 3 lines of code. Change the 0 to a 1 and you’ll be able to just get averaged data from the sensor. Put the module where you want it and see what kind of numbers you get. Depending on the method I used I was getting between 4000 and 9000 pointed up to the ceiling. Deduct a bit off of that for margin and change IDLETHRESHOLD (near the top of the file) to that number.

The DELTATHRESHOLD is adjustable too. The code sees any change that isn’t larger than that parameter as no change. You might make that bigger if you have shaky hands or smaller if you want to recognize more “zones”. However, the smaller the threshold, the more susceptible the system will be to noise. The display of samples is helpful because you can get an idea how much the readings vary when your hand is at a certain spot over the sensor. You can try using one or two fingers, but the readings are more reliable when the sound is bouncing off the fleshy part of your palm.

If you want to add some more gestures, you may have to track time a bit better. For example, holding a (relatively) stationary position for a certain amount of time could be a gesture. To get really sophisticated gestures, you may have to do some more sophisticated filtering of the input data than a simple average. A Kalman filter might be overkill, but would probably work well.

If you look around, many robots use these sensors to detect obstacles. Makes sense, they’re cheap and work reasonably well. There are also many projects that use these to show an estimate of distance (like an electronic tape measure). However, you can use them for many other things. I’ve even used a similar set up to measure the level of liquid in a tank and earlier this week we saw ultrasonic sensors used to monitor rice paddies.

If you really want to get serious, [uglyduck] has some analysis of what makes spurious readings on this device. He’s also redesigning them to use a different processor so he can do a better job. That might be a little further than I’m willing to go, although I was impressed with the 3D sonic touchscreen which also modified the SONAR units.


Filed under: Arduino Hacks, Featured, peripherals hacks

The Arduino Birthday Cake is No Lie

Making someone a birthday cake is very thoughtful, but not if they are watching their weight. [MrFox] found a way around that: an Arduino-powered birthday cake. Even if you don’t mind the calories, an Arduino cake is a novelty and sure to be a hit with a hacker who’s another year older.

The cake uses a UTFT LCD shield which eats up a lot of pins and memory, so the project uses an Arduino Mega. A speaker plays the happy birthday song (which may even be legal now) while a microphone detects the birthday boy or girl blowing out the virtual candles.

We’ve seen similar cakes with a fixed number of LED “candles” before, but the LCD screen makes this a cake of a different color. If you want, you could look into something that is actually edible. On the other hand, we’re kind of partial to the Jolly Wrencher with red eyes and fireworks, ourselves.

The video shows the birthday cake in action. Given the screen, we were surprised that nothing popped out. Not a life-changing project, but still fun for your next hacker party, even if you have a real cake as a backup.


Filed under: Arduino Hacks
Hack a Day 07 Oct 09:01