Proyek Arduino Pemula: Membuat Mobil Robot Penghindar Halangan 4WD dengan Ekspresi Wajah di Layar OLED
Pernahkah kamu membayangkan membuat mobil robot yang bisa bergerak sendiri tanpa menabrak tembok, bahkan bisa menunjukkan ekspresi marah atau senang?
Pada proyek kali ini, kita akan membangun sebuah Smart Car menggunakan Arduino Uno. Robot ini dilengkapi dengan sensor ultrasonik untuk 'melihat' halangan, servo sebagai 'leher' untuk menengok ke kiri dan kanan, serta layar OLED kecil yang menampilkan wajah robot dengan ekspresi berubah-ubah sesuai situasi. Yuk, kita bedah!
1. Siapkan Komponen
Berikut daftar belanja yang kamu butuhkan:
Arduino Uno R3 (Otak)
Motor Driver Shield L293D (Penggerak motor)
4x Motor DC TT + Roda (Roda penggerak)
Sensor Ultrasonik HC-SR04 (Mata)
Servo SG90 (Leher untuk memindai)
OLED SSD1306 128x32 (Wajah ekspresif)
2x Baterai 18650 + Holder (Sumber tenaga)
Kabel Jumper secukupnya
2. Logika Cara Kerja (State Machine)
Robot ini menggunakan logika Finite State Machine (FSM). Artinya, robot hanya memiliki 5 kondisi (state) dan berpindah-pindah di antaranya:
MAJU: Jika jarak depan > 32 cm, robot jalan lurus.
HALANGAN: Jika jarak ≤ 32 cm, robot berhenti total.
MUNDUR: Robot mundur 300ms untuk memberi ruang manuver.
SCAN: Servo menoleh ke Kanan (15°) baca jarak, lalu ke Kiri (180°) baca jarak.
BELOK: Robot membandingkan jarak. Jika kanan lebih besar, belok kanan. Jika kiri lebih besar, belok kiri. (Kami memilih ruang yang paling longgar).
3. Kode Inti (Loop Utama)
Inilah jantung program yang mengatur logika di atas. Perhatikan bagaimana robot mengambil keputusan:
void loop() {
delay(40); // Jeda antar pembacaan sensor
if(distance <= OBSTACLE_DISTANCE) { // Jika ada halangan (≤ 32 cm)
showStatus("HALANGAN!", distance);
moveStop(); // Berhenti
delay(100);
showStatus("MUNDUR", distance);
moveBackward(); // Mundur
delay(300);
moveStop();
delay(200);
// SCAN KANAN
showStatus("SCAN KANAN", distance);
distanceR = lookRight(); // Servo ke 15 derajat
delay(200);
// SCAN KIRI
showStatus("SCAN KIRI", distance);
distanceL = lookLeft(); // Servo ke 180 derajat
delay(200);
// LOGIKA KEPUTUSAN
if(distanceR >= distanceL) {
showStatus("BELOK KANAN", distanceR);
turnRight(); // Belok ke kanan
moveStop();
} else {
showStatus("BELOK KIRI", distanceL);
turnLeft(); // Belok ke kiri
moveStop();
}
} else {
showStatus("MAJU", distance);
moveForward(); // Tidak ada halangan, jalan terus
}
distance = readPing(); // Baca ulang jarak
}
4. Tips Penting agar Robot Tidak Rusak
Kalibrasi Servo: Di kode, saya menggunakan #define SERVO_CENTER 98 (bukan 90!). Karena servo SG90 seringkali memiliki toleransi mekanik, jadi saya kalibrasi manual agar sensor menghadap benar-benar lurus.
Soft-start Motor: Jangan langsung memberi kecepatan penuh (255). Saya batasi di MAX_SPEED 190 dan menaikkan kecepatan secara perlahan (ramp-up) agar baterai tidak drop mendadak (istilah kerennya Brown-Out Reset).
Dengan proyek ini, kamu tidak hanya punya mobil mainan, tetapi juga media belajar tentang mikrokontroler, sensor, dan aktuator. Selamat mencoba!
Disusun oleh :
Hafizh Hilman Asyhari
Muhammad Nur Khanip
Farhan Alam Saputra
Program Studi : S1 Teknik Informatika
Mata Kuliah : Visi Komputer Robotik (Robotic Computer Vision)
Tanggal : 17 Juli 2026
Negara : Indonesia
#Arduino #Robotika #DIY #SensorUltrasonik #IoT
Komentar
Posting Komentar