🚀 Robotik Projeler ve Yapım Rehberleri 📅 16 Ekim 2026

Engelden Kaçan Robot Yapımı: Arduino ile Adım Adım

Arduino ve ultrasonik sensör ile engelden kaçan otonom robot nasıl yapılır? L298N motor sürücü, servo tarama kafası, devre şeması ve tam kodlar.

Engelden Kaçan Robot Yapımı: Arduino ile Adım Adım

Otonom mobil robotların dünyadaki en temel görevi, insan müdahalesine ihtiyaç duymadan bilinmeyen bir ortamda gezinmek ve karşılaştığı engellere çarpmadan yoluna devam etmektir. Evlerimizde her gün çalışan akıllı robot süpürgelerden Mars yüzeyinde kaya parçalarını aşan keşif araçlarına kadar tüm mobil sistemlerin çekirdeğinde **"Engelden Kaçan Robot Algoritması"** yer alır.

Bu kapsamlı rehberde; Arduino Uno, HC-SR04 ultrasonik mesafe sensörü, SG90 servo motor ve L298N motor sürücü kullanarak **çevresine bakınan, en açık yolu tespit eden ve engellerden zekice kaçan** bir robot arabanın yapımını adım adım inceliyoruz.

---

1. Sistemin Çalışma Mantığı ve "Kafasını Çeviren Robot" Mimarisi

Basit engelden kaçan robotlar sensörleri sabit olduğu için sadece önünü görür ve geri kaçar. Bizim inşa edeceğimiz gelişmiş modelde ise ultrasonik sensör bir **servo motorun üzerine (hareketli bir kafa gibi)** monte edilir:

1. Robot normal şartlarda düz ileri doğru ilerler.

2. Bu esnada servo motor sensörü tam karşıya (90 derece) bakar vaziyette tutar ve ön mesafeyi sürekli ölçer.

3. Önündeki engel **25 santimetrenin altına indiğinde** robot anında durur.

4. Servo motor sensörü önce **sağa (0 dereceye)** çevirir ve sağdaki mesafeyi hafızaya kaydeder.

5. Ardından sensörü **sola (180 dereceye)** çevirir ve soldaki mesafeyi kaydeder.

6. Arduino iki mesafeyi karşılaştırır:

  • Sağdaki mesafe daha açıksa: Robot sağa döner.
  • Soldaki mesafe daha açıksa: Robot sola döner.
  • Her iki taraf da tıkalıysa: Robot geri vitese takar, geri gider ve 180 derece arkasını döner.
  • 7. Servo tekrar 90 dereceye (karşıya) döner ve robot ileri gitmeye devam eder.

    Bu mimari robota gerçek bir yapay canlı hissi kazandırır.

    ---

    2. Gerekli Malzemeler Listesi

    | Malzeme | Adet | Açıklama |

    |---|---|---|

    | **Arduino Uno R3** | 1 | Ana işlemci kartı |

    | **2WD Robot Şasisi** | 1 | 2 DC motor, 2 tekerlek, sarhoş teker ve gövde |

    | **L298N Çift Motor Sürücü Modülü** | 1 | Motorlara yön ve güç veren sürücü |

    | **HC-SR04 Mesafe Sensörü** | 1 | Engelleri algılayan ultrasonik gözler |

    | **SG90 9g Mikro Servo Motor** | 1 | Sensörü sağa-sola döndüren kafa motoru |

    | **Ultrasonik Sensör Tutucu Aparat** | 1 | Sensörü servoya tutturan plastik/pleksi parça |

    | **2 Adet 18650 Li-ion Pil ve Yuvası** | 1 | 7.4V yüksek güçlü motor beslemesi |

    | **Jumper Kablolar** | 20+ | Devre bağlantıları |

    ---

    3. Devre Şeması ve Pin Bağlantı Rehberi

    A. L298N Motor Sürücü Pinleri:

  • **OUT1, OUT2:** Sol DC Motor
  • **OUT3, OUT4:** Sağ DC Motor
  • **12V Girişi:** 18650 Pillerin (+) kutbuna
  • **GND Girişi:** Pillerin (-) kutbuna VE **Arduino GND** pinine (Ortak GND!)
  • **IN1:** Arduino Pin 5
  • **IN2:** Arduino Pin 6
  • **IN3:** Arduino Pin 9
  • **IN4:** Arduino Pin 10
  • B. HC-SR04 ve Servo Bağlantıları:

  • **HC-SR04 Trig:** Arduino Pin 7
  • **HC-SR04 Echo:** Arduino Pin 8
  • **HC-SR04 VCC / GND:** Arduino 5V / GND
  • **SG90 Servo Sinyal (Turuncu):** Arduino Pin 11
  • **SG90 Servo Kırmızı / Kahverengi:** Arduino 5V / GND
  • ---

    4. Tam ve Çalışan Arduino C++ Kodları

    /*
     * RobotKodla.com - Otonom Sistemler
     * Proje: Gelişmiş Engelden Kaçan Robot (Servo Taramalı)
     */
    
    #include <Servo.h>
    
    // Motor Pinleri
    const int solMotorIleri = 5;
    const int solMotorGeri  = 6;
    const int sagMotorIleri = 9;
    const int sagMotorGeri  = 10;
    
    // Sensör Pinleri
    const int trigPin = 7;
    const int echoPin = 8;
    const int servoPin = 11;
    
    Servo kafaServosu;
    
    int sagMesafe = 0;
    int solMesafe = 0;
    int onMesafe  = 0;
    
    void setup() {
      pinMode(solMotorIleri, OUTPUT);
      pinMode(solMotorGeri, OUTPUT);
      pinMode(sagMotorIleri, OUTPUT);
      pinMode(sagMotorGeri, OUTPUT);
    
      pinMode(trigPin, OUTPUT);
      pinMode(echoPin, INPUT);
    
      kafaServosu.attach(servoPin);
      kafaServosu.write(90); // Karşıya bak
      delay(1000);
    }
    
    void loop() {
      onMesafe = mesafeOlc();
    
      // Eğer önünde 25 cm'den yakın engel varsa karar verme moduna geç
      if (onMesafe <= 25) {
        dur();
        delay(200);
        geriGit();
        delay(300);
        dur();
        delay(200);
    
        // Sağı kontrol et
        kafaServosu.write(20);
        delay(500);
        sagMesafe = mesafeOlc();
    
        // Solu kontrol et
        kafaServosu.write(160);
        delay(500);
        solMesafe = mesafeOlc();
    
        // Kafayı tekrar öne çevir
        kafaServosu.write(90);
        delay(300);
    
        // Karşılaştırma yap
        if (sagMesafe > solMesafe) {
          sagaDon();
          delay(400); // 90 derece sağa dön
        } else {
          solaDon();
          delay(400); // 90 derece sola dön
        }
        dur();
        delay(200);
      } else {
        ileriGit();
      }
    }
    
    int mesafeOlc() {
      digitalWrite(trigPin, LOW);
      delayMicroseconds(2);
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);
    
      long sure = pulseIn(echoPin, HIGH, 30000); // 30ms zaman aşımı
      if (sure == 0) return 400; // Yankı dönmezse yol açık kabul et
      return sure * 0.034 / 2;
    }
    
    void ileriGit() {
      digitalWrite(solMotorIleri, HIGH);
      digitalWrite(solMotorGeri, LOW);
      digitalWrite(sagMotorIleri, HIGH);
      digitalWrite(sagMotorGeri, LOW);
    }
    
    void geriGit() {
      digitalWrite(solMotorIleri, LOW);
      digitalWrite(solMotorGeri, HIGH);
      digitalWrite(sagMotorIleri, LOW);
      digitalWrite(sagMotorGeri, HIGH);
    }
    
    void sagaDon() {
      digitalWrite(solMotorIleri, HIGH);
      digitalWrite(solMotorGeri, LOW);
      digitalWrite(sagMotorIleri, LOW);
      digitalWrite(sagMotorGeri, HIGH);
    }
    
    void solaDon() {
      digitalWrite(solMotorIleri, LOW);
      digitalWrite(solMotorGeri, HIGH);
      digitalWrite(sagMotorIleri, HIGH);
      digitalWrite(sagMotorGeri, LOW);
    }
    
    void dur() {
      digitalWrite(solMotorIleri, LOW);
      digitalWrite(solMotorGeri, LOW);
      digitalWrite(sagMotorIleri, LOW);
      digitalWrite(sagMotorGeri, LOW);
    }

    ---

    5. Mekanik Montaj ve Ağırlık Merkezi Tavsiyeleri

    1. **Ağır Pilleri Alta Yerleştirin:** 18650 piller robotun en ağır parçalarıdır. Ağırlık merkezini yere yakın tutmak için pil yuvasını pleksi şasinin alt kısmına veya tam ortasına monte edin. Aksi halde robot ani duruşlarda öne doğru takla atabilir.

    2. **Kablo Esnekliği:** Servonun kafasını sağa sola çevirirken ultrasonik sensör kablolarının gerilip çıkmaması için kablolara biraz pay (boşluk) bırakın.

    3. **Sarhoş Tekerlek Yağlaması:** Ön sarhoş metal bilyenin içine bir damla makine yağı damlatmak dönüşlerdeki sürtünmeyi yok eder ve robotun zemin üzerinde kaymasını sağlar.

    ---

    6. Sık Karşılaşılan Sorunlar ve Çözümleri

    | Hata Belirtisi | Nedeni | Çözüm Adımı |

    |---|---|---|

    | Robot engele çarpıyor, hiç durmuyor | Ultrasonik sensör menzil aşımına düşüyor | Sensörün açı olarak yere çok eğik bakmadığından emin olun (yere çarpıp seker). |

    | Robot sağa dönmesi gerekirken sola dönüyor | Motor kutup kabloları ters bağlı | L298N üzerindeki OUT1-OUT2 veya OUT3-OUT4 klemens kablolarını ters çevirin. |

    | Servo kafa döndüğünde Arduino reset atıyor | Anlık akım yetersizliği | Servo ve Arduino 5V pinine paralel 470µF kondansatör takın veya pilleri şarj edin. |

    ---

    7. Kapsamlı Sıkça Sorulan Sorular (SSS)

    Robot ince masa bacaklarını neden algılayamıyor?

    HC-SR04 sensörünün yaydığı ses dalgası konik bir alana yayılır. Çok ince metal masa veya sandalye bacakları ses dalgalarını sağa sola saçar ve geri yansıtmaz. Bu kör noktaları kapatmak için robotun köşelerine minik dokunmatik switch (bumper) butonlar eklenebilir.

    Kaç santimetre engelde durması idealdir?

    Robotun hızına bağlı olarak **20 ile 30 cm** arası en ideal frenleme mesafesidir. 10 cm'nin altına inerseniz robot yüksek hızda giderken atalet nedeniyle duramayıp duvara çarpabilir.

    ---

    Sonuç

    Engelden kaçan robot projesi, yazılımla mekanik sistemlerin birleştiğinde ortaya çıkan otonom zekanın en somut kanıtıdır. Bu projeyi başarıyla bitirdikten sonra üzerine Bluetooth modülü ekleyerek hem manuel hem otonom modlar arasında geçiş yapabilen melez bir sistem tasarlayabilirsiniz. Detaylı yapım kılavuzları için sitemizin [Projeler](/projeler) sekmesini ziyaret edin!