Introduction: VIA (Visual Impairment Aid)

Picture of VIA (Visual Impairment Aid)
This project was my take on a DIY visual impairment aid that uses haptic and sound feedback. Basically it uses a distance sensor to measure how far objects are from it and then it beeps/vibrates accordingly (far away is slow vibrate/long beep delay and close up is fast vibrate/quick beeps). Real quick I'd like to acknowledge that I'm not the first to do something like this, but I have added many things to it that are different from designs I have seen. This isn't being used for commercial purposes but just as a guide for others to make them for people who would actually benefit from having them. The difference between this project and others is this project uses one distance sensor (as opposed to many) to make feedback more specific and simpler to interpret, use of both haptic and sound feedback, the mounting of the device under the arm and not attached to the hand (keeps it free to feel where you're going and use for daily tasks), and a few simple control buttons on the case (I also put the word for each button in braille next to them). What I really like about the design is how compact and sturdy it is. I wore it around for a few hours to get used to it and found it didn't hinder too many of my daily activities (I found it fit in sleeves too!). See it in action!

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

Picture of 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.

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

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

Picture of 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

Picture of 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).

Step 4: Soldering

Picture of 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.

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

Picture of 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

Picture of 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

Picture of 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

Picture of 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!


MohammadA109 (author)2016-03-22

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 i googled for problem and found that the 11th pin in arduino nano is not a pwm pin, instead the 12th pin is pwm 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

marshall716 (author)2016-02-08

What would change if I have the HC-SR04 instead of ping?

azharz (author)2013-07-26

Love it, a really nice and useful instructable

Patrick S (author)azharz2013-07-26


msharma48 (author)Patrick S2015-10-20

patrick if i ll use another companies distancce sensor does it effeccts coding and what is that 5v on circuit diagram on arduino micre

Bala_bolt (author)2015-09-23

can i use arduino nano instead of micro in this project???? reply fast plz need it science exibition

GopiR1 (author)2015-08-18

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

akshay.d21 (author)GopiR12015-08-23

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).

akshay.d21 (author)2015-08-16

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 ? :)


BurakTutal (author)2015-04-25

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. :)

Wilfredmason4 (author)2014-12-23

Can you help me with step by step soldering?

defjedi (author)2014-09-15

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! :)

raimisX (author)2014-02-28

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)

tiongson (author)2014-01-25

can i use arduino uno or any arduino to make this project????????

Omar Amir (author)tiongson2014-01-29

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!

raimisX (author)2014-01-06

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.

Patrick S (author)raimisX2014-01-06

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.

oagusta (author)2013-10-05

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

Omar Amir (author)oagusta2013-12-15

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.

dante0516 (author)2013-09-30

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

tscaramuzzi (author)2013-09-22

Or the shoes if you can try. Show me proof if it doesn't work and I will pay the expenses up to $150

tscaramuzzi (author)2013-09-22

Mizchief100 could you try to make a pair of glasses that have 1 or 2 sensors in it and it vibrates or beeps to say if you are about to hit your head? Also can you make me one of these I will pay up to $100 for this one and idk for the glasses if you make them. I want to give it to this blind kid at my school who is graduating as a graduation present.

ahoosein94 (author)2013-09-18

Hey how are you i attempted to do this project, the vibrating motor works fine, but the buzzer does not work at all. The motor switch is connected to pin 4 and the buzzer is to pin 3. The ping does not even send out signals when only the buzzer is connected, but it works when only the motor is connected. any idea?

chetancc (author)2013-08-12

Hi Mizchief100, can u please tell me more information about Making the Enclosure? I am interested to know how this enclosure design become physical object.

Patrick S (author)chetancc2013-08-16

I made the enclosure using a 3D printer, the Makerbot Replicator 2.

zvaldez (author)2013-08-12

I would like to improve this project by creating another prototype that deals with ground obstacles. as I study your outstanding work you still can't us it outside on ground terrains. the problem is i still don't have any idea on how will the outline be :) do you have any suggestions? I'll gladly appreciate it

Patrick S (author)zvaldez2013-08-16

Ooh, you could try something like shoes that has the distance sensors built into the toes and vibrates the feet if they are about to come into contact with something! Hope that helps :)

ezelycool (author)2013-08-12

I have one question,can we make it using Arduino UNO ????? please reply fast!!!!

Patrick S (author)ezelycool2013-08-12

Yep, it just won't fit in as small of a casing.

Arvind Ramesh (author)2013-08-12

hi i have a doubt is it possible to use a arduino pro micro board.

Patrick S (author)Arvind Ramesh2013-08-12

Yep! You just have to make sure you wire the motor to two PWM pins on the micro board. You may have to switch a few numbers in the code, but it should be doable.

Patrick S (author)2013-08-11

I haven't done much with a four pronged one but I know you have to use both. You use the echo pin first to send out the signal and then the trigger pin right after to listen for how long it takes for the echo and then you can calculate distance. Unfortunately I don't know much more than that, but there is an instructable on it that should help:

qblack1 (author)2013-08-03

Awesome project, and I love the 3D printed case. I printed mine, and it came out perfect (one timer!). I think the wiring diagram may have an error, or alternatively the Arduino code. The speaker pin is defined as 9 in the code, but in your diagram it is 11. The vibrating motor pins are 10 and 11 in the code, but are 9 and 10 in the diagram. I just changed the physical pins to 9 for speaker, and 10 and 11 for the motor and it worked famously.
Great explanations for everything. Thanks again.

qblack1 (author)qblack12013-08-03

Here's my breadboarded test version with 3D printed box.

Patrick S (author)qblack12013-08-03

Sweet! Glad to see someone is trying it!! That looks really good, and yeah I think I switched something in the code I'll be sure to fix it.

hackery21 (author)2013-07-27

I have a patent on this. Sorry. I also entered it in an instructables contest a while back.

Patrick S (author)hackery212013-07-28

Do you mean a license on an instructable? Yours said it had no license and was also deleted so I'm not sure if that's what your talking about. Message me.

hackery21 (author)Patrick S2013-07-28

No, not a license on an instructable, A legal patent.

Sorry, not buying it.

Hackery21, you posted to the instructables forum in March 2013 asking for instruction and help on making this device (

Caitlinsdad pointed you to an instructable made in 2009:

Similar to this, back in 2008, was:

Both of these are licensed as "Attribution Non-commercial Share Alike (by-nc-sa)" this means that you can "This license lets others remix, tweak, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms. Others can download and redistribute your work just like the by-nc-nd license, but they can also translate, make remixes, and produce new stories based on your work. All new work based on yours will carry the same license, so any derivatives will also be non-commercial in nature."

This means that you don't own a patent. You just paid for one for the fun of it. 

I have a legal patent, and messaged it to mischief. If he wishes, he can share it with you. The post I made was for an issue I was having when building it. All the hardware was mostly done, I needed help with the code. I have a legal patent on the hardware. Sorry for any confusion.

Grathio (author)hackery212013-08-02

Hi hackery21, I'm the author of the haptic range-finding device in the intro. I've done a search of the US patent office and been unable to find your patent. Would you mind sharing the patent number here? Since patents are part of the public record there should be no problem with sharing the information freely.

hackery21 (author)Grathio2013-08-03

Due to the fact that its a provisional patent, It is not in the public records.

Hey Mizchief100, read my response to hackery21 below.

Side note: I like this instructable very much, and have been considering something similar for a friend who has sight limitations. I appreciate your presenting this to the Instructables community at large.

Cool, let me know how it goes if you decide to build one!

Samw (author)hackery212013-07-28

Does that mean that someone is not able to open source their own plans for making something similar?

hackery21 (author)Samw2013-07-28

Technically yes. You have to understand business. You see, If I have people posting how to make it, Other companies can copy it, and change a few details about it, and then sell it. You have no idea how many companies get their ideas from instructables.

SumGie (author)2013-08-02

Cool project.

This is called a sensory translation device. It changes sound (ultrasonic) into touch (vibration).

I did something similar as part of a team senior project at DeVry. Ours translated video into vibration, in a grid on the chest.

Alpha-Dog1292 (author)2013-08-01

I just have one question, I went through this very quickly so maybe I missed it, But what is the purpose of the push buttons?

Patrick S (author)Alpha-Dog12922013-08-01

One acts as a switch for choosing sound, haptic, or both types of feedback and the other 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.

Build_it_Bob (author)2013-07-29

Very nice work ; I like when people use their talents to help others.

About This Instructable




Bio: I hope to help people with the things I make.
More by Patrick S:Guitar BackpackDIY Prosthetic Leg Foam Cover (Cosmesis)Tact: Low-cost, Advanced Prosthetic Hand
Add instructable to: