Overview
Many mute people use body language and sign language to communicate with others because they are unable to talk. However, not everyone is familiar with sign language, therefore the mute cannot communicate with everyone using sign language alone.
Components required table
S.No | COMPONENTS | QUANTITY | link |
1 | Arduino UNO | 1 | https://www.amazon.in/Scriptronics-ATmega328P |
2 | Flex Sensor 2.2 Inches | 5 | https://www.amazon.in/PrimeRobotics-Flex-Sensor-2-2-Inches |
3 | Voice Audio Module(ISD1820) | 1 | https://www.amazon.in/REES52-ISD1820-Module-Recording-Microphone |
4 | Hand Gloves | 1 | https://www.amazon.in/OTOVON-Antistatic-Coated-Finger-Gloves |
5 | LM35 | 1 | https://www.amazon.in/Generic-2001SM0253-LM35-Temperature-Sensor |
6 | LCD 16X2 | 1 | https://www.amazon.in/OLatus-OL-COMBO-DISPLAY |
7 | Jumper wires | 50 | https://www.amazon.in/YUVS-Jumper-Wires-female-Pieces |
Introduction
Generally speaking, communication is difficult for those who are blind, deaf, or both. The most popular form of communication is sign language, which involves moving one or both hands and then making a facial expression that conveys a particular idea. The primary objective of this research is to create a novel vision-based system that can recognise and convert continuous sign language to text.
Flex Sensor Working
The resistance of a flat, unflexed flex sensor ranges from 25K to 30K. When the sensor is bent at a 45-degree angle, the resistance rises to over 65K. The resistance increases to over 100K when it is bent 90 degrees, similarly. It should be noted that this resistance value is arbitrary and subject to change.
Because the Flex sensor is a variable resistor, it may be read by pairing it with a 10k resistor that has a fixed value. Thus, a voltage divider network is created. Flex sensors have two ends, with one linked to GND and the other to Arduino’s Analog Input A0. Between A0 and +5V is attached a 10K resistor.
Interfacing Flex Sensor with Arduino
Source Code
const int flexPin = A0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int flexValue;
flexValue = analogRead(flexPin);
Serial.print("sensor: ");
Serial.println(flexValue);
delay(20);
}
You can bend the flex sensor to see its raw value after uploading the code. The raw value varies as a result of the sensor’s bending.
ISD1820 Record and Playback Module
SD1820 is a compact Voice Recorder and Playback module with the ability to record in several segments. With the onboard resistor adjusted, the user can obtain a high-quality recording (for 8 to 20 seconds) for each application. This Voice Recorder/Playback module is built with inbuilt Flash memory, which can erase/record the life cycle of up to 100,000 times and save data for up to 100 years.
The voice chip has two ways of playing the voice:
Playback, Edge-activated: The device begins the playback cycle if the module recognises the HIGH signal on the pin. Until an End-of-Message (EOM) marker is encountered or the memory space is exhausted, the playback cycle continues. When the playback cycle is finished, the gadget automatically powers
Playback, Level-activated: A playback cycle is started if the module notices the LOW to HIGH signal on this pin. Until PLAYL is pulled LOW, an End-of-Message (EOM) marker is found, or the memory space is full, playback continues. Upon finishing a playing cycle, the gadget automatically switches to standby mode.
Sign To Speech Conversion Using Flex Sensor
#include <LiquidCrystal.h>
const int rs = 7, en =9, d4 =10, d5 =11, d6 =12, d7 =13;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const byte interruptPin1 = 8;
int voice1 = 2;
int voice2 = 3;
int voice3 = 4;
int voice4 = 5;
int voice5 = 6;
int voice6 = 0;
int pulses=0,Thumb,Index,Middle,Ring,Little,Body_Temp;
int sec1=0,stat1=0;
void setup() {
pinMode(interruptPin1, INPUT);
pinMode(voice1,OUTPUT);
pinMode(voice2,OUTPUT);
pinMode(voice3,OUTPUT);
pinMode(voice4,OUTPUT);
pinMode(voice5,OUTPUT);
pinMode(voice6,OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print(" Welcomr To ");
lcd.setCursor(voice6, 1);
lcd.print("Sign to Speech ");
delay(5000);
}
void loop() {
lcd.clear();
int t;
Thumb = analogRead(A0);
Index = analogRead(A1);
Middle = analogRead(A2);
Ring = analogRead(A3);
Little = analogRead(A4);
Body_Temp=analogRead(A5);
Body_Temp=Body_Temp/2-1;
digitalWrite(voice6,LOW);
Serial.println(Little);
if(Body_Temp>45)
{
digitalWrite(voice6,HIGH);
delay(5000);
digitalWrite(voice6,LOW);
}
if(Thumb>250)
{
digitalWrite(voice1,LOW);
lcd.setCursor(voice6, 1);
lcd.print("I Want Water ");
}
if(Thumb<250)
{
digitalWrite(voice1,HIGH);
}
if(Index>270)
{
digitalWrite(voice2,LOW);
lcd.setCursor(voice6, 1);
lcd.print("I Want Food ");
}
if(Index<270)
{
digitalWrite(voice2,HIGH);
}
if(Middle>270)
{
digitalWrite(voice3,LOW);
lcd.setCursor(voice6, 1);
lcd.print("PLS Help Me ");
}
if(Middle<270)
{
digitalWrite(voice3,HIGH);
}
if(Ring>270)
{
digitalWrite(voice4,LOW);
lcd.setCursor(voice6, 1);
lcd.print("Hi How Are U ");
}
if(Ring<270)
{
digitalWrite(voice4,HIGH);
}
if(Little>250)
{
digitalWrite(voice5,LOW);
lcd.setCursor(voice6, 1);
lcd.print("I Go Outside");
}
if(Little<250)
{
digitalWrite(voice5,HIGH);
}
if(digitalRead(interruptPin1)==HIGH)
{
if(stat1==0)
{
stat1=1;
pulses++;
}
}
else
stat1=0;
lcd.setCursor(0, 0);
lcd.print("HB= ");
lcd.print(pulses);
Serial.print(pulses);
Serial.print(";");
// delay(1000);
lcd.setCursor(10, 0);
lcd.print("T= ");
lcd.print(Body_Temp);
sec1++;
if(sec1==460)
{
sec1=0;
Serial.print(pulses);
pulses=0;
}
if( pulses>90)
{
digitalWrite(voice6,HIGH);
delay(3000);
digitalWrite(voice6,LOW);
}
delay(100);
}