Engel Algılayan Robot: Akıllı Hareket İçin Adım Adım Kılavuz 🚧

Yazar: Melda Aslan | Tarih: 3 Eylül 2025

Engel algılayan robotlar, robotik ve otomasyonun en temel ve en popüler projelerinden biridir. Bir ultrasonik sensör sayesinde çevresindeki engelleri algılayarak çarpışmadan hareket edebilme yeteneği kazanır. Bu rehberde, kendi akıllı robotunuzu nasıl yapacağınızı, gerekli malzemeleri, bağlantı şemasını ve kodlama adımlarını detaylıca öğreneceksiniz.

1. Gerekli Malzemeler

Basit ve etkili bir engel algılayan robot projesi için ihtiyacınız olan temel bileşenler şunlardır:

  • Arduino Uno veya Nano: Robotun tüm kararları vereceği ve sensör verilerini işleyeceği ana beyin.
  • HC-SR04 Ultrasonik Mesafe Sensörü: Robotun önündeki engellerin mesafesini ölçmek için kullanılır.
  • L298N Motor Sürücü Modülü: Arduino'dan gelen düşük akımlı sinyalleri, motorları çalıştıracak yüksek akıma dönüştürür.
  • 2 adet DC Motor ve Tekerlekleri: Robotun ileri, geri ve dönüş hareketlerini yapmasını sağlar.
  • Robot Şasisi: Tüm elektronik ve mekanik parçaları bir araya getirmek için bir platform.
  • Güç Kaynağı: 9V pil veya 7.4V LiPo pil.
  • Jumper Kabloları: Bileşenler arası bağlantılar için.

2. Montaj ve Elektronik Bağlantılar

Tüm parçaları şasi üzerine yerleştirdikten sonra, en önemli adım olan elektronik bağlantıları yapmaya başlayabilirsiniz. Özellikle ultrasonik sensörün ve motor sürücünün Arduino'ya doğru şekilde bağlanması gerekir. Aşağıdaki adımları takip ederek bağlantıları kolayca kurun:

Engel Algılayan Robot Bağlantı Şeması

Bağlantı Adımları:

  • Ultrasonik Sensör Bağlantıları: HC-SR04'ün VCC pinini Arduino'nun 5V pinine, GND pinini Arduino'nun GND pinine bağlayın. Trig (Tetik) pinini Arduino'nun bir dijital pinine (örneğin, D7), Echo (Yankı) pinini de başka bir dijital pinine (örneğin, D6) bağlayın.
  • Motor Sürücü ve Motor Bağlantıları: L298N modülünün motor çıkış pinlerini (OUT1, OUT2, OUT3, OUT4) motorlarınıza bağlayın.
  • Güç Kaynağı Bağlantıları: Pilinizi motor sürücünün VCC ve GND pinlerine bağlayın.
  • Arduino ve Motor Sürücü Bağlantıları: Arduino'nun dijital pinlerini (örneğin, D9, D10, D11, D12) motor sürücünün giriş pinlerine (IN1, IN2, IN3, IN4) bağlayın. Bu pinler motorların dönme yönünü kontrol edecek.

3. Kodlama Mantığı

Robotun "akıllı" hareket etmesini sağlayan kodun temel mantığı, sürekli olarak sensör verilerini kontrol etmek ve belirli bir mesafenin altında bir engel algıladığında tepki vermektir.

  • Robot sürekli olarak düz bir şekilde ileri hareket eder.
  • **Loop** döngüsü her çalıştığında, ultrasonik sensörden önündeki nesnenin mesafesi ölçülür.
  • Eğer ölçülen mesafe önceden belirlenen bir eşik değerinden (örneğin 20 cm) daha az ise, robot hemen durur.
  • Durduktan sonra, robot yeni bir yol bulmak için (örneğin sağa doğru) döner.
  • Dönüş tamamlandığında veya engel artık algılanmadığında, robot yeniden ileri hareketine devam eder.

Bu basit mantık, robotunuzun karşısına çıkan engellerden kaçınmasını sağlar.

4. Arduino Kod Yapısı

Aşağıdaki kod, engel algılayan bir robotun temel çalışma prensibini içerir. Kodu Arduino IDE'ye yükleyerek robotunuzu test edebilirsiniz.

// Motor ve sensör pinleri tanımlanıyor
#define MOTOR_SOL_ILERI 9   // Sol motor ileri (PWM)
#define MOTOR_SOL_GERI 10   // Sol motor geri
#define MOTOR_SAG_ILERI 11  // Sağ motor ileri (PWM)
#define MOTOR_SAG_GERI 12   // Sağ motor geri

#define TRIG_PIN 7         // Ultrasonik sensör Trig pini
#define ECHO_PIN 6         // Ultrasonik sensör Echo pini

// Mesafe ölçümü için gerekli değişkenler
long sure, mesafe;

void setup() {
  // Motor pinlerini çıkış olarak ayarla
  pinMode(MOTOR_SOL_ILERI, OUTPUT);
  pinMode(MOTOR_SOL_GERI, OUTPUT);
  pinMode(MOTOR_SAG_ILERI, OUTPUT);
  pinMode(MOTOR_SAG_GERI, OUTPUT);

  // Sensör pinlerini ayarla
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  // Seri haberleşmeyi başlat (debug için)
  Serial.begin(9600);
}

void loop() {
  // Mesafe ölçüm fonksiyonunu çağır
  mesafe = olcumYap();

  Serial.print("Mesafe: ");
  Serial.print(mesafe);
  Serial.println(" cm");

  // Mesafe 20 cm'den küçükse engelden kaç
  if (mesafe < 20) {
    dur();
    delay(500);
    sagaDon();
    delay(1000); // 1 saniye dön
    dur();
    delay(500);
  } else {
    // Engel yoksa ileri git
    ileriGit();
  }
}

long olcumYap() {
  // Trig pinini temizle ve 2 mikrosaniye bekle
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  
  // Trig pinini yüksek yap ve 10 mikrosaniye bekle
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  // Echo pininin yüksek olana kadar geçen süreyi ölç
  sure = pulseIn(ECHO_PIN, HIGH);

  // Mesafeyi hesapla (cm)
  // Mesafe = (süre * ses hızı) / 2
  // Ses hızı ~343 m/s = 0.0343 cm/mikrosaniye
  mesafe = sure * 0.0343 / 2;
  
  return mesafe;
}

// Hareket fonksiyonları
void ileriGit() {
  analogWrite(MOTOR_SOL_ILERI, 200);
  digitalWrite(MOTOR_SOL_GERI, LOW);
  analogWrite(MOTOR_SAG_ILERI, 200);
  digitalWrite(MOTOR_SAG_GERI, LOW);
}

void sagaDon() {
  analogWrite(MOTOR_SOL_ILERI, 200);
  digitalWrite(MOTOR_SOL_GERI, LOW);
  analogWrite(MOTOR_SAG_ILERI, 0);
  digitalWrite(MOTOR_SAG_GERI, LOW);
}

void dur() {
  analogWrite(MOTOR_SOL_ILERI, 0);
  digitalWrite(MOTOR_SOL_GERI, LOW);
  analogWrite(MOTOR_SAG_ILERI, 0);
  digitalWrite(MOTOR_SAG_GERI, LOW);
}
                        

Bu temel rehberle kendi engel algılayan robotunuzu kolayca hayata geçirebilirsiniz. Unutmayın, robotik projelerde kodlama ve fiziksel bağlantılar bir bütündür. Bu projeyi tamamladıktan sonra, daha karmaşık algoritmalar ve ek sensörlerle robotunuzun yeteneklerini geliştirmeye devam edebilirsiniz!

Robotik Dünyasına Adım Atmak İçin İlk Adımı Atın!

Eğitim materyallerimizi ve projelerimizi keşfederek hemen öğrenmeye başlayın.

Eğitimleri Keşfet