Otonom Robot Projeleri

Arduino ile Engel Algılayan Robot Yapımı (HC-SR04 Sensörlü)

Arduino Uno, HC-SR04 ultrasonik mesafe sensörü ve L298N motor sürücü kullanarak engelleri tespit eden ve kendi yolunu çizen otonom bir robotu adım adım tasarlayıp kodluyoruz.

Engel Algılayan Robot

Robotik projelerine başlarken yapılan en heyecan verici uygulamalardan biri engel algılayan otonom robotlardır. Bu projede, robotumuz önündeki engelleri fiziksel bir temas olmadan ultrasonik ses dalgalarıyla tespit edecek, engelle karşılaştığında durup yönünü değiştirerek yoluna devam edecektir.

1 Çalışma Mantığı ve Sensör Mimarisi

Robotun temel mantığı human-like (insansı) karar verme mekanizmasına benzer. Ön tarafa yerleştirilen HC-SR04 ultrasonik sensör sürekli olarak mesafe kontrolü yapar:

  • Güvenli Alan (Mesafe > 20 cm): Robot tam güç ileri yönde hareket eder.
  • Kritik Mesafe (Mesafe ≤ 20 cm): Robot kısa bir süre durur, geriye doğru çekilir ve ardından sağa/sola dönerek engelsiz yeni bir rota arar.

HC-SR04 Nasıl Mesafe Ölçer?

HC-SR04 sensörü insan kulağının duyamayacağı 40 kHz frekansında ses dalgaları yayar. Trig pininden çıkan ses dalgası bir engelle karşılaşıp geri döndüğünde Echo pini yüksek (HIGH) konumuna geçer.

Sesin havada yayılma hızı olan 340 m/s dikkate alınarak şu matematiksel formülle mesafe hesaplanır:

Mesafe (cm) = (Geçen Süre / 2) * 0.0343

2 Gerekli Malzemeler

Projeyi tamamlayabilmek için aşağıdaki donanım bileşenlerine ihtiyacınız olacaktır:

Arduino Uno R3 Robotun beyin görevini üstlenen ana mikrodenetleyici kartı.
HC-SR04 Ultrasonik Sensör Ses dalgaları ile hassas mesafe ölçümü sağlayan sensör.
L298N Motor Sürücü Modülü DC motorların yön ve hız yönetimini sağlayan çift kanallı sürücü.
2WD Robot Şasesi ve DC Motorlar Tekerlekli robot gövdesi, 2 adet DC motor ve sarhoş tekerlek.

3 Devre Bağlantı Şeması

Motorlar Arduino'dan yüksek akım çektiği için güç kaynağınızı (örneğin 2 adet 18650 Li-ion pil) doğrudan L298N sürücüye bağlamalısınız. Arduino'yu ve motor sürücüyü ortak GND hattında buluşturmak kritik önem taşır.

Pin Bağlantı Özeti

TRIG
Pin 9 HC-SR04 Ses Çıkışı
ECHO
Pin 8 HC-SR04 Ses Girişi
IN1-2
Pin 4 - 5 Sol Motor Yönü
IN3-4
Pin 6 - 7 Sağ Motor Yönü

4 Arduino Kodlaması (C++)

Aşağıdaki C++ kodunu Arduino IDE yazılımına yapıştırarak kartınıza yükleyebilirsiniz. Kod içerisinde milisaniye ve mesafe eşikleri kolayca özelleştirilebilir.

Engel_Algilayan_Robot.ino
// Arduino ile Engel Algılayan Robot Kodu
#define TRIG_PIN 9
#define ECHO_PIN 8

// L298N Motor Sürücü Pin Tanımlamaları
const int solMotor1 = 4;
const int solMotor2 = 5;
const int sagMotor1 = 6;
const int sagMotor2 = 7;

long sure;
int mesafe;
const int engelSiniri = 20; // cm cinsinden engel mesafesi

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  
  pinMode(solMotor1, OUTPUT);
  pinMode(solMotor2, OUTPUT);
  pinMode(sagMotor1, OUTPUT);
  pinMode(sagMotor2, OUTPUT);
}

void loop() {
  mesafe = mesafeOlcu();
  
  if (mesafe > 0 && mesafe <= engelSiniri) {
    dur();
    delay(200);
    geriGit();
    delay(400);
    dur();
    delay(200);
    sagaDon();
    delay(500);
  } else {
    ileriGit();
  }
}

int mesafeOlcu() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  
  sure = pulseIn(ECHO_PIN, HIGH);
  return sure * 0.0343 / 2;
}

void ileriGit() {
  digitalWrite(solMotor1, HIGH);
  digitalWrite(solMotor2, LOW);
  digitalWrite(sagMotor1, HIGH);
  digitalWrite(sagMotor2, LOW);
}

void geriGit() {
  digitalWrite(solMotor1, LOW);
  digitalWrite(solMotor2, HIGH);
  digitalWrite(sagMotor1, LOW);
  digitalWrite(sagMotor2, HIGH);
}

void sagaDon() {
  digitalWrite(solMotor1, HIGH);
  digitalWrite(solMotor2, LOW);
  digitalWrite(sagMotor1, LOW);
  digitalWrite(sagMotor2, HIGH);
}

void dur() {
  digitalWrite(solMotor1, LOW);
  digitalWrite(solMotor2, LOW);
  digitalWrite(sagMotor1, LOW);
  digitalWrite(sagMotor2, LOW);
}

5 Geliştirme İpuçları ve İleri Seviye Özellikler

Temel projenizi tamamladıktan sonra robotunuza şu akıllı özellikleri ekleyebilirsiniz:

  1. Servo Motor Entegrasyonu: HC-SR04 sensörünü SG90 servo motor üzerine monte ederek engel anında başını sağa ve sola çevirip en açık yönü seçmesini sağlayabilirsiniz.
  2. Buzzer ve Uyarı Işıkları: Robot engeli gördüğünde sesli bip uyarısı verebilir veya LED lambalarıyla dönüş sinyali yakabilir.
  3. PWM Hız Kontrolü: L298N üzerindeki ENA ve ENB pinlerini Arduino PWM pinlerine (örneğin 3 ve 11) bağlayarak analogWrite() komutu ile motor hızını hassas biçimde ayarlayabilirsiniz.

Sıkça Sorulan Sorular

HC-SR04 ultrasonik sensör nasıl mesafe ölçer?

Trig pininden 40 kHz frekansında yüksek frekanslı ses dalgası gönderilir. Ses engelden sekip Echo pinine ulaştığında geçen süre hesaplanarak ses hızı (340 m/s) üzerinden mesafe santimetre cinsinden bulunur.

Neden L298N motor sürücü modülü kullanıyoruz?

Arduino dijital pinleri en fazla 40mA akım verebilir. DC motorlar ise daha yüksek akım çektiği için doğrudan Arduino'ya bağlanamaz. L298N, harici güç kaynağından aldığı yüksek akımı motorlara yönlendirerek güvenli sürüş sağlar.

Robot engeli algıladığında motorlar ters dönüyorsa ne yapılmalı?

Motor bağlantı kablolarının yönünü (L298N klemenslerinde OUT1-OUT2 veya OUT3-OUT4) ters çevirebilir veya kod içerisindeki HIGH/LOW pin durumlarını değiştirebilirsiniz.

Robotik kodlama bilginizi bir üst seviyeye taşıyın!

İnteraktif blok tabanlı kodlama simülatörlerimiz ve eğitim materyallerimiz ile kendi projelerinizi tasarlayın.

Hemen Başla