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:

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!