Anda di halaman 1dari 8

Berikut ini komponen yang harus dipersiapkan :

 1 buah Arduino (bisa menggunakan Arduino UNO, MEGA, NANO, MINI atau yang
lain. bisa diperoleh Di Sini)
 1 buah Modul Sensor Line Tracking isi 4 (Bisa diperoleh Di Sini)
 1 buah Driver Motor L298N (Bisa diperoleh Di Sini)
 2 buah Motor DC + Roda (Bisa diperoleh Di Sini)
 Baterai sesuai kebutuhan, tegangan sekitar 5-12V (Bisa diperoleh Di Sini)
 Kabel jumper secukupnya (Bisa diperoleh Di Sini)
 Breadboard/Projectboard jika diperlukan (Bisa didapat Di Sini)
 Software Arduino IDE (Jika belum punya, maka download Di Sini)
 Dan jika ingin belajar bagaimana cara menggunakan Arduino bagi pemula,
silahkan download Ebook nya Di Sini

Dan berikut ini adalah skema rangkaiannya :

Keterangan Rangkaian :
 Bisa Menggunakan Segala Jenis Arduino (UNO, NANO, MEGA, MINI,
dll), karena penomoran pinnya sama. Tinggal cocokkan Saja nomor
Pin-Pin nya.
 Pin Modul Sensor no. 1 ==> Pin A5 Arduino
 Pin Modul Sensor no. 2 ==> Pin A4 Arduino
 Pin Modul Sensor no. 3 ==> Pin A3 Arduino
 Pin Modul Sensor no. 4 ==> Pin A2 Arduino
 Pin In1 Driver Motor ==> Pin 7 Arduino
 Pin In2 Driver Motor ==> Pin 6 Arduino
 Pin In3 Driver Motor ==> Pin 5 Arduino
 Pin In4 Driver Motor ==> Pin 4 Arduino
 Pin ENA-bawah Driver Motor ==> Pin 9 Arduino
 Pin ENB-bawah Driver Motor ==> Pin 9 Arduino
 Pin ENA-atas Driver Motor ==> Pin 5V Arduino
 Pin ENB-atas Driver Motor ==> Pin 5V Arduino
 OUT1 dan OUT2 Driver Motor ==> Motor 1
 OUT3 dan OUT4 Driver Motor ==> Motor 2
 Pin 12V Driver Motor ==> Hubungkan ke baterai
 Pin GND Driver Motor ==> Hubungkan ke Ground(-) Baterai dan
Ground(GND) Arduino
  Kaki vcc pada masing-masing komponen hubungkan ke sumber power
positif 5v (bisa dari 5v Arduino)
 Kaki gnd/ground pada masing-masing komponen hubungkan ke
sumber negatif power (dihubungkan ke pin gnd Arduino)

Kemudian rakitlah robot sesuai dengan kreatifitas sobat. Ini NP berikan


referensi bentuk robot sesuai dengan robot yang NP buat. Berikut ini
merupakan pemasangan sensor line trackingnya :
 

 
 

Setelah itu, silahkan upload program seperti di bawah ini pada software
Arduino IDE milik sobat, dan tata cara upload program ke Arduino bisa
sobat baca Di Sini :
// ------ Project Membuat Robot Line Follower 4 Sensor ------- //
// ------------- Dibuat oleh : M. Nofgi Y.P.U. -------------- //
// ------------- www.nofgipiston.wordpress.com -------------- //

// inialisasi pin motor kanan dan motor kiri


// motor1 dan motor2 = motor kanan
// motor3 dan motor4 = motor kiri
const int motor1 = 7;
const int motor2 = 6;
const int motor3 = 5;
const int motor4 = 4;

// inialisasi pi sensor garis 1 sampai 4


// sensor1 dan snsor2 = sensor sebelah kanan
// sensor3 dan sensor4 = sensor sebelah kiri
const int sensor1 = A5;
const int sensor2 = A4;
const int sensor3 = A3;
const int sensor4 = A2;

// inialisasi pin speed motor


// wajib pin support PWM
const int pinSpeed = 9;

// inialisasi variabel data 1 sampai 4


int data1, data2, data3, data4;

// inialisasi nilai kecepatan motor


// range nilai antara 0 sampai 255
int speedMotor = 255;

// ---------- program dfault/setting awal ---------- //

void setup()
{
// inialisasi pin motor sebagai output
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(motor3, OUTPUT);
pinMode(motor4, OUTPUT);

// inialisasi pin sensor sebagai input


pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);
pinMode(sensor4, INPUT);
// inialisasi pin speed motor sebagai output
pinMode(pinSpeed, OUTPUT);
}

// ---------- program utama, looping/berulang terus-menerus ---------- //

void loop ()
{
// masing2 variabel data menyimpan hasil pembacaan sensor
// berupa logic LOW/HIGH
data1 = digitalRead(sensor1);
data2 = digitalRead(sensor2);
data3 = digitalRead(sensor3);
data4 = digitalRead(sensor4);

// mengatur kecepatan motor


analogWrite(pinSpeed, speedMotor);

// ----------- pengaturan jalannya robot sesuai pembacaan sensor


------------ //

if (data1 == LOW && data2 == LOW && data3 == LOW && data4 == LOW)
{
//maju
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
digitalWrite(motor3, HIGH);
digitalWrite(motor4, LOW);
}

else if (data1 == HIGH && data2 == HIGH && data3 == HIGH && data4 == LOW)
{
//kanan
digitalWrite(motor1, LOW);
digitalWrite(motor2, HIGH);
digitalWrite(motor3, HIGH);
digitalWrite(motor4, LOW);
}

else if (data1 == LOW && data2 == HIGH && data3 == HIGH && data4 == HIGH)
{
//kiri
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
digitalWrite(motor3, LOW);
digitalWrite(motor4, HIGH);
}

else if (data1 == HIGH && data2 == HIGH && data3 == LOW && data4 == LOW)
{
//kanan
digitalWrite(motor1, LOW);
digitalWrite(motor2, HIGH);
digitalWrite(motor3, HIGH);
digitalWrite(motor4, LOW);
}

else if (data1 == LOW && data2 == LOW && data3 == HIGH && data4 == HIGH)
{
//kiri
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
digitalWrite(motor3, LOW);
digitalWrite(motor4, HIGH);
}

else if (data1 == HIGH && data2 == LOW && data3 == LOW && data4 == LOW)
{
//kanan
digitalWrite(motor1, LOW);
digitalWrite(motor2, HIGH);
digitalWrite(motor3, HIGH);
digitalWrite(motor4, LOW);
}

else if (data1 == LOW && data2 == LOW && data3 == LOW && data4 == HIGH)
{
//kiri
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
digitalWrite(motor3, LOW);
digitalWrite(motor4, HIGH);
}

else if (data1 == HIGH && data2 == LOW && data3 == HIGH && data4 == LOW)
{
//kanan
digitalWrite(motor1, LOW);
digitalWrite(motor2, HIGH);
digitalWrite(motor3, HIGH);
digitalWrite(motor4, LOW);
}

else if (data1 == LOW && data2 == HIGH && data3 == LOW && data4 == HIGH)
{
//kiri
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
digitalWrite(motor3, LOW);
digitalWrite(motor4, HIGH);
}

else if (data1 == LOW && data2 == HIGH && data3 == LOW && data4 == LOW)
{
//kanan
digitalWrite(motor1, LOW);
digitalWrite(motor2, HIGH);
digitalWrite(motor3, HIGH);
digitalWrite(motor4, LOW);
}

else if (data1 == LOW && data2 == LOW && data3 == HIGH && data4 == LOW)
{
//kiri
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
digitalWrite(motor3, LOW);
digitalWrite(motor4, HIGH);
}

else if (data1 == LOW && data2 == HIGH && data3 == HIGH && data4 == LOW)
{
//maju
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
digitalWrite(motor3, HIGH);
digitalWrite(motor4, LOW);
}

else if (data1 == HIGH && data2 == HIGH && data3 == HIGH && data4 == HIGH)
{
//maju
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
digitalWrite(motor3, HIGH);
digitalWrite(motor4, LOW);
}
}

Dan berikut ini adalah video demonstrasinya di channel


Youtube saya :
Untuk pergerakannya memang masih sedikit kaku karena program masih
bersifat sederhana. Belum mengaplikasikan metode controller seperti PID
ataupun JST (Jaringan Syaraf Tiruan).

Penjelasan singkat dari program di atas yakni :

Sifat dari sensor garis/line tracking ini adalah saat dia mendeteksi warna putih, maka output
sensor berupa data logic LOW, sedangakan saat sensor mendeteksi garis hitam, maka output
data berupa logic HIGH.

Nah berdasarkan cara kerja sensor inilah kita mengatur pergerakan roda motor pada robot.
Perhatikan tabel di bawah ini :
Untuk pergerakan belok kanan-kiri pada robot ini menggunakan sistem differential drive. Jadi
bukan pakai steering, melainkan perbedaan arah putar pada roda kanan-kiri. Contohnya kalau
mau belok kanan, maka motor kanan berjalan mundur dan motor kiri berjalan maju,
sedangkan jika belok kiri maka motor kiri berjalan mundur dan motor kanan bergerak maju.

Ketika sensor kanan mendeteksi garis hitam, robot akan berbelok ke kanan. Dan sebaliknya,
saat sensor kiri mendeteksi garis hitam, maka robot akan berbelok ke kiri. Untuk lebih
jelasnya silahkan dilihat pada program.

Anda mungkin juga menyukai