Membuat
Robot Obstacle Avoider 4WD Menggunakan Arduino Uno dan Sensor Ultrasonik
By. Iyon
manakarra
Robot obstacle
avoider atau robot penghindar halangan merupakan salah satu proyek
paling populer di dunia robotika pemula. Robot ini mampu bergerak
secara otomatis dan menghindari objek di depannya menggunakan sensor jarak.
Pada artikel ini, kita akan membahas pembuatan Robot Obstacle Avoider
4-Wheel Drive (4WD) lengkap dengan penjelasan komponen, cara kerja,
serta analisis program Arduino Uno yang digunakan.
1. Konsep
Dasar Robot Obstacle Avoider
Robot obstacle
avoider bekerja dengan prinsip sederhana:
- Sensor ultrasonik HC-SR04 mendeteksi
jarak objek di depan.
- Jika ada halangan yang jaraknya kurang dari ambang
batas (misalnya < 25 cm), robot akan berhenti.
- Servo menggerakkan sensor ke kiri dan kanan untuk
mengukur ruang yang lebih bebas.
- Robot memilih arah dengan jarak paling besar.
- Setelah menentukan arah, robot akan berbelok
kemudian melanjutkan perjalanan.
Robot ini
sangat cocok sebagai media pembelajaran elektronika, robotika dasar,
pemrograman Arduino, dan pengontrolan motor DC.
2. Komponen
yang Digunakan
Berikut
komponen utama pada proyek robot ini:
- Arduino Uno sebagai otak utama pemrosesan.
- Motor Driver L298N untuk mengatur putaran
empat motor DC.
- Motor DC 4 Buah (4WD) untuk sistem penggerak
robot.
- Sensor Ultrasonik HC-SR04 untuk mendeteksi
jarak.
- Servo SG90 untuk menggerakkan sensor ke
kiri, depan, dan kanan.
- Baterai 7.4V / 18650 sebagai sumber daya.
- Kabel jumper, rangka robot 4WD, dan dudukan servo.
3.
Penjelasan Wiring / Koneksi Komponen
a.
HC-SR04 ke Arduino
- trigPin → Pin 13
- echoPin → Pin 12
b. Motor
Driver L298N
- IN1 → Pin 6
- IN2 → Pin 5
- IN3 → Pin 3
- IN4 → Pin 4
- ENA → Pin 8 (PWM)
- ENB → Pin 9 (PWM)
c. Servo
- Signal → Pin 11
- Vcc → 5V
- GND → GND
4. Cara
Kerja Program Arduino
Program ini
ditulis untuk mengontrol seluruh sistem robot. Berikut penjelasan bagian utama:
a. Mengukur
Jarak dengan Ultrasonik
int getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
return distance;
}
Fungsi getDistance()
mengirimkan gelombang ultrasonik dan mengukur waktu pantulnya, kemudian
dihitung menjadi jarak.
b. Fungsi
Kontrol Motor
Program
menyediakan beberapa fungsi untuk mengontrol arah gerak robot:
- moveForward() → maju
- moveBackward() → mundur
- turnLeft() → belok kiri
- turnRight() → belok kanan
- stopCar() → berhenti
Semua fungsi
bekerja dengan mengatur logika HIGH/LOW pada pin motor driver L298N dan
memberikan sinyal PWM ke pin ENA & ENB untuk mengatur kecepatan.
c. Algoritma
Penghindar Halangan
Logika utama
berada di dalam fungsi loop():
- Servo diarahkan ke depan (myServo.write(90)).
- Robot mengukur jarak halangan di depan.
- Jika jarak < 25 cm, robot berhenti.
- Servo belok ke kiri → ukur jarak.
- Servo belok ke kanan → ukur jarak.
- Bandingkan leftDistance dan rightDistance.
- Belok ke arah yang lebih aman.
- Robot kembali maju.
Inilah inti
dari kecerdasan dasar robot penghindar halangan.
5. Kode
Program Lengkap
Kode berikut
adalah program robot obstacle avoider yang digunakan:
// Design Program by. Iyon Manakarra//Mekatronika Manakarra#include <Servo.h>// Pin Definitions#define trigPin 13#define echoPin 12#define ENA 8#define ENB 9#define IN1 6#define IN2 5#define IN3 3#define IN4 4#define servoPin 11Servo myServo;// Variables for distance measurementlong duration;int distance;int rightDistance, leftDistance;// Function to calculate distanceint getDistance() {digitalWrite(trigPin, LOW);delayMicroseconds(2);digitalWrite(trigPin, HIGH);delayMicroseconds(10);digitalWrite(trigPin, LOW);duration = pulseIn(echoPin, HIGH);distance = duration * 0.034 / 2;return distance;}// Motor control functionsvoid moveForward() {digitalWrite(IN1, HIGH);digitalWrite(IN2, LOW);digitalWrite(IN3, HIGH);digitalWrite(IN4, LOW);analogWrite(ENA, 250); // Adjust speed using PWM (0-255)analogWrite(ENB, 250); // Adjust speed using PWM (0-255)}void moveBackward() {digitalWrite(IN1, LOW);digitalWrite(IN2, HIGH);digitalWrite(IN3, LOW);digitalWrite(IN4, HIGH);analogWrite(ENA, 250); // Adjust speed using PWManalogWrite(ENB, 250); // Adjust speed using PWM}void stopCar() {digitalWrite(IN1, LOW);digitalWrite(IN2, LOW);digitalWrite(IN3, LOW);digitalWrite(IN4, LOW);}void turnLeft() {digitalWrite(IN1, HIGH);digitalWrite(IN2, LOW);digitalWrite(IN3, LOW);digitalWrite(IN4, HIGH);//analogWrite(ENA, 150); // Adjust speed for turning//analogWrite(ENB, 150); // Adjust speed for turning}void turnRight() {digitalWrite(IN1, LOW);digitalWrite(IN2, HIGH);digitalWrite(IN3, HIGH);digitalWrite(IN4, LOW);//analogWrite(ENA, 150); // Adjust speed for turning//analogWrite(ENB, 150); // Adjust speed for turning}void setup() {// Setup pinspinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);pinMode(IN1, OUTPUT);pinMode(IN2, OUTPUT);pinMode(IN3, OUTPUT);pinMode(IN4, OUTPUT);pinMode(ENA, OUTPUT);pinMode(ENB, OUTPUT);// Servo setupmyServo.attach(servoPin);myServo.write(90); // Start servo at center positionSerial.begin(9600);}void loop() {// Scan forwardmyServo.write(90); // Center position (looking straight ahead)delay(50);int frontDistance = getDistance();// If an obstacle is closer than 20 cmif (frontDistance < 25) {stopCar();delay(200); // Pause to make a decision// Scan left sidemyServo.write(0); // Turn servo to the leftdelay(500);leftDistance = getDistance();// Scan right sidemyServo.write(180); // Turn servo to the rightdelay(500);rightDistance = getDistance();// Decide direction based on the distancesif (leftDistance > rightDistance) {turnLeft();delay(500); // Adjust the delay to control turning duration} else {turnRight();delay(500); // Adjust the delay to control turning duration}stopCar(); // Stop after turningdelay(200); // Brief pause before moving forward again} else {moveForward(); // Continue moving forward if the path is clear}delay(50); // Short delay before next loop iteration}
6. Tips
Pengembangan Lebih Lanjut
Setelah robot
berjalan, Anda dapat meningkatkan performanya dengan:
- Menambahkan sensor inframerah di samping untuk
navigasi lebih tajam.
- Menambahkan PID untuk gerakan motor lebih stabil.
- Menggunakan baterai Li-ion agar robot lebih
bertenaga.
- Mengoptimalkan sudut servo (misalnya 60–120
derajat).
- Menambahkan buzzer sebagai alarm tabrakan.
7. Kesimpulan
Robot Obstacle Avoider 4WD adalah proyek yang
sangat ideal bagi siswa dan hobiis robotika. Dengan kombinasi Arduino Uno,
sensor ultrasonik, motor driver, dan algoritma sederhana, robot ini bisa
melakukan navigasi otomatis dengan cukup baik. Proyek ini tidak hanya
mengajarkan pemrograman tetapi juga konsep sensor, aktuator, dan pengendalian
motor.
8.
Dokumen Proses Pembuatan
a.
Link Youtube
b. Galery Design
- Komponen Robot Avoider
- Hasil Rakitan Mekanik Robot dan Kontrol Elektronika
Tidak ada komentar:
Posting Komentar
Mari berdiskusi dan silahkan memberi komentar berupa kritik dan saran yang bersifat membangun ya sobat smua....!