Introduction: VIA (Visual Impairment Aid)
This project uses a 'kit' of electronics that can be purchased at any electronics store (like radioshack) and is a good beginner project into arduino/electronics. No programming skills are needed to do this project, as I have included my code! The case is 3D printed and I have included the files on thingiverse, but I have also uploaded it to Shapeways so anyone can order and have the custom enclosure to make this project.
Step 1: Parts
The electronics for this project are all a 'kit' that can be bought at an electronics store, such as Radioshack. I've also added links to show the exact part used.
Electronics:
1x Arduino Micro
1x Buzzer speaker
1x Slide switch (for on and off)
2x Pushbuttons (I used large 12mm ones)
2x Resistors (I used 2k Ohm ones)
1x Quarter size proto board
2x Vibrating motors (this isn't completely required if you have a buzzer, but is highly recommended)
1x Distance sensor
9V Battery
Wire
Housing:
This can be made out of whatever surplus material you have, but I'll go into more detail about building this later.
No matter what your housing is, you will most likely need:
1inch wide straps
velcro patches
Step 2: The Basic Circuit
Now it's time to make a mock-up of the circuit. I bread boarded mine at first to make sure it all worked and test the program and so I really recommend doing something similar before you solder everything. You can see the basic circuit for my components below. Feel free to use whatever parts you have and modify it accordingly. Note that the vibrating motors MUST be attached to PWM pins to be controlled correctly. Once you've got it set up, you are ready to download the program and try it out for real!
Step 3: The Program
You can download a TXT file on this step for my program! Just copy paste it into an arduino sketch and upload it to your Micro. This program was written for use with my exact circuit, so if you're only using one button or have a different distance sensor feel free to modify it as needed. Make sure when uploading that under 'Tools' you select Arduino Micro, it will pick Arduino Uno as a default which could cause some problems.
For this program I use two buttons. One toggles between having the device give sound, haptic, or both types of feedback. The other button switches between long and short distance mode. That just means that in short distance mode the beeping/vibrating is scaled so it's easier to tell differences between things close up (<3 feet) and long distance mode makes it easier to tell things far away (~10 feet max).
Attachments
Step 4: Soldering
Since you are all capable DIYers and will probably modify the circuit to fit your needs, I'm not going to walk you through the soldering wire by wire. For those new to soldering check out this instructable HERE. Make sure to refer back to the pictures of my circuit. Once done with soldering you will have a jumble of wires and components, make sure to use some electrical tape or the sort to cover all the solder joints and prevent inadvertent circuit connections.
Recommendations:
Clip the six leads on the back of your arduino micro, this makes it fit much better in the case.
Place your buttons and switch into the breadboard and press it into the lid so that the components are held in their place while soldering.
Step 5: Making the Enclosure
When building my enclosure, I was lucky enough to be able to 3D print a custom casing. For those who have the capability I have included the STL files on Thingiverse HERE, but for those who don't I have also uploaded the case to Shapeways HERE so it can be ordered! I cut a grill pattern into the design on Shapeways because it brought the cost down a lot. Obviously this can be made out of any materials though, so if you want to try and design it out of wood, cardboard, etc go for it! My rough dimensions for the inside of the box were 130mm x 46mm x 28mm. The lid has holes for the two buttons and the power switch and also has small braille writing that tells what each button does. It has cutouts in the front and back for the distance sensor and speaker as well as little walls to keep the battery and arduino in place. Lastly it has cutouts in the bottom for vibrating motors. To assemble this lid you will need:
4x M3 bolts (~16mm in length)
2x M3 hex nuts
Step 6: Adding Straps
In my pictures you can see I folded over one part of the strap and sewed it around one notch on the case. Then on the other side of the strap I pulled it through the opposite notch and sewed velcro patches on opposite sides of the strap. Repeat this process for the other strap.
Step 7: Assembly
Assembly goes in the same order as pictures, so check there if confused. Also to get a nice tight fit some components may need to be wrapped in a layer of electrical tape or thin foam.
1. Take the buzzer speaker and pop into its place on the back wall of the case.
2. Take your arduino and slide it between the outer wall on the right side and its place holding walls.
3. Take the vibrating motor and line it up with one of the cutouts in the bottom, push it through flat against the table you are working on. Next take some electrical tape and cover the hole so it can't pop back inside during use. You may need something a bit stiffer like a layer of cardboard to help too.
4. Take your 9V and slide it into the opposite side as the arduino.
5. Take your lid and screw in two bolts on the left and right side. Now take your breadboard with the two buttons and switch, line up the components so the bolts fit through the mounting holes of the breadboard and the components are able to stick through there designated holes in the lid. Take two hex nuts for your bolts and tighten them so the breadboard is firmly secured.
6. Carefully fold wires into empty openings in the box and slowly try to move the lid to its place on top of the lower part of the case. Once everything is packed, take your two remaining bolts and screw them into the top and bottom holes of the case. You're assembled!
Step 8: Final Thoughts
This project, although simple, has the ability to make a positive impact. It's pretty basic right now, but with some higher-end sensors this could be an extremely effective tool. I hope you like it, and let me know if you do anything cool with it! Feel free to post constructive criticism or ideas for improvement!

Participated in the
Arduino Contest

Participated in the
Weekend Projects Contest
78 Comments
7 years ago
Hello! This is my first project and astonishingly I succeeded in doing it. But there is a problem with my project. The buzzer is not working ..which is connected to the pin 11 and ground ....but when i placed the buzzer in pin 9 and 10 it buzzes.....so i googled for problem and found that the 11th pin in arduino nano is not a pwm pin, instead the 12th pin is pwm ...so i changed the code accordingly but it didn't work at all..kindly help me to use both haptics and sound ....or else i have to use only sound........I really loved this project...Had a great start because of you ....kudos young man...hope to see some interesting and useful projects from you in the future
7 years ago
What would change if I have the HC-SR04 instead of ping?
9 years ago on Introduction
Love it, a really nice and useful instructable
Reply 9 years ago on Introduction
Thanks!
Reply 7 years ago
patrick if i ll use another companies distancce sensor does it effeccts coding and what is that 5v on circuit diagram on arduino micre
7 years ago on Introduction
can i use arduino nano instead of micro in this project???? reply fast plz need it science exibition
7 years ago on Introduction
I really love ur project.
I m going to make this project for my final year diploma in computer engineering
my question is why u have used push buttons
Reply 7 years ago on Introduction
Read :
For this program I use two buttons. One toggles between having the device give sound, haptic, or both types of feedback. The other button switches between long and short distance mode. That just means that in short distance mode the beeping/vibrating is scaled so it's easier to tell differences between things close up (<3 feet) and long distance mode makes it easier to tell things far away (~10 feet max).
7 years ago on Introduction
Hi .. this is an amazing instructable and i thank you for sharing it ! :)
I have a doubt. Arduino micro is unavailable where i live and Online purchases are expensive ...
Can this project work with Arduino Pro mini ? :)
Thanks.
8 years ago on Introduction
Nice project!
I made same one. But mine is telling the distance when a block appears in front of the ultrasonic sensor. You can check my project. :)
https://www.instructables.com/id/Arduino-wtv020-Sd-16P-Talking-Distance-Meter/
8 years ago on Introduction
Can you help me with step by step soldering?
8 years ago on Introduction
Hi, cool idea & love the concept!
Tried to make one fr myself but faced certain hurdles. When i switch on the project, the vibrating motor will immediately vibrate. Connections are followed and uploaded the program but im using Arduino Nanov3 (which i've been told is similar to Arduino Micro). Hope you can help...would appreciate it! :)
9 years ago on Introduction
Hello again, I'm sorry to disturb you again but I was wondering if you could help me a little - In this project im using 4-pin HC-SR04 sensor instead of ping. Could you please explain to me how to change the code for this particular sensor if its possible. (im thinking that I could use echo pin as ping pin mentioned in code)
9 years ago on Introduction
can i use arduino uno or any arduino to make this project????????
Reply 9 years ago on Introduction
As far as I know, yes you could use any of the Arduino boards, you'll only face two problems. Firstly, you'll have to configure the Arduino pins to match the pins that are used in this 'ible (Arduino Micro). Secondly, the reason behind using the Arduino Micro is that it can fit into the 3D-printed case. If you used a larger Arduino board, I don't think it will fit good. Good luck!
9 years ago on Introduction
First of all, I really love your work, I'm making this for my friend, but there is only one question.
Doesn't ultrasound sensor work only for perpendicular flat surfaces?
I have built prototype using different code and It seems to work only with perpendicular surfaces.
Reply 9 years ago on Introduction
It works for some non-perpendicular, flat surfaces, but yeah it definitely is limited by that. You could try using IR sensors or another kind of distance sensor instead, I just used ultrasound because they are cheap, widely available, and easy to use with arduino.
9 years ago on Introduction
Hiii, can i replace the Micro with Nano v.3 although they has different pin out configuration? and Which pin should I adjust to use with Arduino Nano V3 ? coz hard to find Micros in Indonesia. Please help me I am new in Arduinos :) Thanks
Reply 9 years ago on Introduction
I had the same problem which I couldn't find the Arduino Micro, as Mizchief100 told me, you can use any Arduino board you like, he just chose the Arduino Micro as it has a suitable size to fit in the case. He said that anyone of them would work, but you only need to specify the PWM pins to be sure that you're making the connections right.
9 years ago on Introduction
Hi mate, I'm facing a problem in the programming stage, It came out with an error says "Found programmer: Id = "BRc"; type = ; Software Version = .; Hareware Version = .; avrdude: error: buffered memory access not supported. Maybe it isn't a butterfly/AVR109 but a AVR910 device?"
Have you ever got this kind of problem? Do you know how to solve it? Cheers