Arduino ile HC-SR04 Ultrasonik Mesafe Sensörü Kurulumu
Arduino HC-SR04 mesafe sensörü kurulumu: bağlantı şeması, pin tablosu ve hazır Arduino koduyla ultrasonik sensörü 30 dakikada çalıştırın, mesafeyi ölçün.

Güvenlik Uyarısı
Elektronik cihazları tamir etmek garantiyi geçersiz kılabilir. Çalışmaya başlamadan önce cihazın fişten çekildiğinden ve bataryasının çıkarıldığından emin olun. Statik elektrik bileşenlere zarar verebilir.
HC-SR04 ultrasonik mesafe sensörünü Arduino'ya bağlamak için yalnızca dört kablo yeterlidir: VCC pinini 5V'a, GND pinini GND'ye, Trig pinini bir dijital pine (bu rehberde D10) ve Echo pinini başka bir dijital pine (D9) bağlarsınız. Ardından Trig pinine 10 mikrosaniyelik bir darbe gönderip Echo pinindeki darbenin süresini ölçen kısa bir kodla mesafeyi santimetre cinsinden okursunuz. Sensör yaklaşık 2 cm ile 4 m arasında ölçüm yapar ve tüm kurulum 30 dakikadan kısa sürer.
Gerekli Malzemeler ve Aletler
- Arduino Uno (veya Nano, Mega gibi 5V çalışan uyumlu bir kart)
- HC-SR04 ultrasonik mesafe sensörü
- 4 adet erkek-dişi jumper kablo (breadboard kullanacaksanız erkek-erkek)
- İsteğe bağlı: küçük bir breadboard
- USB kablosu (kartınıza göre USB-B veya USB-C)
- Arduino IDE yüklü bir bilgisayar
Sensör ve geliştirme kartlarını elektronik ürünleri sayfamızda bulabilirsiniz.
Başlamadan Önce
Bağlantıyı enerjisizken yapın
HC-SR04'ün çalışma prensibini bilmek, kodu anlamayı kolaylaştırır. Sensörün bir tarafındaki verici (T) insan kulağının duyamayacağı 40 kHz'lik bir ses dalgası yayar. Dalga bir nesneye çarpıp geri döndüğünde alıcı (R) bunu algılar. Echo pini, sesin gidip gelmesi süresince HIGH konumunda kalır. Ses havada saniyede yaklaşık 343 metre yol aldığı için süreyi bu hızla çarpıp ikiye bölerek mesafeyi buluruz.
Adım 1: Pinleri Tanıyın
Sensörün ön yüzüne baktığınızda soldan sağa dört pin görürsünüz:
| Sensör pini | Görevi | Arduino Uno pini | | --- | --- | --- | | VCC | 5V besleme | 5V | | Trig | Ölçümü başlatan tetik girişi | D10 | | Echo | Yankı süresini veren çıkış | D9 | | GND | Ortak toprak | GND |
Trig ve Echo için başka dijital pinler de kullanabilirsiniz; önemli olan koddaki pin numaralarının bağlantınızla aynı olmasıdır.
Adım 2: Kabloları Bağlayın
Aşağıdaki şemaya göre dört kabloyu takın. Renk kodu kullanmak (kırmızı besleme, siyah toprak) ileride hata ayıklamayı çok kolaylaştırır.

Bağlantıyı bitirdikten sonra her kabloyu iki ucundan da hafifçe çekerek yerine tam oturduğunu kontrol edin. Gevşek bir jumper kablo, bu projede en sık karşılaşılan "sensör 0 gösteriyor" sorununun ana nedenidir.
Adım 3: Arduino IDE'yi Hazırlayın
Arduino'yu USB ile bilgisayara bağlayın. Arduino IDE'yi açın, Araçlar menüsünden kart olarak Arduino Uno'yu ve kartın göründüğü portu seçin. Windows'ta port "COM3" gibi, macOS'ta "/dev/cu.usbmodem" ile başlayan bir adla görünür. HC-SR04 için ek bir kütüphane kurmanız gerekmez; aşağıdaki kod yalnızca Arduino'nun yerleşik fonksiyonlarını kullanır.
Adım 4: Kodu Yükleyin
Yeni bir çizim (sketch) açın, aşağıdaki kodu yapıştırın ve Yükle düğmesine basın.
const int trigPin = 10;
const int echoPin = 9;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// Temiz bir tetik için önce LOW, ardından 10 us HIGH darbe
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Echo darbesinin süresi (mikrosaniye); 30 ms zaman aşımı
unsigned long sure = pulseIn(echoPin, HIGH, 30000UL);
if (sure == 0) {
Serial.println("Menzil disi veya baglanti hatasi");
} else {
float mesafe = sure * 0.0343 / 2.0; // cm
Serial.print("Mesafe: ");
Serial.print(mesafe, 1);
Serial.println(" cm");
}
delay(200);
}
Koddaki 0.0343 değeri, sesin santimetre/mikrosaniye cinsinden yaklaşık hızıdır. Süreyi ikiye bölmemizin nedeni, sesin nesneye gidip geri dönmesidir. pulseIn fonksiyonuna verdiğimiz 30 milisaniyelik zaman aşımı, karşıda nesne olmadığında kodun uzun süre beklemesini engeller.
Adım 5: Seri Monitörde Sonucu Görün
Yükleme tamamlanınca Araçlar menüsünden Seri Monitör'ü açın ve sağ alttaki baud değerini 9600 yapın. Ekranda saniyede yaklaşık beş kez güncellenen mesafe değerleri görmelisiniz. Elinizi sensörün önünde yaklaştırıp uzaklaştırın; değerlerin buna göre değiştiğini göreceksiniz. Seri Çizici (Serial Plotter) ile değerleri grafik olarak da izleyebilirsiniz.
Adım 6: Doğruluğu Test Edin
Sensörü bir duvara karşı sabitleyin ve bir cetvelle 10, 30 ve 100 cm mesafelerde ölçüm alın. Birkaç milimetre ile 1 santimetre arası sapma normaldir. Daha kararlı sonuç için şunları deneyebilirsiniz:
- Ardışık 5 ölçümün ortalamasını veya ortanca değerini alın.
- Ölçümler arasında en az 60 milisaniye bekleyin; çok hızlı tekrarlanan ölçümlerde önceki yankı karışabilir.
- Sensörü sert ve düz yüzeylere doğrultun. Kumaş, sünger veya eğik yüzeyler sesi emer ya da başka yöne yansıtır.
Hava sıcaklığı da sesin hızını etkiler. Yaklaşık 20°C için kullandığımız değer, oda koşullarında gayet yeterlidir.
Adım 7: Projeye Dönüştürün
Ölçüm çalıştığına göre sıra fikirde. Mesafe belirli bir değerin altına indiğinde buzzer çalan bir park sensörü, el yaklaşınca açılan temassız bir çöp kutusu kapağı veya engelden kaçan bir robot araba ilk akla gelen projelerdir. Robot arabalarda sensörü bir servo motorun üzerine yerleştirip sağa sola taratmak, çok daha akıllı bir engel algılama sağlar.
Sık Yapılan Hatalar
- Trig ve Echo pinlerini karıştırmak: Kodda Trig çıkış, Echo giriş olmalıdır. Kablolar ters takılırsa ekranda sürekli "menzil dışı" görürsünüz.
- Baud hızını eşleştirmemek: Seri Monitör 9600 dışında bir değerdeyse anlamsız karakterler görürsünüz.
- GND bağlantısını unutmak: Ortak toprak olmadan sensör rastgele değerler üretir.
- Sensörü 3,3V ile beslemek: Standart HC-SR04 bu gerilimde güvenilir çalışmaz. 3,3V sürümler (HC-SR04P gibi) ayrıca satılır.
- Çok yakın ölçüm beklemek: 2 cm'nin altında sensör güvenilir değer veremez.
- Sensörü titreşimli yere monte etmek: Robot gövdesinde sensörü sağlam bir braketle sabitleyin.
Sıkça Sorulan Sorular
HC-SR04 sensörünün ölçüm aralığı nedir?
Üretici verilerine göre sensör yaklaşık 2 cm ile 400 cm arasında ölçüm yapar. Pratikte en güvenilir sonuçlar 3 cm ile 2-3 metre arasında, düz ve sert yüzeylerde alınır. Ölçüm açısı yaklaşık 15 derecelik bir koni şeklindedir.
Seri Monitör'de sürekli 0 veya "menzil dışı" görüyorum, neden?
En yaygın nedenler gevşek kablo, Trig ve Echo pinlerinin ters bağlanması veya koddaki pin numaralarının bağlantıyla uyuşmamasıdır. Ayrıca sensörün önünde ölçülecek bir nesne olmadığında da zaman aşımı nedeniyle bu mesaj görünür.
HC-SR04'ü Raspberry Pi veya ESP32 ile kullanabilir miyim?
Kullanabilirsiniz, ancak bu kartların GPIO pinleri 3,3V toleranslıdır. Echo pininden gelen 5V sinyali iki dirençli bir gerilim bölücüyle düşürmeniz gerekir. Alternatif olarak 3,3V ile çalışan HC-SR04P sürümünü tercih edebilirsiniz.
Kütüphane kullanmak zorunlu mu?
Hayır. Bu rehberdeki kod Arduino'nun yerleşik pulseIn fonksiyonunu kullanır. NewPing gibi kütüphaneler birden fazla sensör veya ortalama alma gibi işleri kolaylaştırır, ancak tek sensörlü projelerde gerekli değildir.
Bir sonraki adım için Raspberry Pi 5 kurulumu rehberimize, bağlantıları ölçmek için ise multimetre nasıl kullanılır rehberimize göz atabilirsiniz.