Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah robot beroda yang dapat dikendalikan gerakannya menggunakan handphone android melalui fitur accelerometer, jadi syarat utama yang harus dipunyai oleh handphone adalah fitur sensor accelerometer, robot ini menggunakan Arduino sebagai pengolahan datanya dan juga eksekusi robotnya. handphone android hanya mengirimkan koordinat berupa nilai kemiringan X dan Y saja kemudian kedua nilai tersebut dikirimkan secara bersamaan ke Arduino, Pada Arduino dilakukan parsing data yang mana agar didapatkan nilai X dan Y yang dikirimkan oleh HP melalui bluetooth sehingga setelah data didapat, Arduino langsung akan mengeksekusi kedua motor DC agar dapat berjalan sesuai perintah. untuk lebih jelasnya berkut adalah skema dan programnya.
a. Arduino Uno
b. Driver Motor L298
c. Bluetooth HC-05
d. Motor DC + Gearbox + Roda
e. Handphone + Sensor Accelerometer
f. Program Android
g. Program Arduino IDE
int kiri = 2;
int kiri2 = 3;
int kanan = 4;
int kanan2 = 5;
int pwm1 = 6;
int pwm2 = 7;
int sumbux;
int sumbuy;
String accelero;
void setup() {
Serial.begin(9600);
Serial.setTimeout(5);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
analogWrite(6,250);
analogWrite(7,250);
}
void loop() {
if (Serial.available() > 0)
{
accelero = Serial.readString();
if(accelero.startsWith("X"))
{
accelero.replace("X", "");
//Serial.print("X= ");
//Serial.print(accelero);
//Serial.print(" ");
sumbux = accelero.toInt();
//Serial.println(sumbux);
}
else if(accelero.startsWith("Y"))
{
accelero.replace("Y", "");
//Serial.print("Y= ");
//Serial.print(accelero);
//Serial.println(" ");
sumbuy = accelero.toInt();
//Serial.println(sumbuy);
}
delay(200);
if ((sumbux > -15) && (sumbux < 15) && (sumbuy > -15) && (sumbuy < 15))
{
//stop
Serial.println("STOP");
digitalWrite(kiri, LOW);
digitalWrite(kiri2, LOW);
digitalWrite(kanan, LOW);
digitalWrite(kanan2, LOW);
}
if ((sumbux > -10) && (sumbux < 10) && (sumbuy > 20) && (sumbuy < 80))
{
//mundur
Serial.println("MUNDUR");
digitalWrite(kiri, LOW);
digitalWrite(kiri2, HIGH);
digitalWrite(kanan, LOW);
digitalWrite(kanan2, HIGH);
}
if ((sumbux > 20) && (sumbux < 80) && (sumbuy > -10) && (sumbuy < 10))
{
//kiri
Serial.println("KIRI");
digitalWrite(kiri, HIGH);
digitalWrite(kiri2, LOW);
digitalWrite(kanan, LOW);
digitalWrite(kanan2, LOW);
}
if ((sumbux > -80) && (sumbux < -20) && (sumbuy > -10) && (sumbuy < 10))
{
//kanan
Serial.println("KANAN");
digitalWrite(kiri, LOW);
digitalWrite(kiri2, LOW);
digitalWrite(kanan, HIGH);
digitalWrite(kanan2, LOW);
}
if ((sumbux > -10) && (sumbux < 10) && (sumbuy > -80) && (sumbuy < -20))
{
//maju
Serial.println("MAJU");
digitalWrite(kiri, HIGH);
digitalWrite(kiri2, LOW);
digitalWrite(kanan, HIGH);
digitalWrite(kanan2, LOW);
}
}
}
h. VIDEO HASILNYA
No comments:
Post a Comment