Kendi kendine dolaşan, önüne çıkan engeli görüp yön değiştiren robot, otonom robotik projelerinin ilk adımıdır. Bu yazıda Engelden Kaçan Robot Araba Kiti ile kurulumu, bağlantı şemasını ve hazır kodu paylaşıyoruz.
Nasıl Çalışır?
HC-SR04 ultrasonik sensör, ses dalgası gönderip yankının dönüş süresinden mesafeyi hesaplar. Sensör bir SG90 servo üzerine takılıdır; robot engel görünce durur, servoyu sola ve sağa çevirip iki tarafın mesafesini ölçer ve daha boş olan tarafa döner. Motorlar L298N sürücü üzerinden sürülür.
Bağlantı Şeması
L298N: IN1→D5, IN2→D6, IN3→D9, IN4→D10 (ENA/ENB jumper takılı). HC-SR04: TRIG→A0, ECHO→A1. Servo sinyal→D3. Sensör ve servo Arduino 5V'tan, Arduino ise pilden VIN ile beslenir. Tüm GND'ler ortak.
Standart set (4'lü AA pil kutusu, 6V):

18650 pil yuvalı set (2x18650, 7,4V):

Kurulum Adımları
- 2WD gövdeyi, motorları ve tekerlekleri monte et; servoyu ön tarafa, sensörü servonun üzerine tak
- L298N'i motorlara ve Arduino'ya şemadaki gibi bağla
- HC-SR04 ve servoyu bağla, pil yuvasını VIN ve L298N +12V'a ver
- Kodu yükle (pil şalteri kapalıyken), sonra pili aç ve robotu yere koy
Arduino Kodu
Servo kütüphanesi IDE ile gelir, ekstra kurulum gerekmez.
// Engelden Kaçan Robot - HC-SR04 + SG90 + L298N
// Atölye Elektronik
#include <Servo.h>
#define IN1 5
#define IN2 6
#define IN3 9
#define IN4 10
#define TRIG A0
#define ECHO A1
#define SERVO_PIN 3
Servo kafa;
void setup() {
pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT);
kafa.attach(SERVO_PIN);
kafa.write(90); // ileri bak
delay(500);
}
long mesafe() {
digitalWrite(TRIG, LOW); delayMicroseconds(2);
digitalWrite(TRIG, HIGH); delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long sure = pulseIn(ECHO, HIGH, 30000);
if (sure == 0) return 400;
return sure * 0.034 / 2; // cm
}
void ileri() { digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); }
void geri() { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); }
void sola() { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); }
void saga() { digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); }
void dur() { digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); }
void loop() {
if (mesafe() > 25) {
ileri();
return;
}
dur(); delay(200);
geri(); delay(300);
dur();
kafa.write(150); delay(400); long sol = mesafe();
kafa.write(30); delay(400); long sag = mesafe();
kafa.write(90); delay(300);
if (sol > sag) sola(); else saga();
delay(450);
dur();
}
İpuçları
- Robot engele çok yaklaşıyorsa koddaki 25 cm eşiğini 35'e çıkarın.
- Dönüş yetersizse
delay(450)değerini artırın; motor ters dönüyorsa OUT uçlarını yer değiştirin. - Pil zayıflayınca sensör hatalı okur; 18650 pil yuvalı set daha kararlı çalışır.
Kitin içinde 2WD gövde, Arduino Uno, L298N, HC-SR04, SG90 servo, pil yuvası ve jumper kablolar dahil. Satın almak için Engelden Kaçan Robot Araba Kiti veya 18650 Pil Yuvalı versiyonu sayfasına göz atabilirsin.