I was recently approached by a local vision impaired person. Apparently he had been experimenting with using echo location to find his way around, without needing to use his cane. This had been working well for him and he wanted to kick it up a notch and try riding a bicycle! The only problem he had with that was that he was using a clicker in one hand and needs to have both hands on the handlebars.
He was hoping I could write him an iPhone app to create adjustable clicks for echo location. As it turns out, iPhone doesn't have an easy "tone, duration" method of making sounds, and it got complicated very quickly.
I recalled an Arduino tutorial I had taught not long ago, using a simple piezo buzzer, so I thought I'd give that a try.
The result? Within half an hour I had everything hooked up and working. Much better!
Then I spent several more hours trying to fit it all into an Altoids tin ;)
Step 1: Parts
1 Arduino Uno
1 9v battery connector
1 on/off switch
2 10k twist knob variable resistors
1 piezo button
1 Altoids tin
some thin packing foam
couple of elastics
drill, drillbits, and chisel (to create holes in Altoids tin)
Step 2: Source Code
Attached is the Arduino source code.
Download this code to the Arduino board. You might want to do this before hooking up any wires, to ensure that there's no previous sketch on the board that might hurt your new circuit.
Step 3: Connections
* Piezo buzzer: The piezo buzzer connects to pin 9 and to ground. My buzzer is marked with a + (also the long lead) which I connected to pin 9.
* Twist knobs: I soldered wires to connect the + and - of the twist knobs together and to wires that later get plugged in to 5v and GND on the Arduino board.
The Arduino Uno only has the one 5v easily available, which is why I soldered the twist knobs together.
I soldered some yellow wires to the middles of the two twist knobs. The other ends of the yellow wires go to A0 and A1 on the Arduino board.
Power: for testing, I just had the above, and used the power via the USB cable connection.
* I soldered the red (+) lead of the 9v connector to the switch, and soldered a short piece of red wire from the switch to one of the pins of a little 2-pin piece of standard header.
* I soldered the black (-) lead of the 9v connector to the other pin of the 2-pin header.
* plug the 2-pin header into the Arduino board such that the red wire side goes into VIN, and the black wire side goes to GND. They are side by side on the board.
Step 4: Stuff It Into an Altoids Tin
For me this took the most fiddling effort.
I first disconnected all the wires, and then connected everything back up when all the pieces were fit into the tin. Don't hook up the battery until everything else is complete.
I basically just laid things out and eyeballed where it all should go. You might want to spend a bit more time planning so that you might fit the battery in there too.
I cheated and used elastics to hold it, and then claimed that "this makes it easier to change the battery" ;)
The main thing you need is 1 hole on the end to fit the Piezo speaker, 1 hole on the other end to hold whatever switch you have handy, and 2 holes on top for the twist knobs.
Use the Altoids tin to trace the shape of the tin onto 2 pieces of cardboard, then cut out the cardboard and use these cutouts to line the top and bottom of the Altoids tin to avoid electrical shorts.
After connecting all the wires, I also wrapped some thin shipping foam around the bottom and sides of the Arduino. This further protects against shorts, especially on the sides where the power and piezo speaker are. Make sure that no wires can touch metal or other wires or Arduino board bits.
Step 5: Enjoy!
Here is a video I took:
Step 6: Your Mission, If You Choose to Accept It...
I admit that I'm better with software than with hardware, which is why I used an Arduino for this task.
However, I'm pretty sure this whole thing could be built with a few cents worth of transistors, capacitors, and resistors (and maybe a 555 timer chip), instead of having to use an Arduino.
If anyone can do this, and post a circuit here (or link to an Instructable for it!), I would be very grateful indeed!
I thank you in advance!