HCSR-04 Ultrasonik Mesafe Sensörü: Kullanımı ve Arduino ile Proje Örnekleri HCSR-04 Mesafe Sensörü Nedir ve Nasıl Çalışır?

15-11-2024 19:47
HCSR-04 Ultrasonik Mesafe Sensörü: Kullanımı ve Arduino ile Proje Örnekleri HCSR-04 Mesafe Sensörü Nedir ve Nasıl Çalışır?

HCSR-04 Ultrasonik Mesafe Sensörü Kullanımı ve Arduino Uno ile LCD Ekran Üzerinde Ölçülen Değerlerin Gösterimi

Giriş

HCSR-04 Ultrasonik Mesafe Sensörü, robotik projelerde ve Arduino tabanlı uygulamalarda en yaygın kullanılan sensörlerden biridir. Bu sensör, nesneler arasındaki mesafeyi ölçmek için ultrasonik dalgaları kullanır. Özellikle engel algılama, mesafe ölçümü ve otomatik navigasyon gibi projelerde sıklıkla tercih edilir. Bu yazımızda, HCSR-04 sensörünün nasıl çalıştığını ve Arduino ile nasıl kullanıldığını adım adım öğreneceksiniz.

HCSR-04 Sensörünün Temel Çalışma Prensibi

HCSR-04, ultrasonik ses dalgaları göndererek çevredeki nesnelerin mesafesini ölçer. Sensör, bir transmitter (verici) ve receiver (alıcı) kullanarak dalgaları gönderir ve geri dönen yankıyı ölçer. Bu geri dönüş süresi, nesnenin sensörden uzaklık miktarıyla orantılıdır. Bu işlem, saniyeler içinde gerçekleşir ve doğru mesafe ölçüm sonuçları sağlar.

Temel bileşenler:

  • VCC (Güç Kaynağı): 5V güç ile çalışır.
  • Trig (Tetikleme): Sensörü aktif hale getiren pin.
  • Echo (Eko): Geri dönen ses dalgasını alarak mesafeyi hesaplayan pin.
  • GND (Toprak): Toprak bağlantısı.

Arduino Uno ile HCSR-04 Kullanımı

HCSR-04 sensörünü Arduino'ya bağlamak oldukça basittir. İşte adım adım nasıl bağlanacağına dair bir rehber:

  1. Bağlantılar:
    • VCC pinini Arduino’nun 5V pinine bağlayın.
    • Trig pinini Arduino'nun dijital bir pinine (örneğin, 9 numaralı pin) bağlayın.
    • Echo pinini Arduino'nun herhangi bir dijital pinine (örneğin, 10 numaralı pin) bağlayın.
    • GND pinini Arduino'nun GND pinine bağlayın.
  2. Kod: Şimdi Arduino IDE'yi açıp aşağıda paylaştığımız örnek kodu Arduino’nuza yükleyebilir yada kendi kodunuzu yazabilirsiniz.

#include

#include

 

// Pin tanımlamaları

const int TRIG_PIN = 9; // Ultrasonik sensörün Trig pini Arduino'nun 9. pinine bağlı

const int ECHO_PIN = 10; // Ultrasonik sensörün Echo pini Arduino'nun 10. pinine bağlı

 

LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD ekranın I2C adresi 0x27, 16x2 ekran boyutu

 

void setup() {

  // Seri haberleşmeyi başlat

  Serial.begin(9600);

  

  // Ultrasonik sensörün pinlerini ayarla

  pinMode(TRIG_PIN, OUTPUT);  // TRIG_PIN çıkış olarak ayarlandı

  pinMode(ECHO_PIN, INPUT);   // ECHO_PIN giriş olarak ayarlandı

 

  // LCD ekranı başlat

  lcd.begin(16, 2);  // 16 sütun ve 2 satır LCD ekranı başlat

  lcd.setCursor(0, 0); // LCD ekranın ilk satırının ilk sütununa yerleştir

  lcd.print("Mesafe: ");  // LCD ekranın ilk satırına "Mesafe" yazdır

}

 

void loop() {

  long duration, distance;

  

  // Trig pinine 10 mikrosaniye boyunca HIGH sinyali gönder

  digitalWrite(TRIG_PIN, LOW);  // TRIG_PIN LOW yapıldı (önce 0 yapıyoruz)

  delayMicroseconds(2); // 2 mikrosaniye bekle

  digitalWrite(TRIG_PIN, HIGH); // TRIG_PIN HIGH yapıldı (ultrasonik ses dalgası gönder)

  delayMicroseconds(10); // 10 mikrosaniye bekle

  digitalWrite(TRIG_PIN, LOW);  // TRIG_PIN tekrar LOW yapıldı (ses dalgası gönderildi)

 

  // Echo pininden geri dönen yankıyı ölç

  duration = pulseIn(ECHO_PIN, HIGH); // ECHO_PIN'den gelen sinyalin süresini ölç

 

  // Mesafeyi hesapla (ses dalgasının gidiş-dönüş süresi ile mesafe hesaplanır)

  distance = (duration * 0.0344) / 2; // Mesafe hesaplama formülü (ses hızını dikkate alır)

 

  // Seri monitöre mesafeyi yazdır

  Serial.print("Mesafe: ");

  Serial.print(distance);  // Hesaplanan mesafeyi ekrana yazdır

  Serial.println(" cm");  // cm cinsinden mesafeyi yazdır

 

  // LCD ekranına mesafeyi yazdır

  lcd.setCursor(0, 1); // LCD ekranının 2. satırına geç

  lcd.print(distance);  // Hesaplanan mesafeyi LCD'ye yazdır

  lcd.print(" cm"); // LCD'de "cm" birimini göster

 

  delay(500); // Her 500 milisaniyede bir ölçüm yapılacak

}


Kodun Açıklaması:

1-Kitaplıklar ve Pin Tanımlamaları:

#include

#include

Bu satırlarda, LCD ekran ile iletişim kurabilmek için kullanılan I2C protokolünü yöneten LiquidCrystal_I2C ve Wire kütüphaneleri ekleniyor.

const int TRIG_PIN = 9;

const int ECHO_PIN = 10;

Burada, HCSR-04 sensörünün Trig pini ve Echo pini için Arduino'nun 9. ve 10. pinleri atanıyor. Bu pinlere göre bağlantı yapmalısınız.

2-LCD Ekranın Tanımlanması:

LiquidCrystal_I2C lcd(0x27, 16, 2);

Bu satırda, LCD ekranın I2C adresi (0x27) ve ekran boyutu (16x2) tanımlanıyor.

3-setup() Fonksiyonu:
Seri Haberleşme Başlatılıyor;

Serial.begin(9600);

Bu satırda, Arduino ile bilgisayar arasındaki seri haberleşme başlatılıyor. 9600 baud hızında veri gönderilip alınacak.

Pinler Ayarlanıyor;

pinMode(TRIG_PIN, OUTPUT);

pinMode(ECHO_PIN, INPUT);

Bu satırlarda, TRIG_PIN çıkış (OUTPUT) olarak ayarlanıyor, çünkü bu pin üzerinden ultrasonik dalga gönderilecek. ECHO_PIN ise giriş (INPUT) olarak ayarlanıyor, çünkü sensörden geri dönen yankıyı alacak.


LCD Ekran Başlatılıyor;

lcd.begin(16, 2);

Bu satır LCD ekranını başlatır, 16 sütun ve 2 satır olarak ayarlanmıştır.

4-loop() Fonksiyonu:
Mesafe Ölçümü;

digitalWrite(TRIG_PIN, HIGH);

delayMicroseconds(10);

digitalWrite(TRIG_PIN, LOW);

Burada, TRIG_PIN'e 10 mikrosaniyelik bir HIGH sinyali gönderilir, bu da ultrasonik sensörün ses dalgası göndermesini sağlar. Sonrasında pin LOW yapılır.

Mesafeyi hesaplamak için yankı süresi ölçülüyor:

duration = pulseIn(ECHO_PIN, HIGH);

Bu satırda, ECHO_PIN'den gelen HIGH sinyalinin süresi ölçülüyor. Bu süre, ses dalgasının sensöre dönüş süresini temsil eder.

Mesafe Hesaplanıyor;

distance = (duration * 0.0344) / 2;

Bu formül ile ses dalgasının mesafesi hesaplanır. Sesin hava içinde hızı yaklaşık 343 metre/saniyedir. Bu, 0.0344 cm/mikrosaniye hızına eşdeğerdir. /2 işlemi, ses dalgasının gidiş-dönüş yolunu dikkate alır.

5-Sonuçların Görüntülenmesi;

Serial.print("Mesafe: ");

Serial.print(distance);

Serial.println(" cm");

Hesaplanan mesafe, seri monitöre yazdırılır.

LCD Ekrana Yazdırmak;

lcd.setCursor(0, 1);

lcd.print(distance);

lcd.print(" cm");

Hesaplanan mesafe LCD ekranın 2. satırında görüntülenir.

6-delay(500) Fonksiyonu:

Bu satırda, program 500 milisaniye (yarım saniye) bekler. Bu, sensörün ölçümlerini her yarım saniyede bir almasını sağlar.

Proje Fikirleri ve Uygulamalar

HCSR-04 sensörünü kullanarak yapabileceğiniz bazı ilginç projelere göz atalım:

1.                      Engel Algılama Sistemi: Bu sensör ile robotların önlerindeki engelleri algılamasını sağlayabilirsiniz. Sensör, robotun yolundaki engelleri algıladığında, robotun yönünü değiştirmesi sağlanabilir.

2.                      Otomatik Kapı Açma: Sensörün mesafe ölçme fonksiyonunu kullanarak, bir otomatik kapı açma sistemi tasarlayabilirsiniz. Sensör, bir kişi yaklaşırken mesafeyi ölçer ve kapıyı açmak için motoru tetikler.

3.                      Mesafe Ölçüm Cihazı: HCSR-04, evde ya da endüstriyel alanlarda basit mesafe ölçümleri yapmak için de kullanılabilir. Kullanıcılar, sensör aracılığıyla çevrelerindeki nesnelerin mesafesini ölçebilirler.

Şimdi bu projeler için  bağlantılarınızı kendiniz yaparak, kodlarınızı oluşturup sisteminizi çalıştırabilirsiniz...

Sonuç ve İleri Seviye Kullanım

HCSR-04 sensörü, çok çeşitli robotik projeler için temel bir sensördür. Kolay kullanımı ve uygun fiyatı ile özellikle başlangıç seviyesindeki projelerde tercih edilir. Ancak, mesafe ölçümünde sınırlı doğruluk ve menzili vardır. Daha hassas ölçüm yapmak isteyen kullanıcılar, daha gelişmiş ultrasonik sensörler veya LIDAR sensörlerini düşünebilir.

 

İleri Seviye Kullanım Fikirleri:

      • HCSR-04 ile daha hassas mesafe ölçümü yapabilmek için, sensörlerin birbirleriyle senkronize çalıştığı projeler geliştirebilirsiniz.
      • Daha geniş bir ölçüm alanı sağlamak için farklı sensörlerle kombinasyonlar yapabilirsiniz.

 

Bu setimizi hazır halde aşağıdaki linkten temin edebilirsiniz!

https://www.emesrobotik.com/urun/arduino-uno-r3-mesafe-olcum-seti-hc-sr04-lcd-2x16-ic2-modul-baglanti-semasi-ve-ornek-kodlarla-birlikte?AppLanguageCode=tr

IdeaSoft® | Akıllı E-Ticaret paketleri ile hazırlanmıştır.