Ana Sayfa · Akademi · Robotik ve Kodlama · Arduino · Proje: Akıllı Park Sensörü

Proje: Akıllı Park Sensörü

Ultrasonik sensör ve buzzer'la mesafeye göre hızlanarak öten bir park sensörü yap.

PROJE PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Ultrasonik bir sensörle mesafeyi ölçüp, engel yaklaştıkça daha hızlı öten bir buzzer çalıştırarak arabalardaki park sensörünün mantığını Arduino ile kuracağız.

Üretilecek kanıt

Devreyi kur, üç fonksiyonu tek bir dosyada birleştir ve Arduino'ya yükle. Sonra şu test senaryolarını sırayla dene: Elini sensörden 50 cm uzakta tut. Seri monitörde büyük bir sayı görmeli, buzzer sessiz olmalı. Elini yavaşça yaklaştır. 40 cm altına inince yavaş bipler başlamalı. 20 cm altına inince bipler sıklaşmalı. 10 cm altına inince bipler iyice…

Kontrol tuzağı

Trig ve Echo pinlerini karıştırmak Trig çıkış (OUTPUT), Echo giriş (INPUT) olmalıdır. İkisini pinMode içinde ters yazarsan sensör hiç ölçüm vermez. Kodun Trig'i tetikleyip Echo'yu dinlediğini kontrol et. delay yüzünden takılmak: bir hata ve düzeltmesi İlk denememizde buzzer çok yakınken bile tembel öttü. Sorun şuydu:…

Sonraki bağlantı

Proje: Çizgi İzleyen Robotun Mantığı

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre45–75 dk
Ön koşulKod Yapısını Fonksiyonlara Bölmek
İçerikProje rehberi · 1.504 kelime
Son güncelleme

Bir cümlelik özet

Ultrasonik bir sensörle mesafeyi ölçüp, engel yaklaştıkça daha hızlı öten bir buzzer çalıştırarak arabalardaki park sensörünün mantığını Arduino ile kuracağız.

Neden önemli?

Arabaların arkasındaki park sensörünü çoğumuz duymuşuzdur: duvara yaklaştıkça bip sesleri sıklaşır, iyice yaklaşınca neredeyse sürekli öter. Bu aslında karmaşık bir sihir değil, iki basit fikrin birleşimidir: mesafeyi ölçmek ve mesafeye göre karar vermek.

Bu projede o iki fikri kendi ellerimizle birleştiriyoruz. Ultrasonik sensör bize “engel kaç santimetre uzakta?” sorusunun cevabını verir. Kodumuz da bu cevaba bakarak buzzer'ın ne sıklıkta öteceğine karar verir.

Bu ders ayrıca bir dönüm noktası: artık tek bir görevi yapan küçük programlar değil, tam bir proje kuruyoruz. Malzemeyi seçeceğiz, bağlantıyı kuracağız, kodu fonksiyonlara böleceğiz, test edeceğiz ve çıkan bir hatayı düzelteceğiz. Gerçek bir mühendislik akışı böyle işler.

Nasıl çalışır: Ultrasonik sensör

Ses dalgasıyla mesafe ölçmek

HC-SR04 adlı ultrasonik sensör, tıpkı bir yarasa gibi çalışır. Kulağımızın duyamayacağı kadar yüksek bir ses dalgası gönderir, bu dalga bir engele çarpıp geri döner ve sensör dalganın gidip gelme süresini ölçer.

Sesin havadaki hızı yaklaşık saniyede 340 metredir. Gidiş-dönüş süresini bilirsek mesafeyi hesaplayabiliriz. Süreyi 58'e bölmek bize santimetre cinsinden mesafeyi verir (dalga iki yol katettiği için bu sayı kullanılır).

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

Günlük hayattan örnek: Yarasa ve yankı

Karanlık bir mağarada yarasa, ses çıkarıp yankısının ne zaman geri döndüğünü dinleyerek önündeki duvarı “görür”. Bizim sensörümüz de aynı yankı fikrini kullanır. Bir başka örnek gemilerdeki sonar cihazıdır: su altına ses gönderip yankısını dinleyerek denizin derinliğini ölçer.

Malzeme ve bağlantı

Gerekli malzemeler

Bağlantı şeması

Bağlantıları kısa bir liste olarak düşün:

Her şey USB veya pil paketiyle çalışan düşük gerilimdir; şebeke elektriği yoktur. İlk bağlantıyı yaparken Arduino'nun USB kablosunu bilgisayardan çıkarmak iyi bir alışkanlıktır.

Kodu fonksiyonlara bölmek

Bir önceki derste kodu fonksiyonlara bölmenin okumayı ve düzeltmeyi kolaylaştırdığını görmüştük. Bu projede iki fonksiyon kuracağız: biri mesafeyi ölçecek, diğeri o mesafeye göre buzzer'ı çalıştıracak.

Mesafe ölçen fonksiyon

long mesafeOlc() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);   // ses dalgasi gonder
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long sure = pulseIn(echoPin, HIGH);  // yankinin gelme suresi
  long mesafe = sure / 58;             // santimetreye cevir
  return mesafe;
}

pulseIn fonksiyonu, Echo ucunun ne kadar süre HIGH kaldığını mikrosaniye cinsinden ölçer. Bu süreyi 58'e bölünce santimetre cinsinden mesafeyi buluruz.

Buzzer'ı yöneten fonksiyon

Mesafe eşiklerine göre bekleme süresini değiştiririz. Engel yakınsa bekleme kısadır, bip sesleri sıklaşır.

void uyariVer(long mesafe) {
  int bekleme;
  if (mesafe < 10)       bekleme = 100;   // cok yakin
  else if (mesafe < 20)  bekleme = 300;
  else if (mesafe < 40)  bekleme = 600;
  else {
    noTone(buzzerPin);   // uzak: sessiz
    return;
  }
  tone(buzzerPin, 1000); // 1000 Hz oter
  delay(100);
  noTone(buzzerPin);
  delay(bekleme);        // eşige gore bekle
}

Kurulum ve ana döngü

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

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

void loop() {
  long mesafe = mesafeOlc();
  Serial.print("Mesafe: ");
  Serial.print(mesafe);
  Serial.println(" cm");
  uyariVer(mesafe);
}

Seri monitörü (9600 baud) açtığında ölçülen mesafeyi santimetre cinsinden akarken görürsün. Bu, eşikleri kendi odana göre ayarlamana yardım eder.

Mini uygulama

Devreyi kur, üç fonksiyonu tek bir dosyada birleştir ve Arduino'ya yükle. Sonra şu test senaryolarını sırayla dene:

  1. Elini sensörden 50 cm uzakta tut. Seri monitörde büyük bir sayı görmeli, buzzer sessiz olmalı.
  2. Elini yavaşça yaklaştır. 40 cm altına inince yavaş bipler başlamalı.
  3. 20 cm altına inince bipler sıklaşmalı.
  4. 10 cm altına inince bipler iyice hızlanmalı.
  5. Seri monitördeki sayılara bakarak eşikleri (10, 20, 40) kendi isteğine göre değiştir.

Küçük bir geliştirme denemesi: 10 cm altında tone frekansını 1000 yerine 1500 Hz yaparsan çok yakın uyarısı daha keskin duyulur.

Projeyi güçlendirme planı

Proje: Akıllı Park Sensörü için yalnız çalışan bir gösterim hazırlamak yeterli değildir. İyi bir proje; hedefi, kullanıcıyı, sınırları, test koşullarını ve başarısız denemeleri de görünür kılar. Bu genişletme çalışmasında potansiyometreyle servo açısını sınırlar içinde değiştiren düzenek bağlamını kullanarak bağlantı şeması, derlenebilen Arduino kodu, seri monitör kaydı ve test sonucu oluştur. Dersin hedefi “Ultrasonik sensör ve buzzer'la mesafeye göre hızlanarak öten bir park sensörü yap” olsa da proje sayfasında ölçülmemiş bir sonucu kesin başarı gibi yazma.

1. Proje özeti ve kapsam

Önce üç cümle yaz: Çözmek istediğin sorun nedir, bu sorun kimin için önemlidir ve ilk sürüm özellikle neyi yapmayacaktır? Kapsam dışını belirtmek projeyi küçültmez; tamamlanabilir hâle getirir. Nasıl çalışır: Ultrasonik sensör ile Günlük hayattan örnek: Yarasa ve yankı arasındaki ilişkiyi projenin temel varsayımı olarak yaz ve bu varsayımı hangi testin doğrulayacağını belirt.

2. Kabul ölçütleri

“Proje: Akıllı Park Sensörü” için kabul ölçütlerini “çalışıyor” gibi belirsiz sözcüklerle bırakma. Süre, mesafe, doğru deneme sayısı, ekran genişliği veya kullanıcı adımı gibi gözlenebilir bir ölçü seç. Ölçüm mümkün değilse en azından üç ardışık denemede aynı davranışın görülüp görülmediğini kaydet.

3. Test matrisi

3. Test matrisi tablosu
TestKoşulBeklenenGerçek sonuçSonraki karar
NormalStandart giriş ve tam bağlantıTemel görev tamamlanırTest sırasında doldurKoru veya küçük iyileştirme yap
SınırEn düşük ya da en yüksek kabul edilen değerSistem kararlı kalırTest sırasında doldurEşiği veya kuralı gözden geçir
HataEksik, yanlış ya da beklenmeyen girişGüvenli ve anlaşılır tepkiTest sırasında doldurHata yönetimi ekle
TekrarAynı koşulda en az üç denemeBenzer sonuçlarTest sırasında doldurTutarsızlığın kaynağını araştır

4. Sürüm günlüğü

“Proje: Akıllı Park Sensörü” projesinin her sürümü için tarih, değiştirdiğin tek ana karar, değişikliğin nedeni ve test sonucu yaz. İlk sürümün çalışmaması başarısızlık değildir; Nasıl çalışır: Ultrasonik sensör veya Günlük hayattan örnek: Yarasa ve yankı ile ilgili hangi varsayımın yeniden düşünülmesi gerektiğini gösteren veridir. Görsel kullanırken kişisel bilgi ve özel arka plan ayrıntılarını paylaşma.

5. Sunum ve öz değerlendirme

“Proje: Akıllı Park Sensörü” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, potansiyometreyle servo açısını sınırlar içinde değiştiren düzenek için en önemli test sonucu ve bir sonraki adım. “Tamamlandı” demek yerine hangi kısmın doğrulandığını ve hangi kısmın hâlâ geliştirilmesi gerektiğini açıkla.

Sık yapılan hatalar

Trig ve Echo pinlerini karıştırmak

Trig çıkış (OUTPUT), Echo giriş (INPUT) olmalıdır. İkisini pinMode içinde ters yazarsan sensör hiç ölçüm vermez. Kodun Trig'i tetikleyip Echo'yu dinlediğini kontrol et.

delay yüzünden takılmak: bir hata ve düzeltmesi

İlk denememizde buzzer çok yakınken bile tembel öttü. Sorun şuydu: uzak mesafede uyariVer fonksiyonu return ile çıkıyordu ama biz noTone yazmayı unutmuştuk, bu yüzden buzzer bir önceki sesi sürdürüyordu.

// Yanlis: uzakta ses kesilmiyordu
else {
  return;
}

Düzeltme, return'den önce sesi kapatmaktı:

// Dogru: once sustur, sonra cik
else {
  noTone(buzzerPin);
  return;
}

Küçük bir eksik satır, davranışı tamamen değiştirebilir. Yukarıdaki tam kodda düzeltilmiş hali kullandık.

Sensörü yumuşak yüzeye çevirmek

Ultrasonik dalga, kumaş veya sünger gibi yumuşak yüzeylerde iyi yansımaz; ölçümler sıçrayabilir. Test ederken sert ve düz bir yüzey (kitap, duvar) kullan.

Güvenlik notu

Park sensörü için ölçümlü test planı

Prototip, gerçek araç güvenlik sistemi olarak değil, mesafe ölçümü ve geri bildirim mantığını öğrenmek için değerlendirilmelidir. Sensör 5, 10, 20, 40 ve 80 santimetrede sabit bir hedefle denenir; her konumda en az beş okuma alınır. Beklenen ses veya ışık davranışı, ölçümlerin yayılımı ve yanlış alarm sayısı tabloya yazılır. Yumuşak kumaş, eğimli yüzey ve dar cisim gibi ultrasonu farklı yansıtan hedefler ayrıca denenerek sensörün sınırları görünür hâle getirilir.

Güvenli tasarımda motor veya araç hareketi kontrol edilmez. Sistem yalnız masa üstü eğitim düzeneğinde uyarı üretir. Ölçüm alınamazsa “yol açık” varsaymak yerine hata durumu gösterir. Bu tercih, sensör verisinin yokluğunu güvenli bilgiyle karıştırmama ilkesini öğretir.

Ders özeti

Kontrol soruları

  1. HC-SR04 sensörü mesafeyi hangi fiziksel olayı kullanarak ölçer?
  2. Trig ve Echo pinlerinden hangisi çıkış (OUTPUT), hangisi giriştir (INPUT)?
  3. pulseIn fonksiyonundan gelen süreyi neden 58'e böleriz?
  4. Buzzer engel yaklaştıkça neden daha sık öter? Kodun hangi kısmı bunu sağlar?
  5. Uzak mesafede buzzer'ın susması için uyariVer içinde hangi satır gereklidir?

Cevaplar

  1. Ses dalgasının (ultrasonik) bir engele çarpıp geri dönmesini, yani yankıyı kullanır. Gidiş-dönüş süresinden mesafe hesaplanır.
  2. Trig çıkıştır (OUTPUT), çünkü ona sinyal göndeririz; Echo giriştir (INPUT), çünkü ondan sinyal okuruz.
  3. Ses dalgası hem gidip hem geldiği için toplam yolu iki katıdır; 58'e bölmek bu gidiş-dönüşü hesaba katarak süreyi santimetreye çevirir.
  4. Mesafe küçüldükçe if blokları daha kısa bir bekleme değeri seçer; delay(bekleme) kısaldığı için bipler arasındaki boşluk azalır ve sesler sıklaşır.
  5. noTone(buzzerPin); satırı gereklidir; return'den önce sesi kapatarak buzzer'ın önceki sesi sürdürmesini engeller.

Kaynak ve doğrulama notu

“Proje: Akıllı Park Sensörü” dersi için doğrulama odağı Nasıl çalışır: Ultrasonik sensör ile Günlük hayattan örnek: Yarasa ve yankı 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

Proje: Çizgi İzleyen Robotun Mantığı

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.