AI Assistant
Detail Karya Portofolio

Robotic Line Follower Robot

Intan Nuraeni Oleh: Intan Nuraeni

Ringkasan Portofolio

Robot Line Follower adalah sebuah robot yang mengikuti garis secara otomatis. Robot didukung oleh rangkaian komponen elektronika yang dilengkapi dengan roda dan penggerak oleh motor

 

Deskripsi & Detail Proyek

Line follower adalah salah satu jenis robot yang cara kerjanya mengikuti garis.

robot line follower ini harus memiliki indra layaknya manusia untuk bisa melihat atau membaca suatu garis. Dia menggunakan sensor cahaya untuk bisa membaca dan mengikuti garis yang ada di depannya

Sensor ini di susun dari photodiode dan led.  Jadi led berfungsi sebagai sumber dan pengirim cahaya ke garis, lalu cahaya akan di pantulkan oleh garis dan kemudian akan di baca oleh photodiode sebagai penerima cahaya. Jika photodiode menerima cahaya, itu berarti sensor cahaya telah berhasil membaca adanya garis, dan robot akan mulai mengikuti garis tersebut.

Garis yang biasa di ikuti adalah garis hitam di atas permukaan yang berwarna putih atau garis putih di atas permukaan yang berwarna hitam. (permukaan terang) dapat memantulkan cahaya, sedangkan warna hitam (permukaan gelap) tidak dapat memantulkan cahaya. prinsip ini yang di gunakan sensor cahaya pada robot line follower.

 

Jenis Robot line follower

Robot line follower pun di bagi lagi menjadi 2 jenis yaitu analog dan mikro. 

Yang membedakan adalah otaknya atau kontrolernya. Jika robot line follower analog hanya menggunakan IC transistor sebagai kontroler, sehingga dia tidak akan bisa di beri peritah, dan hanya bisa mengikuti garis berbentuk lurus, oval atau kotak saja. 

Sedangkan robot line follower mikro menggunakan kontroler dalam bentuk IC board, contohnya arduino

Jadi dia bisa di program sesuai perintah kita, misalnya ada persimpangan dia bisa belok kanan, kiri, lurus atau bahkan berhenti.

Teknologi robot line follower ini sudah berkembang sangat pesat sampai sekarang, termasuk untuk media edukasi anak, dengan program maze solvingnya. tentu saja ada yang harus di lalui robot line follower dengan cara memprogram robotnya. 

Contoh Skema Rangkaian Line Follower

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)

Upload Program Arduino IDE

// ------ Project Membuat Robot Line Follower 4 Sensor ------- //

// ------------- Dibuat oleh : Intan Nuraeni. -------------- //

// ------------- 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);

 }

}