Bir cümlelik özet
Bu projede bir mesafe sensörü kullanarak, bir nesne belirlediğimiz sınırdan daha yakına geldiğinde LED ve buzzer ile uyaran küçük bir sistem kuracak; eşik seçmeyi, yanlış okumaları filtrelemeyi ve sistemi test edip düzeltmeyi öğreneceğiz.
Neden önemli?
Önceki projede bir sensörün (ışık sensörü) değerine bakıp bir çıkışı (lamba) otomatik olarak açan bir sistem kurmuştuk. Şimdi aynı fikri bir adım ileri taşıyoruz: bu kez ölçtüğümüz şey mesafe, verdiğimiz tepki ise bir uyarı.
Mesafe uyarı sistemi, gerçek dünyada çok yaygın bir kalıptır: "bir şey fazla yaklaştıysa haber ver." Bunu günlük hayatta zaten görüyorsun:
- Araba park sensörü: Geri geri park ederken duvara yaklaştıkça "bip... bip... biiip" sesi hızlanır; araç mesafeyi ölçer ve küçüldükçe uyarıyı sıklaştırır.
- Kör nokta uyarısı: Bazı araçlarda yan aynanın yanındaki ışık, yandaki şeritte bir araç fazla yaklaşınca yanar.
Bu projede bir sensörden okuma yapmayı, okumayı bir eşik ile karşılaştırmayı, gürültülü ölçümleri temizlemeyi ve sistemi baştan sona test etmeyi bir arada uygularsın. Bunlar, ileride kuracağın daha büyük robot ve otomasyon projelerinin de temelidir.
Ne kuracağız?
Sistemin fikri
Sistemin görevi tek cümleyle şudur: Sensörün önündeki bir nesne belirlediğimiz sınırdan daha yakına gelirse LED yansın ve buzzer ötsün; nesne uzaklaşınca ikisi de sussun.
Buradaki "sınır" değere eşik (İngilizcesi *threshold*) diyoruz: "bundan yakınsa tehlike" dediğimiz mesafe. Eşiği 15 santimetre seçersek, 15 santimetreden yakın her nesne uyarıyı tetikler.
Bu projede kart hareketli bir robot değildir; masada durur, yalnızca ölçüp uyarır. Bu da onu güvenli ve kurması kolay bir başlangıç projesi yapar.
Malzeme listesi
Tüm parçalar düşük gerilimlidir. Şebeke elektriği veya priz kesinlikle kullanılmaz.
| Parça | Adet | Not |
|---|---|---|
| micro:bit veya Arduino kartı | 1 | Kartın çalışma gerilimine uygun sensör seç |
| Ultrasonik mesafe sensörü | 1 | HC-SR04 tarzı; TRIG ve ECHO uçlu |
| Aktif buzzer (3–5 V) | 1 | Doğrudan öten tip |
| LED (kırmızı) | 1 | Uzun bacak artı (+) uç |
| Direnç | 1 | 330 Ω, LED için akım sınırlama |
| Breadboard | 1 | Lehimsiz bağlantı için |
| Jumper kablo | 6–8 | Erkek-erkek / erkek-dişi |
| USB kablosu veya pil paketi | 1 | Yalnızca düşük gerilimli besleme |
Şema (metin)
Aşağıda bağlantıları sözle çizdik. [ ] bir parçayı, ─── bir kabloyu gösterir. Tüm parçalar aynı toprağı (GND) paylaşır; bu, elektroniğin ortak "sıfır" noktasıdır.
[Kart 3–5V] ─── [Sensör VCC]
[Kart GND] ─── [Sensör GND] ─── [Buzzer −] ─── [LED kısa bacak −]
[Kart P0] ─── [Sensör TRIG] (ölçüm başlat sinyali)
[Kart P1] ─── [Sensör ECHO] (yankı geri dönüş sinyali)
[Kart P2] ─── [Buzzer +]
[Kart P8] ─── [Direnç 330Ω] ─── [LED uzun bacak +]
Okuma sırası: kart TRIG ucundan sensöre "ölç" der, sensör ses dalgası gönderir, dalga geri dönünce ECHO ucundan haber gelir. Kart bu süreden mesafeyi hesaplar. Sonra bu mesafeye bakıp buzzer (P2) ve LED (P8) uçlarını açık veya kapalı tutar.
Kodun mantığı: eşiği aşınca uyar
Sensörden gelen sayı tek başına bir şey yapmaz. Asıl iş, o sayıya bakıp bir karar vermektir. Bunun için Algoritmalar dersinden bildiğimiz koşul yapısını kullanırız: mesafe eşikten küçükse uyar, değilse sus.
Sözde kod
Başla
eşik = 15 (santimetre)
Sürekli tekrarla:
mesafe = sensörü oku
Eğer mesafe eşikten küçükse
buzzer'ı öttür
kırmızı LED'i yak
Değilse
buzzer'ı sustur
LED'i söndür
Bitir
Dikkat et: ölçüm bir döngü içinde, tekrar tekrar yapılır. Çünkü nesne her an hareket edebilir. Ölçümü yalnız bir kez yaparsak sistem değişen ortamı göremez.
micro:bit tarzı örnek
oku_mesafe() yerine kullandığın sensöre uygun blok ya da fonksiyon gelir; mantık aynı kalır.
esik = 15 # santimetre
while True:
mesafe = oku_mesafe() # sensörden santimetre oku
if mesafe < esik:
buzzer_ac() # nesne çok yakın
led_ac()
else:
buzzer_kapat() # yol boş
led_kapat()
Eşik, filtreleme ve kalibrasyon
Basit hâliyle sistem çalışır; ama gerçek sensörler biraz "gürültülüdür". Bu bölümde sistemi daha güvenilir yapan üç fikri ekliyoruz.
Eşiği doğru seçmek
Eşik çok büyükse (örneğin 100 santimetre) sistem sürekli öter; odadaki her şey "yakın" sayılır. Eşik çok küçükse (örneğin 2 santimetre) nesne neredeyse sensöre değene kadar uyarı gelmez. İyi bir eşik, uyarının işe yaradığı ama seni boğmadığı bir aralıktır. Bunu deneyerek bulursun.
Filtreleme: tek bir kötü okumaya kanma
Ultrasonik sensörler bazen aniden çok küçük ya da çok büyük bir sayı verir. Buna gürültü denir. Tek bir hatalı okuma yüzünden buzzer'ın boşuna ötmesini istemeyiz. Çözüm: birkaç ölçüm alıp ortancasını (ortadaki değeri) kullanmak. Böylece arada sırada gelen uç değerler kararı bozamaz.
mesafe1 = sensörü oku
mesafe2 = sensörü oku
mesafe3 = sensörü oku
mesafe = bu üç değerin ortancası
Eğer mesafe eşikten küçükse
uyar
Titremeyi önlemek: iki eşik
Nesne tam eşikte durursa sistem hızlı hızlı açılıp kapanabilir. Bunu iki eşikle (histerezis) yumuşatırız: uyarı 15 santimetrede başlasın, ama 20 santimetreye kadar uzaklaşmadan kapanmasın.
Kalibrasyon
Sensörü yerleştirince bilinen bir mesafeyi (örneğin cetvelle 20 santimetre) ölç ve ekrana bak. Sürekli 2–3 santimetre şaşıyorsa eşiğini bu farka göre ayarla. Bir sensörü gerçek dünyaya göre ayarlamaya kalibrasyon denir.
Test, hata ve geliştirme
Test senaryoları
Sistemi kurduktan sonra tek tek dene:
- Test 1 — Boşta: Sensörün önünde hiçbir şey yokken sistem sessiz olmalı.
- Test 2 — Yaklaştır: Elini yavaşça yaklaştır. Eşiği geçtiğin anda buzzer ötmeli, LED yanmalı.
- Test 3 — Uzaklaştır: Elini geri çek. Uyarı susmalı.
- Test 4 — Kararlılık: Elini eşik civarında sabit tut. Sistem çılgınca açılıp kapanmamalı; sakin durmalı.
Bir hata ve düzeltmesi
Kurulumda çok sık görülen bir sorun şudur: sensörün önünde hiçbir şey yokken buzzer arada bir kendiliğinden ötüyor.
Belirti: Önünde nesne yokken buzzer rastgele bip diyor.
1. Okumayı gözle:
Ekrana mesafeyi yazdır. Ara sıra 2 veya 400 gibi
uç bir değer görüyorsan, bu bir gürültü okumasıdır.
2. Neden oluyor?
Tek bir ölçüm bazen yanlış gelir; sistem bu yanlış
değere bakıp "yakın!" diyerek buzzer'ı tetikler.
3. Düzeltme — filtreleme:
Üç ölçümün ortancasını al, tek okumaya güvenme.
4. Düzeltme — makul aralık:
Sensörün ölçebileceği aralığın dışındaki değerleri
(örneğin 2 cm altı ya da 400 cm üstü) yok say.
Çoğu zaman çözüm filtrelemedir. Tek seferde bir şeyi değiştir ve tekrar dene; böylece hangi değişikliğin sorunu çözdüğünü net görürsün. İlk denemede kusursuz çalışmaması normaldir; hatayı bulup düzeltmek bu işin en öğretici kısmıdır.
Geliştirme fikirleri
Temel sistem çalıştıysa şunları deneyebilirsin:
- Kademeli uyarı: Park sensörü gibi, mesafe küçüldükçe buzzer'ı daha sık öttür.
- Sessiz mod: Bir butonla buzzer'ı kapatıp yalnız LED ile uyar.
- İki renkli gösterge: Yol boşken yeşil, tehlike anında kırmızı LED yak.
Mini uygulama
Kâğıt üzerinde şu görevi tamamla:
Bir kütüphanenin sessiz çalışma masası için bir sistem tasarlıyorsun: biri masaya 30 santimetreden yakın gelince yumuşak bir ışık yansın, ama ses olmasın. Aşağıdaki sözde kodun boşluklarını doldur:
esik = ____
mesafe = sensörü oku
Eğer mesafe ____ ise
____
Değilse
____
Sorular:
- Neden buzzer yerine yalnız LED kullandın?
- Bu ortamda eşiği neden 30 santimetre gibi büyükçe bir değer seçmek mantıklı?
Projeyi güçlendirme planı
Proje: Mesafe Uyarı Sistemi 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 karanlıkta açılıp aydınlıkta kapanan gece lambası bağlamını kullanarak ölçüm tablosu, kalibrasyon kararı ve güvenli çıktı davranışı oluştur. Dersin hedefi “Mesafe sensörüyle bir nesne yaklaşınca uyaran, filtrelenmiş ve kalibre bir sistem 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. Ne kuracağız? ile Malzeme listesi arasındaki ilişkiyi projenin temel varsayımı olarak yaz ve bu varsayımı hangi testin doğrulayacağını belirt.
2. Kabul ölçütleri
- Sensör değeri farklı koşullarda kaydedildi mi?
- Eşik değeri tek ölçüme değil gözleme dayanıyor mu?
- Gürültülü veri filtreleniyor veya ortalanıyor mu?
- Aktüatör güvenli başlangıç durumunda mı?
- Sensör koparsa sistemin nasıl davranacağı tanımlı mı?
“Proje: Mesafe Uyarı Sistemi” 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
| Test | Koşul | Beklenen | Gerçek sonuç | Sonraki karar |
|---|---|---|---|---|
| Normal | Standart giriş ve tam bağlantı | Temel görev tamamlanır | Test sırasında doldur | Koru veya küçük iyileştirme yap |
| Sınır | En düşük ya da en yüksek kabul edilen değer | Sistem kararlı kalır | Test sırasında doldur | Eşiği veya kuralı gözden geçir |
| Hata | Eksik, yanlış ya da beklenmeyen giriş | Güvenli ve anlaşılır tepki | Test sırasında doldur | Hata yönetimi ekle |
| Tekrar | Aynı koşulda en az üç deneme | Benzer sonuçlar | Test sırasında doldur | Tutarsızlığın kaynağını araştır |
4. Sürüm günlüğü
“Proje: Mesafe Uyarı Sistemi” 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; Ne kuracağız? veya Malzeme listesi 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: Mesafe Uyarı Sistemi” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, karanlıkta açılıp aydınlıkta kapanan gece lambası 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
Eşiği hiç belirlememek
Sensör sayısını bir eşikle karşılaştırmazsan sistem karar veremez. Mutlaka bir "şundan yakınsa" koşulu olmalı.
Ölçümü döngüye almamak
Mesafe sürekli değişir. Başta bir kez ölçersen sistem hareketi kaçırır; ölçüm bir döngü içinde tekrarlanmalı.
Tek okumaya güvenmek
Tek ölçüm bazen yanlış gelir; filtreleme yapmazsan buzzer boşuna öter. Birkaç ölçümün ortancasını kullan.
Ortak toprağı unutmak
Sensör, buzzer, LED ve kart aynı GND hattını paylaşmazsa sistem düzgün çalışmaz. Tüm eksi uçlar ortak toprağa bağlı olmalı.
Güvenlik notu
- Bu sistemde yalnızca düşük gerilimli kaynak kullanılır: USB, micro:bit ya da uygun bir pil paketi (3–5 V). Şebeke elektriği, priz veya açıkta duran ev kablosu asla kullanılmaz.
- Bu projede motor veya dönen parça yoktur; bu onu güvenli kılar. Yine de bir motor eklemek istersen, motoru asla kartın pininden doğrudan besleme; bir motor sürücü ve ayrı, uygun bir güç kaynağı kullan.
- Sensör ve buzzer çok az akım çeker; yine de bağlantıları değiştirirken önce enerjiyi (USB veya pili) kes, en son enerji ver.
- Buzzer'ı uzun süre kulağına yakın tutma; sürekli yüksek ses rahatsız edici olabilir.
- Kabloları, LED'i ve sensörü bir yetişkin gözetiminde bağla; kutupları (+ ve −) şemayla karşılaştır.
Ders özeti
- Mesafe uyarı sistemi, bir nesne belirlediğimiz eşikten yakına gelince LED ve buzzer ile uyaran, tamamen düşük gerilimli bir sistemdir.
- Temel mantık bir koşuldur: mesafe eşikten küçükse uyar, değilse sus; ve bu bir döngü içinde tekrarlanır.
- İyi bir eşik deneyerek seçilir; çok büyük eşik sürekli öter, çok küçük eşik geç uyarır.
- Sensörler gürültülüdür; birkaç ölçümün ortancasını almak (filtreleme) ve kalibrasyon sistemi güvenilir yapar.
- Sistem test senaryolarıyla doğrulanır; yanlış ötme genelde tek okumaya güvenmekten gelir ve filtrelemeyle düzelir.
Kontrol soruları
- Bu sistemde "eşik" ne demektir ve ne işe yarar?
- Mesafe uyarı sisteminde tek ölçüm yerine ardışık ölçümler hangi değişimi yakalar?
- Sensörün önünde nesne yokken buzzer arada bir ötüyor. Muhtemel sebep nedir ve nasıl düzeltirsin?
- Eşiği çok büyük (örneğin 100 santimetre) seçersen ne olur?
- Mesafe uyarı prototipi neden yalnız düşük gerilimli eğitim kaynağıyla sınırlandırılır?
Cevaplar
- Eşik, "bundan yakınsa tehlike" dediğimiz sınır mesafedir; uyarının ne zaman başlayacağına o karar verir.
- Çünkü nesnenin konumu sürekli değişir. Bir kez ölçersek hareketi göremeyiz; döngü sayesinde mesafe her an güncellenir.
- Muhtemel sebep gürültülü tek bir okumadır; sensör ara sıra çok küçük bir değer verir ve sistem "yakın" sanır. Çözüm: birkaç ölçümün ortancasını almak ve makul aralık dışındaki değerleri yok saymak (filtreleme).
- Sistem neredeyse sürekli öter; her şey "yakın" sayılır ve uyarı işe yaramaz. Eşiği daha küçük, anlamlı bir değere çekmek gerekir.
- Şebeke elektriği yüksek gerilimli ve tehlikelidir. Öğrenme projelerinde yalnızca USB, micro:bit veya pil gibi düşük gerilimli kaynaklar kullanılır.
Kaynak ve doğrulama notu
“Proje: Mesafe Uyarı Sistemi” dersi için doğrulama odağı Ne kuracağız? ile Malzeme listesi arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Sensör değerleri modele, besleme gerilimine ve ortama göre değişebilir. Bu nedenle derslerdeki eşikler örnek kabul edilmeli; gerçek projede ölçüm tablosu oluşturularak kalibrasyon yapılmalıdır.
Sonraki ders
micro:bit modülü: Bu modülde öğrendiğimiz sensör ve çıkış fikirlerini micro:bit üzerinde programlayarak gerçek, çalışan küçük projelere dönüştürmeye başlayacağız.