Anda di halaman 1dari 10

Arduino Avoidance Robot

Pendahuluan

Arduino Avoidance Robot adalah robot cerdas dimana robot tersebut dapat
mengetahui objek disekitar sehingga robot tidak akan menabraknya. Robot akan
membandingkan sisi kiri dan kanannya dan akan memilih berbelok kearah yang memiliki
jarak terjauh.

Perakitan

Pasang motor DC pada chasis

Pasang servo kemudian freewheel

Tampa katas Tampak bawah

Pasang Driver Motor, Arduino dsb kemudian pasang kabel-kabel sesuai dengan gambar
dibawah.
Pengkabelan

Pengkabelan dengan Arduino

Arduino L298N
PIN 7 IN1
PIN 5 IN2
PIN 8 IN3
PIN 6 IN4
5V +5V
GND GND

Pengkabelan dengan Servo

Arduino Servo
PIN 9 Kabel Orange
5V Kabel Merah
GND Kabel Coklat

Pengkabelan dengan Ultrasonic

Arduino Servo
PIN 2 Trigger
PIN 4 Echo
5V VCC
GND GND

*note : kabel hijau pada jack dc adalah kutub positif


Untuk memasang dudukan ultrasonic pada servo maka perlu diketahui titik tengah dari
servo itu sendiri. Buka arduino IDE dan tuliskan program seperti dibawah untuk mengetahui
posisi tengah dari servo tersebut. Titik tengah dari servo adalah 90 derajat, namun
dikarenakan faktor mekanik titik tengah servo tidak selalu 90 derajat.

Setelah program terupload cobalah pasang dudukan ultrasonic dan lihat apakah posisi sudah
benar lurus ke depan. JIka belum maka sesuaikan kembali program pada arduino.

Saat posisi sudah benar langkah selanjutnya adalah pasang ultrasonic pada dudukan dan
lakukan pengkabelan.
Penjelasan Singkat

1. Ultrasonic HC-SR04
Sensor ultrasonik HC-SR04 adalah komponen yg kerjanya didasarkan prinsip dari
pantulan suatu gelombang suara sehingga dapat dipakai untuk menafsirkan
eksistensi sebuah benda spesifik yang ada dalam frekuensinya. Frekuensi sensor
ultrasonic yaitu sekitar 40 KHz sampai 400 KHz.

Pemrograman HC-SR04 dapat dilakukan dengan cara manual (Input-Output) dan


dengan library NewPing. Library tersebut dapat di download di
http://playground.arduino.cc/Code/NewPing.

2. Servo Tower Pro Sg 90

Motor servo adalah sebuah motor dengan sistem umpan balik tertutup di mana
posisi dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di
dalam motor servo. Motor ini terdiri dari sebuah motor DC, serangkaian gear,
potensiometer dan rangkaian kontrol. Potensiometer berfungsi untuk menentukan
batas sudut dari putaran servo. Sedangkan sudut dari sumbu motor servo diatur
berdasarkan lebar pulsa yang dikirim melalui kaki sinyal dari kabel motor.
Servo Sg 90 merupakan servo standar yang mampu berputar sejauh 180 derajat,.
Terdapat tiga buah kabel pada servo, yaitu kabel coklat adalah GND, Merah adalah
VCC dan Orange adalah Data/Sinyal. Untuk menggunakan servo pada Arduino maka
diperlukan library Servo.h, library tersebut telah tersedia pada arduino IDE.
3. L298N
L298N merupakan driver motor H-bridge yang berfungsi sebagai penguat arus dan
tegangan, sehingga motor mendapatkan supplay arus yang sesuai. Hubungkan
output motor A (out1 dan out 2) ke motor kiri dan output motor B ke motor kanan.

Logika motor :
PIN Kondisi Putaran Motor
PIN 7 Low Maju
PIN 8 High Maju
PIN 7 High Mundur
PIN 8 Low Mundur
PIN 5 0-255 Semakin besar semakin kencang
PIN 6 0-255

4. Arduino Uno
Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di
dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis
AVR dari perusahaan Atmel.

Mikrokontroler itu sendiri adalah chip atau IC (integrated circuit) yang bisa diprogram
menggunakan komputer. Tujuan menanamkan program pada mikrokontroler adalah
agar rangkaian elektronik dapat membaca input, memproses input tersebut dan
kemudian menghasilkan output sesuai yang diinginkan. Jadi mikrokontroler bertugas
sebagai ”otak” yang mengendalikan input, proses dan output sebuah rangkaian
elektronik. Kegunaan Arduino tergantung kepada kita yang membuat program
Untuk membuat suatu program dengan menggunakan arduino maka diperlukan
Arduino IDE yang bisa diunduh secara gratis melalui
http://arduino.cc/en/main/software. Setelah terinstal maka dapat terlihat tampilan
seperti sebagai berikut.

Plug-in kabel USB pada Arduino dan pada komputer dan setting Serial Port pada
Arduino IDE sesuai dengan Port pada arduino.

Setelah itu setting Board dan pastikan bahwa Board yang terpilih adalah Arduino
Uno.
Untuk menambahkan library maka klik SketchImport Library…Add Library, pilih
library yang ingin dimasukkan dan klik open.
Pemrograman

Buka Arduino IDE seperti yang sudah dijelaskan, jangan lupa untuk menambahkan library
NewPing dan ketik program pada seperti dibawah ini.

#include <NewPing.h> void maju ()


#include <Servo.h> { motorOut(70,70,true);
scan_depan(); }
#define m1 7
#define m2 5 void kiri()
#define m3 8 { motorOut(90,0,true); }
#define m4 6 void kanan()
#define TRIGGER_PIN 2 { motorOut(0,90,true); }
#define ECHO_PIN 4 void mundur()
#define MAX_DISTANCE 200 // Set jarak Maksimum { motorOut(70,70,false); }
void stp()
NewPing sonar(TRIGGER_PIN, ECHO_PIN, { motorOut(0,0,false); }
MAX_DISTANCE); //Create Ultrasonic sensor object void balik()
{ motorOut(100,0,false); }
unsigned int time;
int distance; void scan_depan() //fungsi menggerakkan servo
int triggerDistance = 30; dan mengambil data saat robot maju
int fDistance; //variable jarak depan { for(pos = 30; pos <= 120; pos += 30)
int lDistance; //variable jarak kiri { servo.write(pos);
int rDistance; //variable jarak kanan data();
int jeda; delay(30); }
int pos = 40; for(pos = 120; pos>=30; pos-=30)
Servo servo; { servo.write(pos);
unsigned int pingSpeed = 50; data();
unsigned long pingTimer; delay(30);
}}
void setup()
{ void scan(){ //fungsi untuk mengetahui jarak
pinMode(m1,OUTPUT); depan kiri dan kanan
pinMode(m2,OUTPUT); servo.write(75);
pinMode(m3,OUTPUT); delay(200);
pinMode(m4,OUTPUT); data();
servo.attach(9); delay(10);
Serial.begin(9600); fDistance=distance;
pingTimer = millis(); servo.write(0);
} delay(300);
void motorOut(unsigned char lpwm, unsigned char data();
rpwm, boolean arrow){ delay(10);
//arrow=false=forward; arrow=true=backward; rDistance=distance;
if(arrow==false){ servo.write(170);
digitalWrite(m3,HIGH); delay(400);
digitalWrite(m1,LOW); data();
analogWrite(m4,255-lpwm); delay(10);
analogWrite(m2,rpwm); lDistance=distance;
} delay(200);
else{ }
digitalWrite(m3,LOW);
digitalWrite(m1,HIGH);
analogWrite(m4,lpwm);
analogWrite(m2,255-rpwm);
}
}
void echoCheck() { // Timer2 interrupt calls this if (lDistance<rDistance)
function every 24uS where you can check the ping {
status. for (jeda=0;jeda<15;jeda++)
// Don't do anything here! {
if (sonar.check_timer()) kanan();
{ if(jeda==14)
distance=sonar.ping_result / US_ROUNDTRIP_CM; {
} break;
} }
}
void data() //mengambil data us
{ }
if (millis() >= pingTimer) { else if (lDistance>rDistance)
pingTimer += pingSpeed; {
sonar.ping_timer(echoCheck); for (jeda=0;jeda<15;jeda++)
} {
} kiri();
void loop() if(jeda==14)
{ {
scan_depan(); break;
if (distance >45) }
{ }
maju(); }
}
else else
{ {
stp(); mundur();
scan(); Serial.println("lagi mundurr");
banding(); delay(500);
} }
}
}
void banding() //fungsi untuk membandingkan data
{
if ((fDistance>lDistance)&&(fDistance>rDistance))
{
for (jeda=0;jeda<3;jeda++)
{
maju();
if(jeda==2)
{
scan();
if(distance<50)
{
stp();
scan();
banding();
jeda=0;
break;
}
}
}
}
Setelah program selesai diketik, kemudian upload program ke arduino dan tunggu hingga
proses selesai.

Basic program ultrasonic yang dipakai dalam robot ini adalah example event timer dari
library NewPing. Pada saat robot maju maka servo akan bergerak kecil ke kiri dan kekanan,
hal ini bertujuan agar range dari ultrasonic menjadi lebih besar pada sisi kiri dan kanan
robot. Jika servo tidak digerakkan kemungkinan robot akan menabrak akan semakin tinggi.
Fungsi untuk menggerakkan servo saat robot melaju adalah fungsi scan_depan(); ,untuk itu
jika mengiginkan servo diam dan menghadap ke depan pada saat melaju cukup ganti isi
scan_depan() dengan beberapa baris berikut :

servo.write(80); // servo menghadap depan


data(); // mengambil data ultrasonic

Anda mungkin juga menyukai