A geriatric chair is a specially designed seat intended to provide comfort, support, and safety for elderly individuals. It often features adjustable settings, ergonomic design, and supportive cushioning to accommodate the unique needs of older adults, including those with mobility issues or chronic conditions. These chairs are commonly used in home care settings, nursing homes, and healthcare facilities to enhance the quality of life for senior citizens.
Project Overview The Geriatric Chair is a smart wheelchair designed to enhance mobility and safety for handicapped individuals, integrating two primary systems: the main operational system and an SOS emergency system.
Main Operational System 2.1 Components Arduino Uno: Central processing unit. Bluetooth Module: Enables wireless control. Ultrasonic Sensor: Provides obstacle avoidance. Motors and Motor Driver: Facilitate movement. LEDs and Buzzer: Provide visual and auditory feedback. 2.2 Functionality This system allows the wheelchair to be controlled via Bluetooth, offering users ease of maneuverability. The ultrasonic sensor ensures safe navigation by detecting and avoiding obstacles, enhancing the user’s safety and confidence in operating the chair.
SOS Emergency System 3.1 Components Arduino Uno: Central processing unit. GSM Module: Sends emergency messages. Push Button: Activates the SOS system. 3.2 Functionality In case of an accident or emergency, pressing the push button activates the SOS system. The GSM module sends an emergency message to a designated contact, alerting them to the situation and facilitating immediate assistance.
Benefits and Features The Geriatric Chair combines convenience and safety, providing a smart, Bluetooth-controlled wheelchair with essential emergency features. This project aims to improve the quality of life for handicapped individuals by offering enhanced mobility and a reliable emergency alert system.
int Motor1_Pin1 = 5;
int Motor1_Pin2 = 6;
int Motor2_Pin1 = 9;
int Motor2_Pin2 = 10;
int EMER = 11;
int speed = 150;
#define trigger 2
#define echo 3
int LED1=8;
int LED2=7;
int buzzer = 4;
float time=0,distance;
void setup() {
Serial.begin(9600); /* Define baud rate for serial communication */
pinMode(Motor1_Pin1, OUTPUT);
pinMode(Motor1_Pin2, OUTPUT);
pinMode(Motor2_Pin1, OUTPUT);
pinMode(Motor2_Pin2, OUTPUT);
pinMode(11,INPUT);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(buzzer, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
digitalWrite(buzzer,0);
delay(2000);
}
char sig;
void loop() {
digitalWrite(7,HIGH);
if (Serial.available()) /* If data is available on serial port */
{
sig = Serial.read();
// Serial.write(sig); /* Print character received on to the serial monitor */
}
measure_distance();
if (distance<10)
{
analogWrite(Motor2_Pin2, 0);
analogWrite(Motor2_Pin1, 0);
analogWrite(Motor1_Pin1, 0);
analogWrite(Motor1_Pin2, 0);
digitalWrite(4,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
backward();
delay(2000);
}
else {
digitalWrite(4,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}
if (sig =='F')forward();
else if (sig == 'B')backward();
else if (sig == 'R')right();
else if (sig == 'L')left();
else if (sig == 'G')ForwardLeft();
else if (sig == 'I')ForwardRight();
else if (sig == 'H')BackLeft();
else if (sig == 'J')BackRight();
else if (sig == '1')speed=120;
else if (sig == '2')speed=140;
else if (sig == '3')speed=160;
else if (sig == '4')speed=180;
else if (sig == '5')speed=190;
else if (sig == '6')speed=200;
else if (sig == '7')speed=220;
else if (sig == '8')speed=240;
else if (sig == '9')speed=255;
else stop();
}
void measure_distance(){
digitalWrite(trigger,LOW);
delayMicroseconds(2);
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
delayMicroseconds(2);
time=pulseIn(echo,HIGH);
distance=time*340/20000;
Serial.println(distance);
}
void forward(){
analogWrite(Motor2_Pin2, 0);
analogWrite(Motor2_Pin1, speed);
analogWrite(Motor1_Pin1, speed);
analogWrite(Motor1_Pin2, 0);
}
void backward(){
analogWrite(Motor2_Pin2, speed);
analogWrite(Motor2_Pin1, 0);
analogWrite(Motor1_Pin1, 0);
analogWrite(Motor1_Pin2, speed);
}
void left(){
analogWrite(Motor2_Pin2, 0);
analogWrite(Motor2_Pin1, speed);
analogWrite(Motor1_Pin1, 0);
analogWrite(Motor1_Pin2, speed);
}
void right(){
analogWrite(Motor2_Pin2, speed);
analogWrite(Motor2_Pin1, 0);
analogWrite(Motor1_Pin1, speed);
analogWrite(Motor1_Pin2, 0);
}
void stop(){
analogWrite(Motor2_Pin2, 0);
analogWrite(Motor2_Pin1, 0);
analogWrite(Motor1_Pin1, 0);
analogWrite(Motor1_Pin2, 0);
}
void ForwardRight(){
analogWrite(Motor1_Pin1, speed);
analogWrite(Motor1_Pin2, 0);
analogWrite(Motor2_Pin1, speed-60);
analogWrite(Motor2_Pin2, 0);
}
void ForwardLeft(){
analogWrite(Motor1_Pin1, speed-60);
analogWrite(Motor1_Pin2, 0);
analogWrite(Motor2_Pin1, speed);
analogWrite(Motor2_Pin2, 0);
}
void BackRight(){
analogWrite(Motor1_Pin1, 0);
analogWrite(Motor1_Pin2, speed);
analogWrite(Motor2_Pin1, 0);
analogWrite(Motor2_Pin2, speed-60);
}
void BackLeft(){
analogWrite(Motor1_Pin1, 0);
analogWrite(Motor1_Pin2, speed-60);
analogWrite(Motor2_Pin1, 0);
analogWrite(Motor2_Pin2, speed);
}