Introduction: Deaf-blind Communication With 1Shield/arduino

[The photo from wikihow]
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

Step 1: 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)

Step 2: Connections

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)

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 .

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

Step 3: Software



#include <OneSheeld.h> #include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

String msg; int sent = 0; int i = 0; String phoneNum = "01287510064"; //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)
if (sent < 2) {
if (pC == 'S') {
sent += 1;
msg += pC;
else {
sent = 0;
msg += pC;
else if (sent = 3) {
i = i - 3;

Now this part is a little tricky so bear with me for a while , this function will be called in case the keyboard is used , what this function basically doing is 2 things , first it takes every single char you enter using the keyboard and uses it to build the message that will be sent later , second it checks if you want to send the message now , I realized that I can’t use the Enter button in the keyboard shield properly so instead I used this code to send the message if I clicked the “s” button 3 times in row , of course you can change it to any other button , and as before for far contact type sms first .

The rest of the code is self explanatory .

so I hope you like it and if you have any questions please comment below .