man who used a series of clicks, like a bat, to echo locate his surroundings. I
got to thinking about other blind people and their ability to navigate freely –
without the use of a guide dog or cane. I came up with the idea to use a series
of rangefinders that would take input from sensors and output feedback to pulse
vibration motors placed on a person’s head. As a person gets closer to an object
the intensity and frequency of the vibration would increase – it’s directly
proportional to the distance of an object. If a region was lacking feedback,
then it would be safe to proceed in that direction.
I call my submission the H.A.L.O. - the Haptic Assisted Locating of Obstacles. I
believe this can serve very useful for the visually impaired to have the freedom
to possibily move about hands-free without the assistance of a cane or seeing
eye dog. Technology has undoubtedly made our daily lives better. By using a few
inexpensive components and sensors, I’ve made a device that will allow the blind
to navigate their surroundings and avoid collisions.
Remove these ads by
Signing UpStep 1: Overview and Parts List
- Building the Halo
- Building the Motor Modules
- Building the Haptic Headband
- Wiring the Controller
- Creating the Software
The following is the parts list that will be relevant in the subsequent steps of this Instructable.
Halo:
- Rigid frame (I used a round embroidery frame)
- Female headers (for the sensors)
- Ultrasonic Rangefinders (Parallax Ping Rangefinders)
- Wire (Wires with male and female leads are convenient)
- Glue
- Twist ties to tidy up wiring
- Soldering station
- Male headers (for creating a bridge to feed 5v and ground
- RJ-45-Term Screw Terminal (2)
- RJ-45 Cable
- Marker
Motor Modules:
- Vibration Motors (5) - Motot, VIB,3V/60mA, 7500RPM
- Grid-Style PC Board
- Male header pins
- Motor "shroud" (to prevent things getting sucked into the motor)
Haptic Headband:
- Headband
- Sewing Kit
- 5 Motor Modules
- Wire (Wires with male and female leads are convenient)
- Safety Pins
- Female headers
- Soldering station
- RJ-45-Term Screw Terminal (2)
- RJ-45 Cable
- Marker
Wiring the Microcontroller:
- Arduino Mega 2560
- Wire (Wires with male and female leads are convenient)
- 5 LEDs
- Darlington IC - ULN 2803A
- 2 port screw terminal
- 9v battery
- 5v regulator
Building the Software:
- USB cable
- PC (for editing code and downloading to Arduino)
- Arduino
- Arduino development environment (www.arduino.cc)
- Source Code, modified Ping.h library










































Visit Our Store »
Go Pro Today »




Thanks so much for your nice words. You are right in that if there is a lot of detection in an area, multiple adjacent sensors are firing. Teasing out the bit of quiet in the "hallway" situation (left and right firing, forward is no vibration) requires some focus and training. However, it is amazing that as a sighted person, when blindfolded, you quickly focus your brain computing on those stimulus. I would like to see how I do after being blindfolded with the rig for an hour or so.
I think it'd be great to do a glove which you can feel distance on, too!
Also, would be great for able-bodied people, eyes in the back of the head...
I worked on a very similar project last year, for the Intel STS competition. It also uses 5 sensors and vibrating motors to convey distance information to the user. I like your idea of placing the motors around the head - I put them on a belt, against the lower back. I suppose that makes sense because whereas you have the sensors spread around 180 degrees, mine all face forward at slightly different angles, so the feedback doesn't really need to wrap around the body. The sensor placement is an interesting design choice - I wonder whether it's more useful to have good resolution in front of your face or be able to sense things in all directions around you. I guess if you added enough sensors, you could have both! Too bad vibrating motors are so imprecise...
I haven't had chance to check out your code yet, I'm looking forward to it.
Best of luck, I'll be voting for you.
http://dx.com/p/hc-sr04-ultrasonic-sensor-distance-measuring-module-133696
also i really found it hard to use the figure 1 because in the figure the motor has only 2 pins while in the your instruction it has 3 pins hehehe im confused, i know i might be a burden but thank you for being understanding.
// Display the range information
Serial.print("************ SENSOR ");
Serial.println(sensorNumber, DEC);
Serial.print(" Inches:");
Serial.println(inputSensorArray[sensorNumber].inches(), DEC);
Serial.print(" Feet:");
Serial.println(calculateRangeInFeet(inputSensorArray[sensorNumber].inches()),DEC);
Serial.print(" Gap in Milliseconds:");
Serial.println(motorStopTimeGap[sensorNumber]);
Serial.print(" Intensity:");
Serial.println(motorIntensity[sensorNumber]);
Serial.println();
we are having trouble with the codes. The following errors is below:
'RESCHEDULE_THRESHOLD_CONSTANT' was not declared in this scope.
In file included from HALO_Sketch_12_10_v8_2010.pde:15:
C:\Users\CAIMOL\AppData\Local\Temp\Rar$EXa0.454\arduino-1.0.2\libraries\Ping2/Ping2.h:22:22: error: WProgram.h: No such file or directory
HALO_Sketch_12_10_v8_2010.pde: In function 'int pingAndAdjustSchedule(int)':
HALO_Sketch_12_10_v8_2010:184: error: 'RESCHEDULE_THRESHOLD_CONSTANT' was not declared in this scope
From: bchua3
Date: Dec 13, 2012. 8:01 PM
Subject: Project HALO
Hi Sir,
Good day to you.
I am actually trying out the project HALO that you submitted.
I uploaded the code to our Arduino Mega 2560 directly.
There were a few errors, the RESCHEDULE_THRESHOLD_CONSTANT was not found so I had to delete the // before it. Wprogram.h was not found as well so I had to replace it with Arduino.h as we are using the latest Arduino IDE Build.
I compiled the program and it was a go, however, the motor kept on spinning and it wont detect the proximity of the obstacle.
Any advice Sir?
Thanks
Also, you will need to copy the ping2 library into /your_arduino_directory/library/Ping2
// RESCHEDULE_THRESHOLD_CONSTANT - Note: This may be replaced by "debouncing?" the motor
// This is the threshold over which the distance is large enough to trigger a
// reschedule event. If too small, there may be a lot of rescheduling, and if
// it is too large, then there may not be enough granularity.
//#define RESCHEDULE_THRESHOLD_CONSTANT 20.83
or all these lines:
// CALIBRATION VARIABLES
// INTERPULSE_LANTENCY (milliseconds) - Defines the period of time between when one ping
// fires and the next fires. This should allow for the sound to travel to
// its furthest detectable echo distance so that the next sensors RX will not
// pick up splash from the previous ping's TX. This may/will result in
// a lower than real distance result from the next sensor.
#define INTERPULSE_LATENCY_DURATION 25
// MOTOR_PULSE_DURATION (milliseconds) - Defines the duration that the motor will pulse
// This is a constant at the moment, and the MOTOR_VIBRATION_FACTOR will
// shorte between the pulses of the motor
#define MOTOR_PULSE_DURATION 250
// RESCHEDULE_THRESHOLD_CONSTANT - Note: This may be replaced by "debouncing?" the motor
// This is the threshold over which the distance is large enough to trigger a
// reschedule event. If too small, there may be a lot of rescheduling, and if
// it is too large, then there may not be enough granularity.
//#define RESCHEDULE_THRESHOLD_CONSTANT 20.83
'RESCHEDULE_THRESHOLD_CONSTANT' was not declared in this scope.
In file included from HALO_Sketch_12_10_v8_2010.pde:15:
C:\Users\CAIMOL\AppData\Local\Temp\Rar$EXa0.454\arduino-1.0.2\libraries\Ping2/Ping2.h:22:22: error: WProgram.h: No such file or directory
HALO_Sketch_12_10_v8_2010.pde: In function 'int pingAndAdjustSchedule(int)':
HALO_Sketch_12_10_v8_2010:184: error: 'RESCHEDULE_THRESHOLD_CONSTANT' was not declared in this scope
http://polymythic.com/HALO_SourceCode_v8.zip
Copy ping2 library into arduino/libraries/Ping2 and it should be good to go. You'll see the "include ping2.h" in the sketch.
by the way im louie from the Philippines and a computer engineering student.here thanks again and GOD Bless...
http://www.instructables.com/id/Haptic-Feedback-device-for-the-Visually-Impaired/
Zoom in and the pins should be right.
I am a Honours Industrial Design student and I've decided to replicate this project as part of my Major.
I've gone for the budget HC-SR04 ultrasonic sensor, and now trying to modify your library to suit these ping sensors - i'm a novice with coding so i will see how I go. If you happen to know of any existing mods to your code could you please let me know?
The project is based around Low Vision and Location Sensing.
Best,
imran
www.imranshamsul.com
If you have any questions, I will try to answer them. Email me at steve@polymythic.com.
Good luck!
http://www.instructables.com/id/Haptic-Proximity-Module-HPM-for-Low-Vision-users/
Thank you again for the inspiration!!