Lompat ke konten Lompat ke sidebar Lompat ke footer

Arduino Part 27. Tutorial Cara Membuat Robot Line Follower Menggunakan Coding Sederhana

Robot line follower adalah robot yang berjalan secara otomatis mengikuti garis yang sudah dibuat. Garis yang dibuat bisa berwarna hitam atau putih. Jika garisnya berwarna hitam maka warna background berwarna terang seperti putih, begitu sebaliknya jika garisnya berwarna putih maka warna backgroundnya dibuat warna hitam.

Untuk mendeteksi garis dengan benar tentunya robot ini harus dilengkapi dengan sensor yang bisa mendeteksi garis yang berwarna hitam dan putih. Sensor garis tersebut bisa menggunakan infrared.

Penulis akan membuat line follower dengan jalur garis yang tidak rumit sehingga bisa menggunakan program/coding yang sederhana saja karena ini merupakan dasar-dasar line follower. Dengan coding yang sederhana diharapkan robot line follower ini bisa dibuat oleh siapa saja yang hobi elektronika atau pemograman baik yang masih pemula atau yang sudah mahir.

Bahan-bahan yang dibutuhkan adalah :

1.    Chasis Robot Line Follower

Untuk membuat chasis robot line follower bisa menggunakan bahan acrilic atau dari bahan lainnya yang penting bisa kuat dan ringan. Jika anda memiliki perlengkapan alat pemotong dan memiliki banyak waktu maka Chasis ini bisa anda buat sendiri, tetapi jika peralatan anda tidak lengkap atau anda tidak punya banyak waktu untuk membuatnya maka anda bisa membeli chasis robot line follower yang sudah jadi di belanja online. Bentuknya seperti ini:


Chasis yang beli jadi umumnya kualitasnya baik karena pemotongan acrilicnya menggunakan laser sehingga hasilnya presisi. Acrilic ini dilapisi kertas pelindung agar saat proses pengerjaannya tidak tergores. Karena chasisnya sudah jadi maka sebaiknya kertas pelapis chasis dibuka saja.


Chasis ini juga dilengkapi dengan baut dan penjepit motor DC. Bentuknya seperti gambar:

 

2.    Motor DC + Roda

Sebagai tenaga penggerak robot ini adalah motor DC yang kecil. Motor DC ini bisa dicatu dengan tegangan DC 5 Volt. Motor ini telah dilengkapi dengan gear box sehingga torsinya cukup baik dan kecepatan putaran motor bisa rendah. Untuk rodanya ada 3 buah yaitu yang besar 2 buah dan yang kecil 1 buah. Bentuk motor DC dan rodanya seperti ini:

 

3.    Arduino Uno

Untuk mengontrol robot line follower membutuhkan mikrokontroller. Mikrokontroller yang digunakan adalah Arduino uno. Jenis ini bisa diganti dengan mikrokontroller lainnya sesuai keinginan.

 

4.    Tempat Bateray + Bateray

Tempat bateray yang digunakan adalah untuk 2 buah bateray 18650 yang dihubung seri. Tegangan 1 buah bateray 18650 sekitar 3,7 Volt sehingga kalau 2 buah bateray ini dihubung seri maka tegangannya sekitar 7,4 Volt. Tegangan ini dimasukkan ke input tegangan eksternal Arduino Uno. Pada Arduino uno tegangan ini akan diregulasi dan diturunkan menjadi  tegangan 5 volt dan 3,3 Volt.


5.    Saklar ON/OFF

Untuk menyambungkan dan memutus tegangan dari batre ke rangkaian maka dibutuhkan saklar ON/OFF, sehingga bisa menghemat bateray saat tidak digunakan dengan mematikan saklar.


6.    Sensor garis Infrared

Agar robot line follower bisa mendeteksi garis maka dibutuhkan sensor garis dengan menggunakan sinar infrared. Agar line follower bisa berbelok tajam misalnya berbelok 90o maka dibutuhkan banyak sensor. Dalam robot ini kita membutuhkan 6 buah sensor garis. Jumlah sensor ini bisa ditambah atau dikurangi sesuai kebutuhan jalur sircuit garisnya. Pada sensor garis ini kita hanya memanfaatkan output digitalnya saja, jadi output analognya tidak kita gunakan.

 

Untuk pembahasan tentang prinsip kerja sensor garis ini dan bentuknya bisa buka materi sebelumnya di .Arduino-part-24-sensor-infrared

 

7.    Driver Motor DC

Guna mengatur arah putaran motor DC dan kecepatan motor DC maka dibutuhkan suatu rangkaian pengendali motor DC. Untuk pengendali motor DC ini adalah hasil rakitan sendiri. Untuk mengatur kecepatan motor DC menggunakan sistem PWM (Pulse Width Modulation).

 

Pembahasan tentang PWM bisa klik pulse-width-modulation

Pembahasan tentang cara membuat driver motor DC, daftar komponen, gambar rangkaian, gambar PCB maka bisa klik cara-membuat-driver-motor-dc

 

Gambar dibawah ini adalah pengendali motor DC dan Arduino Uno.

 


8.    Kabel jumper atau kabel penghubung

Kabel untuk sensor bisa gunakan kabel kacil dan kabel data digital sensor menggunakan kabel male. Jenis kabel ini bisa dibeli secara online.

 

9.    Baut Spacer atau spiser

Untuk memasang sensor garis dibutuhkan baut spiser dengan ukuran panjang 2 cm, hal ini agar sensor garis bisa lebih dekat dengan garis jalur yang dibuat. Jika tidak ada ukuran 2 cm maka bisa saja gunakan 2 buah specer yang ukuran 1 cm yang disambung sehingga menjadi lebih panjang.


Kebutuhan alat dan bahan diatas bisa dibeli toko elektronik atau bisa anda beli secara online. Belilah lapak jualan online yang bisa memberikan diskon ataupun bebas ongkos kirim. Jika di Tokopedia saat anda membeli dengan minimal pembelian total Rp. 50.000 umumnya anda akan mendapatkan bebas ongkos kirim. Jika anda tidak mau repot maka belilah chasis line follower 1 set lengkap sehingga anda bisa langsung merakitnya.


Langkah-langkah pembuatan

  • Siapkan chasis robot line follower
  • Pasang Motor DC menggunakan baut
  • Pasang tempat baterai bisa menggunakan lem double tip
  • Pasang Ardunino Uno bisa menggunakan lem double tip
  • Pasang saklar ON-OFF
  • Pasang jack dan kabel catu daya  lalu disolder
  • Pasang bateray ketempatnya lalu tes saklarnya hidupkan dan matikan.
  • Pasang semua sensor garis menggunakan baut piser
  • Pasangkan driver motor DC
  • Solderlah kabel +5 volt dan GND yang menuju sensor garis
  • Solderlah kabel male dari sensor menuju arduino. Untuk pemasangan kabel bisa dilihat pada skema dibawah ini :

Rapikan perkabelan dengan memberi lem bakar. Jika semua perkabelan sudah selesai maka hidupkan saklar lalu siapkan gambar circuit yang menggunakan jalur warna hitam dengan lebar sekitar 3 cm dan warna background-nya putih. Dekatkan sensor garis ke warna jalur hitam, sensor yang sudah benar adalah saat sensor mengenai jalur hitam maka salah satu lampu LED-nya akan padam dan jika diletakkan di background warna putih maka lampu sensor akan hidup kembali. Jika ada sensor yang belum bekerja baik maka putarlah trimpot pada sensor tersebut sehingga mendapatkan sensitifitas yang baik.

Sekarang saatnya ujicoba.

Untuk proses pembuatan, perakitan, pengujian sensor, dan pengujian hasil line follower secara detail maka bisa ditonton pada video di bawah ini :

Pemograman arduino bahasa C++ yang digunakan masih cukup sederhana karena belum menggunakan program algoritma PID (Proposional Integral Differential). Algoritma PID cukup lumayan rumit tetapi memang sudah teruji dengan algoritma PID sangat handal untuk membuat line follower yang cepat dan tepat yang biasanya digunakan untuk perlombaan. Karena pembahasan ini adalah dasar-dasar robot line follower sehingga penulis mencoba membuat program coding yang lebih sederhana dan mudah dipahami. Sketch programnya sebagai berikut:

//-------------------------------------------
//--- ROBOT LINE FOLLOWER
//--- www.elektronikahendry.com
//-------------------------------------------
const int MOTOR_1A = 5;    
const int MOTOR_1B = 3;
const int MOTOR_2A = 6;
const int MOTOR_2B = 9;
const int SENSOR1 = 13;
const int SENSOR2 = 12;
const int SENSOR3 = 11;
const int SENSOR4 = 10;
const int SENSOR5 = 8;
const int SENSOR6 = 7;
 
 
void setup()
{                 
pinMode(MOTOR_1A, OUTPUT);
pinMode(MOTOR_1B, OUTPUT);
pinMode(MOTOR_2A, OUTPUT);
pinMode(MOTOR_2B, OUTPUT);
pinMode(SENSOR1, INPUT);
pinMode(SENSOR2, INPUT);
pinMode(SENSOR3, INPUT);
pinMode(SENSOR4, INPUT);
pinMode(SENSOR5, INPUT);
pinMode(SENSOR6, INPUT);
}
 
void loop()
{
/* untuk mendeteksi 1 dan 0 sensor garis ini
maka lakukan pengujian pada garis sirkuit.
Catatlah data penyalaan lampu LED pada
6 buah sensor garis pada saat menyentuh
garis lurus, berbelok kanan atau kiri, berbelok
tajam dan lain-lain.
Logika yang digunakan adalah AND  */
 
//deteksi sensor maju
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{MAJU();}
 
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{MAJU();}
 
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{MAJU();}
 
//deteksi sensor belok kanan
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 1)&&
(digitalRead(SENSOR6) == 1))
{BELOK_KANAN();}
 
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 1)&&
(digitalRead(SENSOR6) == 1))
{BELOK_KANAN();}
 
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{BELOK_KANAN();}
 
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 1)&&
(digitalRead(SENSOR6) == 1))
{BELOK_KANAN();}
 
//deteksi sensor belok kiri
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{BELOK_KIRI();}
 
//deteksi sensor belok kiri sedikit
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{BELOK_KIRI_SEDIKIT();}
 
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{BELOK_KIRI_SEDIKIT();}
 
//deteksi sensor belok kiri
if ((digitalRead(SENSOR1) == 1)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{BELOK_KIRI();}
 
if ((digitalRead(SENSOR1) == 1)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{BELOK_KIRI();}
 
//deteksi sensor untuk stop
if ((digitalRead(SENSOR1) == 1)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 1)&&
(digitalRead(SENSOR6) == 1))
{STOP();}
}
 
//------------------------
void MAJU()
{
analogWrite(MOTOR_1A,200); 
analogWrite(MOTOR_1B,0);
analogWrite(MOTOR_2A,200); 
analogWrite(MOTOR_2B,0);
}
 
//------------------------
void BELOK_KANAN()
{
analogWrite(MOTOR_1A,200); 
analogWrite(MOTOR_1B,0);
analogWrite(MOTOR_2A,0); 
analogWrite(MOTOR_2B,0);
}
 
//------------------------
void BELOK_KIRI_SEDIKIT()
{
analogWrite(MOTOR_1A,0); 
analogWrite(MOTOR_1B,100);
analogWrite(MOTOR_2A,100); 
analogWrite(MOTOR_2B,0);
}
 
//------------------------
void BELOK_KIRI()
{
analogWrite(MOTOR_1A,0); 
analogWrite(MOTOR_1B,0);
analogWrite(MOTOR_2A,200); 
analogWrite(MOTOR_2B,0);
}
 
//------------------------
void STOP()
{
analogWrite(MOTOR_1A,0); 
analogWrite(MOTOR_1B,0);
analogWrite(MOTOR_2A,0); 
analogWrite(MOTOR_2B,0);
}

Data digital pada deteksi sensor program diatas bisa saja sama atau bisa saja berbeda, hal ini disesuaikan dengan bentuk garis sircuit yang anda gunakan. Jadi saat membuat program maka lakukanlah pengambilan data terlebih dahulu guna mendapatkan data akurat. Jika jalan robot line follower masih belum sesuai maka anda harus berulang kali eksperimen dengan mengganti data digital sensor dan mengatur kecepatan motor (nilai PWM) dengan tepat antara roda kiri dan kanan, sehingga saat berbelok bisa dilakukan dengan sempurna.

Demikianlah pembahasan tentang robot line follower, jika ada pertanyaan bisa kontak penulis atau tuliskan pada kolom komentar.

Posting Komentar untuk "Arduino Part 27. Tutorial Cara Membuat Robot Line Follower Menggunakan Coding Sederhana"