Introduction: GESTURE Controlled Arduino Based Rover ( Wireless + Line Following )

Picture of GESTURE Controlled Arduino Based Rover ( Wireless + Line Following )

What is it capable of ?
1. It can be controlled using gestures.
2. It can Send temperature , object distance , battery level , etc. values to the glove ( LCD ).
3. Can run on 45+ degree angle.
4. Tx Rx pair on both rover and Glove ( for bi-directional data transfer ).

Why to use joysticks to control you robot when you can control it by the gestures of your hand ! This robotic Rover works on 433MHz Band RF Modules (ASK).

The remote is modified into a GLOVE which is equipped with

an accelerometer (ADXL335)

16x2 LCD display

8 button keypad

and a transceiver

The rover and glove is based on ATmega328 P which is used in Arduino Uno as well ,


ROVER UNIT ( I've named it TITAN :D )


2. Custom made arduino compatible robotic controller

3. DIY FTDI cable ( USB to SERIAL )

4. HC-SR04 Ultrasonic Rangefinder

5. 2 x Optical sensors ( to convert it into a line follower)

6. 2 x custom 30 Amp Motor drivers : MAKE YOUR OWN MOTOR DRIVER

7. 2 x 150 RPM & 5 kgf-cm torque DC motors

8. 12V SLA ( Sealed Lead Acid ) Battery 1.2 Ah capacity

9. 4 x Track wheels and Track belt

10. Acrylic sheet chasis ( i used 4mm thick sheet )

Gesture GLOVE :

1. A Glove

2. ATmega 328P based board

3. ADXL335 accelerometer

4. 16x2 LCD Display

5. A 8-button Keypad

6. 433Mhz Transceiver

7. Some headers and ribbon cables

Step 1: Features and Future Possibilities


Features :

1. Minimal I/O pins configuration.

2. Quite light weight , portable, sturdy and transparent chasis.

3. Easy to control it using Gestures and interactive LCD screen.

4. Battery level monitoring , Distance measurement , temperature monitoring , etc.

5. Isolation of motors from MCU board , reduces noises and voltage spikes from the motor.

6. Programmable through FTDI cable and accepts Arduino sketches.

7. Compatible with Arduino shields.

8. FPV ( first person view camera )

9. Can act as a line following robot.

10. Tested on 45+ degree slopes.

11. Can be used for remote surveillance.

Future Scope of improvement :

I'm planning to :

1. Add a gripper arm on the rover unit .

2. Add a 6v solar panel to charge the batteries which power the MCU

3. Add an EDF ( ducted fan ) and transform it into a hovercraft.

4. Replace the original 150 RPM motors with mabuchi rs380 (18000 RPM ) motor

So What Will You Mod It Into ? =D



If you're using two separate Arduino boards then you can skip this step

NOTE ! : I've made these boards using toner transfer and FeCl3 etching method ( without solder mask ) , they're easy to make but they look kinda shabby :P

I've used minimal components and some extra headers for I/O pins. If you want the board files ( .brd) then just comment below and i'll surely post it ( with / without the logo ) .I can provide you with the single sided version if you don't want the double sided layout.

Some tips on toner transfer method :

1. Use a clean and nicely rinsed copper clad ( ***** if you want faster etching then you may reduce the copper thickness by sanding it a bit **** ).

2. set the printer on high contrast and print the design on a magazine paper

3. after placing the paper on the copper surface , heat it for 5-6 minutes or maybe less .

Try not to over-heat it as toner is a polymer and on over-heating it could ruin your design ( if the tracks are too close )

4. After 5-6 mins quickly place it in cold water and soak it for another 5 minutes . When it is done , the paper will peel off easily , scrub any excess paper left on it and let it dry.

5. Check all the tracks, pads and vias properly before etching. You can correct errors using a fine tip permanent marker. Your board is ready to be etched.

6. Get a PLASTIC tray and add 3-4 tablespoons of FeCl3 powder ( depens on the size of your board ) You'll need plenty of it. Now place your board ( copper side up ) in the tray , near the heap of FeCl3 powder.

CAUTION : You'll need some latex gloves and safety goggles as when FeCl3 is added to boiling water , the solution releases heat and nasty fumes. Do not carry out etching in a closed room, find a well ventilated area for doing this step.

7. Get boiling water and slowly add it to the tray ( use minimum qty of water ) and stir it constantly ( important).

8. If you have used previously sanded copper clad then it will take hardly 5-6 mins for complete etching but in other cases it could even take 20 - 30 minutes.

9. Once the copper is etched , you have to scrub off the toner with a steelwool scrub, use acetone / alcohol to clean the permanent marker ink.

Part list :

1. ATmega328P x 2 (for rover and glove)

2. 16MHz crystal x 2

3. 4 x 22pf capacitors some 10 uf and 100nf capacitors

4. a bunch of 10k resistors ( they serve as pull-up or pull-down resistors )

5. some 220r - 330r or 1k resistors ( as per your LEDs )

6. A Copper clad ( double sided or single sided )

7. Some male and female header strips

8. tactile switches

9. 7805 5v regulators

10. some diodes and terminal blocks

11. RF modules x 2 (433MHz)

12. A programmer or FTDI cable - Want to build you own FTDI cable using toner transfer method?


The board on the rover has mainly

2 motor control PWM enabled jacks (11-3 and 5-6) ,

Arduino shield compatible headers

some 3 pin headers ( vcc - gnd - analog pin) for analog sensors.

i've directly soldered the RF module Rx and Tx on the board


Bootloading your new ATmega328

1. Upload the ARDUINO ISP sketch on arduino

2. connect


pin 13 - SCK pin (PB 5)

pin 12 - MISO pin (PB 4)

pin 11 - MOSI pin (PB 3)

pin 10 - Reset pin ( 1 )

for schematics :

Select "Arduino UNO" from Tools > Boards > Arduino Uno

Select "Arduino as ISP" from Tools > Programmer > Arduino as ISP

after ensuring all the connections click on "Burn bootloader"

wait for few seconds and your Atmega328P is now ready to accept Arduino Sketches !

Step 3: Build the Rover Platform

Picture of Build the Rover Platform

The main chasis is made using a 30 x 40 cm piece of clear 4mm Acrylic sheet . Additional acrylic strips are fixed on the edges to strengthen the body.

Two motors are clamped at the back and two dead shafts (dummy shafts) are clamped in the front.

The motor drivers are firmly fixed near the motors and a LM35 temperature sensor is fixed in it to monitor the temperature.



WIRELESS CAMERA ( for first person view FPV )

I've mounted an android phone which serves as an IP Camera ( get this app : IP Webcam)

The android creates a wifi-hotspot , to connect my laptop directly to the phone ( without any external router ) ! Now you can stream live FPV from your ROVER !


I've attached two optical sensors which use a super-bright red LED as Tx and a photodiode as Rx , the photodiode is covered with a open tube made from 6mm heat shrink tube. This is done to avoid false reading , the sensors are fixed facing downwards to convert it into a line following robot.


The HC-SR04 is mounted using a small piece of acrylic and some superglue. The mount has a 4 pin female header where the HC-SR04 is fixed.


Two LM35 analog Temperature sensors are firmly inserted into the heatsinks of the motor drivers. If you're using Low turn motors ( eg The 380 motor (Mabuchi RS-380SH) ) or any other hobby offroad motors then it is highly recommended to enable the cooling fans. They get really hot , hot enough to destroy the MOSFETs.

Further Scope :

There are variety of sensors that you could implement , like some LDRs , SHARP sensors , etc)

Step 5: AXIS GLOVE - Accelerometer Strap

Picture of AXIS GLOVE    -    Accelerometer Strap

The glove consists of two parts :

1. The accelerometer strap

it has the accelerometer , TX and RX 433MHz , the power connector and the MCU Board.

2. The Display strap

it has the 16x2 LCD and the 8 button keypad


The accelerometer strap is basically a piece of velco which has the ADXL335 , RF Tx Rx pair and a power socket mounted on it.

1. cut a strip of soft (loop) velco ( any length ). Cut a smaller piece of rough (hook) velcroand paste it at the end of the soft velcro strip on the plain side and paint it as you like. Then mount the ADXL335 using a piece of double tape or some screws after the paint dries.

2. attach the Tx and Rx as shown in the picture after soldering power and data connectors.

3. Cut two 6 pin female headers and superglue them in stacked position. Solder the Gnd and +5v bus as shown.

4. Cut a piece of soft velcro and glue it to the bottom of the Mini MCU board so that it will stick firmly to the rough end of the strap.

Next step : LCD display strap >>>



The display unit has a 16x2 LCD display mounted on a piece of acrylic which is then attached to the straps.

Parts :

1. 16x2 LCD

2. 74HC595

3. A 16 pin Female header

4. CD4051 and 8 tactile switches

5. Some headers


1. Start by cutting a rectangular piece of acrylic sheet (matching the size of your LCD) and drill holes in it to mount the LCD. Fix the LCD firmly.

2. Follow the schematic and connect the LCD as shown and download the ShiftLCD library from here - ShiftLCD

3. Attach two straps to the acrylic base and your LCD unit is ready !


1. Follow the schematic (provided in the images) or you can ask me for the Board (.brd) files !

2. Download the Mux library ( made by me ).

3. Attach bits of velcro to the bottom layer of the keypad so that it can be attached under the glove.

4. Solder Power wires , input and select pin wires.

Finally your control glove is ready !


Now that we've finished making our Rover and Glove , its time for programming.

Libraries that you'll need :




The programs are quite long so there could be some bugs in it. If you encounter some bugs or If you have some problem with the libraries then be sure to ask me. The programs are archived in the .rar file attached below.


Any queries ? Suggestions ? Requests ? Problems ? Feel free to comment below i'll try to reply ASAP.


viễnn2 (author)2016-11-13

hi, I am using 2.4 Ghz NRF24L01 for transmit and receive. Can you help me with rf24? I am a begginer.

Thanks for any help.

moonskyfirst (author)2016-09-17

could you please send the keypad .brd file for me? Thank you

sachink34 (author)2016-05-08


sachink34 (author)2016-05-08

If i have 2 arduino boards which step should i skip please help

electro18 (author)sachink342016-05-08

As you have two arduino boards you may skip the fabrication of both the boards.
I chose not to because uno is pretty bulky for the glove and also for the ease of use.

sachink34 (author)electro182016-05-08

Thank you

KarthikD10 (author)2016-04-02

could u plz send the .brd file of the keypad asap u

pardeep kumar (author)2015-03-30

Hey.. I am a very beginner... And i want to make this project for project submission in my college. As i said i ama very beginner so i cant make it as it not have stepwise making of project and circuit diagrams also... Please can you provide me details how to make it stepwise.. It seems very confusing here... Thanks a lot please help me out

All the connections are mentioned in the codes.

You just need to mount everything go with the connections.

And it only makes it EAAASSSSIIIIIEEEEEEEEEER with the custom board.

MuntasarP (author)2015-04-14

Hey Tanay, Can you show me how you interfaced the 4051 mux with the keypad? Also, could you tell me where to connected the Pin 3 on the 4051 mux which is the common input/output pin? Please do let me know, thank you.

robobot3112 (author)MuntasarP2016-03-07

Why dont you check the keypad image?

I managed to understand by meticulously looking at the traces and i just produced an exact copy. Believe it or not you can get it correct that way!

manjoosh (author)2015-08-27

hi...could you please clarify about the connection between the rf module and the doubt is that, can i send x and y axis values thorugh single rf module...please do help...

ksvnvamsi (author)2015-08-23

hi sir ,can i get the .brd file for this prosess my email id is

JosephO5 (author)2015-07-06

hi sir, thanks for sharing your project, may i borrow your codes? i just use it as a reference for my project. i hope for your answer. thanks.

abhiars (author)2015-06-14

Plz..reply me yar

abhiars (author)2015-06-13

Hii...... i am abhishek i am going to make this rover for my clg project, can u give me list of all the parts needed for this project....... and how much money require ????..... plz help me...

Aliakbar5719 (author)2015-05-28

lakshmi.mani.14 (author)2015-04-14

Can u pls send me .brd file as soon as possible please please .my mail id

sayan.ghosh.108889 (author)2015-04-03

sir, can you send me the .brd files asap. i need it for my college project . my email is

sayan.ghosh.108889 (author)2015-04-02

can you send me the .brd files please. my mail is

baj1 (author)2015-02-23

where do u buy ur optical sensors

electro18 (author)baj12015-03-05

The optical sensors are bought from a local hobby store
If you can't find them nearby, you can make them yourself ! The circuit is quite easy, I'll upload the schematics if you need.

amandeo (author)2015-01-15

Can you please provide the circuit diagram of keypad . Also please mention the connection between keypad and atmega328.Since its my first project i have a lot of doubts.Advanced sorry if i keep on commenting and disturb you !

electro18 (author)amandeo2015-01-16

Sure, I'll upload the circuit diagram soon.

That's perfectly fine, I'll be sure to help you in every possible way ! :)

amandeo (author)2015-01-16

hi sir,

How to get accelrometer values?

I caliberated using this code :

void setup()




void loop()


intxaccel = analogRead(0);

intyaccel = analogRead(1);

intzaccel = analogRead(2);

unsigned long timevar = millis();


Serial.print(" ");


Serial.print(" ");


Serial.print(" ");



So what value should i give as input ?

electro18 (author)amandeo2015-01-16

okay , so assuming that you have an ADXL335 ( with analog outputs for x , y , z axes ) the values should range from 300 - 440 ( mostly ).Using the serial monitor , verify the high and low values by tilting it ( without much acceleration ) else you could write a code to do that for you. Then use the "map" function to convert these values from analog values to angle.

angle_x = map(angle_x, 300, 440 , -90 , 90);

angle_x = constrain(angle_x,-90,90);

do this step for all the values and then you can easily convert these values from 0 to 255 ( suitable for PWM ).

amandeo (author)2015-01-14

I got this error while compiling code for glove:

In file included from sketch_jan14a.ino:3:

E:\Arduino\libraries\ShiftLCD/ShiftLCD.h:116: error: conflicting return type specified for 'virtual void ShiftLCD::write(uint8_t)'

E:\Arduino\hardware\arduino\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'

I tried LiquidCrystal then, I got this error:

AXIS_GLOVE:43: error: no matching function for call to 'LiquidCrystal::LiquidCrystal(int, int, int)'

Requesting your help.

electro18 (author)amandeo2015-01-14

Yes, that's because the library that is available on that particular website has certain bugs which conflict with the return types. I've re-edited the library and uploaded it on my other instructable ( Digital tachometer ). The other point is that you cannot use the form "mylcd(int, int, int)" This is because the liquid crystal library supports 6 pins and not 3 pins , so you can't run a LCD with liquidcrystal library on bare 3 pins. That is why you need the ShiftLCD library. You may download the updated library from my other Instructable.

amandeo (author)electro182015-01-14

It worked ! Thank you !

electro18 (author)amandeo2015-01-14

I'm glad that it worked for you ! Good luck :)

amandeo (author)2015-01-11

Hi sir,

How to make this optical sensor? I couldnt get it from shop. If it can be avoided what should be the changes in program? kindly help.

electro18 (author)amandeo2015-01-11

There are no amendments to be done in the program. That's because the sensors are basically used in the line following mode. Until you set the mode to "line following" everything will work as it normally should .

robobot3112 (author)2014-11-24

how am i to connect so many sensors on one arduino?,wont they take too much of power. Otherwise can i use breadboard.

electro18 (author)robobot31122014-11-24

Using a breadboard won't do any good. It would rather make the rover bulky and hard to rewire. Using a custom board would just ease the process. The power consumption won't be affected by the mode of connection ( except for the resistance of traces / breadboard connectors ). As long as you have an appropriate power source capable of delivering required current to all the peripheral sensors, you don't need to worry much.

robobot3112 (author)electro182015-01-02

can i get the schematic for the keypad?Thanks

robobot3112 (author)2015-01-01

i am using the liquidcrystal library, everything seems to work, but for the multiplexed keypad , i'm running out of pins , the only pins left are 9,8, what can be done , can i use pins 0,1,13 as normal IO pins?

electro18 (author)robobot31122015-01-02

Yes , you can !

Abdul498 (author)2014-11-19

I am very much interested in this project

but i am confused in the circuit

could you please send the circuit daiagram of it

electro18 (author)Abdul4982014-11-19

I've attached the (.sch) schematic files on step 2.

jasilva17 (author)2014-11-05
electro18 (author)jasilva172014-11-05

Sure , it will !

robobot3112 (author)2014-10-11

i am having a doubt with the code. I am attempting this project without the extra features (only gesture control) I have downloaded all the libraries but i get an error on the axis glove .How can i exclude the libraries and remove the lcd from the code?

and i also am having trouble finding a different code as everything wants an encoder.

how can i code it . could you help me out?

give me yr email i ll send that improved code

you could send it to me as a private message.

cant send files in that

I got the code, I made my own using liquidcrystal. Thanks for the tip.

use liquidcrystal insread of shif lcd.

shaksham (author)2014-10-07

hey bro i am in trouble i dont know how to generate a source sode and one more thing is that i have to make a major project using arduino so please help me to suggest a name of project using arduino so that i make using its instructions..please help me..

electro18 (author)shaksham2014-10-11

Well I don't get what exactly you're longing for , but if you need the source code then I've already uploaded all the source codes ( .ino files ).

navneetcsgowda (author)2014-10-11

tanay can i use liquid crystal instead of shiftlcd

About This Instructable




Bio: Hey there ! I'm Tanay , a hobbyist interested in making robots and sharing stuff. I hope that my instructables help you in solving your problems ... More »
More by electro18:USB Chameleon Lamp ( Color replicating )Your Own Color Sensor using LEDsMeasure RPM - Optical Tachometer
Add instructable to: