HC-SR04 Mesafe Alarmı
Proje Amacı
Ultrasonik ses dalgalarıyla önündeki nesneye olan mesafeyi ölçüp, mesafe 20 cm'nin altına düştüğünde buzzer ile sesli alarm verir. Araçlardaki park sensörü de birebir aynı ölçüm yöntemini (ses dalgasının gidiş-dönüş süresini) kullanır.
Gerekli Malzemeler
- Arduino Uno
- HC-SR04 Ultrasonik Mesafe Sensörü
- Pasif Buzzer (tone() fonksiyonu için gereklidir)
- Breadboard
- Jumper kablolar
Gerekli Kütüphaneler
Gerekli ek kütüphane yok, tone()/noTone() Arduino IDE'de yerleşik gelir.
Pin Bağlantıları
| Bileşen Pini | Bağlantı |
|---|---|
| VCC | 5V |
| GND | GND |
| TRIG | D9 |
| ECHO | D10 |
| Buzzer + | D8 |
| Buzzer - | GND |
Devre Şeması
Arduino Kodu
| 1 | const int TRIG=9, ECHO=10, BUZZER=8; |
| 2 | const int ESIK_MESAFE=20; |
| 3 | |
| 4 | void setup() { |
| 5 | pinMode(TRIG, OUTPUT); |
| 6 | pinMode(ECHO, INPUT); |
| 7 | pinMode(BUZZER, OUTPUT); |
| 8 | Serial.begin(9600); |
| 9 | } |
| 10 | |
| 11 | void loop() { |
| 12 | digitalWrite(TRIG, LOW); |
| 13 | delayMicroseconds(2); |
| 14 | digitalWrite(TRIG, HIGH); |
| 15 | delayMicroseconds(10); |
| 16 | digitalWrite(TRIG, LOW); |
| 17 | |
| 18 | long sure = pulseIn(ECHO, HIGH, 30000); |
| 19 | float mesafe = sure * 0.0343 / 2.0; |
| 20 | |
| 21 | Serial.print("Mesafe: "); |
| 22 | Serial.print(mesafe); |
| 23 | Serial.println(" cm"); |
| 24 | |
| 25 | if (sure && mesafe < ESIK_MESAFE) tone(BUZZER, 2000); |
| 26 | else noTone(BUZZER); |
| 27 | |
| 28 | delay(100); |
| 29 | } |
Çalışma Açıklaması
TRIG ve ECHO pinleri karıştırılmamalı. Sensör 2-400 cm aralığında güvenilir ölçer. Yumuşak/yansıtıcı olmayan yüzeyler hatalı ölçüme yol açabilir.
Test Bilgisi
Devreyi kurun, kodu yükleyin, Seri Monitör'ü açın. Elinizi sensörün önünde yavaşça yaklaştırıp uzaklaştırın; mesafe değerinin gerçekçi değiştiğini doğrulayın. 20 cm'nin altına indiğinizde buzzer çalmalı.
Olası Sorunlar ve Çözümleri
Mesafe hep 0 veya çok büyük geliyorsa: TRIG/ECHO pinlerinin ters bağlanmadığından emin olun. Ölçüm kararsızsa: sensörün önünde yumuşak/emici yüzey (kumaş, sünger) olmadığını kontrol edin, sert düz yüzeylerde test edin. Buzzer hiç çalmıyorsa: aktif buzzer yerine yanlışlıkla pasif buzzer takılmış olabilir, iki uçlu ölçümle (multimetre veya pil ile direkt test) ayırt edin.
Alternatif Çözümler
Aktif buzzer yerine pasif buzzer + tone() fonksiyonu kullanılarak farklı frekanslarda uyarı sesleri üretilebilir. Sabit 20 cm eşiği yerine bir potansiyometre ile kullanıcı ayarlanabilir mesafe eşiği ekleyebilir. Buzzer yerine/yanında LED şerit eklenerek mesafe azaldıkça renk değiştiren görsel bir gösterge de yapılabilir.
Benzer Projeler
LDR Otomatik Lamba
Ortam ışığı belli bir eşiğin altına düşünce bir LED'i (gerçek uygulamada bir röle üzerinden lambayı) otomatik yakar, ışık geri gelince söndürür — sokak lambalarının kullandığı fotosel mantığının ta kendisi.
Yağmur Sensörü
Balkon kapısını açık unutup yağmura yakalanma sorununa karşı: yağış algılandığında LED ile görsel uyarı verir, sensör değerini de Seri Port'a yazar.
Toprak Nem Sensörü
Toprağın nem seviyesini ölçüp kuruduğunda LED ile uyarır — proje #23'te aynı sensör bir su pompasını tetikleyecek şekilde genişletiliyor.