Introduction: Gesture Controlled Robot

About: An electronic hobbyist and a tech-savvy. Love to know and publish good electronic projects. I use some popular microcontrollers like raspberry pi, Arduino, linkit one, and also some basic ICs to make my projec…

Do you want to control things from a simple gesture made by your fingers. Do you want anything which moves or stop according to your fingers. If that is the case, then you are at the right place. These days gestures are of great importance. In our daily life we use a lot of gestures. From ordering coffee in a cafe to playing games in our mobile, everything is possible because of gestures. Gestures make your life easy. A dumb can convey his feelings with gestures only. So here I present a simple and joyful robot which works on the gestures made by your fingers and the best thing about this robot is that to sense a gesture it does not use flex sensor or any eye sensing camera. It works on a very simple concept which all of you must be knowing.

This is a four wheeled robot powered by two gear motors and use Linkit one and Arduino as its microcontroller. There is a glove by which you can control the robot. On each finger of the glove their is a simple receptor present. When you make a gesture by touching your thumb to your fingers,the command assigned to that finger is followed by the robot. For example when you touch you thumb to your index finger, the glove send the command of "forward" to the robot and the robot moves forward. I would have used flex sensor in this project but the disadvantages with it is that it is very costly and break when high pressure is applied on it. Young hobbyist like me are not able to buy such costly sensor and hence not able to make gesture controlled robots as well as projects. This robot is very easy to make and use and I am sure you will love it.

There is a camera attached to this robot by which you can see what all live actions are going on around the robot. The camera is a simple smartphone. Below the camera, a simple led board or you can say led array or matrix is attached which acts as a flash for the IP camera when used at night or in dark. Here are some use of this robot thought by me:

  • You can use it as a surveillance robot
  • As a project in science exhibition
  • To keep a check on the activities of your child when you are out of home
  • To search your precious items in place which are out of your reach
  • For fun and as a toy for your kids and in many more things

NOTE: I connected all my modules to the microcontroller at the last because I was not able to take their photos properly when they we connected to my microcontroller but I advise you to keep connect your modules as the steps move further.

For more cool projects, DIYs and electronic facts like a follow my Facebook page Frozen solenoid.

Please vote for me in the contest by click on the orange button in the top right corner.

Step 1: How to Use It?

This robot is very easy to use as well as to make. You don't need special arrangement to make the robot move. First power on your robot as well as transmitter. Their are two modes in the project. By first mode you can control the movement of the robot and by second mode you can control the various thing like led board and horn of the robot. When you will power on the robot, default mode will be selected which will allows you to control the movement of the robot. You change the mode of the robot by the push button. Here are are the commands of each finger in First mode:

  • Index finger-----Forward movement
  • Middle finger-----Backward movement
  • Ring finger-----Right movement
  • Pinky or baby finger-----Left movement

The commands of the Second mode are:

  • Index finger-----Led board
  • Middle finger-----Back lights
  • Ring finger-----Down or neon lights
  • Pinky or baby finger-----Horn

These are the basic commands of the robot. These will help you to control your robot more efficiently. In first mode there should be a constant connection of your thumb with your desired finger. For example if you want to move your robot forward then keep touching your index finger with your thumb. As soon as finger is removed, the robot stops moving. In second mode, touch your finger with your thumb for a while only. If you keep on touching, your functions will switch on for 0.5 seconds and then switch off for 0.5 seconds.

Step 2: Gather Parts

I would be telling you the parts required by you. Most of them you would be having. If you ask me, I would telling you to buy parts either from your local electronic store or from a online site of your nation. Buying your parts from foreign sites like ebay.com is not worth buying because the import duties are so much that you would always be in a loss. Here is the part list:

PARTS:

  • Linkit one
  • Arduino
  • RF module
  • A glove
  • L293D motor driving IC
  • Two smartphones(optional)
  • White leds
  • 4 X Blue led
  • 2 X red led
  • PCB
  • Male header
  • Female header
  • Chassis
  • TIP31C
  • Buzzer
  • 2 X gear motors
  • 4 X wheels
  • A shaft for front wheels
  • 2 X 4V lead acid batteries
  • 9V battery
  • Breadboard
  • Jump cables
  • Aluminum foil
  • 5 X 10K resistor
  • push button

TOOLS:

  • Soldering iron
  • Hot glue gun
  • Pliers
  • A cutting tool like a knife
  • Wire stripper
  • Scissors

MISCELLANEOUS:

  • Double sided tape

Step 3: Robot: Mount Motor to the Chassis

I used two gear motors of about 100 rpm for my robot. I can use four motor but using four motors would be of no use because two motor were able to give you sufficient amount of torque and speed and four motor will surely drain the battery more fast. Also choose motors according to your use. Mount the motors to your chassis and and solder a pir of wire to each. At the other end on wire solder some male header so that you can easily connect the motors with the breadboard. Leave the front part as it is.

Step 4: Robot: Attach Front and Back Wheels

Since this is a two wheeled robot, you need to attach a shaft mechanism to rotate the front wheels along with back wheels. You can use a ball bearing but wheels would look much better and balance made by wheels is also more good. By chance robot enters a area where surface is not even, then wheels will give you more grip than a ball bearing. I have seen that a lot of people use different sizes of wheels. Don't do that. That will decrease the efficiency of your robot. Attach your front and back wheels and screw then tightly.

Step 5: Robot: Making a Battery Pack

Choosing a correct battery source is also very important. Performance of your robot will depend upon your power source. A bad power source can damage your parts. A battery of potential difference between 8V and 12V would be perfect. I used lead two 4V.1.5Ah lead acid batteries. If you are giving pride to weight then use lithium ion batteries but for me cost of robot is more important so best option is to use a lead acid batteries. They are cheap, durable and reliable, ordinary change in temperature conditions does not affect its performance. They also don't need a special chargers like other batteries to be charged. Connecting the batteries in series gave me a power output of 8V 1.5Ah. This is enough to power my motor driving IC and linkit one board. Stick the two batteries together with a piece of double sided tape. Connect the batteries in series and stick them at bottom of your chassis. This would save space. Using a multimeter, check weather your battery is giving desired voltage or not. If not, charge them first and then only proceed to further steps.

Step 6: Robot: Attaching Linkit One and Making a Power Supply for It

After making a the base and basic infrastructure of the robot, we would be going to attach our linkit one to chassis of our robot. Doing this will make your work in further steps easier. Take a double sided tape and stick a small part on the bottom of the linkit one board. Peel the other side and preciously stick the linkit one to your chassis.

After sticking the linkit one we would be making a power supply for it. As we all know that linkit one comes with li-ion battery but since that battery is not able to power our motors we are using a external power supply. It is foolish to use two different batteries in one same project. As like arduino, linkit one does not has a 5V voltage regulator. So we need to make a external power supply using 7805 voltage regulator. The circuit is very easy to make. I used a PCB because I do not wanted to make a temporary circuit.To make a power supply concern to the circuit given above. After making the supply, connect pin 3 and pin 2 of voltage regulator to 5V and gnd of linkit one respectively.

.

Step 7: Robot: Upload the Code to Linkit One

From my point of view, it is good to upload the code before hand only rather than doing so after you have made all the connections. After you have made the project, you don't have to wait to upload the code to your microcontroller and then check your project. Directly turn on you power supply and enjoy with your project. Download the RC switch library from here and import it to your ide. So here is the code:

#include <RCSwitch.h>
RCSwitch mySwitch=RCSwitch();
int left1=2;
int left2=3;
int right1=4;
int right2=5;
int white=6;
int horn=7;
int red=12;
int blue=9;
int state=0;
int state1=0;
int state2=0;
int state3=0;
int state4=0;
void setup() {
 mySwitch.enableReceive(8);
pinMode(left1,OUTPUT);
pinMode(left2,OUTPUT);
pinMode(right1,OUTPUT);
pinMode(right2,OUTPUT);
pinMode(white,OUTPUT);
pinMode(red,OUTPUT);
pinMode(horn,OUTPUT);
pinMode(blue,OUTPUT);
}
void loop() {
  if(mySwitch.available())
  {
    int value=mySwitch.getReceivedValue();
    if(value=0)
    {
      state=0;}
      else
      if(value=1)
      {
        state=1;}
        if(state=0)
        {
          if(value=100)
          {
            digitalWrite(left1,HIGH);
            digitalWrite(right1,HIGH);
            digitalWrite(left2,LOW);
            digitalWrite(right1,LOW);
          }
          else
          if(value=101)
          {
            digitalWrite(left2,HIGH);
            digitalWrite(right2,HIGH);
            digitalWrite(left1,LOW);
            digitalWrite(right1,LOW);
          }
          else
          if(value=102)
          {
            digitalWrite(left1,HIGH);
            digitalWrite(right2,HIGH);
            digitalWrite(left2,LOW);
            digitalWrite(right1,LOW);
          }
          else
          if(value=103)
          {
            digitalWrite(left2,HIGH);
            digitalWrite(right1,HIGH);
            digitalWrite(left1,LOW);
            digitalWrite(right2,LOW);
          }
        }
        else
        if(state=1)
        {
          if(value=100 && state1==0)
          {
            digitalWrite(white,HIGH);
            state1=1;
          }
          else
          if(value=100 && state1==1)
          {
            digitalWrite(white,HIGH);
          }
          else
          if(value=101 && state2==0)
          {
            digitalWrite(red,HIGH);
            state2=1;
          }
          else
          if(value=101 && state2==1)
          {
            digitalWrite(red,LOW);
            state2=0;
          }
          else
          if(value=102 && state3==0)
          {
            digitalWrite(blue,HIGH);
            state3=1;
          }
          else
          if(value=102 && state3==1)
          {
            digitalWrite(blue,LOW);
            state3=0;
          }
          else
          if(value=103 && state4==0)
          {
            digitalWrite(horn,HIGH);
            state4=1;
          }
          else
          if(value=103 && state4==1)
          {
            digitalWrite(horn,LOW);
            state4=0;
          }
          delay(500);
        }
}
}

Step 8: Robot: Connect Your L293D

The motor driving IC used in this robot is L293D. Different kinds of motor driving IC are present in the market but the most common one is a L293D IC. You can use any other motor driving IC if you do not have a L293D IC but I advise you to use this IC because pin configuration of this IC is very simple and it dosen't get damaged easily with high current and voltage. You can even use a motor driving shield for your project because most of the shields use L293D. The pin configuration of the IC as well as its connection with your linkit one are given above in two separate images.Don't forget to use a 16 pin IC base with the motor driving IC. While connecting the pins make sure that you connect its pin 8 to 8V supply.

Step 9: Robot: Attach the RF Module(Receiver)

We would be using a 433 MHz RF module to control our Linkit one from our arduino. I specifically prefer using this module because it is very cheap in price, has a good range, easily available in market, easy to use and connect. I searched for it on various online stores and found that the market was flooded with this RF module. There are many variety of the RF module of 433MHZ frequency. I have two types of module, first one has 8 pins in the receiver and the other one has 4 pins in the receiver(I am using the module which has four pin in it receiver) but both work exactly same. So don't get panic.

The connections of this module are very simple and easy to understand. One module would be connected to your robot and other to your glove. We are using "RC switch" library to control our RF module. Adafruit also developed a library to control this module but I found that "RC switch" library was more easy to use and understand. The command of this library were not very much complicated. If there are two data pin in your module then sort them and connect anyone of them to the linkit one board. Here are the connections of the receiver module to your linkit one board:

  • vcc (module)-----5V of linkit one
  • gnd (module)-----gnd of linkit one
  • data (module)-----digital pin 8

Step 10: Robot: Making a Clamp for Phone

Firstly I was making a simple robot which was controlled by the gestures of your hand. I was continuously thinking that something more could be added to it which would make the robot more interesting. Then a idea came in my mind why not to add a camera to the robot by which you can see where your robot is going and what all thing are around it. The idea of using a IP camera was not good because they are little costly but now every has a smartphone and using a smartphone as a camera would be a good idea. I searched a little on the internet and found an app which allow me to control the camera of my smartphone through another phone(details of the app is given in step15).

To place your smartphone in your robot, you would be needing a clamp like thing to make your smartphone stay there and does not get displaced from its place when the robot is in use. You can buy a ready made stand from the market but I decided to build my own clamp. For that I used "mechanix" kit. This kit include small pieces or you can say strips of aluminum by which you can make different things. You can use acrylic sheets to make your clamp or you can print you clamp from a 3D printer. Be sure you make a clam which is durable and do not break easily.

Step 11: Robot: Making the Led Board

I thought of attaching front light to this robot. First I thought of simply attaching two white LEDs but then you also know and I also know that only two LEDs does not give a lot of light. Then the idea came in my mind of making a big board consisting of LEDs which can give a lot of light and would act as a flash light for my smartphone when using at night or in a dark place.

It is very easy to make a led board. My LED board consist of 30 LED but you can increase or decrease the number according to your preference and battery performance. First make a simple row of LED (make sure that your row goes from top to bottom or vice-verse, not from left to right or right to left) Connect negative of all rows directly and positive through a 68 ohms resistor(use one resistor for one led only. This would decrease the load on your resistor). Number of LED in a row and number of rows depends upon you. After making sufficient rows, connect positive of all rows together and negative of all rows together. Now your led board is ready. You cannot connect your led board directly to your linkit one board as current output of linkit one board is very low. To overcome this problem we would be using a TIP31C NPN transistor. Here are its connections:

  • Transistor pin 1-----Linkit one pin 6
  • Transistor pin 2-----Led board negative(cathode)
  • Transistor pin 3-----Power supply ground(or voltage regulator's pin 2)
  • LED board positive-----5V

Now your board is completely ready. Hot glue the board in front part of the robot such that it does not block your mobile's camera.

Step 12: Robot: Hook Up the LEDs and Horn

I decided to add some red led at the back which would signify back lights of a car and some blue lights which would act as neon lights. I also added a buzzer which acts as horn. When someone comes in front of your robot you can switch on the horn tho make that person realize that something is there down and he should clear the way for it. Connect the horn and lights as follow:

  • Positive of buzzer-----digital pin 7
  • Positive of red LEDs-----digital pin 12
  • Positive of blue LEDs-----digital pin 9
  • Negative of all three things to pin 2 of 5V voltage regulator

Step 13: Transmitter: Making a Shield for Nano

I am using arduino nano as the second microcontroller and I advice you to use either arduino nano or arduino pro-mini because of their size. The above two microcontroller are breadboard friendly but placing a breadboard on your palm is not a good idea as it is too big. So I decided to make a simple shield for my nano. I had a choice of using a ready made shield but they are also too big to be placed above our palm. So the best option would be making a shield using female header and a PCB. Solder some female header on a piece of PCB such that you microcontroller can easily fit on it. Cut off the excess PCB. Make sure that you leave a little of space on the PCB for the RF module.

Step 14: Transmitter: Upload the Code

As said before, you should first upload the code to your microcontroller and then connect your sensor and module. In the case of transmitter also we are following this rule. This time make sure that you have chosen Arduino nano (or the board which you are using in the transmitter) in your ide. Here is the code:


#include <RCSwitch.h>
RCSwitch mySwitch=RCSwitch();
int f1=4;
int f2=5;
int f3=6;
int f4=7;
int mode1=11;
int state=0;
void setup() {
  mySwitch.enableTransmit(2);
  pinMode(f1,INPUT);
  pinMode(f2,INPUT);
  pinMode(f3,INPUT);
  pinMode(f4,INPUT);
  pinMode(mode1,INPUT);
}
void loop() {
  if(digitalRead(mode1)==HIGH && state==0)
  {
    mySwitch.send("0");
    state=1;
    delay(500);
  }
  else
  if(digitalRead(mode1)==HIGH && state==1)
  {
     mySwitch.send("1");
     state=0;
     delay(500);
  }
  else
  if(digitalRead(f1)==HIGH)
  {
     mySwitch.send("100");
  }
  else
  if(digitalRead(f2)==HIGH)
  {
     mySwitch.send("101");
  }
  else 
  if(digitalRead(f3)==HIGH)
  {
     mySwitch.send("102");
  }
  else
  if(digitalRead(f4)==HIGH)
  {
     mySwitch.send("103");
  }
}

Step 15: Transmitter: Connecting the RF Module(transmitter)

Again you have to connect the RF module to your microcontroller but this time its turn of transmitter. Generally transmitter module is smaller than receiver module and also has less number of pins. My RF module has two coils and one round crystal but other type have only one oval shaped crystal. In the previous step, I told you to leave some space on the PCB for the RF module. In that space solder a three pinned female header and insert you RF module. Then connect its pins as follow:

  • RF module vcc-----Arduino 5V
  • RF module gnd-----Arduino gnd
  • RF module data-----Arduino digital pin 2

Connect antenna of your module to a small piece of wire but I did not do so.

Step 16: Transmitter: Making the Gesture Receptors

I saw that a lot of people posted project which work on activity of your hand and saw that there was one thing common in all of them. That was all of them were using flex sensor in the project. I tried to make those projects but dropped the idea by seeing the price of flex sensor. Cost of a normal flex sensor was around $6 and you would be buying five of them for your four fingers. Five flex sensor would cost you $30 which is a fir sum. Then a idea strike my mind of making gesture receptors which are very cheap and work exactly same as flex sensor. I took some aluminum foil and some double sided tape and made gesture receptors with them which were working almost same like flex sensor.

These gesture receptors are like switches. The receptor on the thumb is common. When you touch your thumb to any of the four fingers, the command assigned to it is followed. When you touch your thumb to any finger, them circuit is closed and this command is send to arduino who transmit it to linkit one who completes the command assigned to it. Making of these receptor is very easy. Firstly put a piece of double sided tape on a finger of your glove. Now take a wire a peel it to about a inch. Peel the double sided tape and gently put the wire on it. Now put a piece of aluminum foil above the tape(make sure that piece of foil is bigger than the tape). Cut of the extra foil through scissors and your one gesture receptor is ready. Similarly make gesture receptors on other fingers also. Now cut the wire of each receptor to a sufficient length. Apply some hot glue to make the wire stay on its place.

Step 17: Transmitter: Connecting the Gesture Receptor and Power Supply

Now we would be connecting our gesture receptor to our microcontroller. Solder them directly to the PCB. Do it carefully as you may break the wire. Follow the following steps to connect your gesture receptor to your Arduino board:

  • Thumb-----Arduino 5V
  • Index finger-----digital pin 4
  • Middle finger-----digital pin 5
  • Ring finger-----digital pin 6
  • pinky or baby finger-----digital pin 7
  • Short digital pin 4,5,6 and 7 with a 10K resistor to Arduino gnd.

There are a lot of functions in our robot but we have only four finger in our hand. We can not control movement of the robot and lights and horn simultaneously. So I decided to make this project work on two modes. In first mode you can control the movement of the robot and in second mode you can control various functions like horn and lights. The mode of the robot is selected by a push button. If you want to turn on the light then you have to switch your glove to second mode and then turn on the lights and again switch your mode and control the movement. In my photos you can not see push switch as I forgot to add a push button but in afterward photos, you can see a slide switch. I used slide switch and saw that a push button will be better. I took the photos before so I cannot change it. Connect pin one of push button to Arduino 5V and second pin to digital pin 11. Short digital pin 11 to ground with a 10K resistor.

Take a on/off switch and connect positive of your 9V battery clip to one pin of the switch and other pin to a small piece of wire. Connect gnd of Arduino to negative of 9V battery clip and vin pin of Arduino to the other side of small wire connected with the switch. Now your Arduino is connected to battery and is ready to work.

Step 18: Download the App

To control the camera of a smartphone with any phone we would be requiring a app. I searched on internet for this kind of app and found a app named "web of cam". This is a fabulous app. Very convenient and easy to use. They are few other apps but the recording of those apps are not so much well as this app has. Install this app from play store. It is a free of cost app. First connect both your smartphone to a wi-fi network. If you don't have a wi-fi network then open wi-fi hotspot in one phone and connect other one to it. In first step it will ask you to install web of cam in both phones. Click next button placed downward. In second step it will ask you to choose between viewer and camera. Select viewer in one phone and camera in other. In viewer it will show you number of connections available. Connect it with your other phone and your camera system is ready to use. Place you camera phone in the robot.By this app you can capture photos and videos from two mobiles. You can use it to convert you phone into walks-talky.

Step 19: Done!!

Now power on your robot as well as gesture transmitter. Make various command on your gesture transmitter and you can control the robot. You robot is ready to use. Show it to your friends and family members. Give it to your children if any and they will love playing with it. Use it as a science exhibition project. This is the end of this instructable. I hope you like it and loved it too. I you have any query regarding it comment below. If you do not understand anything in the project you can ask me. Post photos of your robot also and you can make amendments in your robot also. Thanks for reading my project.

THANK YOU.

Please vote for me in the contest if you like it.