Helping Eyes (Mountable Visual Aid)

32K30850

Intro: Helping Eyes (Mountable Visual Aid)

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!

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!

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

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

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!

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!

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!

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!

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!

48 Comments

Geat work .. but i have a aquestion .. what is the number of the transistor

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

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.
Hi,
Where can we buy the nomenclature ?
Links please ?
Thanks

Hi,

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.

Thanks.

Warm regards,

Akshay! :)

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!

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.

Hi,

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.

Thanks.

Warm regards,

Akshay! :)

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!

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!

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

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

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

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

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

More Comments