Arduino park sensörü, HC-SR04 ultrasonik mesafe sensörü, bir buzzer ve LED'lerle yapılabilen basit bir projedir. Sensör engele olan mesafeyi ölçer; Arduino mesafe azaldıkça buzzer'ın bip aralığını kısaltır ve yeşil, sarı, kırmızı LED'leri yakar. Çok yakın mesafede ses kesintisiz çalar ve sürücüye durması gerektiğini bildirir.
Arabalardaki geri park uyarısı, engel yaklaştıkça hızlanan bir bip sesiyle çalışır. Aynı sistemi bir Arduino, bir ultrasonik sensör ve birkaç LED ile masanızda kurabilirsiniz. Bu proje; garaj duvarı uyarısı, robot engel algılama ya da Arduino'ya yeni başlayanlar için ilk sensör uygulaması olarak işinize yarar.
Arduino park sensörü nedir?
Arduino park sensörü, ultrasonik bir sensörle engele olan mesafeyi ölçen ve mesafe azaldıkça sesli ve ışıklı uyarıyı sıklaştıran bir mesafe uyarı devresidir. Sensör, insan kulağının duyamayacağı 40 kHz'lik bir ses darbesi gönderir ve yankının dönme süresini ölçer. Arduino bu süreyi santimetreye çevirir. Sensörün çalışma ilkesini HC-SR04 ultrasonik sensör yazımızda ayrıntılı anlattık.
Park sensörü için hangi malzemeler gerekir?
Projenin temel malzemeleri bir Arduino kartı, HC-SR04 uyumlu bir ultrasonik sensör, aktif buzzer, üç LED ve dirençlerdir.
- Arduino kartı: Arduino Uno R3 SMD CH340 (USB kablo dahil)
- Ultrasonik sensör: HC-SR04 ya da onunla aynı Trig/Echo mantığıyla çalışan HC-SR04 ultrasonik mesafe sensörü
- Sesli uyarı: KY-012 buzzer modülü (aktif buzzer)
- Işıklı uyarı: yeşil, sarı ve kırmızı 5 mm LED; örneğin 5 mm LED seti ve her LED için 220 Ohm direnç
- Breadboard ve erkek-erkek jumper kablolar
- İsteğe bağlı: sensörü sabitlemek için HC-SR04 ultrasonik sensör tutucu
Projede aktif buzzer kullanıyoruz; çünkü aktif buzzer enerji verildiğinde kendi sesini üretir ve kodda yalnızca açıp kapatmak yeterlidir. Aktif ve pasif buzzer farkını buzzer aktif pasif farkı yazımızda bulabilirsiniz.
Park sensörü devresi nasıl bağlanır?
Sensörün Trig ve Echo uçları Arduino'nun iki dijital pinine, buzzer ve LED'ler ise diğer dijital pinlere bağlanır. Aşağıdaki tablo kodda kullanılan pinleri gösterir.
| Bileşen | Bileşen ucu | Arduino pini |
|---|---|---|
| HC-SR04 / HY-SRF05 | VCC | 5V |
| HC-SR04 / HY-SRF05 | Trig | D9 |
| HC-SR04 / HY-SRF05 | Echo | D10 |
| HC-SR04 / HY-SRF05 | GND | GND |
| KY-012 buzzer | S (sinyal) | D8 |
| Yeşil LED (220 Ohm ile) | Anot (uzun bacak) | D4 |
| Sarı LED (220 Ohm ile) | Anot (uzun bacak) | D5 |
| Kırmızı LED (220 Ohm ile) | Anot (uzun bacak) | D6 |
LED'lerin katotları (kısa bacak) ve buzzer modülünün eksi ucu GND hattına bağlanır. HY-SRF05 kullanıyorsanız OUT pinini boş bırakın; sensör bu durumda HC-SR04 gibi Trig ve Echo pinleriyle çalışır.
Park sensörü adım adım nasıl yapılır?
Devreyi breadboard üzerinde kurmak ve kodu yüklemek yaklaşık yarım saat sürer. Şu sırayı izleyin:
- Arduino'nun 5V ve GND pinlerini breadboard'un artı ve eksi hatlarına jumper kabloyla taşıyın.
- Ultrasonik sensörü breadboard'a takın; VCC, GND, Trig ve Echo bağlantılarını tablodaki gibi yapın.
- Üç LED'i dirençleriyle birlikte D4, D5 ve D6 pinlerine bağlayın.
- Buzzer modülünün sinyal ucunu D8'e, eksi ucunu GND'ye, varsa artı ucunu 5V'a bağlayın.
- Arduino IDE'yi açın, aşağıdaki kodu yapıştırın ve kartı USB ile bağlayıp yükleyin.
- Seri monitörü 9600 baud hızında açın ve elinizi sensöre yaklaştırarak ölçülen mesafeyi izleyin.
- Uyarı mesafelerini kendi kullanımınıza göre koddaki sayılarla ayarlayın.
Arduino park sensörü kodu nasıl çalışır?
Kod her döngüde mesafeyi ölçer, mesafeye göre LED'leri seçer ve buzzer'ın bip aralığını mesafeyle orantılı olarak ayarlar. Echo pinindeki darbenin mikrosaniye cinsinden süresi 58'e bölünerek yaklaşık santimetre değeri elde edilir.
const int TRIG = 9;
const int ECHO = 10;
const int BUZZER = 8;
const int LED_YESIL = 4;
const int LED_SARI = 5;
const int LED_KIRMIZI = 6;
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED_YESIL, OUTPUT);
pinMode(LED_SARI, OUTPUT);
pinMode(LED_KIRMIZI, OUTPUT);
Serial.begin(9600);
}
long mesafeOlc() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
unsigned long sure = pulseIn(ECHO, HIGH, 30000UL);
if (sure == 0) return -1; // yankı yok
return sure / 58; // santimetre
}
void loop() {
long cm = mesafeOlc();
Serial.println(cm);
digitalWrite(LED_YESIL, cm < 0 || cm > 50);
digitalWrite(LED_SARI, cm > 20 && cm <= 50);
digitalWrite(LED_KIRMIZI, cm >= 0 && cm <= 20);
if (cm < 0 || cm > 100) { // engel yok
digitalWrite(BUZZER, LOW);
delay(100);
return;
}
if (cm <= 10) { // çok yakın: sürekli ses
digitalWrite(BUZZER, HIGH);
delay(100);
return;
}
int ara = map(cm, 10, 100, 80, 600);
digitalWrite(BUZZER, HIGH);
delay(60);
digitalWrite(BUZZER, LOW);
delay(ara);
}| Mesafe | LED | Buzzer |
|---|---|---|
| 100 cm üzeri | Yeşil | Sessiz |
| 50–100 cm | Yeşil | Seyrek bip |
| 20–50 cm | Sarı | Sıklaşan bip |
| 10–20 cm | Kırmızı | Hızlı bip |
| 10 cm ve altı | Kırmızı | Kesintisiz ses |
pulseIn fonksiyonuna verilen 30000 mikrosaniyelik zaman aşımı, yankı gelmediğinde kodun takılmasını önler. map satırı 10–100 cm aralığını 80–600 ms bekleme süresine çevirir. Buzzer modülünüz ters mantıkla çalışıyorsa (LOW verince ötüyorsa) kodda HIGH ve LOW değerlerini yer değiştirin. Mesafeyi ekranda da görmek isterseniz SSD1306 OLED ekran ekleyebilirsiniz.
Park sensörü gerçek araçta kullanılabilir mi?
Bu devre bir öğrenme projesidir ve araçta kullanım için tek başına uygun değildir. HC-SR04 su geçirmez değildir; yağmur, çamur ve titreşim sensörü kısa sürede bozabilir. Araçta denemek istiyorsanız su geçirmez bir ultrasonik sensör, araç gerilimine uygun bir regülatör ve sağlam bir muhafaza gerekir. Ayrıca bu sistem ticari park sensörlerinin yerine geçmez; aracı kullanırken yalnızca bu uyarıya güvenmeyin.
Sık sorulan sorular
Park sensörü neden yanlış mesafe gösteriyor?
Yanlış ölçümün en yaygın nedenleri eğik ya da yumuşak yüzeyler, gevşek kablolar ve yetersiz beslemedir. Kumaş ve sünger gibi yüzeyler sesi emer, eğik yüzeyler ise yankıyı başka yöne yansıtır. Sensörü engele dik tutun, 5V hattının sağlam olduğundan emin olun ve birkaç ölçümün ortalamasını alarak dalgalanmayı azaltın.
HC-SR04 en fazla kaç metre ölçer?
HC-SR04 için üreticinin belirttiği ölçüm aralığı yaklaşık 2 cm ile 400 cm arasıdır. Pratikte düz ve sert bir yüzeyde güvenilir ölçüm genellikle birkaç metreyle sınırlı kalır. Çok yakın mesafede, yaklaşık 2 cm'nin altında, sensör yankıyı ayırt edemez. Park uyarısı için 1 metre içindeki ölçümler en çok işinize yarar.
Pasif buzzer ile park sensörü yapılabilir mi?
Evet, pasif buzzer da kullanılabilir; ancak kodda digitalWrite yerine tone fonksiyonu gerekir. Pasif buzzer kendi başına ses üretmez, Arduino'nun gönderdiği frekansta öter. Bunun avantajı, mesafeye göre hem bip aralığını hem de ses tonunu değiştirebilmenizdir. Örneğin engel yaklaştıkça tonu yükseltebilir, böylece uyarıyı daha kolay ayırt edilir hale getirebilirsiniz.
Birden fazla ultrasonik sensör kullanılabilir mi?
Evet, her sensöre ayrı Trig ve Echo pinleri vererek birden fazla sensör kullanabilirsiniz. Sensörleri aynı anda tetiklemeyin; birinin sesi diğerine yankı gibi ulaşıp yanlış ölçüme neden olabilir. Sensörleri sırayla ölçün ve aralarına birkaç on milisaniyelik bekleme koyun. Arduino Uno'nun dijital pinleri birkaç sensör için yeterlidir.
Park sensörü pil ile çalıştırılabilir mi?
Evet, Arduino Uno'yu 9V pil ya da uygun bir güç kaynağıyla DC jak girişinden besleyebilirsiniz. 9V pil uzun süreli kullanımda hızlı tükenir; daha uzun çalışma için birkaç kalem pilden oluşan bir paket ya da USB güç bankası tercih edilebilir. Sensör ve LED'ler 5V hattından beslenir.
Özet
- Arduino park sensörü; ultrasonik sensör, aktif buzzer ve üç LED ile kurulan basit bir mesafe uyarı devresidir.
- HC-SR04 ya da HY-SRF05 sensörünün Trig ucu D9'a, Echo ucu D10'a bağlanır; mesafe, darbe süresinin 58'e bölünmesiyle bulunur.
- Kod, mesafe azaldıkça bip aralığını kısaltır ve 10 cm altında sesi kesintisiz verir.
- Uyarı mesafeleri koddaki sayılar değiştirilerek kolayca ayarlanabilir.
- Bu proje öğrenme amaçlıdır; araçta kullanım için su geçirmez sensör ve sağlam muhafaza gerekir.
