HC-SR04 Ultrasonik Sensör Modülleri

İçindekiler

Bu kapsamlı kılavuz, HC-SR04 hakkında bilmeniz gereken her şeyi keşfetmeniz için tek adresiniz. En temel konulardan başlayarak, cihazın potansiyelini ortaya çıkarmanın anahtarı olan temel çalışma prensibini anlayacağız. Ardından, temel teknik özellikleri ve popüler mikrodenetleyicilerle nasıl entegre edileceği gibi önemli konuları ele alacak, hatta ileri düzey kullanım senaryolarını da derinlemesine inceleyeceğiz. Bu kılavuzun sonunda, kendi projelerinizde HC-SR04'ün tüm potansiyelinden yararlanmak için gerekli donanıma sahip olacaksınız.

HC-SR04 ultrasonik sensör modülü nedir?

HC-SR04 ultrasonik sensör modülü, elektronik projelerinin geniş dünyasında kendine bir yer edinen, dikkat çekici ve son derece çok yönlü bir cihazdır. Bu cihazı gerçekten öne çıkaran özelliği, uygun maliyetli olmasıdır; bu sayede, bütçesine dikkat eden hobi meraklılarından projelerine uygun fiyatlı bir çözüm arayan profesyonellere kadar geniş bir kullanıcı kitlesi için erişilebilir hale gelmektedir.

Front and back view of HC SR04 Ultrasonic Sensor Module
Front and back view of HC - SR04 Ultrasonic Sensor Module

Teknik Özellikler

HC-SR04 ultrasonik sensör modülünün teknik özelliklerini anlamak, herhangi bir projenin hayata geçirilmesi açısından hayati önem taşır. İşte teknik özellik tablosu:

Operating Voltage
+5V DC (4.5V to 5.5V)
Operating Current
~15mA (Standby: ~2mA)
Range
2cm to 400cm (0.8" to 13ft)
Accuracy
±3mm (Best case, varies with environment)
Resolution
0.3cm (1mm theoretically possible with calibration)
Angle of Detection
~15° cone angle
Trigger Input Signal
10μs HIGH pulse to initiate ranging
Echo Output Signal
Pulse width proportional to distance: 1μs = 0.017cm (based on sound speed 340m/s)
Maximum Frequency
40kHz ultrasonic frequency
Measurement Cycle
≥60ms (to avoid interference between measurements)
Operating Temperature
-15°C to +60°C (5°F to 140°F)
Dimensions
45mm × 20mm × 15mm (sensor module)
Weight
~5g (module only)

Açıklama:

  1. Menzil: HC-SR04, 2 cm ile 400 cm (0,8 inç ile 157 inç) arasında bir çalışma menziline sahiptir. Bu nispeten geniş menzil, onu çeşitli uygulamalar için uygun hale getirir. Örneğin, robotun bir odada hareket etmesi gereken küçük ölçekli bir robotik projesinde, 2–400 cm'lik menzil, yakındaki mobilyaları veya duvarları etkili bir şekilde algılayabilir. Daha büyük ölçekli bir endüstriyel uygulamada ise, bu aralık dahilinde makine bileşenleri arasındaki mesafeyi ölçmek için kullanılabilir. Ancak, bu aralığın en uç noktalarında doğruluğun biraz değişebileceğini belirtmek önemlidir.
  1. Çözünürlük: 0,3 cm'lik çözünürlüğüyle HC-SR04, oldukça hassas mesafe ölçümleri sağlayabilir. Bu hassasiyet seviyesi, çoğu hobi amaçlı ve birçok endüstriyel uygulama için yeterlidir. Sensörün otomatik seviyeleme için baskı yatağına olan mesafeyi algılamak üzere kullanıldığı bir 3D baskı projesinde, 0,3 cm'lik çözünürlük, yazıcı kafasının yatak üzerinde doğru yükseklikte olmasını sağlayarak yüksek kaliteli baskılar elde edilmesini sağlar.
  1. Güç Kaynağı: 5V DC güç kaynağı ile çalışır. Çalışma sırasında 15mA'lık bir çalışma akımı çeker, bu da nispeten düşük bir güç tüketimidir. Bekleme modunda akım çekimi daha da azdır, 2mA'dan azdır. Bu, onu pille çalışan projeler için enerji verimli bir seçim haline getirir. Örneğin, mesafe algılama için HC-SR04'ü kullanan pille çalışan bir IoT sensör düğümünde, düşük güç tüketimi pilin uzun süre dayanmasını sağlar.
  1. Çalışma Açısı: HC-SR04'ün çalışma açısı 15°'den azdır. Bu, sensörün nispeten dar bir görüş alanına sahip olduğu anlamına gelir. En etkili olduğu durum, doğrudan önündeki engelleri algılamaktır. Sensörün bir kapıya yaklaşan izinsiz girişleri algılamak için kullanıldığı bir akıllı ev güvenlik sisteminde, dar çalışma açısı sensöre doğru gelen nesnelerin odaklanmış bir şekilde algılanmasını sağlar ve çevresel alandaki nesnelerden kaynaklanan yanlış alarmları azaltır.
  1. Arayüz: Modül, VCC, GND, Trig ve Echo pinlerini içeren 4 pimli bir arayüze sahiptir. Bu basit arayüz tasarımı, çeşitli mikrodenetleyicilere ve diğer elektronik bileşenlere kolayca bağlanılmasını sağlar.

Pin Çıkışı Açıklaması

Pin 1
Label
VCC
Function
Power Supply (Positive)
Voltage
5V DC
Connection
Arduino: 5V
Raspberry Pi: 5V (Common ground with module)
Pin 2
Label
Trig (Trigger)
Function
Trigger Input
▶ 10μs High Pulse to Start Measurement
▶ Low Level to Reset
Connection
Arduino: Any Digital Pin (e.g., D2)
Raspberry Pi: Any GPIO (e.g., GPIO17)
Pin 3
Label
Echo
Function
Echo Output
▶ High Duration = Round-Trip Time of Ultrasonic Waves
▶ Max High Time: 38ms (Timeout for No Obstacle)
Connection
Arduino: Any Digital Pin (e.g., D3)
Raspberry Pi: GPIO with **Voltage Divider** (5V→3.3V)
⚠️ Direct 5V Echo to Raspberry Pi may damage GPIO! Use 1kΩ + 2kΩ voltage divider.
Pin 4
Label
GND
Function
Power Ground (Common Ground)
Connection
Arduino/GND
Raspberry Pi/GND

Açıklama:

VCC pini, modüle güç sağlamakla görevlidir. Bu pini, tercihen mikrodenetleyicinin 5V çıkışından gelen sabit bir 5V güç kaynağına bağlamak, modülün doğru şekilde çalışmasını sağlar. Doğru okumalar için kararlı bir güç kaynağı çok önemlidir. Güç kaynağı kararsızsa, tutarsız mesafe ölçümlerine yol açabilir. Örneğin, HC-SR04'e giden güç kaynağında voltaj dalgalanmaları veya düşüşleri varsa, sensör yanlış ultrasonik darbeler yayabilir veya alınan yankıları yanlış yorumlayabilir, bu da hatalı mesafe hesaplamalarına neden olur.
GND pini, gerekli topraklama bağlantısını sağlar. Elektrik devresini tamamlar ve modül için sabit bir referans geriliminin korunmasına yardımcı olur. Uygun bir topraklama bağlantısı olmadan modül hiç çalışmayabilir veya hatalı sonuçlar verebilir. Arduino tabanlı bir projede, ortak bir toprak referansı sağlamak için HC-SR04'ün GND pini genellikle Arduino kartının GND pinine bağlanır.
Trig pini, sihrin başladığı yerdir. Bu pime 10 μs'lik bir yüksek seviye darbe gönderildiğinde, ultrasonik vericiyi tetikleyerek 40 kHz'lik ultrasonik dalgalardan oluşan 8 darbeli bir patlamayı yayar. Python tabanlı bir Raspberry Pi projesinde, bu 10μs yüksek seviye darbeyi oluşturmak için GPIO (Genel Amaçlı Giriş/Çıkış) kütüphanesini kullanabilirsiniz. Bu basit dijital giriş mekanizması, mesafe ölçüm sürecinin kolayca kontrol edilmesini sağlar.

The Echo pin is the key to obtaining the distance information. Once the ultrasonic waves are sent out, the Echo pin goes high. It remains high until the reflected waves are received by the ultrasonic receiver. The duration for which the Echo pin is high is directly proportional to the time it takes for the ultrasonic waves to travel to the obstacle and back. By measuring this time duration, we can calculate the distance to the obstacle using the formula Distance ( cm ) = Time ( μs ) × 0.0343 2 . In a C++-based Arduino project, you can use the pulseIn() function to measure the duration of the high-level pulse on the Echo pin.

Temel Bileşenler ve Çalışma Prensibi

Temel Bileşenler

HC-SR04 ultrasonik sensör modülünün nasıl çalıştığını tam olarak anlamak için, öncelikle temel bileşenlerini tanımak gerekir. Her bir parça, modülün genel işleyişinde kendine özgü ve hayati bir rol oynar.

  1. Ultrasonik Verici: Bu bileşen, mesafe ölçüm sürecinin ilk adımından sorumludur. 40 kHz frekansında ultrasonik dalgalar yayar. Bu yüksek frekanslı dalgalar insan kulağı tarafından duyulamaz, ancak sensörün çalışmasının anahtarıdır. Tetiklendiğinde, verici bu dalgaları çevreye gönderir. Bunu, duyabileceğimiz frekansın çok ötesinde ses dalgaları yayan güçlü bir hoparlör olarak düşünün. Örneğin bir robotik uygulamada, robot üzerindeki ultrasonik verici, robotun hareket ettiği yönde bu 40 kHz dalgalarını göndererek yolundaki engelleri algılamaya hazırlanır.
  1. Ultrasonik Alıcı: Adından da anlaşılacağı gibi, ultrasonik alıcının görevi, sensörün menzilindeki engellerden geri yansıyan ultrasonik dalgaları yakalamaktır. Verici dalgaları gönderdiğinde, dalgalar bir nesneye çarpana kadar havada ilerler. Dalgalar daha sonra geri yansır ve bu yansıyan dalgaları yakalamak alıcının görevidir. Bu, ultrasonik dalgaların en zayıf yankılarını bile algılayabilen son derece hassas bir mikrofon gibidir. HC-SR04'ün bir odadaki kişinin varlığını algılamak için kullanıldığı bir ev otomasyon sisteminde, alıcı kişinin vücudundan geri seken dalgaları yakalar.
  1. Kontrol Devresi: Bu, işlemin arkasındaki beyindir. Kontrol devresi, tüm sinyal işleme dizisini yönetir. Verici ve alıcının eylemlerini koordine eder. Bir tetik sinyali aldığında, vericiye ultrasonik dalgaları yayması talimatını verir. Ardından, gelen yansıyan dalgalar için alıcıyı dikkatle izler. Dalgalar alındığında, kontrol devresi dalgaların engele gidip geri dönmesi için geçen süreyi hesaplar. Bu süreye ve havadaki bilinen ses hızına dayanarak, engele olan mesafeyi hesaplar. Endüstriyel bir ortamda, otomatik makineler için kullanılan bir HC-SR04'teki kontrol devresi, makinelerin düzgün çalışması için doğru mesafe ölçümleri sağlamak üzere bu işlemleri hassas bir şekilde yönetir.

Nasıl Çalışır?

Artık temel bileşenleri öğrendiğimize göre, HC-SR04'ün mesafeyi nasıl ölçtüğüne adım adım bir göz atalım.

Tetikleyici Sinyal: 

Süreç bir tetik sinyaliyle başlar. HC-SR04 modülünün Trig (Tetik) pinine 10 μs'lik bir yüksek darbe uygulandığında, bu sensöre bir "başlat" komutu verilmiş gibi olur. Bu kısa ama önemli elektrik darbesi, tüm mesafe ölçüm dizisini başlatır. Örneğin, Arduino tabanlı bir projede, bu 10μs'lik yüksek darbeyi HC-SR04'ün Trig pinine göndermek için basit bir kod satırı kullanırsınız ve bu sayede ölçüm sürecinin başlamasını sağlarsınız.

Dalga Yayılımı: 

Tetiklendiğinde, ultrasonik verici harekete geçer. Modül, 40 kHz frekansında 8 adet ultrasonik darbe gönderir. Bu darbeler, ortama fırlatılan bir dizi görünmez "ses mermisi" gibidir. Bu darbeleri gönderdikten sonra modül bekleme durumuna geçer ve dalgaların bir engele çarpıp geri dönmesini sabırla bekler. Gerçek bir senaryoda, bir odadaki duvara olan mesafeyi ölçmek için HC-SR04'ü kullanıyorsanız, 8 darbe duvara doğru ilerler ve yaklaşık 15 derecelik nispeten dar bir açıyla koni şeklinde yayılır.

Yankı Algılama: 

Echo pini, yansıyan dalgaları algılamanın anahtarıdır. Ultrasonik dalgalar gönderilir gönderilmez Echo pini yüksek seviyeye geçer. Bu, sensörün ölçüm sürecini başlattığını belirtme şeklidir. Ardından, yansıyan dalgaların geri dönmesini bekler. Ultrasonik alıcı yansıyan dalgaları yakaladığında Echo pini düşük seviyeye geçer. Echo pininin yüksek seviyede kaldığı süre, ultrasonik dalgaların gidiş-dönüş süresine eşittir. Bir Raspberry Pi projesinde, Echo pininin yüksek kaldığı süreyi ölçmek için bir işlev kullanırsınız; bu, mesafeyi hesaplamada çok önemli bir adımdır.

Mesafe Hesaplama:

Distance Calculation: The final step is to calculate the distance to the obstacle. The formula for calculating the distance in centimeters is Distance (cm) = Time ((μs)) × 0.0343 2 . The factor 0.0343 comes from the speed of sound in air, which is approximately 343 m/s. Since the waves travel to the obstacle and back (a round-trip), we divide the total distance traveled by 2 to get the one-way distance to the obstacle. For example, if the time measured for the Echo pin to be high is 2000μs, then the distance would be calculated as 2000 × 0.0343 2 = 34.3 cm. This calculation is the same whether you're using the HC-SR04 in a simple hobbyist project or a complex industrial application.

Popüler Mikrodenetleyicilerle Arayüz Oluşturma

Arduino Kurulum Kılavuzu

Kablolama Şeması

HC-SR04 ultrasonik sensör modülünü bir Arduino'ya bağlamak oldukça basit bir işlemdir. İşte bunu nasıl yapabileceğiniz:

  • VCC: HC-SR04'ün VCC pinini Arduino'nun 5V pinine bağlayın. Bu, sensör modülüne gerekli gücü sağlar. Arduino'dan gelen sabit 5V güç kaynağı, sensörün en iyi şekilde çalışmasını sağlar.
  • GND: HC-SR04'ün GND (Toprak) pini, Arduino'nun GND pinine bağlanmalıdır. Bu, hem sensör hem de Arduino için ortak bir toprak referansı oluşturur ve bu, düzgün elektriksel iletişim için çok önemlidir.
  • Trig: HC-SR04'ün Trig (Tetikleyici) pinini Arduino'nun 2 numaralı dijital pinine bağlayın. Bu, Arduino'nun HC-SR04'teki mesafe ölçüm sürecini tetiklemek için 10μs yüksek seviyeli darbeyi göndereceği pindir.
  • Echo: HC-SR04'ün Echo pini, Arduino'nun 3 numaralı dijital pinine bağlanır. Arduino, engele olan mesafeyi hesaplamak için bu pindeki yüksek süreli darbeyi okuyacaktır.
Bağlantıları gösteren basit bir kablo şeması aşağıda verilmiştir:
				
					       HC - SR04         Arduino
         VCC ------------ 5V
         GND ------------ GND
         Trig ------------ Digital Pin 2
         Echo ------------ Digital Pin 3
				
			

Kod Örneği

HC-SR04 kullanarak mesafe ölçümüne başlamanıza yardımcı olacak temel bir Arduino kod örneği:
				
					const int trigPin = 2;
const int echoPin = 3;

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

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH);
  float distance = duration * 0.0343 / 2;

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");

  delay(500);
}
				
			
Kurulum fonksiyonunda, öncelikle seri iletişimi 9600 baud hızında başlatıyoruz; bu sayede Arduino Seri Monitörü'nde mesafe değerlerini görüntüleyebiliyoruz. Ardından, trigPin'i çıkış pini, echoPin'i ise giriş pini olarak ayarlıyoruz.
Döngü fonksiyonunda, temiz bir başlangıç sağlamak için trigPin'i 2 mikrosaniye boyunca LOW olarak ayarlayarak başlıyoruz. Ardından, HC-SR04'teki ultrasonik vericiyi tetiklemek için 10 mikrosaniye boyunca HIGH olarak ayarlıyoruz. Bundan sonra, trigPin'i tekrar LOW olarak ayarlıyoruz.
Daha sonra pulseIn işlevi, echoPin üzerindeki yüksek seviyeli darbenin süresini ölçmek için kullanılır. Bu süre, ultrasonik dalgaların engele gidip geri dönmesi için geçen süreyi temsil eder. Ardından, mesafeyi distance = duration * 0.0343 / 2 formülünü kullanarak hesaplarız; burada 0.0343, cm/μs cinsinden ses hızıdır ve dalgalar engele gidip geri döndüğü için 2'ye böleriz.
Son olarak, hesaplanan mesafeyi Seri Monitöre yazdırırız ve bir sonraki ölçümden önce 500 milisaniyelik bir gecikme ekleriz.

In the setup function, we first initialize the serial communication at a baud rate of 9600, which allows us to view the distance readings in the Arduino Serial Monitor. Then, we set the trigPin as an output pin and the echoPin as an input pin.

In the loop function, we start by setting the trigPin to LOW for 2 microseconds to ensure a clean start. Then, we set it HIGH for 10 microseconds to trigger the ultrasonic transmitter in the HC-SR04. After that, we set the trigPin back to LOW.

The pulseIn() function is then used to measure the duration of the high-level pulse on the echoPin. This duration represents the time it took for the ultrasonic waves to travel to the obstacle and back. We then calculate the distance using the formula distance = duration * 0.0343 / 2, where 0.0343 is the speed of sound in cm/μs and we divide by 2 because the waves travel to the obstacle and back.

Finally, we print the calculated distance to the Serial Monitor and add a 500-millisecond delay before the next measurement.

İpuçları

  1. Doğru ve Uzun Süreli Ölçüm:

When using the pulseIn() function, it's important to note that it measures the duration of a pulse. In the case of the HC-SR04, this is the time the Echo pin is high. To ensure accurate measurements, make sure there are no other electrical interferences that could affect the pulse duration. Also, be aware that if the obstacle is too far away, the pulse may time out. You can set a timeout value in the pulseIn() function to handle such cases gracefully. For example, long duration = pulseIn(echoPin, HIGH, 20000); where 20000 is the timeout value in microseconds.

  1. Gürültü Kaynaklarından Kaçınmak:

Ultrasonik dalgalar, yüksek sesli kaynaklardan etkilenebilir. HC-SR04 sensörünü projenize yerleştirirken, hoparlörlerin yakınında veya çok gürültülü bir endüstriyel ortam gibi yüksek ses yoğunluğuna sahip alanlardan kaçının. Gürültü, sensörün yaydığı ultrasonik dalgaları bozarak mesafe ölçümlerinin hatalı olmasına neden olabilir. Sensörü gürültülü bir alanda kullanmanız gerekiyorsa, sensörü gürültüden korumak için ses emici malzemeler veya muhafazalar kullanmayı düşünün.

Raspberry Pi Entegrasyonu

Gerilim Uyarısı

HC-SR04'ü bir Raspberry Pi ile entegre ederken dikkate alınması gereken en önemli hususlardan biri voltaj seviyeleridir. Raspberry Pi üzerindeki GPIO (Genel Amaçlı Giriş/Çıkış) pinleri yalnızca maksimum 3,3 V voltaj kabul edebilir. Ancak HC-SR04, 5 V ile çalışır ve HC-SR04'ün Echo pini 5 V sinyal verebilir. 5 V sinyalini doğrudan bir Raspberry Pi GPIO pinine bağlamak Pi'ye zarar verebilir.

To solve this issue, you can use a voltage divider circuit. A simple voltage divider using a 1kΩ and a 2kΩ resistor can be used to convert the 5V output from the Echo pin of the HC-SR04 to a 3.3V-compatible signal for the Raspberry Pi. The formula for calculating the output voltage V out of a voltage divider is V out = V in × R 2 R 1 + R 2 , where V in is the input voltage (5V in this case), R 1 is the first resistor (1kΩ), and R 2 is the second resistor (2kΩ). Plugging in the values, we get V out = 5 × 2000 1000 + 2000 3.33 V , which is within the safe range for the Raspberry Pi GPIO pin.

Kablolama

  • VCC: HC-SR04'ün VCC pinini Raspberry Pi'deki 5V pinine bağlayın. Bu işlem, HC-SR04 sensör modülüne güç sağlar.

  • GND: Ortak bir toprak oluşturmak için HC-SR04'ün GND pini, Raspberry Pi'deki GND pinine bağlanmalıdır.
  • Trig: HC-SR04'ün Trig pinini Raspberry Pi'deki GPIO 17'ye bağlayın. Raspberry Pi, bu pini kullanarak HC-SR04'e 10μs yüksek seviyeli tetikleme darbesi gönderir.
  • Echo: HC-SR04'ün Echo pini, voltaj bölücü devresinden (1kΩ ve 2kΩ dirençler) geçtikten sonra Raspberry Pi'deki GPIO 27'ye bağlanır. Raspberry Pi, mesafeyi hesaplamak için bu pindeki yüksek süreli darbeyi okuyacaktır.
Kablolama şu şekilde özetlenebilir:
				
					       HC - SR04         Raspberry Pi
         VCC ------------ 5V
         GND ------------ GND
         Trig ------------ GPIO 17
         Echo (through voltage divider) ------------ GPIO 27
				
			

Python Kodu

İşte HC-SR04 sensörünü Raspberry Pi ile bağlamak için RPi.GPIO kütüphanesini kullanan bir Python kod örneği:
				
					import RPi.GPIO as GPIO
import time

# Set the GPIO mode
GPIO.setmode(GPIO.BCM)

# Define the pins
TRIG = 17
ECHO = 27

# Set up the pins
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)

def measure_distance():
    # Send a 10μs high - level pulse to trigger the sensor
    GPIO.output(TRIG, True)
    time.sleep(0.00001)
    GPIO.output(TRIG, False)

    # Wait for the echo to start
    while GPIO.input(ECHO)==0:
        pulse_start = time.time()

    # Wait for the echo to end
    while GPIO.input(ECHO)==1:
        pulse_end = time.time()

    pulse_duration = pulse_end - pulse_start
    distance = pulse_duration * 17150  # Speed of sound in cm/s divided by 2
    distance = round(distance, 2)

    return distance

try:
    while True:
        dist = measure_distance()
        print(f"Distance: {dist} cm")
        time.sleep(1)

except KeyboardInterrupt:
    print("Measurement stopped by User")
    GPIO.cleanup()

				
			

In this code, we first import the necessary libraries, RPi.GPIO for controlling the GPIO pins on the Raspberry Pi and time for adding delays. We then set the GPIO mode to BCM (Broadcom SOC channel numbering). We define the TRIG and ECHO pins and set up the TRIG pin as an output and the ECHO pin as an input.

The measure_distance function is where the magic happens. It sends a 10μs high - level pulse to the TRIG pin to trigger the HC - SR04. Then, it waits for the ECHO pin to go high (indicating the start of the echo) and records the start time. It then waits for the ECHO pin to go low (indicating the end of the echo) and records the end time. The time difference between the start and end times is used to calculate the distance. The distance is calculated by multiplying the pulse duration by the speed of sound in cm/s (34300 cm/s) and dividing by 2 (since the sound travels to the obstacle and back).

In the try block, we continuously measure the distance and print it to the console every second. If the user presses Ctrl + C (KeyboardInterrupt), the program cleans up the GPIO pins and exits gracefully.

ESP32 Yapılandırması

Pim Ataması

ESP32, çok sayıda GPIO (Genel Amaçlı Giriş/Çıkış) pini bulunan güçlü bir mikrodenetleyicidir. HC-SR04'ü bir ESP32'ye bağlarken, HC-SR04'e güç sağlamak için ESP32'nin VOUT pininden gelen 5V'yi kullanabilirsiniz. Trig ve Echo pinlerini ise kullanılabilir herhangi bir GPIO pinine bağlayabilirsiniz. Örneğin, Trig pinini GPIO 14'e ve Echo pinini GPIO 15'e bağlayabilirsiniz. Ancak, projenizdeki diğer bileşenler tarafından halihazırda kullanılmayan pinleri seçtiğinizden emin olun.

Arduino IDE Kodu

Arduino IDE'de ESP32 ile HC-SR04'ü kullanmak için yazılan kod, Arduino koduna oldukça benziyor. İşte bir örnek:
				
					const int trigPin = 14;
const int echoPin = 15;

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

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH);
  float distance = duration * 0.0343 / 2;

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");

  delay(500);
}

				
			

In the setup function, we initialize the serial communication at a baud rate of 115200. We then set the trigPin as an output pin and the echoPin as an input pin.

In the loop function, the process of triggering the HC - SR04 and measuring the distance is the same as in the Arduino code. We send a 10μs high - level pulse to the trigPin to trigger the sensor, measure the duration of the high - level pulse on the echoPin using pulseIn , and calculate the distance.

Ancak, Arduino IDE'de ESP32'yi kullanırken, IDE'de doğru ESP32 kartını seçtiğinizden emin olun. Ayrıca, ESP32'yi WiFi veya Bluetooth gibi IoT (Nesnelerin İnterneti) özellikleriyle entegre etmeyi planlıyorsanız, kodunuzda bu özelliklerin başlatılmasını sağlamanız gerekir. Örneğin, mesafe verilerini WiFi üzerinden göndermek istiyorsanız, bir WiFi ağına bağlanmak için kod eklemeniz ve verileri göndermek için bir sunucu veya istemci kurmanız gerekir.

HC-SR04 Kullanarak Yapılabilecek Yaratıcı Proje Fikirleri

Engellerden Kaçınan Robot

Engelleri önleyen robot, HC-SR04 ultrasonik sensör modülünün ilgi çekici ve pratik bir uygulamasıdır. Temel işlevi, yolundaki engelleri algılayarak çevresinde güvenli bir şekilde hareket etmektir. Bu, robotun üzerine stratejik olarak yerleştirilmiş birden fazla HC-SR04 sensörü kullanılarak sağlanır.

Sensörler, farklı yönlerden gelen engelleri algılayacak şekilde yapılandırılmıştır. Örneğin, robotun ön tarafına, ilerleme yolundaki engelleri algılamak için bir dizi sensör yerleştirilir. Ayrıca, yanlardan yaklaşabilecek engelleri algılamak için robotun yanlarına da sensörler yerleştirilmiştir. Bir engel algılandığında, genellikle Arduino gibi bir mikro denetleyiciye dayanan robotun kontrol sistemi, HC-SR04 sensörlerinden gelen verileri kullanarak engele olan mesafeyi hesaplar.

Kontrol sistemi, bu mesafe bilgisine dayanarak engelden kaçınmak için alınması gereken uygun eylemi belirler. Bu genellikle, robotun yönünü değiştirecek şekilde motorları yönlendirmeyi içerir. Örneğin, robotun sol tarafında bir engel algılanırsa, kontrol sistemi sol taraftaki motora yavaşlaması veya geri gitmesi talimatını verirken, sağ taraftaki motor normal hızda çalışmaya devam edebilir. Bu, robotun engelden uzaklaşarak sağa dönmesine neden olur.

Bu projeyi gerçekleştirmek için birkaç temel bileşene ihtiyacınız olacak. Arduino, operasyonun beyni görevi görür. HC-SR04 sensörlerinden alınan verileri işler ve motorlara komutlar gönderir. Robotun hareket etmesini sağlamak için tekerlekleri tahrik edecek motorlara ihtiyaç vardır. L298N gibi bir motor sürücüsü, motorları kontrol etmek için gereklidir. L298N, motorların nispeten yüksek akım gereksinimlerini karşılayabilir ve Arduino'nun motorların hızını ve yönünü etkili bir şekilde kontrol etmesini sağlar. Ve elbette, ön ve yan algılama için birden fazla HC-SR04 sensörüne ihtiyaç vardır. Bu bileşenleri birleştirip onları kontrol etmek için uygun kodu yazarak, tamamen işlevsel bir engelden kaçınan robot oluşturabilirsiniz.

Akıllı Çöp Kovası

Akıllı çöp kutusu, HC-SR04 ultrasonik sensör modülünün gündelik nesnelerin işlevselliğini artırmak için nasıl kullanılabileceğinin harika bir örneğidir. Bu uygulamada, akıllı çöp kutusu otomatik açılan kapak özelliğine sahip olacak şekilde tasarlanmıştır. Bu özellik, çöp kutusuna yaklaşan bir kişinin varlığıyla tetiklenir.

HC-SR04 sensörü, önündeki herhangi bir nesneye olan mesafeyi algılayabilecek şekilde çöp kutusuna monte edilmiştir. Birisi çöp kutusuna yaklaştığında, sensör çöp kutusu ile kişi arasındaki mesafeyi ölçer. Ölçülen mesafe önceden belirlenmiş bir eşik değerinin (örneğin 20 cm) altına düşerse, bu durum kişinin çöp kutusunu kullanmak için yeterince yakın olduğunu gösterir. Bu noktada sensör, bir servo motora sinyal gönderir.

Servo motor, çöp kutusunun kapağına bağlıdır ve kapağı açıp kapatmaktan sorumludur. HC-SR04 sensöründen sinyali aldığında, servo motor dönerek kapağı açar. Bu eller serbest çalışma, kullanıcı için sadece rahatlık sağlamakla kalmaz, aynı zamanda kapağa doğrudan dokunmaya gerek kalmadığı için çöp kutusunun temiz ve hijyenik kalmasına da yardımcı olur.

Bu proje için kod yazarken, mesafe eşiğini ayarlamak çok önemli bir adımdır. Bu değeri, akıllı çöp kutunuzun özel gereksinimlerine göre dikkatlice kalibre etmeniz gerekir. Eşik değeri çok yüksek ayarlanırsa, kişi çöp kutusundan hala belli bir mesafedeyken kapak gereksiz yere açılabilir. Öte yandan, eşik değeri çok düşük ayarlanırsa, kullanıcı yaklaştığında kapak zamanında açılmayabilir. İyi kalibre edilmiş bir mesafe eşiği, akıllı çöp kutusunun en iyi şekilde çalışmasını sağlar.

Su Seviyesi Göstergesi

Su seviyesi monitörü, özellikle bir tank içindeki su seviyesini takip etmenin gerekli olduğu durumlarda, HC-SR04 ultrasonik sensör modülünün pratik bir uygulamasıdır. Bu, ev tipi bir su depolama tankında, endüstriyel bir su depolama tankında veya hatta bir akvaryumda olabilir.

HC-SR04 sensörü, su tankının üzerine monte edilir. Su yüzeyine doğru aşağıya doğru ultrasonik dalgalar yayar. Bu dalgalar havada ilerler ve su yüzeyine çarptıklarında geri yansır. Sensör daha sonra dalgaların su yüzeyine gidip geri dönmesi için geçen süreyi ölçer. Havada sesin bilinen hızı kullanılarak, sensörden su yüzeyine olan mesafe hesaplanabilir.

Çoğu durumda, su seviyesi monitörü bir IoT (Nesnelerin İnterneti) sistemiyle entegre edilmiştir. Örneğin, bir Blynk uygulamasına bağlanabilir. Hesaplanan su seviyesi verileri uygulamaya gönderilir ve kullanıcıların su seviyesini uzaktan izlemesine olanak tanır. Bu, süreçlerin düzgün işleyişi için su seviyelerinin gerçek zamanlı izlenmesinin hayati önem taşıdığı endüstriyel uygulamalar için özellikle yararlıdır.

Su seviyesi monitörünü kurarken dikkate alınması gereken önemli bir husus kalibrasyondur. Sensör, tankın tabanının üzerinde belirli bir yüksekliğe monte edildiğinden, mesafe hesaplamalarında bu yükseklik dikkate alınmalıdır. Örneğin, sensör tankın tabanından 50 cm yukarıya monte edilmişse ve sensörden su yüzeyine kadar hesaplanan mesafe 30 cm ise, tankın içindeki gerçek su seviyesi 20 cm'dir. Sensör yüksekliğini doğru bir şekilde kalibre ederek ve gerekli hesaplamaları yaparak, su seviyesi monitörünün doğru ve güvenilir okumalar sağladığından emin olabilirsiniz.

Yaygın Sorunların Giderilmesi

Tutarsız Ölçüm Sonuçları

Kullanıcıların HC-SR04 ultrasonik sensör modülünde karşılaştıkları en yaygın sorunlardan biri, tutarsız ölçüm değerleridir. Bu durum, özellikle projeniz için doğru mesafe ölçümlerine güveniyorsanız, oldukça sinir bozucu olabilir.

Neden: Çoklu yol yansımaları veya dengesiz güç

Çoklu yol yansımaları, sensör tarafından yayılan ultrasonik dalgaların alıcıya ulaşmadan önce birden fazla yüzeyden sekmesi durumunda meydana gelir. Bu durum, çok sayıda nesnenin bulunduğu karmaşık ortamlarda veya geniş, yansıtıcı yüzeylerin bulunduğu alanlarda ortaya çıkabilir. Örneğin, çok sayıda mobilya ve aynanın bulunduğu bir odada, ultrasonik dalgalar alıcı tarafından algılanmadan önce mobilyalardan, duvarlardan ve aynalardan sekebilir. Bu durum, sensörün hedeflenen nesneye olan mesafeyi doğru bir şekilde hesaplamasını zorlaştırır ve tutarsız okumalara neden olur.

Dengesiz güç kaynağı da bir başka sorundur. HC-SR04'e giden güç kaynağı dengesizse, sensörün arızalanmasına neden olabilir. Gerilim dalgalanmaları, ultrasonik vericinin ve alıcının düzgün çalışmasını etkileyerek hatalı mesafe ölçümlerine yol açabilir. Örneğin, şarjı bitmek üzere olan bir pil veya gerilim düzenlemesi zayıf bir güç adaptörü kullanıyorsanız, sensör tutarlı bir 5V güç kaynağı alamayabilir ve bu da performansını etkileyebilir.

Çözüm: Sensör için koruyucu bir kılıf takın ve regüle edilmiş 5 V'luk bir güç kaynağı kullanın

Sensörün etrafına koruyucu bir muhafaza eklemek, çoklu yol yansımalarının etkisini azaltmaya yardımcı olabilir. Muhafaza, ultrasonik dalgaları daha odaklanmış bir şekilde yönlendirecek şekilde tasarlanabilir ve böylece dalgaların istenmeyen yüzeylerden sekme olasılığını azaltır. Ön tarafında dar bir açıklığı olan basit bir karton veya plastik muhafaza bu açıdan etkili olabilir.

Düzenlenmiş bir 5V güç kaynağı kullanmak, istikrarlı çalışma için çok önemlidir. Yüksek kaliteli bir duvar adaptörü veya voltaj düzenlenmiş bir güç modülü gibi dahili voltaj düzenlemesine sahip bir güç kaynağı, HC-SR04'ün tutarlı bir 5V almasını sağlar. Bu, voltaj dalgalanmalarının neden olduğu sorunları ortadan kaldırmaya yardımcı olur ve sensör okumalarının genel doğruluğunu ve tutarlılığını artırır.

Çıkış Sinyali Yok

Bir başka sık karşılaşılan sorun ise HC-SR04'ün çıkış sinyali üretememesidir. Bu durum birkaç farklı sorunun belirtisi olabilir ve sensörü yeniden çalışır hale getirmek için her olasılığı sistematik bir şekilde kontrol etmek önemlidir.
Kontrol: Kablolamayı (özellikle VCC/GND), Raspberry Pi için voltaj bölücüyü ve tetikleme/yankı zamanlamasına ilişkin kod mantığını doğrulayın
Her şeyden önce, kablolamayı dikkatlice kontrol edin. VCC ve GND pinlerinin sırasıyla güç kaynağına ve toprağa doğru şekilde bağlandığından emin olun. Gevşek veya hatalı bir bağlantı, sensörün düzgün bir şekilde çalışmasını engelleyebilir veya modülün normal çalışmasını bozan elektriksel kısa devrelere neden olabilir. Çoğu durumda, basit bir gözle inceleme ve kabloların yeniden bağlanması sorunu çözebilir.

HC-SR04'ü Raspberry Pi ile kullanıyorsanız, voltaj bölücü devresini kontrol etmeyi unutmayın. Daha önce de belirtildiği gibi, Raspberry Pi'nin GPIO pinleri yalnızca 3,3 V ile çalışabilir ve HC-SR04'ün Echo pininden gelen 5 V çıkışını 3,3 V uyumlu bir sinyale dönüştürmek için genellikle bir voltaj bölücü kullanılır. Voltaj bölücü bileşenleri (genellikle dirençler) hasar görmüşse veya yanlış bağlanmışsa, Raspberry Pi tarafından hiçbir çıkış sinyali alınmayabilir.

Tetikleme/yankı zamanlaması için kod mantığı da kontrol edilmesi gereken kritik bir alandır. Kodun Trig pinine doğru tetikleme sinyalini (10μs yüksek seviye darbe) gönderdiğinden ve Echo pinindeki yüksek seviye darbenin süresini doğru bir şekilde ölçtüğünden emin olun. Yanlış kod, sensörün tetiklenmesini engelleyebilir veya mikrodenetleyicinin yankı sinyalini yanlış yorumlamasına neden olarak, çıkış olmamasına veya yanlış mesafe hesaplamalarına yol açabilir. Örneğin, koddaki gecikme süreleri yanlış ayarlanmışsa, sensörün tetiklenmesi ve yankının okunması arasındaki doğru sıra bozulabilir.

Aralık Dışı Hataları

Algılanan nesne HC-SR04 sensörüne çok yakın veya çok uzak olduğunda, menzil dışı hataları ortaya çıkabilir. Bu durum, özellikle kodunuz bu tür durumları yönetmek için uygun şekilde donatılmamışsa, projenizde sorunlara yol açabilir.
Çözüm: Bir zaman aşımı süresi belirleyin (örneğin, yankı gelmezse 38 ms) ve kodda 0 veya ∞ değerlerini uygun şekilde işleyin
Kodunuza bir zaman aşımı mekanizması eklemek, nesnenin sensörün makul bir süre içinde yankıyı algılayamayacak kadar uzakta olduğu durumları yönetmek için yararlı bir yöntemdir. Örneğin, 38 ms içinde yankı alınmazsa, bu durum nesnenin sensörün menzilinin dışında olduğunun iyi bir göstergesidir. Kodunuzda, tetikleme sinyali gönderildiğinde başlayan ve yankı alındığında duran bir zamanlayıcı ayarlayabilirsiniz. Zamanlayıcı, yankı almadan zaman aşımı değerine ulaşırsa, nesnenin menzil dışında olduğunu varsayabilir ve bir hata mesajı görüntülemek veya varsayılan bir mesafe değeri ayarlamak gibi uygun önlemleri alabilirsiniz.

Kodda 0 veya ∞ (sonsuz) değerlerini düzgün bir şekilde işlemek de önemlidir. 0 mesafe değeri, sensörün bir nesneye çok yakın olduğunu, yani minimum algılama menzilinden daha yakın olduğunu gösterebilir. Bu gibi durumlarda, kodunuzda bir minimum mesafe eşiği belirlemek ve mesafe değerini buna göre ayarlamak isteyebilirsiniz. Benzer şekilde, kod aşırı büyük (sonsuza yakın) bir mesafe değeri hesaplarsa, bu durum yankı algılamadaki bir sorun veya yanlış hesaplamalar gibi bir hatanın göstergesi olabilir. Kodunuz, örneğin bir hata mesajı günlüğe kaydederek veya mesafeyi yeniden ölçmeye çalışarak bu durumları düzgün bir şekilde ele alabilmelidir.

HC-SR04 ve Diğer Mesafe Sensörleri

vs. Kızılötesi Sensörler

Table 1: HC-SR04 (Ultrasonic) vs Infrared Sensors

HC-SR04

Range: 2cm–400cm (Abstract 1, 6)

Accuracy: ±3mm (ideal conditions, Abstract 1)

Voltage: 5V (fixed, Abstract 1)

Pros: No light interference, longer range (Abstract 5)

Cons: Reduced near-range accuracy, ultrasonic noise sensitivity (Abstract 1)

Infrared

Range: Typically <100cm (Abstract 1, 5)

Accuracy: ±5mm–1cm (affected by color/material, Abstract 5)

Voltage: 3.3V–5V (flexible, Abstract 5)

Pros: Small size, low cost (Abstract 1)

Cons: Ambient light/color interference (Abstract 5)

Tablo 1, HC-SR04’ün sağlam uzun menzilli algılama özelliği (2 cm–400 cm) ile kızılötesi sensörlerin kompakt boyutu ve düşük maliyeti arasındaki dengelemeyi ortaya koyarken, HC-SR04’ün ışık parazitlerine karşı dayanıklılığı ile kızılötesi sensörlerin ortam ışığına ve malzeme rengine karşı hassasiyetini karşılaştırmaktadır.

vs. Lazer Sensörleri

Table 2: HC-SR04 vs Laser/ToF (VL53L0X)

HC-SR04

Range: 2cm–400cm (Abstract 1, 4)

Accuracy: ±3mm (Abstract 4)

Update Rate: 60ms (Abstract 4)

Cost: ~$2–3 (Abstract 1)

Weakness: 15° cone angle, environmental noise (Abstract 1)

Laser/ToF (VL53L0X)

Range: 5cm–200cm (Abstract 1, 3)

Accuracy: ±1mm–3mm (Abstract 3)

Update Rate: 20ms (faster, Abstract 4)

Cost: ~$10–15 (Abstract 1)

Strength: 5° narrow beam, interference-resistant (Abstract 3)

Tablo 2’de, HC-SR04’ün uygun maliyeti (2–3 dolar) ve geniş ölçüm aralığı (400 cm) ile Lazer/ToF sensörlerinin üstün hassasiyeti (±1 mm) ve hızı (20 ms güncelleme sıklığı) karşılaştırılmaktadır; bu sensörler, kontrollü ortamlarda yüksek hassasiyet gerektiren uygulamalar için idealdir.

ABD'ye karşı - 100 Modül

Table 3: HC-SR04 vs US-100 (Ultrasonic)

HC-SR04

Range: 2cm–400cm (Abstract 2, 6)

Accuracy: ±3mm (nominal, Abstract 2)

Voltage: 5V only (Abstract 6)

Feature: GPIO-only, no temperature compensation (Abstract 3)

Issue: Random values beyond 400cm (Abstract 6)

US-100

Range: 2cm–450cm (Abstract 2, 3)

Accuracy: ±2mm (better in tests, Abstract 3)

Voltage: 3.3V–5V (Abstract 3)

Feature: Temperature compensation (UART mode), error codes (Abstract 6)

Downside: Higher cost ($5–8), UART setup required (Abstract 3)

Tablo 3, US-100’ün daha geniş ölçüm aralığı (450 cm), daha yüksek hassasiyeti (±2 mm) ve 3,3 V/5 V uyumluluğunu, HC-SR04’ün basit yapısı (sadece GPIO) ile karşılaştırarak ortaya koymakta ve daha yüksek bir maliyetle (5–8 $) endüstriyel kullanım için US-100’ün sıcaklık dengeleme özelliğini vurgulamaktadır.

İleri Düzey Teknikler ve Optimizasyonlar

Çoklu Sensör Kalibrasyonu

Daha karmaşık uygulamalarda, özellikle 360° görüşün hayati önem taşıdığı durumlarda, birden fazla HC-SR04 sensörünün kullanılması büyük bir fark yaratabilir. Örneğin bir robotik uygulamada, robotun gövdesi etrafına stratejik olarak yerleştirilmiş birden fazla HC-SR04 sensörü, robotun her yönden engelleri algılamasını sağlayarak çevresine dair kapsamlı bir görüş sunar.

Ancak, birden fazla sensör kullanıldığında, çapraz konuşma paraziti önemli bir sorun haline gelebilir. Çapraz konuşma, bir sensör tarafından yayılan ultrasonik dalgaların başka bir sensörün çalışmasını engellediği durumlarda ortaya çıkar. Sensörler, parazit dalgalarını gerçek engellerden gelen yankılar olarak yanlış yorumlayabileceğinden, bu durum yanlış okumalara yol açabilir.

Çapraz konuşma parazitini azaltmak için çeşitli teknikler kullanılabilir. Bir yaklaşım, sensörleri zaman çoklayıcı olarak kullanmaktır. Bu, sensörleri tek tek etkinleştirmek ve her etkinleştirme arasında yeterli zaman aralıkları bırakmak anlamına gelir. Örneğin, bir robotta dört adet HC-SR04 sensörünüz varsa, sensör 1'i etkinleştirebilir, ölçüm döngüsünü tamamlamasını bekleyebilir, ardından sensör 2'yi etkinleştirebilir ve bu şekilde devam edebilirsiniz. Böylece, bir sensörden gelen ultrasonik dalgaların başka bir sensörün dalgalarıyla çakışmamasını sağlayarak çapraz konuşma olasılığını azaltmış olursunuz.

Başka bir teknik ise koruyucu malzemeler kullanmaktır. Sensörler arasına ince bir metal levha veya ses emici bir malzeme gibi fiziksel bir bariyer yerleştirmek, bir sensörden gelen ultrasonik dalgaların diğerine ulaşmasını engellemeye yardımcı olabilir. Bu, sensörlerin birbirine çok yakın yerleştirildiği durumlarda özellikle yararlı olabilir.

Birden fazla sensör kullanırken kalibrasyon da çok önemlidir. Her sensörün hassasiyet veya ışın açısı gibi özellikleri biraz farklı olabilir. Sensörleri kalibre ederek bu farklılıkları hesaba katabilir ve tüm sensörlerden gelen verilerin tutarlı olmasını sağlayabilirsiniz. Bu, her sensörle bilinen bir nesneye olan mesafeyi ölçmeyi ve farklılıklara göre okumaları ayarlamayı içerebilir.

Gürültü Filtreleme

Bazı ortamlarda, HC-SR04'ten alınan ölçüm değerleri dalgalı olabilir; bu durum, elektriksel gürültü, hafif hava akımları veya yakındaki diğer elektronik cihazlardan kaynaklanan parazit gibi çeşitli faktörlerin yol açtığı küçük mesafe dalgalanmalarıyla ortaya çıkabilir. Bu sorunu gidermek için gürültü filtreleme teknikleri uygulanabilir.

Yaygın olarak kullanılan yöntemlerden biri, hareketli ortalama filtresidir. Hareketli ortalama filtresi, bir dizi ardışık mesafe okumasının ortalamasını hesaplayarak çalışır. Örneğin, tek bir mesafe okuması kullanmak yerine, son 5 okumayı alıp bunların ortalamasını hesaplayabilirsiniz. Bu, titrek okumaları düzeltir, çünkü küçük dalgalanmalar ortalamalandığında birbirlerini iptal etme eğilimindedir. Python'da, HC-SR04 mesafe okumaları için basit bir hareketli ortalama filtresinin uygulaması şöyle görünebilir:
				
					distance_readings = []
num_readings = 5

def moving_average_filter(new_distance):
    distance_readings.append(new_distance)
    if len(distance_readings) > num_readings:
        distance_readings.pop(0)
    return sum(distance_readings) / len(distance_readings)

				
			

Bir başka etkili filtreleme yöntemi de medyan filtresidir. Medyan filtre, her bir mesafe değerini, ardışık değerler kümesinin medyan değeriyle değiştirir. Medyan, ortalamaya kıyasla uç değerlere veya aykırı değerlere karşı daha az duyarlıdır. Örneğin, 5 mesafe okumasından oluşan bir küme [20, 22, 18, 50, 21] varsa, medyan değer 21'dir. Medyan filtre kullanıldığında, 50 olan uç değer, filtrelenmiş sonucu önemli ölçüde etkilemez. Arduino'da medyan filtrenin uygulaması şu şekilde olabilir:

				
					const int numReadings = 5;
int readings[numReadings];
int readIndex = 0;
int total = 0;
int averageDistance = 0;

void addReading(int newReading) {
  total = total - readings[readIndex];
  readings[readIndex] = newReading;
  total = total + readings[readIndex];
  readIndex = readIndex + 1;
  if (readIndex >= numReadings) {
    readIndex = 0;
  }
}

int getMedian() {
  int sortedReadings[numReadings];
  for (int i = 0; i < numReadings; i++) {
    sortedReadings[i] = readings[i];
  }
  for (int i = 0; i < numReadings - 1; i++) {
    for (int j = i + 1; j < numReadings; j++) {
      if (sortedReadings[i] > sortedReadings[j]) {
        int temp = sortedReadings[i];
        sortedReadings[i] = sortedReadings[j];
        sortedReadings[j] = temp;
      }
    }
  }
  return sortedReadings[numReadings / 2];
}

				
			

Özel Çalışma Modları

HC-SR04 ultrasonik sensör modülünün bazı yeni sürümleri, özel çalışma modları sayesinde ek esneklik sunar. Bu modlar direnç ayarları yoluyla yapılandırılabilir ve farklı iletişim protokollerine ve çalışma özelliklerine olanak tanır.
Bu modlardan biri, çoğu temel uygulama için standart mod olan GPIO (Genel Amaçlı Giriş/Çıkış) modudur. Bu modda modül, önceki bölümlerde açıklandığı gibi çalışır; Trig ve Echo pinleri sırasıyla mesafe ölçümünü tetiklemek ve yankı sinyalini almak için kullanılır.

Bununla birlikte, belirli HC-SR04 sürümlerinde UART (Evrensel Asenkron Alıcı/Verici) ve I2C (Entegre Devreler Arası) modları da mevcuttur. UART modunda, modül seri iletişim kullanarak bir mikrodenetleyici ile iletişim kurabilir. Bu, bazı endüstriyel kontrol sistemlerinde olduğu gibi daha standart bir seri iletişim protokolünün tercih edildiği uygulamalarda veya yerleşik UART arayüzlerine sahip cihazlarla entegrasyon sırasında yararlı olabilir.

Öte yandan, I2C modu, bir I2C veriyolu üzerinden iletişimi mümkün kılar. Bu, birden fazla sensörün veya bileşenin tek bir mikrodenetleyiciyle iletişim kurması gereken çoklu cihaz kurulumlarında faydalıdır. I2C veriyolu, mikrodenetleyicinin pinlerinin daha verimli kullanılmasını sağlar, çünkü birden fazla cihaz aynı iki telli veriyolunu (SDA – Seri Veri Hattı ve SCL – Seri Saat Hattı) paylaşabilir.

Modülü bu özel modlar için yapılandırmak üzere, uygun direnç değerlerini belirlemek için modülün belgelerine başvurmanız gerekir. Örneğin, UART modunu etkinleştirmek için modül üzerindeki iki pin arasına belirli bir direnç bağlamanız gerekebilir. Dirençler doğru şekilde yapılandırıldıktan sonra, modül istenen modda iletişim kuracak şekilde programlanabilir. Bu, UART veya I2C iletişim protokollerini yönetmek için mikrodenetleyicinize farklı kod yazmayı gerektirebilir. Örneğin, I2C yapılandırmalı HC-SR04 kullanan bir Raspberry Pi projesinde, I2C veriyolu üzerinden sensörle iletişim kurmak için Python'daki smbus kütüphanesini kullanabilirsiniz.

Sonuç

HC-SR04 ultrasonik sensör modülü, uygun fiyatı, kullanım kolaylığı ve çok yönlülüğü sayesinde elektronik projelerinin vazgeçilmez bir parçası olmaya devam ediyor. Çalışma prensibini iyice kavrayarak, yaygın olarak kullanılan mikrodenetleyicilerle arayüz oluşturarak ve yaratıcı uygulamaları keşfederek, temel mesafe ölçümünden karmaşık IoT sistemlerine kadar her alanda bu modülün tüm potansiyelini ortaya çıkarabilirsiniz. Sorularınız mı var ya da proje fikirleriniz mi var? Aşağıdaki form aracılığıyla bizimle paylaşın! 🛠️

Abone ol

Aylık blog güncellemeleri, teknoloji haberleri ve vaka analizleri almak için abone listemize katılın. Asla spam göndermeyeceğiz ve istediğiniz zaman aboneliğinizi iptal edebilirsiniz.

Yazar Hakkında

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Yardıma mı ihtiyacınız var?

Scroll to Top

Instant Quote