Ana Sayfa · Akademi · Robotik ve Kodlama · Arduino · Ultrasonik Mesafe Sensörü

Ultrasonik Mesafe Sensörü

HC-SR04 ile mesafeyi ölçüp mesafeye göre karar vermeyi öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Ultrasonik mesafe sensörü, gönderdiği ses dalgasının geri dönme süresini ölçerek önündeki cismin ne kadar uzakta olduğunu santimetre cinsinden hesaplamamızı sağlar.

Üretilecek kanıt

Kendi park sensörünü yap. Amaç, cisim yaklaştıkça uyarının hızlanması. Yukarıdaki bağlantıyı kur (sensör + LED). loop içinde mesafeyi ölç. Üç seviyeli bir kural yaz: Mesafe 20 cm'den büyükse LED sönük kalsın. Mesafe 10–20 cm arasındaysa LED yavaş yanıp sönsün (örneğin 500 ms aralıkla). Mesafe 10 cm'den küçükse LED sürekli yansın. Elini yavaşça yaklaştırıp…

Kontrol tuzağı

Trig ve Echo pinlerini karıştırmak Trig çıkıştır ( OUTPUT ), Echo giriştir ( INPUT ). Kabloları ya da pinMode satırlarını ters yazarsan sensör hiç okuma yapmaz veya hep 0 verir. Süreyi ikiye bölmeyi unutmak Ses gidip geldiği için ölçülen süre çift yolu içerir. Bölmezsen ölçtüğün her mesafe gerçek değerin iki katı…

Sonraki bağlantı

Motor Sürücü: Bir DC motoru ayrı güç kaynağı ve sürücü kartıyla güvenle döndürmeyi ve mesafe sensörünün kararını harekete çevirmeyi öğreneceğiz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre25–35 dk
Ön koşulServo Kontrolü
İçerikStandart ders · 1.367 kelime
Son güncelleme

Bir cümlelik özet

Ultrasonik mesafe sensörü, gönderdiği ses dalgasının geri dönme süresini ölçerek önündeki cismin ne kadar uzakta olduğunu santimetre cinsinden hesaplamamızı sağlar.

Neden önemli?

Bir robotun duvara çarpmadan durabilmesi için önce "önümde bir şey var mı ve ne kadar uzakta?" sorusunu yanıtlaması gerekir. İnsan gözle bakar; robot ise mesafe sensörüyle "görür".

Ultrasonik sensör, yarasaların karanlıkta yön bulma yöntemiyle aynı fikri kullanır: bir ses gönder, yankısını dinle, geçen süreden uzaklığı hesapla. Bu yöntem ucuz, güvenli ve düşük gerilimle çalışır. Bu yüzden başlangıç robotiğinde en çok kullanılan sensörlerden biridir.

Günlük hayatta bu fikri iki yerde görürüz:

Bu derste kullanacağımız HC-SR04 sensörü tam olarak bu işi yapar ve Arduino ile birkaç bağlantıyla çalışır.

Sensör nasıl çalışır?

Ses gönder, yankıyı dinle

HC-SR04 sensöründe iki küçük silindir vardır. Biri verici (ses gönderir), diğeri alıcıdır (yankıyı dinler). Sensör insanın duyamayacağı kadar yüksek frekanslı (ultrasonik) bir ses darbesi gönderir. Bu ses bir cisme çarpıp geri döner.

Sensörün dört bacağı vardır:

Süreyi mesafeye çevirmek

İşin püf noktası şudur: sesin havadaki hızını biliyoruz, yaklaşık olarak saniyede 343 metre. Bunu sensörün kullandığı birime çevirirsek, ses her mikrosaniyede yaklaşık 0,0343 santimetre yol alır.

Sensör bize sesin gidip gelme süresini verir. Ama ses cisme gidip bir de geri döndüğü için bu süre iki katı yolu içerir. O yüzden ikiye böleriz:

mesafe = (gidiş-dönüş süresi × 0,0343) / 2

Örneğin süre 600 mikrosaniye ise: 600 × 0,0343 = 20,58; bunu 2'ye bölünce cisim yaklaşık 10 santimetre uzaktadır.

Arduino ile ölçüm yapmak

Bağlantı

Gerekli parçalar: bir Arduino Uno, bir HC-SR04 sensörü ve dört jumper kablo.

Tetikleme darbesi ve pulseIn

Ölçüm için Trig bacağına 10 mikrosaniyelik kısa bir HIGH sinyali gönderiyoruz. Sonra pulseIn fonksiyonu Echo bacağının ne kadar süre HIGH kaldığını mikrosaniye olarak ölçüyor. pulseIn, sinyalin başlamasını bekler, biter bitmez geçen süreyi verir.

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long sure = pulseIn(echoPin, HIGH);
  float mesafe = sure * 0.0343 / 2;

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

Kodu yükledikten sonra Seri Ekran'ı (Serial Monitor) 9600 baud ile açarsan, elini sensörün önünde yaklaştırıp uzaklaştırdıkça sayının değiştiğini görürsün.

Mesafeye göre karar vermek

Ölçtüğümüz mesafeyi bir koşulla birleştirince robot artık karar verebilir. Aşağıdaki sketch, cisim 10 santimetreden yakınsa bir LED yakar; bir park sensörünün "çok yaklaştın" uyarısının en basit hâlidir. LED için pin 4'e 220 ohm'luk bir direnç ve LED bağla.

const int trigPin = 9;
const int echoPin = 10;
const int ledPin = 4;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long sure = pulseIn(echoPin, HIGH);
  float mesafe = sure * 0.0343 / 2;

  if (mesafe < 10) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
  delay(100);
}

Bu iki koddaki ölçüm mantığı birebir aynıdır; ikincisine yalnızca bir karar adımı ekledik. Robotik projelerde bu karar genellikle "LED yak" değil, "motorları durdur veya yön değiştir" olur. Motor sürücüyü bir sonraki derste ekleyeceğiz.

Mini uygulama

Kendi park sensörünü yap. Amaç, cisim yaklaştıkça uyarının hızlanması.

  1. Yukarıdaki bağlantıyı kur (sensör + LED).
  2. loop içinde mesafeyi ölç.
  3. Üç seviyeli bir kural yaz:
  1. Elini yavaşça yaklaştırıp uyarının değişmesini gözle.

İpucu: Yanıp sönme için digitalWrite ile açıp delay ile bekleyip tekrar kapatabilirsin. İleride bu bekleme yerine millis ile bloklamayan zamanlama kullanmayı deneyebilirsin.

Uygulama laboratuvarı: Ultrasonik Mesafe Sensörü

Ultrasonik Mesafe Sensörü konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Sensör nasıl çalışır? ile Süreyi mesafeye çevirmek arasındaki ilişkiyi kullanarak bağlantı şeması, derlenebilen Arduino kodu, seri monitör kaydı ve test sonucu hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.

Görev senaryosu

Şu senaryoyu ele al: toprak nemini okuyup pompa yerine güvenli bir LED ile karar gösteren sulama prototipi. Dersin ana hedefi “HC-SR04 ile mesafeyi ölçüp mesafeye göre karar vermeyi öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.

Başarı ölçütleri

“Ultrasonik Mesafe Sensörü” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın toprak nemini okuyup pompa yerine güvenli bir LED ile karar gösteren sulama prototipi senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Sensör nasıl çalışır? ve Süreyi mesafeye çevirmek ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

Trig ve Echo pinlerini karıştırmak

Trig çıkıştır (OUTPUT), Echo giriştir (INPUT). Kabloları ya da pinMode satırlarını ters yazarsan sensör hiç okuma yapmaz veya hep 0 verir.

Süreyi ikiye bölmeyi unutmak

Ses gidip geldiği için ölçülen süre çift yolu içerir. Bölmezsen ölçtüğün her mesafe gerçek değerin iki katı çıkar.

Yanlış birim kullanmak

Ses hızını santimetre-mikrosaniye birimiyle (0,0343) kullanmalısın. Metre veya milisaniye ile karıştırırsan sonuç anlamsız olur.

Çok sık ölçüm yapmak

Ölçümler arasına küçük bir delay koymazsan bir önceki yankı yeni ölçüme karışabilir. Kısa bir bekleme (100–200 ms) okumaları daha kararlı yapar.

Güvenlik notu

Ders özeti

Kontrol soruları

  1. HC-SR04 sensörünün Trig ve Echo bacakları ne işe yarar?
  2. Ölçülen süreyi neden ikiye böleriz?
  3. pulseIn fonksiyonu hangi birimde değer döndürür ve neyi ölçer?
  4. Süre 1160 mikrosaniye ölçülürse cisim yaklaşık kaç santimetre uzaktadır?
  5. Neden mesafe sensörüyle bir motoru doğrudan aynı pinden süremeyiz?

Cevaplar

  1. Trig, sensöre "şimdi ölç" komutunu veren tetikleme çıkışıdır; Echo ise yankı döndüğünde geçen süreyi bildiren giriştir.
  2. Ses cisme gidip bir de geri döndüğü için ölçülen süre yolun iki katını içerir; gerçek mesafe için ikiye böleriz.
  3. pulseIn, Echo bacağının HIGH kaldığı süreyi mikrosaniye cinsinden döndürür; yani sesin gidiş-dönüş süresini ölçer.
  4. 1160 × 0,0343 = 39,79; ikiye bölünce yaklaşık 20 santimetre.
  5. Motor, Arduino pininin verebileceğinden çok daha fazla akım çeker ve pini bozabilir; bu yüzden ayrı güç kaynağı ve motor sürücü gerekir.

Kaynak ve doğrulama notu

“Ultrasonik Mesafe Sensörü” dersi için doğrulama odağı Sensör nasıl çalışır? ile Süreyi mesafeye çevirmek arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Arduino uyumlu kartlarda pin, gerilim ve akım sınırları modele göre değişebilir. Kod derlense bile devre güvenli olmayabileceğinden, motor ve servo gibi yükler uygun sürücü ve harici besleme ile kullanılmalıdır.

Sonraki ders

Motor Sürücü: Bir DC motoru ayrı güç kaynağı ve sürücü kartıyla güvenle döndürmeyi ve mesafe sensörünün kararını harekete çevirmeyi öğreneceğiz.

Quiz’i BaşlatArduino bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.