Arduino Projects

Voice Controlled Wheelchair using Arduino and Voice recognition Module

About the Voice Controlled Wheelchair:

 

Voice controlled Wheelchair Project– The application of this project “Voice Controlled Wheelchair” is to control the wheelchair through voice commands, sensors and a joystick .As this is a multi-functional Wheelchair so therefore it can also be called as the smart wheelchair. The user voice recognition module, ultrasonic sensor, and joystick have been integrated in this wheelchair. In this way we have obtained a wheelchair which can be driven with voice commands, through joystick and sensors so that to provide the possibility of avoiding the accidents. This project involves voice recognition module which will recognize the voice of the user and process the command of the user and send it to the Arduino. The user has to save the different voice commands in voice recognition module before use it to control the direction of the wheelchair. Arduino is a microcontroller based board which accepts data. The Arduino board based on the Atmega328 microcontroller processes the data and determines which motor will be activated. User can also change the direction of the wheel chair through joystick, while the sensors will automatically avoid the obstacles.

Before, you try to build this project, I highly recommend, first read my getting started article on the Voice Recognition Module, this will help you in understanding how to record voice commands and then how to control LEDs. In this tutorial I have explained all the basics.

A few months back I posted an article about “How to make a wireless Tongue controlled Wheelchair”. In this project I used the relay based H-bridges. The above two articles will really help you in making your own Wheelchair and how to use the voice recognition module.


Voice Controlled Wheelchair Project Overview:

People who are suffering from disease like paralysis, polio or from some accident and loss their hands and legs need some artificial source with the help of which they can move. In order to minimize their problem we have developed a “smart wheelchair” which will operate on the voice commands from the handicapped user for movement purpose the voice commands of the handicapped  will be first saved in the voice recognition module before using it so that other person from outside cannot give command to it. As additional features we are also using joystick and sensors so to provide more protection to the user. It will be helpful to handicapped persons due to different reasons. When handicapped is using simple wheel chair they face many problems which can cause many accidents. Mostly simple wheel chair is drive by the handicapped through has hands. We are designing such wheel chair that will provide extra safety features that prevent common wheelchair accidents. Because we are using voice commands, sensors and also joystick it will minimize the accidents. We are developing such a wheel chair that will be helpful for handicapped in hospitals or nursing home settings feel safer about their surroundings. Voice Recognition module will recognize the voice of the user. Sensor will be mounted on a smart wheelchair.  A single battery will power the sensors, Arduino, voice recognition module and driving two DC motors. Ultrasonic sensors are also used to provide extra protection against obstacles at close range.

This project cover many aspects of the engineering such as control system, communication, power and embedded system.

Statement of Problem:

The wheelchairs available in market are too expensive and are beyond the reach of poor and middle class families. Most of the Wheelchairs are single functioned either it will be operated with voice or joystick. We are designing a wheelchair that will be a low cost and multifunction. This project aims to make life easier for the disabled and elderly people who cannot move properly it will enable them to lead better lives without any problem.

Specifications of proposed solution:

The objective of this project is to control the wheelchair movement using motor activated by voice recognition system, sensors and joystick. Voice recognition system will be more safe, accurate and faster than self-controlled wheel chair.   This may reduce the risk of incidents.

Our smart and safe wheelchair should be able to:

  • Avoid collisions with walls or other fixed obstacles, because we are using sensors that will be additional feature
  • Change the direction of wheel chair through voice and joystick



Purpose of the project/research:

A handicapped person with locomotive disabilities having no feet and hands needs a wheelchair to perform functions that require him or her to move around. He can do so manually by pushing the wheelchair with his hands or take help from another person. When handicapped pushing the wheelchair it is very tiring process. We tried to provide them such a wheel chair that will minimize their problems. So we design a wheelchair that can be controlled by moving a joystick or through voice commands and sensors to provide relief. Since the voice controlled wheelchair can move at a moderate speed, it is important that it be able to avoid obstacles automatically in real time. All this should be achieved at a cost that is affordable for as many handicapped people as possible, as well as for organizations that support them. By keeping the these features in mind we design automated wheelchair with real-time obstacle avoidance capability.

Applications of the project/research:

By designing and implementing a faster voice recognition system and a faster controller on the wheelchair, the voice controlled wheelchair may be safer to use by users. Work is in progress on voice recognition now voice recognition system are also using in vehicles, mobile apps are also introduced that do voice recognition and jets. Future scope of the project includes the ability to control various household devices through voice recognition like TV, air-condition, microwave oven etc.

Related Technologies:

There are a number of related technologies based on voice recognition system. However, the following are the most commonly used techniques:

In-car systems:

The speech recognition system is installed on the steering of the vehicle which will recognize the voice it may accept the commands such as if the user wants to listen to music he will simply speak the command for it has no need to start it manually other features like answering a call by giving  command, loading music from flash drive. Some vehicle manufacturing companies are working to introduce voice recognition in the vehicles.

High-performance fighter aircraft:

Americans are working on the Speech recognition system to introduce it in the aircraft so that the pilot can easily change the frequencies through voice commands and activating autopilot mode, changing the coordinates and controlling fight display. has also been introducing in fighter aircraft working is continue on it to make it accurate.

Related Projects:

Smart Wheelchair Controlled by eyeball Tracking System:

In this project, the wheelchair is controlled through eyes. The wheelchair changes its direction according to the eye. This project is based on vision control. The project will be based on the QT framework.  The eye images are taken by a camera that tracks the pupil tracking system and the image processing program will do tracks pupil motion. The movement of the pupil is calculated from the middle position. The output is transfer to the wheelchair through serial communication port such as RS232.

  • The following are some of the features that will be delivered by this project
  • The motion of the eye will be used to change the direction.
  • The speed of the wheelchair is moderate so that it can easily be controlled.
  • If the handicapped in busy in one position correction, he has no need to see
    the computer.

Voice Controlled Wheelchair

Related Studies/Research:

The research has been in progress on voice recognition system. The work that has done related to this are:

  • Calculator that will give result according to voice commands
  • Monitoring the home devices through voice
  • Monitoring mobile through voice command e.g. opening apps through voice
  • Conversion of speech into text
  • Speech recognition in vehicles


Their Limitations and Bottlenecks:

The voice commands that will be first saved in the voice recognition module memory should not be exceed from 20 commands because we can save only 20 commands at a time in this module.
Voice Controlled Wheelchair
Voice Controlled Wheelchair Project Design and Implementation

To control wheelchair through voice command the hardware and software component required for that are wheelchair, Motors driving circuit, voice recognition module, Ultrasonic Sensor, joy stick and Arduino board.  We will connect different components according to the given diagram.

Voice Controlled Wheelchair

The software tools use for that are Arduino Integrated development environment (IDE), Proteus and PCB designing software. The block diagram of our project is:

Voice Controlled Wheelchair

Voice Controlled Wheelchair Driving Circuit:

The motor driving circuit is the main part of our project that is used to drive low control direction as well as the speed of the motors. There are three main types of motor driving circuits as listed below:

  • The mechanical switch-based motor driving circuit
  • Relay logic-based motor driving circuit
  • MOSFET based motor driving circuit

The current required to drive each motor is four amperes and twenty-four volt, and total 8-ampere current and 24 volts are required to drive both motors. As the result shows practically batteries provide ampere per hour timing as mentioned by the company. In our case, we have required 8-ampere current and 24 volts for this purpose we have used two forty ampere batteries to provide smart wheelchair at least two and half hour backup timing. To design a driving circuit for these high volts and amperes is really a difficult task.


Mechanical switch based motor driving circuit:

By using toggle switches and implementing simple logical operation both motors can be driven in both directions. It is the simplest way to design a motor driving circuit, but there are a number of issues that restrict us to not use the mechanical switch. They are listed below:

  • Enormous current losses
  • Automatic switching not possible
  • No speed control
  • Low torque

Relay logic-based motor driving circuit:

By using simple two relays we can drive one motor in both directions. By using relay logic automatic switching is possible, the switching time is round about ten milliseconds. But in relay-based motor driving circuitry are a number of issues listed below:

  • No fast switching
  • No speed control only two levels high and low

MOSFET based motor driving circuit:

Motor drive circuit can be made by using MOSFET’s, very fast, and automatic switching is possible, speed can be controlled by applying required PWM, response time is round about 31 microseconds but it is very complex. Our requirement is that h bridge can bear forty amperes or more current and voltage at least thirty volts. For this purpose, we have used the following component (not including resistors, capacitors, diodes).

Serials no Components Functions
1 Schmitt 74HC14 Provide level triggering
2 IR 2110 Gate Driver IC
3 MOSFETs IRF 1010 Four MOSFET to drive motor in both directions
4 P(817) OPTOCOUPLER Provide isolation between Microcontroller and H Bridge

To control reverse leakage current and on-off switching of MOSFET is one of the major tasks while designing h bridges. To manage on-off delays we have implemented low pass filters too. The MOSFET motor drive circuit can work smoothly on PWM with no compromise on torque. Advantages of MOSFET are listed below:

  • Speed can be controlled by using required PWM
  • Provide full torque
  • Fast switching
  • Automatic switching
  • Can bear eighty-ampere current and voltage up to sixty volts

Driving circuit is the main part of the project that is used to control the motors and other components used in the project such as sensors and joystick. Driving circuit is either from the relay or from transistors. We make the driving circuit from the transistors because its response is very quick as compare to relays as in relays the switching process is slow as compare to transistors.

The direction of the motors are control through the H bridge. We used it in such a way that it gives four types of direction Forward, Reverse, Left, and Right.

R1 R2 L1 L2 Result
1 0 1 0 Forward
0 1 0 1 Reverse
1 0 0 1 Right
0 1 1 0 Left

We make two H-Bridges one for each motors. Making H-Bridges were very difficult task because the ic using in it are very sensitive which very quickly damage on over current.

Four BJT transistors were used as switches for the H-Bridge. They take their signals from the microcontroller through resistors and transmit it to the four relays that control the power supply of the motors thus in this way direction of motors are controlled.


Hardware used with technical specifications:

Wheels

We checked different type of wheels of different diameters finally we got the wheels that were suitable for our project. We are using four wheels in which two wheels are free that are used in front and in other two wheels motor are fixed and used in backward.

Motors

Selecting proper motors were very difficult task because we have to keep in mind the torque required, current, and speed. Very heavy motors will cause the wastage of the battery and also the speed will be maximum which will be very difficult to control. While very low motors do not fulfill our requirement and cannot move the wheelchair. Therefore these considerations were in our mind in selecting the motors. Motors come in many shapes and sizes.

The motor we are using are of AXON and made of England.

Voltage 24V
Current 4A
Output 24LBINS
Insolation B

Voice Controlled Wheelchair

Microphone

Low quality of microphone catches noisy voice which will not be recognized by the module so appropriate mic should be selected. Hand held microphones are also not the best choice as they can be difficult to pick up all the time. We fixed the mic so that there should be no difficulty for the user. The mic we used was built-in with the voice recognition system.

Hardware Components fitted to Wheelchair

We added the entire discussed component in the wheel chair. In terms of hardware components the main components that added to wheelchair are interfacing circuit, microphone (headset microphone), battery and Joystick.

Voice Controlled Wheelchair



USB to TTL

The Arduino board can be used to communicate with the voice recognition module and computer. Serial communication is possible because this module has TX, RX pin and it can also be used to power up the voice recognition module. It can provide 5V 500mA and 3.3V 500mA.

Voice Controlled Wheelchair

Voice Recognition Kit:

In this project Voice Recognition Module V2 is used.

Voice Recognition:

Input voice is based on the signals which are given to the voice recognition module and accordingly coding is done. This module converts the voice signals to electrical signals. As pitch of each human’s voice is different from other so this module works on that basic difference. If you programmed the module with person A’s voice, then it will never operate with person B’s voice.

Voice Module V2:

This module is used to recognize your voice. It receives your voice commands or give input through serial port interface. Using this module, control of the car or other electrical devices by voice is being done.

15 voice instructions are stored in V2. 15 pieces are divided into 3 groups, with 5 in each group. First train the V2 with voice instructions and serial commands group by group. After this, we import one group it could recognize the 5 voice instructions within that group. For the implement instructions in other groups, import the group first using serial command. It is a speaker dependent module. On the voice of only one person it will work, the person who train it.

Once the module is train, the voice instruction save in it. Its work on 5V TTL. The serial data is in form of : 8 data bits, zero  parity, one stop bit. 9600 is default baud rate.

Voice Controlled Wheelchair

Arduino Uno:

The Arduino Uno is based on the ATmega328. Having 14 digital input/output pins (6 PWM). 6 analog inputs, a 16 MHz clock, a USB connector, a power jack, an ICSP header, and a reset button. Have everything to support the microcontroller; just connect it to a laptop with  USB cable or battery to get started.

Voice Controlled Wheelchair


Features:

Microcontroller ATmega328
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Analog Input Pins

Operational Voltage

6

5V

DC Current on I/O Pin 40 mA
Flash Memory 32 KB ( 0.5 KB for boot loader)
Static RAM 2 KB
DC Current on 3.3V Pin 50 mA
Digital I/O Pins 14 ( 6 PWM output)

Arduino Integrated Development Environment:

To Program Arduino device, Arduino Integrated Development Environment “IDE” is used.

Code written in Arduino Integrated Development Environment is called sketches. File extension .ino is use to save the sketch. Cutting, pasting, searching and replacing option is present in Arduino IDE. Below window option give the message about error detail. The toolbar buttons give many option like verify, upload, create, open, save, example, add a library and serial monitor. In Arduino IDE, we have set the baud rate, so the serial communication will be done.

Voice Controlled Wheelchair

Implementation:

As after train the voice module, connect it with Arduino. Depending on the voice command the voice module send some code to the Arduino, Arduino work on the program that is written by User that at what command which task should be perform depending on the condition. The PWM signal is sent to the driving Circuit of motor. If the signal to move Wheelchair forward is sent than according to condition 24v will be provided to both motors.

The Sensor in front of wheelchair are connected to avoid the accident. Sensor input is connected to Arduino Interrupt pin. Interrupt pin function is that it will stop the execution of program and run the specific portion of code which is attach to that interrupt pin. That portion is consisting of how to stop the wheelchair to avoid that accident.

Joystick option also available, to used Joystick first disable the voice command so that it will not perform any action on your voice. Only action will now be performing through Joystick. In that Option, the programming option is simple the same task will be perform as which was being perform through voice command. The only change is input command which is now Joystick

Motors which are being used in this project have built-in breaking system. When Excite breaking wire the break is release and when connection disconnected it will stop automatically. To utilize that option a special Emergency Button on the wheelchair so that to stop in case of any Emergency like damage of any sensor or circuit fault.

Three Levels of speed is provided to the user. Speed is control through PWM.


PROJECT RESULTS AND EVALUATION

Voice module V2 is train through USB to TTL module using serial command from laptop. Voice module is connected to Arduino Uno to get the Desir output for the project.

Presentation of the findings:

On different serial commands the behavior/output of the voice module changes. Some of key serial commands are as follow

5.1.1 Voice Module Output:

Command Descriptions
0x01 Delete Group1
0x02 Delete Group2
0x03 Delete Group3
0x4 Delete Group4
0x11 Record Group1
0x12 Record Group2
0x13 Record Group3
0x14 Record Group4
0x21 Import Group1
0x22 Import Group2
0x23 Import Group3
0x24 Import Group4
0x31 Set baud Rate 2400bps
0x32 Set baud Rate 4800bps
0x3 Set baud Rate 9600bps

Voice Controlled Wheelchair

Voice Controlled Wheelchair Arduino Programming:

int a = 13; 
int b = 12; 
int c = 10;
int d= 9;
int sel =40;

int aa=7;
int bb=6;
int cc=5;
int dd=4;

int sensorpin1 = 0;  
int sensorpin2 = 1;                 
int vals1 = 0;
int vals2 = 0;
    

int sensorValue;
int sensorValue1;
int sensorValue2;
int sensorValue3;
int sell;

byte com = 0; //reply from voice recognition

void setup()
{
pinMode(aa,INPUT);
pinMode(bb,INPUT);
pinMode(cc,INPUT);
pinMode(dd,INPUT);
pinMode(sel,INPUT);
Serial.begin(9600);
pinMode(a, OUTPUT); // sets the ledPin to be an output
pinMode(b, OUTPUT); // sets the redPin to be an output
pinMode(c, OUTPUT); // sets the ledPin to be an output
pinMode(d, OUTPUT); 
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x22);
}

void loop() // run over and over again
{
  sell=digitalRead(sel);
  vals1 = analogRead(sensorpin1); 
  vals2 = analogRead(sensorpin2); 
 
  if(vals1<110 | vals2<200)
  {
    if(sell==1)
    {
    while(Serial.available())
    {
      com = Serial.read();
      switch(com)
      {
        case 0x21:
        digitalWrite(a,HIGH);
        digitalWrite(b,LOW);
        digitalWrite(c,HIGH);
        digitalWrite(d,LOW);
        break;

        case 0x22:
        digitalWrite(a,LOW);
        digitalWrite(b,HIGH);
        digitalWrite(c,LOW);
        digitalWrite(d,HIGH);
        break;

        case 0x23:
        digitalWrite(a,LOW);
        digitalWrite(b,LOW);
        digitalWrite(c,HIGH);
        digitalWrite(d,LOW);
        break;
      
        case 0x24:
        digitalWrite(a,HIGH);
        digitalWrite(b,LOW);
        digitalWrite(c,LOW);
        digitalWrite(d,LOW);
        break;
      
       case 0x25:
        digitalWrite(a,LOW);
        digitalWrite(b,LOW);
        digitalWrite(c,LOW);
        digitalWrite(d,LOW);
        break;
      }
    }
  }
  if(sell==0)
    {
      sensorValue = digitalRead(aa);
      sensorValue1 = digitalRead(bb);
      sensorValue2 = digitalRead(cc);
      sensorValue3 = digitalRead(dd);

   if(sensorValue==1)
 { 
   
  digitalWrite(a,HIGH);
 digitalWrite(b,LOW);
 digitalWrite(c,HIGH);
 digitalWrite(d,LOW);
 }

 else if(sensorValue1==1)
 { 
  
  digitalWrite(a,LOW);
 digitalWrite(b,LOW);
 digitalWrite(c,HIGH);
 digitalWrite(d,LOW);
   
 }
  
  else if(sensorValue2==1)
 { 

  digitalWrite(a,HIGH);
 digitalWrite(b,LOW);
 digitalWrite(c,LOW);
 digitalWrite(d,LOW);
   
   }
   
  else if(sensorValue3==1)
 { 

  digitalWrite(a,LOW);
 digitalWrite(b,HIGH);
 digitalWrite(c,LOW);
 digitalWrite(d,HIGH);
 
   }
  
  else
{ 
  digitalWrite(a,LOW);
 digitalWrite(b,LOW);
 digitalWrite(c,LOW);
 digitalWrite(d,LOW);
}
        
 
  }
  }
  else
  {
 digitalWrite(a,LOW);
 digitalWrite(b,LOW);
 digitalWrite(c,LOW);
 digitalWrite(d,LOW);
  }
  
  }


Arduino Uno Output:

The output from Voice Module is the input for Arduino Uno. Depending on the program logic the Voice command is input for Voice Module and Train Module give corresponding output to Arduino which will be executed in the program.

Voice Command Output
Forward Led1 On
Back Led2 On
Right Led3 On
Left Led 4 On

Voice Controlled Wheelchair

Limitations :

Limited memory of Voice Module, As only four words save in the One group, for more words, second group should be imported in the program. These make the code and execution more complex.

Recommendations:

For the good working of voice module in noisy area, use a filter to filter out the noise and give noiseless input to the voice recognition module.

Engr Fahad

My name is Shahzada Fahad and I am an Electrical Engineer. I have been doing Job in UAE as a site engineer in an Electrical Construction Company. Currently, I am running my own YouTube channel "Electronic Clinic", and managing this Website. My Hobbies are * Watching Movies * Music * Martial Arts * Photography * Travelling * Make Sketches and so on...

3 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button