Introduction: Helping Eyes (Mountable Visual Aid)

Picture of Helping Eyes (Mountable Visual Aid)

Do you know someone who is visually impaired? Or have you ever imagined how challenging this may be? Many with this disability navigate surprisingly well despite their lack of vision. However, accidents can still happen in certain circumstances. When a ceiling is low or the design of a building is foreign, one could hit their head at no fault of their own, even if they are careful. To solve this, I designed Helping Eyes!

Helping Eyes is a "visual aid" which can be mounted to any apparel to prevent injury to the visually impaired. It uses an ultrasonic range sensor to "sense" objects and sends vibrations to warn its wearer of the incoming object (or wall/ceiling). As an object comes closer, the vibration's intensity increases. Helping Eyes is inexpensive (less than 10 USD), compact (5cm by 7cm), runs on two small coin cell batteries, and can be mounted anywhere. Using this tutorial, you can build one of your own in just a few hours!

(Below is a video of the Helping Eyes mounted on a hat. You will notice some tones produced by the device when it is on. These are only audible because of my recording equipment. In person these sounds are not audible.)

Step 1: Get Parts!

Picture of Get Parts!

You will need these parts:

-Attiny85 (with socket)

-HC SR-04

-SPST Slide Switch

-Two CR2032 batteries (with holder)

-NPN transistor

-1N4007 Diode

-Perfboard (5cm by 7cm)

-DC Vibration Motor (I salvaged mine from an Xbox controller)

-A mounting surface (i.e. a hat)

You will need these tools:

-Soldering Iron (with rosin)

-Hot Glue Gun

-Wire Stripper

Step 2: Breadboard It!

Picture of Breadboard It!

Like all circuits, before soldering our final implementation it is good practice to build the circuit on a breadboard first. Using the schematics in step 3 and the code in step 4, build the circuit on a breadboard. Here are some references/knowledge you'll need during this step:

-How to program an attiny

-How to read schematics

-Attiny datasheet

Once you are finished you may want to keep your breadboarded circuit in tact as a reference for when we solder!

Step 3: The Schematics

Picture of The Schematics

The schematic can be broken down into three parts:

1. Power Supply

2. HC SR-04

3. DC Vibration Motor

The power supply consists of two CR2032s, a diode, and a SPST switch. The CR2032s in series will give us a voltage of about 6v (provided that we are using relatively "new" batteries). From the attiny's datasheet, you will find that the absolute maximum operating voltage of an attiny is 6v. Since batteries can produce higher voltages than their rated amounts, just connecting two CR2032s in series could give us voltages higher than 6v (which would damage the attiny). To lower the voltage, I added a diode in series with the batteries. This will drop the voltage down 0.7V, to ensure our attiny never receives any voltage higher than 6v. To complete the power supply, add a SPST switch to act as an on/off switch for our circuit.

Connecting the HC SR-04 is rather straightforward. Just connect VCC to our positive voltage supply, the GROUND to ground, TRIG to the attiny85's pin 2, and ECHO to the attiny85's pin 3. (The TRIG and ECHO connections are dependent on the attiny's programmed code).

The DC vibration motor requires a transistor, and an attiny pin to function. First, connect the base of an NPN transistor to the attiny's physical pin 5. Then connect the collector to our positive voltage supply and the emitter to the positive connection on the DC motor. Finally, connect the DC motor's negative side to ground. A transistor is used to operate the DC motor because the attiny's pins do not supply enough current to power our motor, so instead we use a transistor so we can supply more current to the motor.

Step 4: The Code

Picture of The Code

The code was adopted from another instructable I wrote: Pocket-Sized Ultrasonic Ruler. I used the same logic for finding distance with the HC SR-04 as that instructable, but I added a block of "if" statements and logic for the "motor".

Our code can be broken down into three parts:

1. The setup (and on indicator)

2. Distance finding

3. The "if" block

At the beginning of the code, you will see declarations of our variables (which are subject to change based on personal preferences). There are our RANGE_FAR, RANGE_MED, and RANGE_CLOSE variables, (which define the thresholds of the distance of an object), and SENS_HIGH, SENS_MED, and SENS_LOW, (which define the sensitivity the DC motor will be when the thresholds are crossed). Then in our setup function, we call the pinMode() function to assign outputs or inputs and send some positive voltage pulses to our DC motor to tell our user the device is "on".

As mentioned before, the distance finding logic (in our loop() function) is similar to a previous instructable. It's best just to believe me that this code returns the distance (in centimeters) for us to process later.

The "if" block's purpose is to check if our distance crosses anyone of our three thresholds: RANGE_FAR, RANGE_MED, or RANGE_CLOSE. If it crosses one of those thresholds, It will send a duty cycle to the DC motor equal to either the SENS_HIGH, SENS_MED or SENS_LOW variable. (255 is a full duty cycle and 127 is 50% duty cycle). I have made all of these constant variables, feel free to change their values according to what you want your distance threshold and sensitivity to be.

Step 5: Plan the Layout!

Picture of Plan the Layout!

Before we solder, let's make sure we use our perfboard space wisely to avoid having to move components later. Here are some things to consider while planning your perfboard layout:

-Give the DC vibration motor room to spin.

-Make the SPST switch easily accessible.

-Mount the HC SR-04 straightly with nothing obstructing its view.

-Make sure the batteries can be easily replaced.

When you have considered these, we can finally solder our final circuit!

Step 6: Solder!

Picture of Solder!

Before soldering any components to the perfboard, be sure to hot glue your DC motor to the board. This will protect any wires from being disconnected later on.

To begin soldering, I connected all the major components to the board first (such as the motor, attiny socket, hc sr-04). Then I made the necessary connections after. However, any way you solder your circuit will work, of course.

This circuit shouldn't need too much troubleshooting since there aren't many components, but if you run into problems be sure you connected two batteries and your diode since this circuit needs more than 3v to function (due to the voltage drop of the DC motor). Refer back to the schematic, and your breadboarded circuit for help troubleshooting!

Next we can mount your new Helping Eyes to your mounting surface!

Step 7: Mount It!

Picture of Mount It!

Since this device is so small, it can be mounted to many surfaces (such as clothing, hats, belt buckles, etc...). I chose to mount mine to a hat to prevent against accidents involving low ceilings in homes. Because if the varieties of mounting surfaces, I will give you a list of ways to mount your Helping Eyes:

-Use Hot Glue or Epoxy

-Make the circuit using a arduino lilypad and sow it into clothing.

-Attach using velcro

-Screw it into your mounting surface

There are many ways to mount your Helping Eyes, please share your mounting alternatives below in the comments!

Step 8: Walk Safer!

Picture of Walk Safer!

Hopefully you are now an owner of a Helping Eyes visual aid! It makes a great gift, or a good addition to your collection of electronics projects. I hope you learned a bit about DC motors, ultrasonic range sensors, attinys, and using CR2032s. If you enjoyed this instructable please support me by voting for this in either the Home Improvement, Battery Powered, or Epilog contest! Thank you for your interest, and enjoy your new device!


Mikewin made it! (author)2016-05-16

I made some modifications to the project to get it to work with the particular case I found, but it works amazingly well and the pager motor creates plenty of haptic feedback.

rlopez21 (author)2016-04-19

I added an IR sensor for soft obstacles where the ultrasound does not work.

BurakTutal (author)2015-04-26

Nice Project. I have made a smilar one. But mine is talking according to distance :) You can check my project. :)

hmcauley (author)2015-04-26

WoW what a great idea. I wish I had the intelligence to make this! BSVI (bureau of services for the visually impaired )would love this idea. I have been visually impaired since I was 2 years old. I was injured in a accident and I have been wearing a prosthetic eye for 45 years. I still run into things today as I have no peripheral vision. Also with only one eye you cannot see 3d. This will help so many people. Thank you so much for sharing your idea.

Daidai74 (author)2015-04-13

Where can we buy the nomenclature ?
Links please ?

Bracher made it! (author)2014-11-13

Built mine today or at least the prototype on a breadboard. Works great! I used a shaftless vibration motor though since I couldn't find anything else which I didn't have to get shipped to me. Still have to figure out how I will get it to make enough noise for the person to at least hear though. So i might put a piece of tin around it to get more attention.

Will puth everything on the perfboard tommorrow.

Here's a photo of my current progress. Thanks for this great tutorial.

akshay.d21 (author)2014-11-04


Amazing project. But can we use a Buzzer instead of Motor ? I mean the buzzer will produce larger beep as object approaches it ?
Need help for a project.


Warm regards,

Akshay! :)

bergerab (author)akshay.d212014-11-04

Thanks! Yes you could use a buzzer instead of a motor for this device. Instead of changing the volume of the "beep", Arduino IDE makes it simple to produce a different frequency tone to coordinate with the HC-SR04's distance reading. Provided that you have a recent version of Arduino, all you need is to use the tone() method. For more help on your project, please give me a private message! Thanks for your interest!

akshay.d21 (author)bergerab2014-11-04

Thank you so much for your reply. Actually i am new to embedded systems and Arduino. I will revert back if i have more queries. Thank you again for your valuable reply. :-)

Warm regards,


akshay.d21 (author)2014-11-04


Amazing project. But can we use a Buzzer instead of Motor ? I mean the buzzer will produce larger beep as object approaches it ?
Need help for a project.


Warm regards,

Akshay! :)

defjedi (author)2014-09-15

Hi, Love the idea and concept.

Tried to make one for myself but faced certain hurdles. When i switch on the project, the vibrating motor will immediately vibrate and stop after a bit. No detection can be made after that.....hhmmm...ATtiny85 was tested and ok.

Hope you can help so i can complete the project...Thanks!

bergerab (author)defjedi2014-09-16

Hey defjedi! I've ran into my fair share of problems when designing this so I can offer a bit of help. First try running the ATtiny85 at 8MHz. This almost always makes for better performance with the chip. If that doesn't work, make sure your HC-SR04 is receiving about 5V. Finally check for any faulty transistors or diodes. If you still have problems let me know. I'd love to see a picture of your implementation when you are finished! Thanks for the comment!

fixfireleo (author)2014-07-15

nice but i wonder how many drunks will think this can help them drive home? lol

dsantil71 (author)fixfireleo2014-09-11

I thought that when new cars started coming out with features like parallel parking itself, stopping itself from hitting a car in front it & alerting the driver to cars in their blind spots. lol.

caixinhadeleite (author)2014-08-26

awesomely simple. a lot of people knows a lot about electronics and could do a lot for those who have especial needs. what makes you better than all of them is your good will for sharing that simple and affordable solution.

of course you have my vote.

silentbogo (author)2014-08-15

This is very cool and very practical.

It will be even cooler if you use 2 vibros from some old cellphones(smaller and less power hungry) and make it give directions for collision avoidance (turn left, turn right).

pocokk (author)2014-07-26

Aha, I made one from old Motorola Beeper vibrator. Thanks Pal. Just order 12 Attiny85 wish to have more ideas to explore.

tassio Franca (author)2014-07-19

Muito bom!

maty314 (author)2014-07-19

Great, great idea! I really like this concept, please keep the good work!

william thomson (author)2014-07-16

Does it come with glasses so you can see on your hat??
If you don't can you please add it??

Build_it_Bob (author)2014-07-16

Very nice , thanks for sharing !


loompiggytutorials (author)2014-07-16

This is amazing

Haha well thank you very much! Glad you like it

aqiff (author)2014-07-15

this project use arduino?

bergerab (author)aqiff2014-07-15

Yes! I used an arduino mega2560 to program an attiny85 (you can also program it with an arduino uno). It all uses the arduino IDE you just need to learn how to program the attiny (I have links in the breadboarding step). Good luck and thanks for commenting. Let me know if you have any other questions!

aqiff (author)bergerab2014-07-16

thank you, how to program the attiny, can you share with me

jtechian (author)2014-07-15

Great project!

I thought of doing this before the microcontroller became big. Here is what my idea was and now possible with Atmega . Headband with multi ultrasonic pairs around the head (maybe 4 will do ), sequence them and feed readings to the Atmega . rather then a vibrator, the headband has an electromagnetic pulse (maybe like a speaker coil and magnet ) for each direction that will kind of tap the skin and like your vibrator tell how far an object is. Will even look behind you LOL.

bergerab (author)jtechian2014-07-15

Hmm interesting idea! I do like the "tap" indicator instead of vibrations since the vibrations can become a little overwhelming at times. With your headband idea, it would seem hard to make it small and sleek with 4 ultrasonic sensors on it. That seems like the only troublesome part. Thanks for commenting!

jtechian (author)bergerab2014-07-15

perhaps rather then headband use a hat and put the tap indicators in the headband of the hat. I think its do-able!

brmarcum (author)2014-07-15

And again with the awesomeness! Nice project bergerab

bergerab (author)brmarcum2014-07-15

Thanks so much! I'm still digesting all that information from your op amp instructable. I plan on using one in an up-coming project, if I need any help I'll give you a private message since you clearly know your stuff!

cybergod (author)2014-07-15

Exceptional! What a great idea. Will look to build one, just to have one and gain experience. Thanks.

bergerab (author)cybergod2014-07-15

Thank you so much! If you have any technical questions that you want everyone to hear you can respond to this comment. Otherwise feel free to private message me if you have any issues!

TreySully (author)2014-07-15

I'm visually impaired and very tall. Man, could I use one of these. Thanks for your ingenuity and commitment to helping VI people with thoughtful consideration. It's much appreciated!

bergerab (author)TreySully2014-07-15

So glad to hear I could help! I love to hear that projects I make can effect people in the real world. Helping one person with this disability is enough to call this project a success in my book. Thank you so much for commenting!

Squidyman (author)2014-07-15

Funny thing is that it takes someone with decent vision to make one :P

But excellent idea though! (the irony is funny though)

tovey (author)2014-07-15


When a ceiling is low or the design of a building is foreign, one could
hit their head at no fault of their own, even if they are careful. To
solve this, I designed Helping Eyes!


This a good idea for people who have no other impairment than being taller than average.

At 6'2" I can assure you, one need not be visually impaired to hit ones head on low hanging cupboard doors, ceilings. And most importantly those low entryways going down into basements. They always seem to look taller than they are.

(Maxwell Smart Voice) Would you believe, its the looking down the stairs trick.

VJCoon (author)2014-07-15

Cool I can't wait to get one made it's a shame there's not a way to safely mount it to shoes curbs are the worst but not bumping my head'll be nice too

bergerab (author)VJCoon2014-07-15

There is certainly a way to mount something similar to this on shoes but I would suggest buying an arduino lilypad and sowing the circuit into your shoe with the HC SR04 on the tip of your toes. Great idea! Thanks for commenting

gtoal (author)2014-07-15

This is very similar to what I want to do for bicycles, so that the rear light of a bike could indicate to a person cycling behind that they are at the optimal distance for drafting in your wake. How good are these sensors at detecting something as small as an edge-on bicycle wheel and is there any chance they would work at speed in a wind? (say between 15-25mph)

bergerab (author)gtoal2014-07-15

That sounds like a great idea! I don't foresee any major problems with using an ultrasonic range sensor while moving 15-25 mph, except even a falling leaf could trigger it so there might need to be some debouncing. I'd love to see an instructable of that! Thanks for your interest

nqtronix (author)2014-07-15

Blessed with perfect eyesight I've never thought about anything like this, but this is pretty clever indeed! Have you build it for anybody special? If so, is this device handy in practical use?

I've noticed that pin 3&4 are mistakenly connected in the shematic. The dot belongs were the two black wires cross. Also you might want to add a flyback diode to the motor and a 100nF cap between the VCC and GND pin of the attiny.

If you want you could also use timer 1 to create a PWM signal to drive the motor, this would allow a smooth transition between differant distances, without the use of the delay function. I don't know if a smooth transition is any better than steps, but it's worth a try. Another idea would be to create shorter and longer pulses depending on the distance, which might be easier to feel than different levels of vibration.

A feature I'd definitly add would be a low battery warning. Nothing woulb be worse than running into a wall just because you'd thought nothing is in the way. This can be done by adding a voltage divider to pin 6 (AIN1) to trigger if the divided voltage falls below the internal 1.1V reference.

If you care about the longest possible runtime with two batteries there are a few power saving options built into the attiny. The most significant option is the system clock prescaler, since you don't need the 8Mhz for a rather simple task. You could also send the attiny into idle mode, which would reduce the power consumption when the chip does nothing. Some periferal modules such as the ADC or watchdog timer can also be disabled when not in use.

Honestly I've never written any code for an ardruino (I've always written code diretly in C), so I don't know how much effort it will be to include those ideas. Anyway I love this project, you'll never know if you gonna need things like this some time, so it's good to know such things exist. You've got my vote :)

bergerab (author)nqtronix2014-07-15

Thanks for the response and all the suggestions. I did use PWM to drive the motor for different sensitivities and actually the "delay(100)" is because the HC SR-04 wouldn't receive enough voltage to operate if there was no delay due to the large voltage drop of the DC motor. A low battery warning is a great idea. And to answer your question, this wasn't actually built for anyone in particular it was just a product of my imagination, (after thinking of how difficult it would be for the blind to navigate in foreign buildings). I appeciate your addition to this project!

robertwoodliff (author)2014-07-15

Very nice .... and a good addition to the rear bumper of a car , so those tight parking spaces are less of a pain ?

donsabras (author)robertwoodliff2014-07-15

... and blind people will now drive in safety ^^

bergerab (author)robertwoodliff2014-07-15

I've seen many other projects for tight parking spaces using a HC SR-04, but I don't think thats in the scope of this project. But thanks so much!

Robson Couto (author)2014-07-14

Really nice!

I was thinking in something like this, but a devide to hold in the hand, liked the idea of putting it in a cap.

Good work!

About This Instructable




Bio: I'm a student at UW-Milwaukee studying computer science with a passion for electronics. I'm always working on a project or thinking of new ... More »
More by bergerab:Flame Controlled MIDI ControllerSOLO Cup SpeakerBackpack Anti-Theft Alarm
Add instructable to: