So consider this problem, how a person who can’t see communicate with a person who can’t hear or talk? , basically a blind-deaf communication problem .

the blind person’s only way of communication would be through talking and hearing , while the other person can only type and see , so let’s use that !

Blind to deaf

Talk → Text → Show

Deaf to blind

Type → Text → Voice Here is a video to demonstrate how it's working :

now let’s translate that into hardware.

Hardware Setup :

Hardware setup

- Arduino Uno or any

- LCD ( for this tutorial I am using the 16*2 one )

- Smart phone

- Potentiometer (10k will do)

Getting things ready :

To be able to use 1Shield you first need to download 1Shield library and add it to your arduino , also you need to download 1Shield app to your mobile phone and install it , you can get that from 1Shield site :

Follow this tutorial for how to plug 1Sheeld to arduino and how to upload the code :

Now i know the circuit might look a little messy but it's a simple LCD circuit :

- LCD RS pin to digital pin 12
- LCD Enable pin to digital pin 11
- LCD D4 pin to digital pin 5
- LCD D5 pin to digital pin 4
- LCD D6 pin to digital pin 3
- LCD D7 pin to digital pin 2
- LCD R/W pin to ground
- LCD VSS pin to ground
- LCD VCC pin to 5V
- 10K resistor:
ends to +5V and ground , wiper to LCD VO pin (pin 3)
  • 1
  • 2

Now the cummincation goes as follows :

Blind to Deaf

Voice Recognition → Text → LCD

Deaf to Blind

Keyboard → Text → TextToSpeech

basically voice recognition will convert voice into text which will then be sent

to an LCD so the deaf person can see it , TextToSpeech will take text from keyboard and convert it into voice so the blind person can hear it.

You need to choose Voice Recognition , Keyboard , TextToSpeech, and also SMS shield from the 1Shield app on your mobile phone , using the SMS shield we will be able to send messages to a far contact .

  • 1
  • 2
  • 3
  • 4

Now that you have a good idea about what we’re trying to do , let’s talk code .

Programming :

#define INCLUDE_TERMINAL_SHIELD #define INCLUDE_VIBRATION_SHIELD #include <OneSheeld.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); String msg; int sent = 0; int i = 0; String phoneNum = ""; //write phone number here int patternOne[6] = {1000, 2000, 1000, 2000, 1000, 2000}; int patternOneSize = 6; void setup() { OneSheeld.begin(); VoiceRecognition.start(); lcd.begin(16, 2); }

Basically just adding the libraries we will be using and initializing some variables we will be using later , keep in mind that we also going to use vibration sensor and the variables patternOne and patterOneSize is related to it , we will also be using the SMS shield in order to communicate on far distance that’s why we added the variable “phoneNum” which will hold the phone number you will be sending the sms to.

 //Blind to Deaf 
if (VoiceRecognition.isNewCommandReceived()) {   
String msg1 = VoiceRecognition.getLastCommand();   
//far contact if user said "sms" first   
if (msg1.substring(0, 3) == "sms") {     
String msg1f = msg1.substring(3);     
SMS.send (phoneNum, msg1f);     
TextToSpeech.say("sms sent");     
//close contact   
else {     
if (msg1.length() > 16) 
lcd.setCursor(0, 0);       
for (int i = 0; i <= 16; i++) {         
lcd.setCursor(0, 1);       
for (int j = 16 ; j <= msg1.length()-1 ; j++) {         
else {       

you can see in this part that I added 2 cases , far contact and close contact , for far contact the blind person needs to say “sms” first , other , it will be just shown on the LCD , also there are 2 cases for the LCD itself as it needs to be told to go to the second row when the message is longer than 16 as it can only print 16 digits per row.

void MsgBuild (char pC){ 
Read more »