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.

Continue reading “Bootstrapping Motion Input with Cheap Components”

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.

Continue reading “The Arduino Birthday Cake is No Lie”

Frozen Time Photography with a 100W LED

High speed photography is fun. Ultra high frame rate video, even more so. But since not many of us have access to $10,000 HFR cameras… we have to make do with long exposure shots a perfectly timed camera flash. You can design a system to trigger the flash at just the right millisecond — but they’re still pretty expensive typically.

[Electronupdate] has a 100W LED module and penchant for Arduino Nanos — so he wondered if he could make an affordable high speed camera rig — and he did.

It’s a pretty slick little setup. He has a limit switch mounted to a nail on a piece of wood — when the water balloon drops on it, it triggers the mechanical switch. The Arduino then triggers the LED flash, which is quite a large load and requires a High Side Switch to operate. A small LCD and series of buttons allow him to dial in the time offset just right in order to get some awesome photos of a water balloon exploding.

Continue reading “Frozen Time Photography with a 100W LED”

Just Don’t Call it an Old Remote

[Hari Wiguna’s] father is ninety years young. He started having trouble pushing the buttons on his TV remote, so [Hari] decided to build a custom remote that just has the buttons his dad needs. Oh, and the buttons are big.

There are a few interesting things about this project. [Hari] wanted to maximize battery life, so he went through a good bit of effort to keep the processor asleep and minimize power consumption. The remote is programmable, but [Hari] didn’t have access to his dad’s remotes. His answer was elegant. He used his Android phone to mimic the required remotes and provided a way for the remote to learn from another remote (in this case, the phone).
Continue reading “Just Don’t Call it an Old Remote”

Arduino’s Long-Awaited Improved WiFi Shield

Announced at the 2014 Maker Faire in New York, the latest Arduino WiFi shield is finally available. This shield replaces the old Arduino WiFi shield, while providing a few neat features that will come in very handy for the yet-to-be-developed Internet of Things.

While the WiFi Shield 101 was announced a year ago, the feature set was interesting. The new WiFi shield supports 802.11n, and thanks to a few of Atmel’s crypto chip offerings, this shield is the first official Arduino offering to support SSL.

The new Arduino WiFi Shield 101 features an Atmel ATWINC1500 module for 802.11 b/g/n WiFi connectivity. This module, like a dozen or so other WiFi modules, handles the heavy lifting of the WiFi protocol, including TCP and UDP protocols, leaving the rest of the Arduino free to do the actual work. While the addition of 802.11n  will be increasingly appreciated as these networks become more commonplace, the speed offered by ~n isn’t really applicable; you’re not going to be pushing bits out of an Arduino at 300 Mbps.

Also included on the WiFi shield is an ATECC508A CryptoAuthentication chip. This is perhaps the most interesting improvement over the old Arduino WiFi shield, and allows for greater security for the upcoming Internet of Things. WiFi modules already in the space have their own support for SSL, including TI’s CC3200 series of modules, Particle‘s Internet of Things modules, and some support for the ESP8266.

Arduino Development; There’s a Makefile for That

Hardware and software combined, Arduino does many things right. It lowers the entry level into embedded systems development with a nifty hardware abstraction layer. It aims for cross-platform compatibility by supporting Windows, Mac OSX, and Linux operation systems. It throws out the need for an external programmer to get you up-and-blinkin’ those LEDs quickly.

One thing most of us never cease to curse about, though, is the IDE. Many have cried out wildly against the Java-based text-editor for its cryptic compiling-and-linking process, its inability to accommodate bare C or C++ source files, and (shh!) its lack of Vim keybindings. Fortunately, our cries have been heard, and the like many community-based projects, the community fights back with a custom solution.

Calling all Grumpy Engineers: The Arduino-Makefile

Enter the Arduino Makefile.

What began as [Sudar’s] lightweight program to escape the IDE has become a fully-blown, feature rich Makefile that has evolved and adapted to grow with the changes of Arduino. With a community of 47 contributors, the Makefile enables you to escape from the IDE entirely by writing code in the cushy text editor of your choice and compiling with a simple incantation of make into your terminal, be you in Linux, Mac, or Windows.

Without further ado, let’s take a walking tour of the project’s highlights.

Continue reading “Arduino Development; There’s a Makefile for That”

KIM-1 Clock

Over on, [Arduino Enigma] posted the code for his clock that runs on a KIM Uno (the KIM-1 clone we mentioned late last year). Although the KIM Uno has a few demos preloaded (including Microchess and a scientific calculator), all of them take some interaction. The clock makes the KIM Uno a more dynamic desk display since it does something useful without any user interaction (once you set the clock, of course).

The project shows the code stored in ROM, but you can’t directly enter the program into ROM (which is really EEPROM on the host Arduino). The trick is to enter the address (that is press AD and then 0, 4, 0, 0) and then mash down the reset button for about a second. Then you can press DA and enter the hex codes provided (pressing + after each byte). Since the code is in nonvolatile storage, you can start it at any time by setting the time in RAM and executing the code at address 400.

Continue reading “KIM-1 Clock”