top of page
Writer's pictureRUPALI KHOND

Voice-controlled Wheelchair

This project aims to enhance the lives of individuals who have lost mobility in their legs due to paralysis, accidents, or old age. Many people with physical disabilities rely on others for daily movement, even with the use of wheelchairs. However, the lack of intuitive control systems for wheelchairs limits their independence. This project introduces a Voice-Controlled Wheelchair design, leveraging Bluetooth technology and ultrasonic sensors to enable wireless remote control. By using an Arduino UNO microcontroller and a smartphone application, users can command the wheelchair via voice prompts. Additionally, ultrasonic sensors detect obstacles within a 4-meter range, ensuring safety by stopping the wheelchair until further instructions are received.


Hardware Components:

The core of the voice-controlled wheelchair is the embedded system. A microcontroller board, such as Arduino Uno, serves as the brain of the system. It receives voice commands, processes them, and generates control signals for the motors.

  1. Arduino Uno: A microcontroller board that serves as the heart of the system. It receives commands from the Bluetooth module and controls the motor driver based on those commands.

2. DC Gear Motors: Two DC gear motors are used to propel the wheelchair. The motor driver controls the speed and direction of the motors.

3. HC-05 Bluetooth Module: A Bluetooth module that enables communication between the smartphone and the Arduino board. The voice commands are sent from the smartphone app to the Arduino board via Bluetooth.

4. Motor Driver L293D: A motor driver circuit that controls the speed and direction of the DC gear motors. It receives control signals from the Arduino board and regulates the power delivered to the motors.

5. HC-SR04 Ultrasonic Sensor: An ultrasonic sensor that detects obstacles in front of the wheelchair. It emits ultrasonic waves and measures the time it takes for the waves to reflect back from an object. This time is used to calculate the distance to the obstacle.

6. Servo Motor (Optional): A servo motor can be used to control the headrest or tilt of the wheelchair.

7. 12V Battery: A 12V battery is used to power the entire system.

Circuit Diagram:

Circuit Connections:

The following is a general overview of the circuit connections:

  1. The HC-05 Bluetooth module is connected to the Arduino Uno board. The TX pin of the Bluetooth module is connected to the RX pin of the Arduino, and the RX pin of the Bluetooth module is connected to the TX pin of the Arduino.

  2. The motor driver L293D is connected to the Arduino Uno board. The control pins of the motor driver are connected to digital output pins of the Arduino.

  3. The DC gear motors are connected to the motor driver L293D.

  4. The HC-SR04 ultrasonic sensor is connected to the Arduino Uno board. The trigger pin of the ultrasonic sensor is connected to a digital output pin of the Arduino, and the echo pin of the ultrasonic sensor is connected to a digital input pin of the Arduino.

  5. The servo motor (optional) is connected to a digital output pin of the Arduino Uno board.

  6. The 12V battery is connected to the power supply of the Arduino Uno board, motor driver L293D, and DC gear motors.


Code:

#include <SoftwareSerial.h> // Include SoftwareSerial library for Bluetooth communication
SoftwareSerial bluetooth (0, 1);   // RX (pin 0) and TX (pin 1) for Bluetooth
const int motor1A = 9;  // Motor 1 control pin A (L293D)
const int motor1B = 8;  // Motor 1 control pin B (L293D)
const int motor2A = 7;  // Motor 2 control pin A (L293D)
const int motor2B = 6;  // Motor 2 control pin B (L293D)
const int trig1 = 5;  // Ultrasonic sensor 1 trigger pin (front)
const int echo1 = 4;  // Ultrasonic sensor 1 echo pin (front)
const int trig2 = 3;  // Ultrasonic sensor 2 trigger pin (side)
const int echo2 = 2;  // Ultrasonic sensor 2 echo pin (side) - add more for other sides
int speed = 100;  // Adjust motor speed (0-255)
int obstacleDistance = 20;  // Minimum safe distance from obstacles (in cm)
char incomingByte;
void setup() {
  Serial.begin(9600);   // Initialize serial communication for debugging (optional)
  bluetooth.begin(9600); // Initialize Bluetooth communication
  pinMode(motor1A, OUTPUT);
  pinMode(motor1B, OUTPUT);
  pinMode(motor2A, OUTPUT);
  pinMode(motor2B, OUTPUT);
  pinMode(trig1, OUTPUT);
  pinMode(echo1, INPUT);
  pinMode(trig2, OUTPUT);
  pinMode(echo2, INPUT);
}
void loop() {
  // Receive command from smartphone app via Bluetooth
  if (bluetooth.available()) {
    incomingByte = bluetooth.read();
    // Process the received command
    switch (incomingByte) {
      case 'F': // Forward
        moveForward();
        break;
      case 'B': // Backward
        moveBackward();
        break;
      case 'L': // Left
        turnLeft();
        break;
      case 'R': // Right
        turnRight();
        break;
      case 'S': // Stop
        stopMotors();
        break;
    }
  }
  // Check for obstacles using ultrasonic sensors (front and side)
  int frontDistance = checkDistance(trig1, echo1);
  int sideDistance = checkDistance(trig2, echo2); // Add checks for other sensors
  if (frontDistance < obstacleDistance || sideDistance < obstacleDistance) {
    stopMotors();
    Serial.println("Obstacle detected!"); // Debug message (optional)
  }
}
void moveForward() {
  analogWrite(motor1A, speed);
  analogWrite(motor1B, 0);
  analogWrite(motor2A, speed);
  analogWrite(motor2B, 0);
}
void moveBackward() {
  analogWrite(motor1A, 0);
  analogWrite(motor1B, speed);
  analogWrite(motor2A, 0);
  analogWrite(motor2B, speed);
}
void turnLeft() {
  analogWrite(motor1A, speed);
  analogWrite(motor1B, 0);
  analogWrite(motor2A, 0);
  analogWrite(motor2B, speed);
}
void turnRight() {
  analogWrite(motor1A, 0);
  analogWrite(motor1B, speed);
  analogWrite(motor2A, speed);
  analogWrite(motor2B, 0);
}
void stopMotors() {
  analogWrite(motor1A, 0);
  analogWrite(motor1B, 0);
  analogWrite(motor2A, 0);
  analogWrite(motor2B, 0);
}
int checkDistance(int trigPin, int echoPin) {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  int distance = duration * 0.034 / 2; // Convert time to cm (adjust factor if needed)
  return distance;
}

Working:

  • This voice-controlled wheelchair empowers people with limited mobility. Users speak commands like "forward" or "stop" into a smartphone app.

  • An Arduino board, the brain of the system, receives the commands. It then translates them and sends signals to the motor driver. This motor driver regulates power to the wheelchair's motors, controlling their speed and direction.

  • The wheelchair moves forward, backward, turns, or stops based on the commands. An ultrasonic sensor (optional) detects obstacles and can halt the wheelchair for safety.

  • This project offers a foundation for voice-controlled wheelchairs, promoting greater independence for users.


Conclusion:

This project creates a voice-controlled wheelchair for those with limited mobility. It uses a smartphone app and Bluetooth for commands like "forward" or "stop." An ultrasonic sensor detects obstacles for safety. This wheelchair design can increase independence for users.


Create Various Projects

Check out our Free Arduino Projects Playlist - Arduino Projects 

Check out our Free Raspberry Pi Projects Playlist - Raspberry Pi Projects 

Check out our Free TinkerCAD Projects Playlist - TinkerCAD Projects 

Check out our Free IoT Projects Playlist - IoT Projects 

Check out our Free Home Automation Projects Playlist - Home Automation Projects 

Check out our Free NodeMCu Projects Playlist - NodeMCu Projects 


0 views0 comments

Related Posts

See All

Comments


bottom of page