Robot Line Follower Sederhana dengan Arduino
Tutorial membuat robot line follower sederhana dengan arduino
Setelah dilakukan simulasi robot line follower dengan arduino di software proteus, maka pada post kali ini saya akan mengimplementasikannya pada perangkat yang sesungguhnya. Proses pembuatan tidaklah terlalu rumit karena semua kit yang akan digunakan sudah banyak tersedia baik dari kit chasis, modul sensor, atau modul driver motor.
Perangkat yang diperlukan
- Sensor garis
- Driver Motor
- Kit Chasis dan DC motor
Untuk kit chasis dapat menggunakan kit acrylic yang banyak tersedia dipasaran. Dapat juga membuat sendiri karena sebenarnya tidak terlalu sulit (dapat menggunakan papan acrylic atau triplek). Sementara untuk motor memakai motor DC 3-6V yang sudah lengkap dengan gearbox dan roda. Kerena modelnya 2 WD maka untuk roller roda 1 memakai roda gila/caster wheel yang anti selip.
- Arduino
Untuk arduino yang digunakan dalam tutorial ini adalah Arduino Uno. Silahkan disesuaikan penggunaan pinnya bila menggunakan arduino tipe lainnya.
- Baterai /power bank
Untuk power stand alone nya kita bisa menggunakan baterai dengan kapasitas 9-12 V. Power dari baterai dengan tegangan kisaran lebih dari 5 V dihubungkan dengan konektor DC pada arduino atau bisa juga melalui pin Vin. Kalau powernya menggunakan power bank, karena tegangan dari powerbank sudah stabil 5V, maka dihubungkan ke pin 5V arduino. Robot line follower yang dibuat menggunakan battery power bank (memanfaatkan barang yang ada)
Wiring Diagram
Diagram pengkabelan dari robot line follower sederhana menggunakan arduino dapat dilihat dibawah ini. Pin Enable A (L298) terhubung dengan arduino pin 3 (PWM ) dan pin enable B (L298) terhubung dengan arduino pin 5(PWM). Jumper pin 12V pada module L298N sebaiknya dilepas saja.
Pemasangan sensor harap diperhatikan karena akan mempengaruhi gerak robot. Dalam hal ini saya sudah mencoba beberapa posisi dan yang terbaik cara pemasangan sensor BFD-1000 adalah seperti gambar diatas (posisi miring/roda depan agak ditinggiin).
Arduino Program
Program robot line follower ini tidak jauh berbeda dengan yang ada pada Simulasi Arduino Line Follower Robot di Proteus . Sementara untuk cara kerja sistemnya sendiri dapat dipelajari pada simulasi line follower bagian pertama. Untuk program arduinodapat dilihat dibawah ini:
/*program Arduino LF dengan sensor IR 5ch www.arducoding.com */ #define enA 3 #define in1 2 #define in2 4 #define in3 6 #define in4 7 #define enB 5 int pin_sensor[]={8,9,10,11,12}; int baca_sensor; int inp; int hasil_baca[]={0,0,0,0,0}; void setup(){ pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); int a; //setting pin sensor sebagai INPUT while(a<5){ pinMode(pin_sensor[a],INPUT); a=a+1; } } void loop() { baca_sensor=readOut(pin_sensor); switch (baca_sensor) { //hasil baca sensor untuk belok kiri case 11110: case 11000: case 11100: case 11101: case 10000: belok_kiri(); break; //hasil baca sensor untuk arah maju case 11001: case 11011: case 10011: gerak_maju(); break; //hasil baca sensor untuk belok kanan case 10111: case 111: case 11: case 1111: case 1: belok_kanan(); break; //baca hitam semua=stop case 0: motor_stop(); break; } } //menampung hasil baca sensor menjadi interger int readOut(int pin_sensor[]){ int a,b,c=0; inp=0; while(c<5){ hasil_baca[c]=0; c=c+1; } for(a=0;a<5;a++){ hasil_baca[a]=digitalRead(pin_sensor[a]); } while(b<5){ inp=inp*10+hasil_baca[b]; b=b+1; } return inp; } //kendali motor void gerak_maju(){ analogWrite (enA, 255); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite (enB, 255); } void belok_kanan(){ analogWrite (enA, 0); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite (enB, 200); } void belok_kiri(){ analogWrite (enA, 200); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite (enB, 0); } void motor_stop(){ analogWrite (enA, 0); analogWrite (enB, 0); }
Pencarian Terkait:
22 komentar
apakah saya ada salah pemasangan
enable A to D3
input 1 to D2
input 2 to D4
input 3 to D6
input 4 to D7
enable B to D5
sensor 1 to D8
sensor 2 to D9
sensor 3 to D10
sensor 4 to D11
sensor 5 to D12
mohon pencerahan nya
terima kasih
void loop(){
gerak_maju();
delay(2000);
belok_kiri();
delay(1000);
gerak_maju();
delay(3000);
belok_kanan();
delay(1000);
gerak_maju();
delay(3000);
motor_stop();
delay(5000);
}
kalau motor dapat bergerak dengan baik maka berarti terdapat masalah dengan bagian sensor seperti pemasangannya kurang tepat, dll
void motor_stop(){
analogWrite (enA, 0);
analogWrite (enB, 0);
//===== disini program kontrol servonya
}