Senin, 01 Januari 2018

Cara Membuat robot Wall Follower dengan Arduino Nano

Pada posting kali ini saya akan membagikan ilmu saya yang sudah saya dapatkan pada bangku kuliah yaitu cara membuat robot wall Follower.

Untuk komponen yang digunakan yaitu sebagai berikut :

1. Arduino Nano
Arduino Nano adalah papan pengembangan  mikrokontroler yang berbasis chip ATmega328P dengan bentuk yang sangat mungil. Secara fungsi tidak ada bedanya dengan Arduino Uno. Perbedaan utama terletak pada ketiadaan jack power DC dan penggunaan konektor Mini-B USB.Disebut sebagai papan pengembangan karena board ini memang berfungsi sebagai arena prototyping sirkuit mikrokontroller. Dengan menggunakan papan pengembangan, anda akan lebih mudah merangkai rangkaian elektronika mikrokontroller dibanding jika anda memulai merakit ATMega328 dari awal di breadboard.

untuk lebih lengkapnya bisa kunjungi website berikut Arduino Nano

2. Sensor Ultrasonic
Pengertian Sensor Ultrasonik
Sensor ultrasonik adalah sebuah sensor yang berfungsi untuk mengubah besaran fisis (bunyi) menjadi besaran listrik dan sebaliknya. Cara kerja sensor ini didasarkan pada prinsip dari pantulan suatu gelombang suara sehingga dapat dipakai untuk menafsirkan eksistensi (jarak) suatu benda dengan frekuensi tertentu. Disebut sebagai sensor ultrasonik karena sensor ini menggunakan gelombang ultrasonik (bunyi ultrasonik).Gelombang ultrasonik adalah gelombang bunyi yang mempunyai frekuensi sangat tinggi yaitu 20.000 Hz. Bunyi ultrasonik tidak dapat di dengar oleh telinga manusia. Bunyi ultrasonik dapat didengar oleh anjing, kucing, kelelawar, dan lumba-lumba. Bunyi ultrasonik nisa merambat melalui zat padat, cair dan gas. Reflektivitas bunyi ultrasonik di permukaan zat padat hampir sama dengan reflektivitas bunyi ultrasonik di permukaan zat cair. Akan tetapi, gelombang bunyi ultrasonik akan diserap oleh tekstil dan busa.

Cara Kerja Sensor Ultrasonik
Pada sensor ultrasonik, gelombang ultrasonik dibangkitkan melalui sebuah alat yang disebut dengan piezoelektrik dengan frekuensi tertentu. Piezoelektrik ini akan menghasilkan gelombang ultrasonik (umumnya berfrekuensi 40kHz) ketika sebuah osilator diterapkan pada benda tersebut. Secara umum, alat ini akan menembakkan gelombang ultrasonik menuju suatu area atau suatu target. Setelah gelombang menyentuh permukaan target, maka target akan memantulkan kembali gelombang tersebut. Gelombang pantulan dari target akan ditangkap oleh sensor, kemudian sensor menghitung selisih antara waktu pengiriman gelombang dan waktu gelombang pantul diterima.

Untuk belajar lebih lengkapnya bisa kunjungi website Sensor Ultrasonik

3.Motor DC
Motor DC adalah jenis motor listrik yang bekerja menggunakan sumber tegangan DC. Motor DC atau motor arus searah sebagaimana namanya, menggunakan arus langsung dan tidak langsung/direct-unidirectional. Motor DC digunakan pada penggunaan khusus dimana diperlukan penyalaan torque yang tinggi atau percepatan yang tetap untuk kisaran kecepatan yang luas.

Untuk lebih lengkap bisa kunjungi website berikut :Motor DC

4. Driver Motor 
Untuk dirver motor teman-teman bisa buat sendiri atau beli jadi. Biasanya druver motor yang digunakan pada robot tipenya H-bridge bisa menggunakan transistor atau FET tergantung besar daya yang dikonsumsi oleh motor tersebut. sedangkan untuk driver motor yang menggunakan IC untuk cara kerja driver motor dengan transistor atau FET hampir sama yang membedakan hanya bentuk (jelas wkwk) dan konsumsi daya hingga ketahanan driver.
untuk belajar lebih dalam teman-teman bisa kunjungi website berikut Driver transistor atau FET

Bagaimana dengan driver motor yang menggunakan IC seperti L293d atau L298 ? Driver motor ini biasanya sering digunakan untuk motor DC 5 volt hingga 12 volt sedangkan untuk motor DC 12 volt dengan torsi yang besar biasanya driver motornya menggunakan FET. Lalu apa bedanya IC l293 dengan IC l298 ? Bedanya pada batas arus yang bisa dilalui oleh IC. untuk lebih lengkapnya teman-teman bisa cek disini untuk L293 dan bisa cek disini untuk L298 karena orang elektro harus selalu berpedoman pada datasheet seperti kita yang beragama berpedoman pada kitab suci masing-masing.

Dan untuk komponen penunjang lainnya tidak perlulah saya jelaskan karena saya yakin teman-teman pasti sudah paham seperti baterai, kabel jumper dan lain-lainnya. Kalau masih bingung temen-temen bisa komen aja nanti saya lengkapi posting ini.

Berikut skematik dari robot wall follower :

Gambar disamping merupakan skematik driver motor dengan menggunakan IC L293d. untuk penjelasan pinoutnya temen-temen bisa lihat datasheet seperti yang sudah saya anjurkan diatas. Pada driver ini ada yang menarik, apakah itu ? yaitu pin enable 1 untuk output 1 dan output 2 saya hubungkan langsung ke vcc 5 volt karena saya tidak menggunakan pin PWM sehingga saya hubungkan ke vcc. Namun kenapa pada program ada nilai PWm nya ? Iya karena PWM tersebut sifatnya tetap pada setiap konfigurasi pergerakan robot namun jika teman-teman ingin nilai PWM nya bisa di adjustable biasanya  pin enable nya di hubungkan pada pin PWM arduino dan coding nya sudah mulai beda sama coding saya. Bagaimana jika pin enable tersebut tidak saya hubungkan apakah masih bisa bekerja ? kalau itu saya masih belum pernah mencoba tapi di youtube ada yang pernah coba dan berhasil. Intinya banyakin refrensi dulu baru mencoba dan jangan cuma teori kalo belum mencoba ehehe. untuk catu daya IC dan catu daya untuk motor kalo bisa kita bedakan aja besar teganggannya. tetapi untuk ground semua kita jadikan satu biar bisa bekerja.

Untuk skema sensor ultrasonik nya saya ambil di internet soalnya di aplikasi fritzing saya tidak ada sensor ultrasoniknya hehe..
untuk wiring sensor ultrasonik sangat gampang dikarenakan cuman ada 4 pin yaitu vcc, echo, trigger, gnd. jadi lebih muda dari skematik driver motor tadi. Dan yang perlu diperhatikan yaitu pin trigger harus di fungsikan sebagai output dan pin echo di fungsikan sebagai input. Untuk penjelasan lebih detail teman-teman bisa kunjungi website ini

Untuk robot line follower ini saya menggunakan dua sensor ultrasonik yang saya tempatkan di depan dan disamping sebelah kiri. Fungsi sensor depan sebagai acuan kapan robot tersebut belok sedangkan untuk sensor kiri sebagai penstabil robot agar dapat terus mengikut dinding tanpa harus menabrak dan menyentuh dinding.

Untuk code Arduino nya dibawah ini
int pinTrig1 = 7;
int pinEcho1 = 6;
int pinTrig2 = 4;
int pinEcho2 = 3;
float jarakkiri;
float jarakdepan;
void setup ()
{
pinMode(11,OUTPUT); // pin 5, 9, 10, 11 adalah pin untuk motor DC. pemasangannya bebas
pinMode(10,OUTPUT); // bisa disesuaikan karena motor DC non polaritas sehingga bisa di
pinMode(9,OUTPUT); // tukar posisinya apabila tidak sesuai dengan apa yang diinginkan
pinMode(5,OUTPUT);
pinMode(7,OUTPUT);// pin trigger ultrasonik depan
pinMode(6,INPUT_PULLUP);// pin echo ultrasonik depan
pinMode(4,OUTPUT); // pin trigger ultrasonik kiri
pinMode(3,INPUT_PULLUP);// pin echo ultrasonik kiri
}

void loop()
{
ambil_jarak_kiri();
ambil_jarak_depan();
if (jarakdepan<=30){
kanan_lancip();
delay(100);
}
else if(jarakkiri>=20){
kiri_landai();
}
else if(jarakkiri<=20){
kanan_landai();
}
else{
maju();
}
}

// berikut konfigurasi pergerakan robot, jika teman-teman ingin lebih banyak bisa menambahkan
// sendiri karena saya hanya menggunakan 2 sensor jadi konfigurasi segini juga sudah cukup
void maju() // robot bergerak maju
{
digitalWrite(5,LOW);
digitalWrite(9,HIGH);
analogWrite(9,80);

digitalWrite(11,HIGH);
digitalWrite(10,LOW);
analogWrite(10,80);
}
void kanan_lancip() // robot belok kanan secara tajam
{
digitalWrite(5,LOW);
digitalWrite(9,HIGH);
analogWrite(9,100);

digitalWrite(11,LOW);
digitalWrite(10,HIGH);
analogWrite(10,100);
}
void kanan_landai() // robot belok kanan
{
digitalWrite(5,LOW);
digitalWrite(9,HIGH);
analogWrite(9,80);

digitalWrite(11,HIGH);
digitalWrite(10,LOW);
analogWrite(10,50);
}
void kiri_landai() // robot belok kiri
{
digitalWrite(5,LOW);
digitalWrite(9,HIGH);
analogWrite(9,35);

digitalWrite(11,HIGH);
digitalWrite(10,LOW);
analogWrite(10,100);
}

// pengambilan data sensor kiri dan kanan yang dikonversi kedalam satuan jarak untuk
// menjadi acuan robot kapan robot bergerak lurus, belok dan lain-lainnya.
void ambil_jarak_kiri()
{
float durasi,cm;
digitalWrite(pinTrig2,HIGH);
delayMicroseconds(5);
digitalWrite(pinTrig2,LOW);
delayMicroseconds(5);
durasi = pulseIn(pinEcho2,HIGH,3000);
cm=durasi/29/2;
if (cm==0) cm =50;
jarakkiri= cm;
delay(10);

}

void ambil_jarak_depan()
{
float durasi,cm;
digitalWrite(pinTrig1,HIGH);
delayMicroseconds(5);
digitalWrite(pinTrig1,LOW);
delayMicroseconds(5);
durasi = pulseIn(pinEcho1,HIGH,3000);
cm=durasi/29/2;
if (cm==0) cm =50;
jarakdepan= cm;
delay(10);

}


Semoga Bermanfaat jangan lupa berdoa dan jangan lupa berbagi ilmu yang sudah didapat