EdgeWave

March 2008
electronics prototyping, Arduino, EdgeWrite, activity sensing, accelerometer, capacitive touch sensing, sound feedback, serial communication, acrylic form factor fabrication with laser cutting, Processing visualization

EdgeWave is a device that lets you do primitive input by handwaving characters in air.

To implement this, I developed an input device that consists of Arduino microcontroller, 3-D accelerometer (though I only used two axes in this project), a number of LED-s, a speaker, and a capacitive "charge-pump" method touch sensor. The touch sensor acts as a switch, activating and deactivating the recording mode of the device. When recording, the device captures user strokes in air through the accelerometer.

The device transmits the strokes to a visualizer implemented in the Processing environment. The visualizer displays the raw (though somewhat filtered and cleaned) strokes (in white on image below) as well as the distilled motion vector (black arrow). The strokes vectors are then compared to a library of EdgeWrite strokes and if a match is found, this denotes that a character was recognized, and the character gets displayed to the screen alongside with the vectors.

To make the device easy to hold in the hand, I fabricated a case out of acrylic using a laser cutter. Through smart dimensioning of the tabs, I constructed the 3D case out of 2D surfaces snapping into each other through tabs and notches. I do not use any glue, screws or other adhesive or attachment method. The case can be assembled and disassembled repeatedly and without any tools, and is fairly rigid and stable in its assembled form.

Arduino code (in addition to references given in the code, uses accelerometer and SPI code by Troy Nachtigall)

Processing visualizer/recognizer code

EdgeWave device

EdgeWave device.

EdgeWave device

EdgeWave device.

Architecture

State diagram

Visualizer screenshot