DIY Navigation Device for Blind People Using Arduino and Android Smart Phone
Intro: 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!
47 Comments
NikhilS3 9 years ago
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.
Deepak_Dulal 9 years ago
Brother , please help me with this project, i wana make use of cheaper bluetooth module instead of 1sheeld.. i am a beginner.
NikhilS3 9 years ago
@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.
musheer21 4 years ago
bro u made a point
can u help me out as i am beginner
i will be grateful to you for this
musheer578@gmail.com
DangerMiner 6 years ago
NikhilS3 9 years ago
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")
Deepak_Dulal 9 years ago
bro i have sent u a message, please check
ankyproject 9 years ago
can u help me out as i am beginner
i will be grateful to you for this
ankitst2@gmail.com
BhavinD4 5 years ago
richardli 9 years ago
what a kind idea, i love it , can i share it in my blog?
amr wasfy 9 years ago
Thanks richardli, of course you can share it
midhunprasad 7 years ago
midhunprasad 7 years ago
La_Tahzan 7 years ago
KevinO74 7 years ago
What is the replacement for 1Sheeld, I can't get one around
Joanna KazzandraD 8 years ago
can you help me how to use Bluetooth module and to develop my own android application to make this possible?
PaulS160 8 years ago
HumzaK 8 years ago
can you tell me what language this is
jerrymonkey123 8 years ago
cool,but not for me !
NikhilS3 9 years ago
And fyi, you could use androids very own built in tts (text to speech) API, for voice synthesis.!