How To Make DIY Hand Gesture Control Robot using Arduino At Home
In this article, we will learn how to make a Gesture control robot at home.
Gesture control robot with Arduino totally controlled by the Arduino which gets the instruction by another Arduino with serial communication. there are two parts in this project one is known as the transmitter and another is known as the receiver.
Components
- Arduino nano (2)
- FS1000A 433mHz Transmitter Receiver RF Radio Module
- ADXL345 Tripple Axis Accelerometer
- L298 2A Dual Motor Driver Module with PWM Control
- Universal PCB
- 200 RPM Dual Shaft BO Motor (2)
- 65mm Robot Smart Car Wheel (2)
- 9v battery
- Box
Circuit Diagram For Receiver
Circuit Diagram For Transmitter
Code For Receiver
#include <VirtualWire.h>
#define m1 2
#define m2 3
#define m3 4
#define m4 5
void setup()
{
vw_set_rx_pin(11);
vw_setup(2000);
pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(m3, OUTPUT);
pinMode(m4, OUTPUT);
vw_rx_start();
Serial.begin(9600);
}
void loop()
{
//
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
//Serial.println(buf[0]);
if (vw_get_message(buf, &buflen))
{
if(buf[0]=='F')
{
digitalWrite(m1,HIGH);
digitalWrite(m2,LOW);
digitalWrite(m3,HIGH);
digitalWrite(m4,LOW);
Serial.println("Forward");
}
else if(buf[0]=='B')
{
digitalWrite(m1,LOW);
digitalWrite(m2,HIGH);
digitalWrite(m3,LOW);
digitalWrite(m4,HIGH);
Serial.println("Backward");
}
else if(buf[0]=='R')
{
digitalWrite(m1,HIGH);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
digitalWrite(m4,LOW);
Serial.println("Left");
}
else if(buf[0]=='L')
{
digitalWrite(m1,LOW);
digitalWrite(m2,LOW);
digitalWrite(m3,HIGH);
digitalWrite(m4,LOW);
Serial.println("Right");
}
else if(buf[0]=='S')
{
digitalWrite(m1,LOW);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
digitalWrite(m4,LOW);
Serial.println("Stop");
}
}
}
Code For Transmitter
#include <VirtualWire.h>
#include <Wire.h>
int ADXL345 = 0x53;
int X_out, Y_out, Z_out,X_out2,X_out1,Y_out2,Y_out1,Z_out2,Z_out1;
char *data;
void setup() {
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(ADXL345);
Wire.write(0x2D);
Wire.write(8);
Wire.endTransmission();
delay(10);
Wire.beginTransmission(ADXL345);
Wire.write(0x32);
Wire.endTransmission(false);
Wire.requestFrom(ADXL345, 6, true);
vw_set_tx_pin(12);
vw_setup(2000);
X_out1 = ( Wire.read() | Wire.read() << 8);
Y_out1 = ( Wire.read() | Wire.read() << 8);
Z_out1 = ( Wire.read() | Wire.read() << 8);
}
void loop() {
Wire.beginTransmission(ADXL345);
Wire.write(0x32);
Wire.endTransmission(false);
Wire.requestFrom(ADXL345, 6, true);
X_out2 = ( Wire.read() | Wire.read() << 8);
Y_out2 = ( Wire.read() | Wire.read() << 8);
Z_out2 = ( Wire.read() | Wire.read() << 8);
Wire.beginTransmission(ADXL345);
Wire.write(0x32);
Wire.endTransmission(false);
Wire.requestFrom(ADXL345, 6, true);
X_out = X_out2-X_out1;
Y_out =Y_out2-Y_out1;
Z_out = Z_out2-Z_out1;
if(X_out>80)
data="L";
else if(X_out<-80)
data="R";
else if(Y_out>80)
data="F";
else if(Y_out<-80)
data="B";
else
data="S";
vw_send((uint8_t *)data, strlen(data));
vw_wait_tx();
// delay(500);
Serial.println(data);
}
Post a Comment
0 Comments