HandSight: a Glove for the Blind to Feel Shapes and Navigate Obstacles

34,415

130

50

Introduction: HandSight: a Glove for the Blind to Feel Shapes and Navigate Obstacles



HandSight is a prototype glove to aid the blind. It can sense the lightness or darkness of a surface with tactile feedback from a vibration motor for each individual finger. It can also sense distance from physical objects or obstructions and indicate direction and distance with the same vibration feedback. It supports additional modes, and the possibilities are nearly endless. The glove can connect over Bluetooth to switch modes and visualize the sensor readings.

This instructable was made as part of the final project requirement in the CS graduate course "Tangible Interactive Computing" at the University of Maryland, College Park taught by Professor Jon Froehlich. The course focused on exploring the materiality of interactive computing and, in the words of Hiroshii Ishii, sought to "seamlessly couple the dual worlds of bits and atoms." Please see http://cmsc838f-f12.wikispaces.com/ for more details.

See our Wiki class page for the project here (where we talk about some of our challenges and limitations):
http://cmsc838f-f12.wikispaces.com/HandSight

Step 1: List of Materials

- Arduino Pro Mini-328 (5v, 3.3v may work but not tested) (x1)
- IR Reflectance Sensor - QRE1113 (x4)
- Vibration Motor ROB-08449 (x4)
- Ultrasonic Range Finder (x2) http://www.amazon.com/Ultrasonic-Module-HC-SR04-Distance-Arduino/dp/B004U8TOE6/ref=sr_1_1?ie=UTF8&qid=1355861471&sr=8-1&keywords=Ultrasonic+Range+Finder
- Bluetooth Mate Silver WRL-10393 (x1)
- 68 ohm Resistor (x1)
- 9v Battery and Battery Case with Switch (x1)
- FTDI cable (for programming) (x1)
- Double Sided Sticky Tape, or other adhesive to hold the ultrasonic sensors in place
- Wire, electrical tape, and soldering materials. Rainbow ribbon cable is recommended for easy wiring of the fingertip sensors.
- Glove that you don’t mind repurposing permanently
- Extra cloth that matches the glove
- Velcro, Sewing Materials
- Windows Phone to run our visualization and control app, or any device that supports the Bluetooth Serial Port Protocol (SPP) if you want to develop your own app

All electronic components available on sparkfun unless otherwise noted

Step 2: 3D Printing

Holders for the sensors can be found here:

http://www.thingiverse.com/thing:38133
http://www.thingiverse.com/thing:38134

We printed with MakerBot Replicator 2. Download STL files, open in a program called ReplicatorG. Put on platform/center. Generate Gcode.

Material PLA

Settings used:
infill% 10
layer height 0.27 mm
number of shells 1
feedrate 41 m/s
travel feedrate 56
print temp 226

plastic diameter 1.75 mm
extruder nozzle diameter 0.4mm

(in the actual gcode we changed platform temp to 060, which worked well for PLA)

Print four sets of the fingertip case, and two of the ultrasonic slot.

Step 3: Assembling the IR Sensor Package for Each Finger

Thread wire through the holes, place sensor next to them so that pin 1 is in bottom left. Carefully solder the wires to the pins, and check to make sure there aren’t any short circuits. Add the vibration motor into its hole, and solder wires to the leads so that they are the same length as the IR sensor wires. Repeat this process for the other three sensor assemblies. We used a rainbow ribbon cable for this process so that the wires stayed compact and so that it was easy to identify which wire was which.

Step 4: Attaching Fingertip Assemblies to the Glove

Cut a hole the size of the face of the 3D printed assembly into each of the four fingertips (not the thumb. Also cut a small slit on top of each finger of the glove large enough to pass through all six wires. You should reinforce the cut areas by either sewing tight stitches around them or by melting them depending on the glove’s material. Now thread the wires through the hole in the fingertip and out the hole on top of the knuckles. Repeat for the other three sensor packages.

Step 5: Attaching Ultrasonic Sensors to the Glove

Sew the two ultrasonic sensor supports to the top of the glove, far enough back so that they won’t bend with the fingers. They should be angled slightly away from each other so that their field of view is widened (5-10 degrees). Place double sided sticky tape or some other adhesive on the plastic between the slots, and attach the two ultrasonic sensors with their power and communication pins facing up and their audio sensors facing forward. Either solder wires to the pins, or use a less permanent solution as we did (see image).

Step 6: Adding a Battery Pack

Sew a pouch for the battery pack onto the back of the glove. This pouch should be wide enough to hold the battery and allow access to it at one end so that the battery can be replaced and the power can be switched on and off. Use velcro to hold the battery in place within its pouch.

Step 7: Soldering Connections

In our images, the wires are as follows:

- Blue: Power for the IR led (sensor pin 1)
- Green: Ground for the IR led (sensor pin 2)
- Yellow: Collector for the IR detector (sensor pin 3)
- Orange: Emitter for the IR detector (sensor pin 4)
- Red: Power for the vibration motor
- Brown: Ground for the vibration motor

Replacing these colors with the corresponding wires in your setup, separate the ends of the ribbon cable and solder together the grounds (green, orange, and brown). Solder each of these wires from each of the four packages together into a single connection, with an additional wire running out for connecting to the board. Also solder the four blue wires together in the same manner. Wrap all of the connections with shrink tubing or electrical tape to protect the connections and prevent short circuits.

Step 8: Preparing the Arduino Pro Mini

Solder angled headers to the six programming pins on the Arduino Pro Mini (see picture). You will use these headers to program the board over an FTDI USB cable, and they will also be used to communicate with the bluetooth module.

Step 9: Soldering Pins on the Arduino Pro Mini

Use the circuit diagram pictured to solder connections between the sensors/motors and the Arduino. The connections we used in our code are as follows:

- Blue wires (from IR LEDs) to VCC through 68 ohm resistor
- Green/Orange/Brown wires (grounds) to GND
- Yellow wires to analog pins A0, A1, A2, A3 (in order from index finger to pinky)
- Red wires digital (PWM) pins 3, 5, 6, 9 (in same order)
- VCC from two ultrasonic sensors to VCC
- Ground from two ultrasonic sensors to GND
- Trigger and Echo from left ultrasonic sensor to pins 10 and 11, and from right sensor to pins 2 and 4 (respectively).
- Red wire from battery to RAW
- Black wire from battery to GND

Step 10: Adding Bluetooth Module

Attach the bluetooth module to the programming headers on the Arduino Pro Mini. With both boards facing up, the pins line up exactly. You can use angled headers on the bluetooth module. We didn’t have female headers available, but adding them to the bluetooth module will make connecting the two sets of headers much easier. Don’t make any permanent connections, because you will still need to use the programming headers to actually program the Arduino. Note that it has been shown possible to program the board over bluetooth, but we didn’t pursue this possibility.

Step 11: Programming the Board

Connect the Arduino Pro Mini to the FTDI cable, being sure to line up the green and black wires to the Grn and Blk pins correctly. Then attach the USB end to your computer, and upload the code to the board using the Arduino software.

Our code is available at:
https://github.com/lstearns86/handsight

Download the git repository, and upload the file handsight_arduino/handsight_arduino.ino.

Step 12: Connecting Via Bluetooth

We have developed a Windows Phone 8 app that can be used to control the device and visualize the sensor readings. If you don't have access to a Windows Phone 8 device, or if you would like to develop your own control/visualization program, you can do so over the Bluetooth Serial Port Profile (SPP). Simply pair the bluetooth module with your phone or computer, then open a serial port connection on the appropriate COM port. The data from the device is in the following format:

[mode]:[+|-|=][reading]|...[+|-|=][reading]|[text]

[mode] is a number from 0-5 indicating the current mode
[+|-|=] indicates whether the reading is above the detection threshold (+), between the detection and white thresholds so black is detected (=) or below the white threshold so white is detected (-).
[reading] is a number from 0-1023 for the first four readings, indicating the voltage from the IR sensor, while it is from 0-200 for the fifth and sixth readings indicating the distance measured by the ultrasonic sensors (in cm).
[text] is only present in typing mode, and gives the characters detected since the last serial update

The following commands can be sent to the device:

0: edge detection mode
1: shape detection mode (black detection)
2: grayscale mode
3: navigation mode
4: typing mode
5: massage mode
10: calibrate the detection thresholds using the current readings
11: calibrate the black thresholds using the current readings
12: calibrate the white thresholds using the current readings

Note that the numbers are the byte values, not the ascii character codes for those numbers

The Windows Phone 8 was developed in Microsoft Visual Studio 2012 on Windows 8, and is available in our GitHub repository linked in the previous step if you would like to use it.

Note that you will need to change the name of your bluetooth module to match ours, or change the C# code that connects to it.

Be the First to Share

    Recommendations

    • Mason Jar Speed Challenge

      Mason Jar Speed Challenge
    • Bikes Challenge

      Bikes Challenge
    • Remix Contest

      Remix Contest

    50 Discussions

    0
    AzizaA1
    AzizaA1

    10 months ago

    thanks a lot for sharing,I am very interested of your project and i would like to release it by my self.could you give me more information about how does typing mode work i didn't get it ,also about what is the programmation language used in this case

    0
    lstearns86
    lstearns86

    Reply 10 months ago

    Thanks for your interest!

    The typing mode was a bit of an afterthought just to show other ideas for what this type of wearable could do. It can only support 16 characters (using different combinations of the fingers up and down) so it probably isn't very useful in most cases. If you added a fifth sensor then it might be usable.

    We programmed in a mix of Arduino and C#, although the C# code probably won't work anymore (it was written for a Windows Phone). The methods we used should translate to another device without too much difficulty though.

    0
    AzizaA1
    AzizaA1

    Reply 10 months ago

    thanks for your response .
    I have another question concerning how does this glove feel shapes?How does the glove identify the shape on the paper??
    I didn't get the idea.

    0
    YogeshwaraB
    YogeshwaraB

    5 years ago on Introduction

    guys how do i get the app?? i did all the connections and everything is working i just need the app now to change modes instantaneously. can i have the replay ASAP.. and great work guys

    0
    lstearns86
    lstearns86

    Reply 5 years ago on Introduction

    The code for the app is available on Github, and the link is at the end of the instructable.

    0
    sumaan
    sumaan

    Reply 2 years ago

    how to use that code ? because i also want it for my android application. i need to build an android application for modes changing but how can i ?? i didn't understand how to do for android studio...please help me.

    0
    lstearns86
    lstearns86

    Reply 2 years ago

    Please see my response above. This code was developed for Windows Phone, not Android. But all you need to do is set up a Bluetooth serial connection, which is fairly straightforward to do on other platforms.

    0
    sumaan
    sumaan

    2 years ago

    please sir help me... i really need android codes because i want to build my app on android studio so please give me android studio code...

    0
    Saied00
    Saied00

    Question 2 years ago on Step 3

    what sensors can i use instead of the IR reflective sensor used in this project, because i am not finding it in the electronic stores.

    0
    lstearns86
    lstearns86

    Answer 2 years ago

    I'm not aware of any other sensor that would work in quite the same way. You could possibly use a small camera (e.g., endoscope or optical mouse sensor), but that would be considerably more complicated.

    The sensor that we used still appears to be available in stores: https://www.sparkfun.com/products/9542, or a similar one: https://www.amazon.com/Optical-Switches-Reflective-Phototransistor-Output/dp/B00LVI7HGU/. Alternatively, you could build your own using an LED and a light sensor (which is effectively all these sensors are anyway, just tuned to a specific IR frequency).

    0
    Saied00
    Saied00

    Answer 2 years ago

    Okk thank you for your remarks.

    0
    OrpheusP
    OrpheusP

    4 years ago

    Sir. May I know at what line should I edit the code for the bluetooth module? I have the HC-05. I can't seem to find it in the C# code.

    0
    bindassbasanta
    bindassbasanta

    Reply 4 years ago

    search for "handsight" and convert it for what u desire :) simple :D :D

    0
    lstearns86
    lstearns86

    Reply 4 years ago

    The bluetooth module we used allowed us to replace the built-in serial port functionality that is usually used for USB. If you're using a different module, you'll need to find a tutorial for how to set it up and then replace our Serial.write lines with the equivalent for your module (usually there's a library you can pull in that has a nearly identical function, so a simple find and replace should suffice).

    0
    jlord11
    jlord11

    4 years ago

    Should I download the libraries of the sensor? I can't upload the sketch on my pro mini.

    0
    lstearns86
    lstearns86

    Reply 4 years ago

    I'm not sure exactly what problem you're encountering, but it's been awhile since we wrote this code and it's likely that some of the libraries have changed in the meantime. Please make sure that you're set up to install some other example on your board (e.g., blink), and that our code compiles. Please feel free to post any compilation or uploading errors and I'll see if I can help you resolve them.

    0
    jlord11
    jlord11

    4 years ago

    Guys I don't know how to make an app, is there any remedy to select the modes w/o using an app?

    0
    lstearns86
    lstearns86

    Reply 4 years ago

    We mostly used the app to help us visualize the sensor readings, it's not really necessary for changing the mode. The simplest solution would be to hard-code the mode that you want to use, or else change it via the Arduino Serial Port window. You'd need to connect it to a computer whenever you wanted to change the mode, though.

    Another possibility is to add a push button, and then replace the Serial port reading code with a check for whether or not the button is down. If it is, then switch to the next mode. You'll probably also want to add some logic to check for the button release, or a limit on the amount of time that must elapse before it increments the mode again (otherwise it may cycle through the events too quickly).

    0
    jlord11
    jlord11

    Reply 4 years ago

    Thank you sir