Gesture controlled robot using Arduino

Gesture controlled robot

This gesture controlled robot uses Arduino,ADXL335 accelerometer and RF transmitter-receiver pair.

We will divide the entire robot into 3 parts the transmitter,the receiver and the robot.

The different gestures that have been mapped to the direction of the bot are-

Hand parallel to the ground-stationary

Hand tilted forward-forward

Hand tilted backward-backward

Hand tilted right-right

Hand tilted left-left

I’ve made the transmitter on thermocol though it can also be made on a glove.Gesture controlled robot

Step 1: Materials required

For transmitter-

  1. Arduino Uno
  2. ADXL335 accelerometer
  3. 433 MHz RF transmitter
  4. Breadboard

For receiver and robot-

  1. Arduino Uno
  2. 433 MHz RF receiver
  3. L293D motor driver IC
  4. Chassis and wheels
  5. 2 DC motors
  6. Breadboard

Of course you will also need jumper wires and 9V batteries

Instead of using the Arduino and breadboard in transmitter like I did ,you may instead use an ATMega328p, which can be programmed from the Arduino board and solder it along with RF transmitter and ADXL335 on a perfboard.

The perfboard can then be attached to a glove.However here I’ve used a remote controller like setup with the gestures the same

Step 2: Assembling the robot

Fix the wheels on the chassis.

Mount the DC motors on the back wheels and use dummy wheels for the front.

Mount the L293D IC on the breadboard and place it on the chassis

Place the Arduino on the chassis and make the connections of L293D as follows

4,5,12,13 to GND

1,9,16 to VCC(5V)

3,6 to left motor(output)

11,14 to right motor(output)

2,7,10,15 to pins 8,9,10,7 of Arduino(inputs)

8 to 9V battery

Step 3: Determining the direction of robot

You can learn more about L293D from internet.

Basically ,the motor rotates when the inputs supplied are opposite.

For example high,low may rotate the motor in clockwise while low,high in anti clockwise.

If both inputs are same then motor does not rotate.

The following sketch will help to determine for what inputs for the 2 motors will the robot move forward.Copy and paste it in Arduino IDE

int lm=9;//pin 9 of arduino to pin 7 of ic
int lmr=8;//pin 8 of arduino to pin 2 of ic

int rm=10;//pin 10 of arduino to pin 10 of ic

int rmr=7;//pin 7 of arduino to pin 15 of ic

//+ve of lm to pin 6,-ve to pin 3 //+ve of rm to pin 11,-ve to pin 14

void setup()

{ pinMode(lm,OUTPUT);



pinMode(rmr,OUTPUT); }

void loop()

{ digitalWrite(lm,LOW); //both move forward



digitalWrite(rmr,LOW); }

In my case it was observed that the bot will move forward pin 9 of Arduino is high,pin 8 is low(for left motor),pin 10 is high,pin 7 is low(for right motor).Try different combinations till you get desired direction. Similarly for moving back the combination is high,low,low,high.The bot will go right if left motor is moving and right is stopped by giving same inputs.Similarly for left.

 Gesture controlled robot Schematic

Step 4: Interfacing ADXL335 with Arduino

Mount the ADXL335 and on the breadboard.

The connections to Arduino should be as follows.The Arduino should be different from the one used in step 2


VCC 3.3 V


X A0

Y A1

Z open

ST open

Now copy and paste the code and determine the threshold values for different gestures.

The code gives 2 values xval and yval which will have unique values for different gestures.

Determine the range of values of xval and yval when the hand is tilted forward, backward etc.

 Gesture controlled robot Schematic

Step 5: Interfacing RF Transmitter With Arduino

Mount the RF transmitter on the breadboard in previous step and make connections as follows.

RF transmitter Arduino




Now download the VirtualWire library from the following link…

Extract the VirtualWire folder from the downloaded folder and paste it in arduino-1.6.1>libraries

Now program the arduino of the transmitter with the code given in transmitter.ino.

Basically what the code does is to map the different threshold values (for gestures) obtained in step 4 to different letters (stationary-‘s’ forward -‘f’ etc) which are then transmitted through the RF transmitter.

This step completes the construction of the transmitter


Read more: Gesture controlled robot using Arduino

Leave a Comment

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