Membuat Robot Pengikut Garis dengan Kontrol PID dan Pengaturan Android
Ringkasan Proyek
Pelajari cara membuat robot yang dapat mengikuti garis hitam secara otomatis menggunakan Arduino Nano, lima sensor inframerah, dan dua servo continuous rotation. Robot menggunakan algoritma PID untuk menjaga pergerakan tetap stabil, sedangkan aplikasi Android dan Bluetooth HC-06 memungkinkan pengaturan parameter Kp, Ki, dan Kd tanpa harus mengunggah ulang program.
Bahan & Komponen
Daftar perangkat keras, modul, dan tools yang dibutuhkan untuk merakit proyek ini.
Daftar Komponen dan Perangkat Keras
- 1x Arduino Nano R3 (mikrokontroler utama robot)
- 1x TCRT5000 4CH Infrared Line Track Follower Sensor Module (empat sensor pendeteksi garis)
- 1x Sensor Line Tracking TCRT5000 Tunggal (melengkapi susunan menjadi lima sensor)
- 2x Servo SM-S4303R Continuous Rotation 360° (motor penggerak roda kiri dan kanan)
- 1x HC-06 Bluetooth Module (komunikasi nirkabel dengan smartphone; opsional)
- 1x Smartphone Android (pengendali manual dan pengatur PID)
- 2x Battery Holder 4xAA (tempat baterai untuk dua kelompok suplai daya)
- 8x Baterai NiMH AA (sumber energi robot dalam dua kelompok berisi empat baterai)
- 2x Papan Kayu 80 × 80 mm (rangka robot)
- 2x Roda Kayu Diameter 50 mm (roda penggerak)
- 1x Ball Caster (penyeimbang robot)
- 3x Binder Clip (pengikat bagian chassis)
- 9x Karet Gelang (pengikat kabel dan komponen)
- 1x 3M Command Frame Strip (perekat pemasangan servo)
- 1x Dudukan Sensor Plastik (menjaga posisi sensor di depan robot)
- 1x Breadboard dan Kabel Jumper (perakitan sambungan elektronik)
- 1x LED (indikator status robot)
- 1x Push Button (tombol untuk memulai pengujian dan robot)
- 1x Resistor Pembatas Arus LED (komponen tambahan yang direkomendasikan)
- 1x Level Shifter atau Pembagi Tegangan (tambahan untuk melindungi RX HC-06 bila tidak toleran terhadap logika 5V)
Software dan Aplikasi Pendukung
- Arduino IDE (menulis dan mengunggah program)
- Servo Library (mengatur pulsa servo)
- SoftwareSerial Library (komunikasi Bluetooth melalui pin digital)
- MIT App Inventor 2 (membuat dan mengedit aplikasi pengaturan PID)
- MJRoBot Line Follower Android App (mengirim perintah manual dan nilai PID)
Langkah Pembuatan
Khusus MemberPanduan perakitan tahap demi tahap dan catatan proses pengerjaan.
Proyek ini dibuat oleh Marcelo Rovai atau MJRoBot sebagai tahap awal pengembangan robot pengikut garis yang nantinya dapat dikembangkan menjadi robot pemecah labirin. Arduino Nano membaca lima sensor inframerah dan mengatur dua servo berdasarkan algoritma PID. Modul Bluetooth HC-06 memungkinkan nilai kendali disesuaikan melalui aplikasi Android.

Langkah 1: Menyiapkan Komponen Robot
Siapkan dua papan kayu 80 × 80 mm, dua servo continuous rotation, roda kayu, Ball Caster, baterai, Arduino Nano, lima sensor garis, breadboard, kabel, tombol, dan LED. Penulis memperkirakan biaya robot sekitar US$75 pada saat proyek dipublikasikan pada 22 November 2016. Biaya aktual saat ini dapat berbeda.
Langkah 2: Mengenal Servo Continuous Rotation
Servo SM-S4303R dapat berputar terus-menerus sehingga cocok digunakan sebagai motor penggerak robot. Tidak seperti servo posisi standar, pulsa kendali menentukan arah dan kecepatan. Pulsa sekitar 1500 mikrodetik merupakan posisi netral, 1000 mikrodetik menghasilkan putaran maksimum ke salah satu arah, dan 2000 mikrodetik menghasilkan putaran maksimum ke arah sebaliknya.
Karena dua servo dipasang saling berhadapan, arah maju keduanya membutuhkan pulsa yang berbeda. Servo kiri menggunakan pulsa sekitar 1500 menuju 1000 mikrodetik, sedangkan servo kanan menggunakan pulsa sekitar 1500 menuju 2000 mikrodetik.
Langkah 3: Menguji Titik Netral Servo
Hubungkan signal servo kiri ke Arduino D5 dan servo kanan ke D3. Berikan suplai motor eksternal sekitar 5–6V sesuai spesifikasi servo, lalu satukan GND motor dengan Arduino.
Unggah program pengujian sederhana menggunakan Servo.h dan kirimkan nilai writeMicroseconds(1500) ke masing-masing servo. Jika roda tetap berputar, lakukan penyetelan trimmer servo atau koreksi nilai netral dalam program. Pengujian ini harus dilakukan sebelum memasang robot di lintasan.
Langkah 4: Merakit Chassis dan Roda
Rekatkan kedua servo menjadi satu bagian menggunakan 3M Command Strip, perekat, atau double-sided tape yang cukup kuat. Pasang servo pada papan kayu pertama, kemudian tambahkan papan kedua sebagai platform elektronik. Gunakan Binder Clip untuk menggabungkan papan dan menyesuaikan panjang rangka.
Pasang Ball Caster sebagai penopang tambahan. Letakkan baterai motor di antara chassis dan breadboard. Periksa apakah kedua roda berputar bebas dan struktur robot seimbang.
Langkah 5: Memasang Arduino, LED, dan Tombol
Letakkan Arduino Nano pada breadboard. Hubungkan servo kiri ke D5, servo kanan ke D3, LED indikator ke D13, dan tombol ke D9. Gunakan resistor seri untuk LED eksternal dan konfigurasi INPUT_PULLUP untuk tombol yang terhubung ke GND.
Tombol dapat digunakan untuk menahan robot sebelum menjalankan pengujian. Contohnya, robot akan berputar ke kiri selama 500 ms, kemudian ke kanan selama 500 ms setelah tombol ditekan.
Langkah 6: Menguji Gerakan Dasar Robot
Buat fungsi maju, mundur, berhenti, belok kiri, dan belok kanan. Untuk bergerak maju, servo kiri harus berputar berlawanan arah dengan servo kanan karena orientasi pemasangannya berbeda.
Untuk berbelok, ubah kecepatan masing-masing roda. Jika kedua roda bergerak dengan arah berlawanan, robot dapat berputar di tempat. Uji seluruh gerakan dengan kecepatan rendah terlebih dahulu.
Langkah 7: Memasang Modul Bluetooth HC-06
Modul Bluetooth bersifat opsional. Hubungkan TX HC-06 ke Arduino D10 yang digunakan sebagai RX SoftwareSerial, dan RX HC-06 ke Arduino D11 sebagai TX SoftwareSerial melalui penyesuai level tegangan jika diperlukan. Hubungkan VCC serta GND sesuai spesifikasi breakout.
Dengan HC-06, smartphone dapat mengirim perintah dan parameter PID. Tanpa Bluetooth, robot tetap dapat berjalan menggunakan parameter bawaan program.
Langkah 8: Memasang Lima Sensor Inframerah
Gunakan modul TCRT5000 empat kanal dan satu sensor tunggal. Tempatkan kelima sensor pada dudukan plastik di bagian depan robot dengan urutan sensor 0 paling kiri hingga sensor 4 paling kanan.
Hubungkan sensor 0 ke D12, sensor 1 ke A4, sensor 2 ke A3, sensor 3 ke A2, dan sensor 4 ke A5. Pada Arduino Nano, pin analog tersebut juga dapat digunakan sebagai digital input. Pastikan VCC dan GND terhubung sesuai spesifikasi sensor.
Atur jarak antar sensor sehingga garis dapat terdeteksi oleh satu sensor saat tepat di tengah, atau dua sensor berdekatan saat berada di antara keduanya. Ikat kabel dengan karet gelang dan jauhkan dari roda.
Langkah 9: Memahami Sensor Reflektansi TCRT5000
Sensor TCRT5000 terdiri dari LED inframerah dan phototransistor yang membaca cahaya pantulan. Permukaan terang umumnya memantulkan lebih banyak cahaya daripada garis hitam.
Pada modul yang digunakan penulis, keluaran digital HIGH berarti garis hitam, sedangkan LOW berarti permukaan terang. Beberapa varian modul mempunyai polaritas kebalikan, sehingga harus diperiksa dengan Serial Monitor.
Putar potentiometer pada modul untuk mengatur sensitivitas. Uji pembacaan sensor ketika diarahkan ke garis hitam dan permukaan putih.
Langkah 10: Mengubah Pembacaan Sensor menjadi Error
Lima sensor membentuk pola biner yang menggambarkan posisi garis. Jika garis berada tepat di sensor tengah, polanya 00100 dengan error 0. Jika garis berada pada sisi kanan, error bernilai positif, sedangkan pada sisi kiri bernilai negatif.
Pemetaan yang digunakan penulis adalah 00001 = +4, 00011 = +3, 00010 = +2, 00110 = +1, 00100 = 0, 01100 = -1, 01000 = -2, 11000 = -3, dan 10000 = -4.
Dengan informasi ini, Arduino dapat mengetahui seberapa jauh robot menyimpang dari posisi ideal.
Langkah 11: Menerapkan Kontrol Proportional
Kontrol Proportional atau P menghasilkan koreksi yang sebanding dengan error. Semakin jauh posisi garis dari tengah, semakin besar koreksi kecepatan motor.
Secara sederhana, koreksi = Kp × error. Nilai koreksi ditambahkan atau dikurangi pada kecepatan masing-masing motor agar robot kembali ke tengah garis.
Mulailah dengan Kp kecil, kemudian tingkatkan secara bertahap hingga robot mampu mengikuti garis tanpa terlalu sering bergerak berlebihan ke kiri dan kanan.
Langkah 12: Memahami Kontrol PID
PID merupakan singkatan dari Proportional, Integral, dan Derivative. Komponen P merespons error saat ini, I mengakumulasi error dari waktu ke waktu, sedangkan D merespons perubahan error.
Rumus dasarnya adalah PIDvalue = Kp × P + Ki × I + Kd × D. Pada contoh penulis, P = error, I = I + error, dan D = error − previousError. Nilai PID kemudian digunakan untuk mengoreksi pulsa servo kiri dan kanan.
Untuk robot sederhana, nilai Ki sering dimulai dari nol. Penyesuaian Kd dapat membantu mengurangi osilasi ketika robot bergerak terlalu agresif.
Langkah 13: Membuat Mode Operasi Robot
Program menggunakan tiga kondisi utama, yaitu STOPPED, FOLLOWING_LINE, dan NO_LINE. STOPPED digunakan ketika seluruh sensor mendeteksi garis hitam, FOLLOWING_LINE ketika garis masih dapat diikuti, dan NO_LINE ketika seluruh sensor tidak mendeteksi garis.
Pada kondisi FOLLOWING_LINE, robot menjalankan perhitungan PID. Pada kondisi STOPPED, kedua servo dihentikan. Pada kondisi NO_LINE, robot dapat diprogram berputar untuk menemukan kembali garis. Logika pemulihan perlu diuji pada lintasan sebenarnya agar tidak menyebabkan robot keluar jalur.
Langkah 14: Menggunakan Aplikasi Android
Penulis membuat aplikasi Android menggunakan MIT App Inventor 2. Aplikasi menyediakan tombol Forward, Backward, Left, Right, dan Stop. Perintah dikirim melalui Bluetooth sebagai karakter f, b, l, r, dan s.
Selain navigasi, tersedia tiga slider untuk Kp, Ki, dan Kd. Format pengirimannya adalah p/XXX untuk Kp, i/XXX untuk Ki, dan d/XXX untuk Kd, dengan XXX berupa angka 0–100.
Fitur ini memungkinkan pengaturan PID tanpa mengunggah ulang program setiap kali mencoba parameter baru. Tombol start pada aplikasi juga dapat digunakan sebagai alternatif tombol fisik di D9.
Langkah 15: Mengatur Parameter PID
Hubungkan smartphone ke HC-06, lalu masuk ke mode pengaturan. Nilai awal yang dicantumkan penulis adalah Kp = 50, Ki = 0, dan Kd = 0.
Jalankan robot pada lintasan sederhana. Jika robot kurang responsif, naikkan Kp. Jika robot bergerak zigzag terlalu kuat, kurangi Kp atau coba tingkatkan Kd. Uji perubahan secara bertahap dan simpan kombinasi parameter yang menghasilkan gerakan paling stabil.
Langkah 16: Menguji Lintasan Lengkap
Siapkan lintasan garis hitam di atas latar terang dengan jalur lurus dan beberapa tikungan. Mulai dengan kecepatan rendah, kemudian tingkatkan secara bertahap.
Amati pembacaan kelima sensor, arah koreksi, respons servo, dan apakah robot berhenti ketika seluruh sensor membaca hitam. Ulangi pengujian dengan beberapa nilai PID untuk membandingkan kestabilan pergerakan.
Langkah 17: Pengembangan Lanjutan
Robot ini menjadi dasar proyek Maze Solver yang dikembangkan penulis setelahnya. Dengan menambahkan logika persimpangan, pencatatan rute, dan penyederhanaan jalur, robot pengikut garis dapat dikembangkan menjadi pemecah labirin.
Kode sumber serta aplikasi Android asli tersedia di https://github.com/Mjrovai/MJRoBot-Line-Follower. Dokumentasi Hackster juga menyediakan file Fritzing. Foto langkah tambahan tidak disertakan apabila URL sumbernya tidak berhasil diverifikasi, agar tidak menghasilkan tautan gambar palsu.
Buka Seluruh Panduan, Skema & Source Code
Dapatkan akses penuh ke langkah perakitan detail, diagram sirkuit lengkap, dan source code siap pakai. Gratis selamanya!