Wednesday, April 17, 2024

Wireless Gesture Controlled Robot

Software program

The software program is written in Arduino programming language. We programmed a fresh ATmega328 microcontroller with the help of Arduino IDE 1.0.5 and an Arduino Uno board.

First, we have to load bootloader code into the microcontroller. For that, we used Arduino Uno for in-system programming (ISP) given in the IDE, by selecting File → Examples → Arduino ISP. Once the bootloader is uploaded into the microcontroller, gesture.ino code of this project can be uploaded.

Construction and testing

An actual-size, single-side PCB layout of the transmitter circuit is shown in Fig. 5 and its component layout in Fig. 6. An actual-size, single-side PCB layout of the receiver circuit is shown in Fig. 7 and its component layout in Fig. 8.

The transmitter section can be held in your palm or on the other side (refer Fig. 9). The receiver module is mounted on the robot.

9AF_Fig_9
Fig. 9: Transmitter module of the gesture controlled robot

Mount all components on the PCBs shown here to minimise assembly errors. Fix the receiver PCB and 4.5V battery on the chassis of the robot. Fix two motors, along with wheels, at the rear side of the robot and a castor wheel on the front. After uploading the main code into the microcontroller, remove it from the Arduino Uno board and insert it into the populated transmitter PCB.

- Advertisement -

Now, switch-on the power supplies in the transmitter as well as receiver circuits. Attach the transmitter circuit to your hand and move your hand forwards, backwards and sideways. Directions of the robot movement are given in Table I. The robot will stop if you keep your palm horizontal, parallel to the Earth’s surface.

For troubleshooting, first verify that voltages at various test points are as per Table II.


Aquib Javed Khan is pursuing B.Tech from Orissa Engineering College, Bhubaneswar. He is interested in mechatronics systems

42 COMMENTS

  1. 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.

  2. #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)
    backward();
    else if(temp1==0 && temp2==1 && temp3==0 && temp4==0)
    forward();
    else if(temp1==0 && temp2==0 && temp3==1 && temp4==0)
    left();
    else if(temp1==0 && temp2==0 && temp3==0 && temp4==1)
    right();
    else
    Stop();
    }

SHARE YOUR THOUGHTS & COMMENTS

Unique DIY Projects

Electronics News

Truly Innovative Tech

MOst Popular Videos

Electronics Components

Calculators

×