Introduction: DIY Navigation Device for Blind People Using Arduino and Android Smart Phone

In this project you can cover your eyes and let your smartphone navigate you to avoid obstacles, the application is mainly a DIY navigation device for blind people.

I knew that 1Sheeld is about to launch a new text to speech shield, and so I contacted them to let me use it in this project and they accepted since I'm one of the early Kickstarter backers :D

By using 1sheeld I made the text to speech part by only 1 line of code!

All you need to get started

1. Any Arduino board (here i used UNO)

2. 1sheeld

3. Ultrasonic sensor (I used two for better navigation)

4. Male-female arduino jumbers or wires

5. Your belt

6. Any smart phone that runs Android V2.3 and above.

Download 1sheeld application to your android smart phone from here

Download 1sheeld library from here and put it in the libraries folder in your Arduino folder.

Step 1: Wiring and Electronics Setup

1. Connect your 1sheeld to your arduino board

2. Connect your ultrasonics as shown in figure

VCC ==> to the 5V in your 1sheeld
GND ==> to your GND in 1sheeld

ECHO ==> to any i/o pin here i used 11 and 13 for the two ultrasonics

Trigger ==> to any i/o pin here i used 10 and 12 for the two ultrasonics

If you have the 5 pin ultrasonic make the same wiring and put the out pin on SC.

(OUT ==> to your GND on 1sheeld)

Step 2: Belt Setup

I needed to put the Arduino and 1Sheeld in a cover, I couldn't find any plastic box so I got this laser cut case from Fablab Egypt.

You can make a case with a laser cutter like this one also.

I used wires to mount the case and sensors to my belt.

Step 3: Software (Arduino Code)

#include <OneSheeld.h>

#define inputPin 11

#define outputPin 10

#define inputPin2 13 #define outputPin2 12

#define my_constant 20

unsigned int sensor_r_value; unsigned int sensor_l_value; unsigned int sensor_r_value_last; unsigned int sensor_l_value_last; int difference;

void setup(){ pinMode(inputPin,INPUT); pinMode(outputPin,OUTPUT); pinMode(inputPin2,INPUT); pinMode(outputPin2,OUTPUT); OneSheeld.begin(); }

void loop(){ read_sensors(); delay(1500); }

int measure_r(){ digitalWrite(outputPin, LOW); // send low pulse for 2μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); // send high pulse for 10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // back to low pulse int distance = pulseIn(inputPin, HIGH); // read echo value int distance1= distance/29/2; // in cm return distance1; }

int measure_l(){ digitalWrite(outputPin2, LOW); // send low pulse for 2μs delayMicroseconds(2); digitalWrite(outputPin2, HIGH); // send high pulse for 10μs delayMicroseconds(10); digitalWrite(outputPin2, LOW); // back to low pulse int distance = pulseIn(inputPin2, HIGH); // read echo value int distance2= distance/29/2; // in cm return distance2; }

int read_sensors(){ sensor_r_value=measure_r(); sensor_l_value=measure_l(); if((sensor_r_value<30)||(sensor_l_value<30)){ TextToSpeech.say("stop now and rotate"); } else{} if(((sensor_r_value>30)&&(sensor_l_value>30))&&((sensor_r_value_last<30)||(sensor_l_value_last<30))){ TextToSpeech.say("Go Forward");} sensor_r_value_last=sensor_r_value; sensor_l_value_last=sensor_l_value; }

Step 4: Code Explanation

Basically, the ultrasonic sensors gets the distance in front of me, if it is higher than 30 cm then no problem, if not then it sends to my smart phone and it tells me through the speaker t turn till the distance is over 30 again, then the phone tells me to continue moving forward.

I used two sensors for better quality and wide range coverage, there is a function that compares between the 2 readings of the sensors and takes the decision based on that.

Let me know what do you think!

Comments

author
richardli (author)2014-09-02

what a kind idea, i love it , can i share it in my blog?

author
amr wasfy (author)richardli2014-09-08

Thanks richardli, of course you can share it

author
midhunprasad (author)amr wasfy2017-01-21

Sir, I hav made this device. I made the conncections and programmed the UNO before it as you described. But I dont get ny output from my 1sheeld app which i was connected via BT. Here I used 1sheeld+ and is there any problem with it.

author
midhunprasad (author)2017-01-21

Sir, I hav made it as U said above. but i ddnt get ny output frm my phone. I purchased 1sheeld+ and 2 ultrasonic sensors and they were connented to arduino uno. I hav programmed it before making the connections.

author
La_Tahzan (author)2016-12-14

What is the used of 1sheeld actually? And where did you put the ultrasonic sensor?

author
KevinO74 (author)2016-06-04

What is the replacement for 1Sheeld, I can't get one around

author
Joanna KazzandraD (author)2016-02-06

can you help me how to use Bluetooth module and to develop my own android application to make this possible?

author
PaulS160 (author)2015-11-17

One fixed the code repeating "stop now and rotate "

author
HumzaK (author)2015-10-28

can you tell me what language this is

author
jerrymonkey123 (author)2015-08-12

cool,but not for me !

author
NikhilS3 (author)2014-09-30

And fyi, you could use androids very own built in tts (text to speech) API, for voice synthesis.!

author
mnayak4 (author)NikhilS32015-08-08

bro can you please tell me more using Bluetooth how can we implement this project I'm beginner....please help me out

author
masnahG (author)2015-04-17

i have a question. how do you make the 1sheeld software can be accessed directly by blind people? i mean, theres a procedure to turn on the texttospeech feature everytime 1sheeld is activated(in the smartphone). do they need assistance by other people everytime they want to switch it on? or do you use any other specific app for that?

author
NikhilS3 (author)2014-09-30

Why pay around 5-7k and use 1sheeld to make the arduino communicate with any android smartphone, when u can use a much cheaper bluetooth module (say HC-07) costing you abut 500-600 bucks, which accomplishes the same task.!

Would'nt it be cheaper and more convenient.? with all respect to ur work. Pl suggest.

author
ankyproject (author)NikhilS32015-03-24

bro u made a point
can u help me out as i am beginner
i will be grateful to you for this
ankitst2@gmail.com

author
Deepak_Dulal (author)NikhilS32015-01-18

Brother , please help me with this project, i wana make use of cheaper bluetooth module instead of 1sheeld.. i am a beginner.

author
NikhilS3 (author)Deepak_Dulal2015-01-18

@Deepak just use any bluetooth module, you can start off with by using HC-05 bluetooth module available on the internet for around $8-$9, to establish connection between your android phone and arduino. You however would need a custom android app which u would have to develop. I made an app and Added the functionality of voice aided Navigation to any destination i walking range. The app is deployed in such a way that, the user just has to plug in any earphone and the app automatically launches, scans and automatically connects to the Bluetooth module. Contact me for more information.

author
NikhilS3 (author)NikhilS32015-01-18

The app basically uses built-in Text to Speech feature in the Android OS. Thus when an Obstacle is detected by your ultrasonic sensors, an appropriate Voice output is generated. (Something like "Please Stop Obstacle on your right")

author
Deepak_Dulal (author)NikhilS32015-01-21

bro i have sent u a message, please check

author
ankyproject (author)2015-03-24

can someone help woth this project
ankitst2@gmail.
com

author
kingofblame (author)2015-01-11

what battery did you use??

a 9 volt battery??

author
EnriqueB (author)2014-11-29

Very cool project. I have a question though, I get TTS failed in the 1sheeld app, what should I do?

author
kchawla1 (author)2014-11-03

What have you defined my_constant and what is the use of int difference?

author
GADGET-MAN0101 (author)2014-10-29

you have made a great product.

please can you tell me what the problem was.

if you had a chance what order solution would you have to make this.

author
GADGET-MAN0101 (author)2014-10-29

you have made a great product.

please can you tell me what the problem was.

if you had a chance what order solution would you have to make this.

author
golden_arrow (author)2014-10-29

I get an error in texttospeech.say command? Can you help?

adsiz.png
author
akram.elorgwany (author)2014-10-20

May i ask where are you from you said you got this laser cut case from Egypt,i live there actually.

author
akram.elorgwany (author)2014-10-20

nice you blew my mind with this one i had this idea i searched & you the only one i found who made it great work man keep it up :)

author
jn.rahm (author)2014-10-17

Great project!

Instead of wholly relying on TTS, you could use vibration as a form of communication instead. Have a vibrating motor unit on each hand (can look neat like a watch) and depending on "left" or "right" command, the corresponding motor could vibrate. For warnings you could have some sort of buzzer.

This would be more responsive and could simulate someone guiding the person by the hand.

author
7madSkillz (author)2014-09-28

Love the project and fascinated by its concept. I tried to make one but had some issues.

The TTS message keeps repeating " stop now and rotate" even when in open space and TTS for "Go Forward" not detected. Did you faced the same problems initially? Can you assist me why i'm this problem?

Hope to hear your reply soon...

Thanks :)

author
Avadhut.Deshmukh (author)2014-09-08

Great project!

author

Thanks Avadhut.Deshmukh..

author
mflorez (author)2014-08-27

Very good idea for the ultra sonic sensors maybe add an amp to them for more distance accuracy
And maybe use infrared too to associate the obstacle more evenly

author
amr wasfy (author)mflorez2014-08-28

Thanks mflorez for your suggestions, i'll try it

author
Shantorian3d (author)2014-08-26

It looks amazing, the only things I noticed might be that people might like to move faster than in the demonstration video, which would mean that the warning would come too late. Maybe you could have a pre- warning sooner? Such as "Approaching object" for example. the other thing is the position of the sensors doesn't account for objects close to the sides, so people might bump their arms.

Still, it's amazing

author
amr wasfy (author)Shantorian3d2014-08-27

Thanks Shantorian3d, it's my first prototype in which i was proving the concept ,and i'll consider your suggestions.

author
Shantorian3d (author)amr wasfy2014-08-27

It's an outstanding idea. It's nearly perfect as it is.

author
radiograf (author)2014-08-26

Excellent, nice to see young minds applying themselves to others needs. Just shared it with the NABD a UK charity who put disabled motorcyclists on the road again.

author
amr wasfy (author)radiograf2014-08-27

Thanks radiograf for your kind words, and sharing my project.

author
MsSweetSatisfaction (author)2014-08-26

Wow it look like it works pretty well, and there's some pretty awesome reasons to create this device! Thanks for sharing!

author

Thanks MsSweetSatisfaction !

author
TSJWang (author)2014-08-26

Awesome concept!
Maybe the next thing is to make something that can detect moving obstacles, like on city streets.

author
karl84 (author)TSJWang2014-08-26

What are you implying?

author
mrandle (author)2014-08-26

You should check out https://www.instructables.com/id/Haptic-Comlink/. If you combined this with what you have you could have a wrist mounted avoidance system. Great project!