Wireless Gesture Controlled Robot

In this project we are going to control a robot wirelessly using hand gestures. This is an easy, user-friendly way to interact with robotic systems and robots. -- Aquib Javed Khan


Fixed plates are driven by 180° out-of-phase square waves. Acceleration deflects the moving mass and unbalances the differential capacitor, resulting in a sensor output whose amplitude is proportional to acceleration. Phase-sensitive demodulation techniques are then used to determine the magnitude and direction of the acceleration.


This is a 16-pin DIP package motor driver IC (IC6) having four input pins and four output pins. All four input pins are connected to output pins of the decoder IC (IC5) and the four output pins are connected to DC motors of the robot. Enable pins are used to enable input/output pins on both sides of IC6.


Encoder (HT12E) and decoder (HT12D) ICs

The 212 encoders are a series of CMOS LSIs for remote-control system applications. These are capable of encoding information that consists of N address bits and 12 N data bits. Each address/data input can be set to one of two logic states. Programmed addresses/data are transmitted together with header bits via an RF or infra-red transmission medium upon receipt of a trigger signal. The capability to select a TE trigger on HT12E or a data (DIN) trigger on HT12D decoder further enhances the application flexibility of 212 series of encoders. The HT12D also provides a 38kHz carrier for infra-red systems.

Fig. 5: An actual-size PCB layout of the gesture controlled robot: transmitter circuit
Fig. 6: Component layout of the gesture controlled robot: transmitter circuit
Fig. 7: An actual-size PCB layout of the gesture controlled robot: receiver circuit
Fig. 8: Component layout of the gesture controlled robot: receiver circuit

Download the PCB and component layout PDFs: click here

Download the source code: click here


The transmitter consists of ATmega328 microcontroller (IC2), ADXL335 accelerometer, HT12E encoder (IC4) and 433MHz RF transmitter module (TX1). In this circuit, two analogue outputs from ADXL335 pins (x, y) are connected with input pins (23, 24) of the microcontroller. Analogue signals are converted to digital signals through the microcontroller. Digital outputs from pins 16, 17, 18 and 19 of the microcontroller are directly sent to pins 13, 12, 11 and 10 of encoder IC4. This data is encoded and transmitted via RF module TX1.


The receiver part consists of 433MHz RF receiver module (RX1), HT12D decoder (IC5) and L293D motor driver (IC6) to run the motors. Here, receiver module RX1 receives the transmitted signal, which is decoded by decoder IC to get the same digital outputs. Four outputs of IC6 drive two motors. The robot moves as per tilt direction of the accelerometer in the transmitter. The direction of the robot movement is as per logic listed in Table I.



    • Dear Amruta Patole,

      The source code is already available within the article. Please check for “Download source code”.

  1. We are making Accelerometer Based Gesture Controlled Robot ……….so can you suggest a good and simple application of this robot for its extension

  2. HI..
    My name is vimal savani
    I make hand gesture controlled robot.
    There is one problem that is when i tilt accelerometer then robot does not change direction..and not move.. i use here adxl335 accelerometer. So pls.. help me.

  3. Sir in the code the output pins are defined as 10,11,12,13.
    But we are using pin nos 16,17,18,19 as output pins .

  4. sir table 1 has output pins as D11,10,9,8, but in the program it is pin 13,12,11,10.
    Also sir tell me about the burning of the microcontroller.

  5. #define FD 16
    #define BD 17
    #define LD 18
    #define RD 19
    #define m11 3
    #define m12 4
    #define m21 5
    #define m22 6
    void forward()
    digitalWrite(m11, HIGH);
    digitalWrite(m12, LOW);
    digitalWrite(m21, HIGH);
    digitalWrite(m22, LOW);
    void backward()
    digitalWrite(m11, LOW);
    digitalWrite(m12, HIGH);
    digitalWrite(m21, LOW);
    digitalWrite(m22, HIGH);
    void left()
    digitalWrite(m11, HIGH);
    digitalWrite(m12, LOW);
    digitalWrite(m21, LOW);
    digitalWrite(m22, LOW);
    void right()
    digitalWrite(m11, LOW);
    digitalWrite(m12, LOW);
    digitalWrite(m21, HIGH);
    digitalWrite(m22, LOW);
    void Stop()
    digitalWrite(m11, LOW);
    digitalWrite(m12, LOW);
    digitalWrite(m21, LOW);
    digitalWrite(m22, LOW);
    void setup()
    pinMode(FD, INPUT);
    pinMode(BD, INPUT);
    pinMode(LD, INPUT);
    pinMode(RD, INPUT);
    pinMode(m11, OUTPUT);
    pinMode(m12, OUTPUT);
    pinMode(m21, OUTPUT);
    pinMode(m22, OUTPUT);
    void loop()
    int temp1=digitalRead(FD);
    int temp2=digitalRead(BD);
    int temp3=digitalRead(LD);
    int temp4=digitalRead(RD);

    if(temp1==1 && temp2==0 && temp3==0 && temp4==0)
    else if(temp1==0 && temp2==1 && temp3==0 && temp4==0)
    else if(temp1==0 && temp2==0 && temp3==1 && temp4==0)
    else if(temp1==0 && temp2==0 && temp3==0 && temp4==1)

  6. Here TP6 in receiver circuit is train of pulses. How may i draw the TP6 in eagle cad? and how may i create train of pulses in circuit

  7. I am going to do this project please send me the source code to my mail.. I tried to download from the Link you provided but file is not opening after download.. plss send me the source code for my mail..
    [email protected]


Please enter your comment!
Please enter your name here