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