Introduction: GESTURE CONTROL ROBOT
YES WE CAN CONTROL ROBOTS MOVEMENT BY HAND GESTURE
#HOW?
------STAY TUNNED WITH US----
SO we are again here with another simple basic about controlling robots using microcontroller and motor drivers but we can move them according to our will by moving our hand gesture, today we are sharing the wired hand gesture robot tutorial.
We used ADXL 335 so that we can move the robotic car forward,backward, right, and left by moving our hand accordingly.
for knowledge purpose a small intro about ADXL335:
the 3 axis ADXL335 from Analog Devices. This is the latest in a long, proven line of analog sensors - the holy grail of accelerometers. The ADXL335 is a triple axis MEMS accelerometer with extremely low noise and power consumption - only 320uA! The sensor has a full sensing range of +/-3g.
There is no on-board regulation, provided power should be between 1.8 and 3.6VDC. Board comes fully assembled and tested with external components installed. The included 0.1uF capacitors set the bandwidth of each axis to 50Hz.
SO LET'S BEGIN...
Guys thoroughly follow us you can make it within 5 to 10 minutes with basics and follow your youtube tutorial to make everything clear and our previous youtube channel name changed to "VOICE OF TECHNOLOGY"
Step 1: COMPONENTS NEEDED:
1:arduino uno(Arduino UNO R3)
2:-adxl335 accelerometer(ADXL335 Module 3-axis Analog Output Accelerometer for Raspberry Pi Arduino AVR)
3:-two dc motor(REES52 BOSET BO Motor 100 RPM 2 Pieces + BO Wheel 2 Pieces + BO Motor Clamp with Screws 2 Pieces)
4:caster wheels
5:-battery(powerbank)(Intex IT-PBB 2000 MAH Power Bank (Black))
6;-jumper wires(Robo India JW-C3 Jumper Wire - 10 Male to Male + 10 Female to Female + 10 Male to Female)
7:l293d motor driver(Embeddinator's L293D Motor Driving Module)
8:one chasis(Super Jumbo Chasis (Color May Vary))
9:-mini breadboard(KTC CONS Labs Nickel Plated 840 Points Bread Board or Solderless Piecesb Circuit Test Board, White)
Step 2: Adxl335 Connection
x pin of adxl335 is connect to analog pin of arduino.
y pin of adxl335 is connect to analog pin of arduino
gnd pin of adxl335 is connect to gnd ...
vcc pin of adxl335 is connect to 3.3v of arduino...
must remember this connection.............of vcc
Step 3: Circuit Diagram
If you use l293d ic instead of l293d motor driver…
It will be easy for connection - l293d ic have 16pins out of which 1,8,9 and 16 pin connect to +5v.
and 4,5,12,13 pin connect to gnd…
input 1,2,3 and 4pin is connected to arduino pin…
output is connected to left motor and right motor…
input 1 and 2 is connected to move left motor…
and input 3 and 4 is connected to move right motor…
Here is the circuit diagram of the robot..
In Arduino Uno analog pin :-
analog pin;--a1 and a2
digital pin;--3,4,7,8
a1---------x pin to the adxl335
a2---------y pin to the adxl335
3pin of arduino-------2 pin of l293d
4pin of arduino-------7pin of l293d
7pin of arduino-------10pin of l293d
8pin of arduino-------15pin of l293d
so 3,4,7,8 pins are connected to the l293d motor driver
Step 4: Uploading the Code
int LMT1=7,LMT2=8; // Motor Terminals M1
int RMT1=3,RMT2=4; // Motor Teminals M2
int X=A2; // X Axis is given to A2
int Y=A1; // Y Axis is given to A1
int Xvalue,Yvalue;
// Variables for storing the value
void setup()
{
pinMode(LMT1,OUTPUT);
// Motors are declared as output pinMode(LMT2,OUTPUT); pinMode(RMT1,OUTPUT);
pinMode(RMT2,OUTPUT);
pinMode(X,INPUT);
// A2 & A1 pins are declared as input pinMode(Y,INPUT);
}
void loop()
{
Xvalue=analogRead(X); // X axis values stored in a variable Yvalue=analogRead(Y); // Y axis values stored in a variable
if(Xvalue>=345 && Xvalue<=360 && Yvalue>=340 && Yvalue<=355)
// The boundary values are set to stop the motors
{
Stop();
}
else if(Xvalue>=388 && Xvalue<=410)
// The X axis values are used for vertical movement
{
forward();
}
else if(Xvalue>=270 && Xvalue<=305)
{
back();
}
else if(Yvalue>=280 && Yvalue<=300)
// The Y axis values are used for horizontal movement
{
left();
}
else if(Yvalue>=375 && Yvalue<=410)
{
right();
}
}
void forward()
// forward function is defined
{
digitalWrite(LMT1,HIGH);
digitalWrite(LMT2,LOW);
digitalWrite(RMT1,HIGH);
digitalWrite(RMT2,LOW);
}
void back()
// backward function is defined
{
digitalWrite(LMT1,LOW);
digitalWrite(LMT2,HIGH);
digitalWrite(RMT1,LOW);
digitalWrite(RMT2,HIGH);
}
void left()
// left function is defined
{
digitalWrite(LMT1,HIGH);
digitalWrite(LMT2,LOW);
digitalWrite(RMT1,LOW);
digitalWrite(RMT2,HIGH);
}
void right()
// right function is defined
{ digitalWrite(LMT1,LOW);
digitalWrite(LMT2,HIGH);
digitalWrite(RMT1,HIGH);
digitalWrite(RMT2,LOW);
}
void Stop()
// stop function is defined
{
digitalWrite(LMT1,LOW);
digitalWrite(LMT2,LOW);
digitalWrite(RMT1,HIGH);
digitalWrite(RMT2,HIGH);
}
Copy the code and compile in Arduino IDE ,upload it and have the fun.