Control your Robot using Hand Gestures
From our STAR Maker: Mayoogh Girish
Tired of controlling your robot with joystick ? Ever thought of controlling it with your hand gestures. I wish I could control everything with my hand gestures. Sitting on a chair and controlling things, like a BOSS. I loved the thought of it. So I finally came out with a cool DIY hand gestures controlled robot, which can follow the commands shown by hand. Sounds crazy but I promise it’s very simple.
Making a gesture control robot is actually very simple. This robot is a improvement of my another DIY project RC car using RF module.
Here also the robot is divided into two session, Transmitter and Receiver. The Receiver circuit is same as that of the old post and there is a slight change in the transmitter circuit. Here we need to program the transmitter circuit to send hand gestures as commands. I will be using an Arduino as the programming platform to recognise the hand gestures with an accelerometer sensor. So let’s start making. :)
What are the stuff required to make this project?
- ADXL335 Accelerometer
- Arduino OR Compatible Board
- RF transmitter receiver module
- HT12E Encoder IC
- HT12D Decoder IC
- L293D Motor Driver IC
- General purpose PCB
- 12v/9v Geared Motor
- 12/9v Power supply
- 7805 Voltage regulator
- Robot Chassis (Optional ) or try a DIY chassis
How does it work?
What is an Accelerometer (ADXL335)?
In brief, an accelerometer is a three-axis acceleration measuring device. The one used here is ADXL335 and it has 3 axes (X Y Z).
The accelerometer is now there in almost all smartphones (No, we are not going to take it from a smartphone). You might definitely have played motion games in your mobile (Eg Temple run). The character in the game moves left and right when you tilt your phone left and right respectively. It is done by the accelerometer.
How does it work and recognize the hand gestures?
The brain of the robot is Arduino Uno(Atmega32). It is fed with a set of code. The gestures/motion made by hand is recognised by the acceleration measuring device called accelerometer (ADXL335). The one we discussed earlier.
Here the Accelerometer reads the X Y Z coordinates when we make hand gestures. It then sends the X Y Z coordinates to the arduino. Here we don’t need the Z axis. We need only X and Y. The arduino checks the values of coordinates and sends a 4bit data to the Encoder IC in accordance to the data received from the accelerometer. The Encoder passes the data to RF Transmitter. And the transmitted data is received by the RF Receiver. The receiver sends the 4bit data to Decoder IC which decodes it and passes to Motor Driver IC. Later the motor driver makes decision to turn the two motor in required direction
STEP 1: Make the power supply.
First we will start with the power supply circuit. We need two power supply circuit. One for the transmitter and one for receiver. The receiver circuit needs to be powered using 12v supply(since I’am using a 12V motor). Transmitter circuit can be powered using 9v battery.
Using this diagram, wire up the supply circuit. You can also add an LED via a 1k resistor to indicate the state of power supply.
- IC 7805 which regulates the 12v supply to 5v (if you can not get a 12v supply, you can use a 9v supply)
- 0.1uf & 470uf capacitor
- 1k resistor for status led
NOTE: Use of heat sink for 7805 is suggested because we are dropping 7v (12-5 ). So lots of heat will be produced and could burn the regulator.
STEP 2: Make the Transmitter (Hand Gestures Remote)
The receiver section consists of an accelerometer which detects the hand gestures. It then sends the data to the arduino. Later, arduino sends data to the Encoder IC in accordance to the data received from accelerometer, and the data is transmitted to the receiver
Wire up the circuit using this diagram.
STEP 3: Upload Code to Arduino
Upload this code to the Arduino: Code
STEP 4: Make the Receiver
The receiver circuit consists of 2 ICs (HT12D decoder and L293D motor driver) and RF receiver module.
Wire the circuit as per the above receiver schematic. There are 2 LEDs in the receiver board. One lights up when power supply is given to the receiver and the other when power supply is given to transmitter. The led near the IC HT12D should be lit and this provides you a valid transmission(VT) when power is given at the transmitter. If not, there is something wrong with your connection or your RF TX/RX module. If you want to know more in detail about the receiver section, please read this article.
What all hand gestures will the robot recognize?
This robot is designed for recognising five sets of hand gestures. Forward, backward, left, right and stop.
Enjoying riding your robot!! :)
STEP 5: Shrink it and make it permanent (Optional)
Arduino uno will be large and bulky on your hand . And if you are deciding to make another project using the Arduino you will have to remove it and all connection made on it. You will loose your old work.
I don’t like doing that. So I came out with a solution to make it permanent one. You can check this article to learn how to shrink your Arduino project. Download the PCB layout for standalone version from the picture above.
Watch this standalone video in which I have transferred the code to atmega8 MCU. I have only shown the outputs of MCU using LEDs.
And here is a working demo of my robot controlled with hand gestures!! :)
-Submitted by Mayoogh Girish
A DIY maker form India and big Arduino fan! You can read more on his blog here : https://igniteinnovateideas.wordpress.com/