Introduction: Arduino Echo Locator
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
Parts used:
1 Arduino Uno
1 9v battery connector
1 on/off switch
2 10k twist knob variable resistors
1 piezo button
1 Altoids tin
several wires
some cardboard
some thin packing foam
couple of elastics
Tools:
Soldering iron
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.
Attachments
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.
After testing:
* 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!
2 Comments
10 years ago on Introduction
This is a nice idea, but I am not sure exactly why this circuit will do the function you want. Your mission, if you choose to accept it... Consider the following:
Get an el-cheapo SR-04 ultrasonic range finder (they cost somewhere around $5 even in the US). Then use the Ping library (http://code.google.com/p/arduino-new-ping/) and have your code generate a tone (or sequence of beeps) that are indicative of the distance the SR-04 measures. This could be REALLY useful for a blind person and is very very doable. Heck, I like the idea myself now... may try to build it.
Reply 10 years ago on Introduction
That's a really good idea! I do already have one of those range sensors here but never thought to use it for this. I'm meeting with him tomorrow and will see what he thinks of that idea.
The point of this project is only to make sounds, and to allow the user to adjust the tone and the delay. It's what he asked me to build, and the idea is that he would himself be able to detect the echoes. He said he's had some success with that already and wanted something more automatic to make the sound.
It's like the guy in this video is doing: http://youtu.be/vpxEmD0gu0Q