Membuat Robot Pemecah Labirin dengan Arduino, Sensor Garis, dan Algoritma Jalur Terpendek
Ringkasan Proyek
Bangun Rex, robot pengikut garis yang dapat menjelajahi labirin menggunakan aturan tangan kiri, mencatat persimpangan, dan menyederhanakan rute yang telah dilalui. Pada percobaan kedua, robot mengikuti jalur hasil optimasi agar sampai tujuan lebih efisien; Bluetooth Android digunakan untuk penyetelan parameter.
Bahan & Komponen
Daftar perangkat keras, modul, dan tools yang dibutuhkan untuk merakit proyek ini.
Komponen Elektronik
- 1x Arduino Nano R3 (pengendali utama)
- 1x HC-06 Bluetooth Module (komunikasi dengan Android)
- 1x modul sensor garis TCRT5000 4CH dan 1x sensor garis tunggal (membentuk lima sensor digital untuk PID)
- 2x sensor reflektansi analog ZX03 berbasis TCRT5000 (mendeteksi persimpangan jauh kiri dan kanan)
- 2x Servo SM-S4303R Continuous Rotation 360° (penggerak roda kiri dan kanan)
- 2x tempat baterai 4 sel AA dan 8x baterai NiMH (dua kelompok suplai daya; sesuaikan rangkaian)
- 1x LED dan 1x push button (indikator serta pemicu tahapan)
- 1x Breadboard, kabel jumper, dan konektor (penghubung rangkaian)
Struktur Mekanik
- 2x papan kayu 80 × 80 mm (chassis)
- 2x roda kayu diameter 50 mm (roda utama)
- 1x Ball Caster (penopang)
- 3x Binder Clip dan 9x karet gelang (pengikat)
- 1x 3M Command Frame Strip serta dudukan plastik sensor (pemasangan modul)
Software Pendukung
- Arduino IDE (unggah program)
- MIT App Inventor 2 (aplikasi Android untuk tuning)
- Arduino Servo Library (kendali continuous rotation servo)
- Arduino SoftwareSerial Library (opsional untuk komunikasi HC-06)
Langkah Pembuatan
Khusus MemberPanduan perakitan tahap demi tahap dan catatan proses pengerjaan.
Proyek Rex adalah pengembangan robot Line Follower sebelumnya. Berbeda dari labirin fisik berdinding, lintasannya berupa garis hitam dengan cabang dan persimpangan. Istilah Artificial Intelligence dalam judul merujuk pada pencarian dengan aturan dan optimasi jalur, bukan model machine learning.

Langkah 1: Menyiapkan Komponen
Rakit chassis menggunakan dua papan kayu berukuran 80 × 80 mm, dua servo putar kontinu, roda kayu diameter 50 mm, dan Ball Caster. Gunakan binder clip, karet gelang, perekat, serta dudukan plastik untuk mengamankan bagian. Tempatkan Arduino Nano, breadboard, baterai, HC-06, tombol, dan LED di atas chassis dengan distribusi berat seimbang. Komponen diperkirakan berbiaya sekitar US$85 menurut penulis pada saat publikasi; angka ini bukan harga saat ini.
Langkah 2: Memodifikasi Dudukan Sensor
Robot Line Follower awal memiliki lima sensor garis digital. Tambahkan dua sensor analog ZX03 pada ujung kiri dan ujung kanan dudukan sensor sehingga seluruhnya menjadi tujuh titik pembacaan. Jaga kesejajaran ketujuh sensor dan buat jarak dari lantai stabil agar pembacaan persimpangan lebih akurat. Lima sensor tengah menjaga robot tetap mengikuti garis, sedangkan dua sensor terluar mendeteksi kemungkinan belokan.
Langkah 3: Menguji Pembacaan Sensor
Pada rancangan penulis, lima input digital dipetakan berturut-turut ke D12, A4, A3, A2, dan A5. Sensor analog terluar kanan ke A0 dan kiri ke A1. Contoh pembacaan ZX03 menunjukkan nilai di bawah 100 pada garis hitam dan sekitar 500–600 pada kertas putih. Angka ini bergantung pencahayaan serta permukaan; uji dengan Serial Monitor sebelum menetapkan THRESHOLD awal 150.
Gunakan mode FOLLOWING_LINE ketika sensor tengah membaca garis biasa; LEFT_TURN dan RIGHT_TURN saat sensor terluar menemukan cabang; NO_LINE saat lima sensor kehilangan garis; dan CONT_LINE untuk penanda garis yang melintang penuh.
Langkah 4: Menentukan Strategi Left Hand Rule
Robot memprioritaskan belokan kiri setiap kali menemukan pilihan. Pada persimpangan berbentuk T maupun silang, pilih kiri; jika hanya tersedia kanan, pilih kanan; pada jalur lurus atau kanan, lanjut lurus; dan pada jalan buntu, putar balik. Strategi ini bekerja untuk labirin dengan asumsi topologi yang sesuai, misalnya simply connected maze, dan tidak selalu menjadi rute terpendek pada penjelajahan pertama.
Robot perlu berjalan sedikit melewati titik yang dicurigai sebagai persimpangan atau runExtraInch() agar dapat membedakan persimpangan T, silang, belokan tunggal, dan tanda akhir. Jangan langsung berputar ketika sensor depan baru pertama mendeteksi cabang: pusat roda perlu disejajarkan dengan pusat persimpangan.
Langkah 5: Memprogram Tahap Eksplorasi
Implementasikan readLFSsensors() untuk membaca lima sensor digital dan dua analog. Saat FOLLOWING_LINE, sistem menggunakan koreksi PID agar posisi tetap mengikuti garis. Saat NO_LINE, lakukan putar balik; saat LEFT_TURN, belok kiri; saat RIGHT_TURN, cek apakah garis masih berlanjut; saat CONT_LINE, maju sedikit untuk memastikan tipe persimpangan atau penanda akhir. Catat setiap pilihan sebagai L, R, S, atau B.
Langkah 6: Menyimpan Urutan Persimpangan
Buat array path[] dan variabel pathLength serta pathIndex. Setiap tindakan pada simpang disimpan secara berurutan: L berarti left, R right, S straight, dan B back atau putar balik. Contoh lintasan eksplorasi penulis menghasilkan LBLLLBSBLLBSLL. Berikan batas maksimal array untuk menghindari penulisan di luar memori Arduino Nano.
Langkah 7: Menyederhanakan Jalur
Jika suatu lintasan memuat tiga instruksi dengan B di tengah, jalan buntu bisa dihilangkan secara logis. Contohnya LBL menjadi S, LBS menjadi R, RBL menjadi B, SBL menjadi R, dan SBS menjadi B. Perhitungan dapat menggunakan sudut L=270°, R=90°, B=180°, dan S=0°, lalu jumlah sudut dimodulo 360. Proses ini berulang hingga rute tidak memiliki pola jalan buntu yang dapat disederhanakan. Pada contoh penulis, jalur LBLLLBSBLLBSLL disederhanakan menjadi RL.
Langkah 8: Menjalankan Percobaan Kedua
Setelah mencapai akhir pada eksplorasi pertama, robot berhenti dan memberi indikator melalui LED. Tempatkan kembali robot di titik awal dengan arah awal yang sama, lalu tekan tombol. Robot kemudian mengikuti array hasil optimasi menggunakan pathIndex, tanpa perlu mengulang percabangan yang ternyata buntu. Pada penanda akhir, hentikan servo dan nyalakan indikator selesai.
Langkah 9: Penyetelan dengan Aplikasi Android
Penulis menggunakan aplikasi Android dari proyek Line Follower PID yang dibuat dengan MIT App Inventor 2 untuk mengamati data sensor dan menyesuaikan respons. Parameter yang dicatat meliputi THRESHOLD sekitar 150, extraInch sekitar 200, adjGoAndTurn sekitar 800, adjTurn sekitar 8, serta power dan iniMotorPower sekitar 250. Parameter waktu dan kecepatan tersebut merupakan hasil eksperimen robot penulis, sehingga wajib dikalibrasi ulang pada perangkat lain.
Langkah 10: Menguji dan Mengevaluasi
Buat lintasan hitam di atas permukaan terang yang memuat jalur lurus, belokan kiri, kanan, simpang T, silang, dan jalan buntu. Jalankan robot dengan kecepatan rendah dan amati hasil Serial Monitor. Uji secara terpisah pembacaan sensor, kontrol servo, navigasi Left Hand Rule, penyimpanan rute, dan pemutaran ulang rute hasil optimasi.
Dokumentasi asli memuat beberapa galeri foto pemasangan dan pengujian, tetapi URL setiap gambar yang tersimpan dalam komentar HTML tidak berhasil diperoleh melalui akses yang tersedia. Karena itu gambar selain sampul tidak direka atau diganti dengan URL yang belum terverifikasi. Berkas kode asli dan revisinya tersedia di https://github.com/Mjrovai/MJRoBot-Maze-Solver.
Buka Seluruh Panduan, Skema & Source Code
Dapatkan akses penuh ke langkah perakitan detail, diagram sirkuit lengkap, dan source code siap pakai. Gratis selamanya!