Kode Deteksi Garis untuk Robot AI Menggunakan ESP8266

3 min read 23-08-2024
Kode Deteksi Garis untuk Robot AI Menggunakan ESP8266

Dalam dunia robotika, deteksi garis adalah salah satu teknik yang penting untuk membantu robot mengikuti jalur yang telah ditentukan. Dengan menggunakan modul ESP8266, kita dapat membuat robot yang dapat mengidentifikasi dan mengikuti garis. Artikel ini akan membahas langkah demi langkah tentang cara membuat kode deteksi garis untuk robot AI menggunakan modul ESP8266.

Apa itu ESP8266?

ESP8266 adalah modul Wi-Fi murah dan populer yang sering digunakan dalam berbagai proyek IoT (Internet of Things). Modul ini memiliki kemampuan untuk terhubung ke jaringan Wi-Fi dan berkomunikasi dengan berbagai perangkat di internet. Dengan kemampuan ini, ESP8266 dapat digunakan bukan hanya untuk aplikasi berbasis web, tetapi juga untuk robotika.

Komponen yang Diperlukan

Sebelum kita mulai, ada beberapa komponen yang perlu kamu siapkan:

  • ESP8266 (misalnya, NodeMCU)
  • Sensor Garis (seperti TCRT5000)
  • Motor DC (2 buah)
  • Driver Motor (seperti L298N)
  • Baterai (sesuai kebutuhan)
  • Breadboard & Jumper Wire
  • Roda robot (agar bisa bergerak)

Diagram Koneksi

Sebelum menulis kode, mari kita lihat bagaimana cara menghubungkan komponen-komponen tersebut:

  1. Sensor Garis TCRT5000:

    • VCC (Sensor) → VU (ESP8266)
    • GND (Sensor) → GND (ESP8266)
    • OUT (Sensor Kiri) → D1 (ESP8266)
    • OUT (Sensor Kanan) → D2 (ESP8266)
  2. Motor Driver L298N:

    • IN1 (Motor Kiri) → D6 (ESP8266)
    • IN2 (Motor Kiri) → D7 (ESP8266)
    • IN3 (Motor Kanan) → D5 (ESP8266)
    • IN4 (Motor Kanan) → D4 (ESP8266)
    • VCC → Baterai (+)
    • GND → Baterai (-)

Dasar Kode Deteksi Garis

Berikut adalah contoh kode sederhana untuk mendeteksi garis dan mengendalikan motor robot. Pastikan Anda telah memasang Arduino IDE dan menambahkan pustaka ESP8266.

#include <ESP8266WiFi.h>

#define LEFT_SENSOR D1
#define RIGHT_SENSOR D2

#define MOTOR_LEFT_FORWARD D6
#define MOTOR_LEFT_BACKWARD D7
#define MOTOR_RIGHT_FORWARD D5
#define MOTOR_RIGHT_BACKWARD D4

void setup() {
  // Inisialisasi pin sensor
  pinMode(LEFT_SENSOR, INPUT);
  pinMode(RIGHT_SENSOR, INPUT);
  
  // Inisialisasi pin motor
  pinMode(MOTOR_LEFT_FORWARD, OUTPUT);
  pinMode(MOTOR_LEFT_BACKWARD, OUTPUT);
  pinMode(MOTOR_RIGHT_FORWARD, OUTPUT);
  pinMode(MOTOR_RIGHT_BACKWARD, OUTPUT);
  
  // Mulai motor dalam keadaan mati
  stopMotors();
}

void loop() {
  int leftValue = digitalRead(LEFT_SENSOR);
  int rightValue = digitalRead(RIGHT_SENSOR);

  // Logika untuk menggerakkan robot
  if (leftValue == LOW && rightValue == LOW) {
    moveForward();
  } else if (leftValue == LOW && rightValue == HIGH) {
    turnLeft();
  } else if (leftValue == HIGH && rightValue == LOW) {
    turnRight();
  } else {
    stopMotors();
  }
}

void moveForward() {
  digitalWrite(MOTOR_LEFT_FORWARD, HIGH);
  digitalWrite(MOTOR_LEFT_BACKWARD, LOW);
  digitalWrite(MOTOR_RIGHT_FORWARD, HIGH);
  digitalWrite(MOTOR_RIGHT_BACKWARD, LOW);
}

void turnLeft() {
  digitalWrite(MOTOR_LEFT_FORWARD, LOW);
  digitalWrite(MOTOR_LEFT_BACKWARD, LOW);
  digitalWrite(MOTOR_RIGHT_FORWARD, HIGH);
  digitalWrite(MOTOR_RIGHT_BACKWARD, LOW);
}

void turnRight() {
  digitalWrite(MOTOR_LEFT_FORWARD, HIGH);
  digitalWrite(MOTOR_LEFT_BACKWARD, LOW);
  digitalWrite(MOTOR_RIGHT_FORWARD, LOW);
  digitalWrite(MOTOR_RIGHT_BACKWARD, LOW);
}

void stopMotors() {
  digitalWrite(MOTOR_LEFT_FORWARD, LOW);
  digitalWrite(MOTOR_LEFT_BACKWARD, LOW);
  digitalWrite(MOTOR_RIGHT_FORWARD, LOW);
  digitalWrite(MOTOR_RIGHT_BACKWARD, LOW);
}

Penjelasan Kode

  1. Inisialisasi Pin: Di bagian setup(), kita mengatur pin untuk sensor dan motor. Sensor garis dibaca sebagai input, sedangkan pin motor diatur sebagai output.

  2. Logika Gerak: Di dalam loop(), kita membaca status sensor garis. Jika kedua sensor tidak mendeteksi garis (LOW), robot bergerak maju. Jika sensor kiri aktif, robot berbelok ke kiri, dan sebaliknya untuk belok kanan. Jika kedua sensor aktif, robot berhenti.

  3. Fungsi Pengerakan: Fungsi moveForward(), turnLeft(), turnRight(), dan stopMotors() mengandung perintah untuk mengendalikan motor.

Pengujian Robot

Setelah meng-upload kode ke ESP8266, saatnya untuk mengujinya. Tempatkan robot di atas jalur yang telah ditandai dengan garis hitam di atas latar putih. Jika semua koneksi dan kode sudah benar, robot harus bisa mengikuti garis dengan baik.

Kesimpulan

Robot AI yang menggunakan ESP8266 untuk deteksi garis adalah proyek menarik yang dapat meningkatkan pemahaman kita tentang robotika dan pemrograman. Melalui contoh di atas, Anda dapat memodifikasi dan mengembangkan lebih lanjut agar robot memiliki fungsi yang lebih canggih. Beberapa pengembangan yang dapat dilakukan antara lain menambahkan sensor tambahan, meningkatkan algoritma kontrol, atau menambahkan fitur komunikasi melalui Wi-Fi.

Dengan kombinasi yang tepat antara perangkat keras dan pemrograman, peluang untuk bereksperimen dan belajar dari proyek ini sangatlah besar. Selamat berkreasi!