Arduino ile Mesafe Ölçer(HC-SR04)

Bu yazımızda HC-SR04 ultrasonik mesafe sensörü kullanarak Arduino İle Mesafe Ölçer projesi için program kodlayıp devre kurulumunu yapacağız. HC-SR04  ile ölçtüğümüz mesafe değerini Arduino IDE’deki Seri Monitörde göstereceğiz.

    *Gerekli Malzemelerden Başlayalım.

Breadboard, Arduino, HC-SR04 konularında yeterince bilgi sahibi değilseniz, öncelikle o konularla ilgili yazılarımızı okumanızı tavsiye ederim.

Arduino ile Mesafe Ölçer Devresi ve Programı

Öncelikle şunu belirtmeliyim. HC-SR04 ultrasonik mesafe sensörü en kolay bulunan ve en ucuz olan mesafe sensörü. Bu sensörün sağlıklı ölçüm aralığı 2 cm ile 200cm arasında ve ölçüm doğruluğu yaklaşık 3 mm civarındadır.

Şimdi öncelikle devremizi kuralım.

Breadboard üzerine HC-SR04‘ü yukarıdaki gibi takalım. Jumper kablo yardımıyla;

HC-SR04‘ün Vcc bacağını Arduino’nun 5V pinine,
HC-SR04‘ün Trig bacağını Arduino’nun 9 no’lu pinine,
HC-SR04‘ün Echo bacağını Arduino’nun 8 no’lu pinine,
HC-SR04‘ün GND bacağını Arduino’nun GND pinine takalım.

Sensördeki Trig(Trigger) ses dalgasını gönderir, Echo ise geri dönen dalgayı algılar.

Ultrasonik sensörün nasıl çalıştığını, mesafeyi nasıl ölçtüğünü öğrenmek istiyorsanız Ultrasonik Sensörler konumuzu mutlaka okuyun.

#define trigPin 9
#define echoPin 8

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
long sure, mesafe;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH);
mesafe = (sure/2) / 29.1;
   if (mesafe >= 200 || mesafe <=2){
   Serial.println("Ölçüm Hatası!");
   }
   else {
   Serial.print(mesafe);
   Serial.println(" cm");
   }
delay(500);
}

PROGRAM ADIMLARI

ADIM 1:

Bu örnekte Arduino’nun 8. dijital pinini Echo(sesi dalgasını algılama), 9. dijital pinini Trig(ses dalgası gönderme) için seçtim.

#define trigPin 9//Trig ucunun bağlı olduğu 9 nolu pin "trigPin" olarak isimlendirildi.
#define echoPin 8//Echo ucunun bağlı olduğu 8 nolu pin "echoPin" olarak isimlendirildi.

#define trigPin 9 Burada yapılan işlem şu; Arduino’da HC-SR04’ün Trig bacağını bağlayacağımız pini trigPin olarak isimlendirmek. Böylece kodumuz daha anlaşılır olacak.
#define echoPin 8 Burada ise 8 numaralı pine echoPin ismini veriyorum. Bu işlemden sonra 9 numaralı pin artık trigPin isminde, 8 numaralı pin ise echoPin isminde kullanılacak.

ADIM 2:

void setup() {
Serial.begin (9600);//Serial.begin() seri haberleşmeyi başlat
pinMode(trigPin, OUTPUT);//trigPin isimli pin çıkış sinyali üretecek
pinMode(echoPin, INPUT);//echoPin isimli pin giriş sinyali alacak
}

void setup() Arduino çalışmaya başladığında ilk olarak bu fonksiyonunu okur ve ön ayarları yapar.

Serial.begin (9600); komutu Arduino IDE’deki Serial Monitor ekranında ölçüm sonuçlarını görmemiz için gereklidir. Serial.begin() seri haberleşmeyi başlatır. Buradaki 9600 Baud rate yani iletişim hızıdır.

pinMode(trigPin, OUTPUT); komutu ile trigPin pinini OUTPUT(Sinyal çıkışı) olarak ayarladık. Çünkü trigPin (9 no’lu pin) çıkış sinyali üretecek, ses dalgası gönderecek.

pinMode(echoPin, INPUT); komutu ile echoPin pinini INPUT(Sinyal girişi) olarak ayarladık. Çünkü echoPin(8 no’lu pin) giriş sinyali dinleyecek, ses dalgasını algılayacak.

ADIM 3:

void loop() {// içerisindeki komutları sürekli olarak tekrar eder.
long sure, mesafe;//long türünde sure ve mesafe olmak üzere 2 değişken tanımla
digitalWrite(trigPin, LOW);//trigPin pinini LOW(0) yap
delayMicroseconds(2);// 2 mikrosaniye bekle
digitalWrite(trigPin, HIGH);//trigPin pinini HIGH(1) yapıyor
delayMicroseconds(10);// 10 mikrosaniye bekle
digitalWrite(trigPin, LOW);//trigPin pinini LOW(0) yap
sure = pulseIn(echoPin, HIGH);//ultrasonik sinyali dinler
mesafe = (sure/2) / 29.1; //mesafeyi cm olarak hesapla

Loop() fonksiyonu Arduino çalıştığı sürece, içerisindeki komutları sürekli olarak tekrar eder.

long sure, mesafe; komutu ile long(büyük tam sayı) veri türünde sure ve mesafe olmak üzere 2 değişken tanımladık. Ses dalgasının gönderilmesi ve geri dönüşte okunması için geçen süre ile mesafeyi bulacağız. Bu nedenle bu değişkenlere ihtiyacımız olacak.

digitalWrite(trigPin, LOW); komutu trigPin pinini LOW(0) yapıyor, yani kapatıyor.

delayMicroseconds(2); komutu 2 mikrosaniye bekleme yaptırıyor.

digitalWrite(trigPin, HIGH); komutu trigPin pinini HIGH(1) yapıyor, yani ses dalgası ürettiriyor.

delayMicroseconds(10); komutu 10 mikrosaniye bekleme yaptırıyor.

digitalWrite(trigPin, LOW); komutu trigPin pinini tekrar LOW(0) yapıyor, yani kapatıyor.

Burada yapılmak istenen şey şu; trigPin 10 mikrosaniye boyunca ses dalgası üretiyor. Ardından 2 mikrosaniye kapanıyor. Sonra yine aynı işlemi sürekli olarak tekrarlıyor.

sure = pulseIn(echoPin, HIGH); komutu trigPin’in ürettiği ultrasonik sinyali dinler ve sesin gidiş dönüş süresini ölçer.

mesafe = (sure/2) / 29.1; komutu, ses hızı sabit olduğu için “ölçülen süreye göre mesafeyi hesaplar. Bu hesaplamanın nasıl yapıldığını ultrasonik sensörler yazımızdan öğrenebilirsiniz.

ADIM 4:

 if (mesafe >= 200 || mesafe <=2){//ölçülen mesafe 200 cm'den büyük eşitse veya 2'den küçük eşitse
   Serial.println("Ölçüm Hatası!");//seri monitöre "Ölçüm Hatası!" yazdır
   }
   else {//Yukarıdaki şart sağlanmazsa
   Serial.print(mesafe);//seri monitöre mesafe değerini yazdır
   Serial.println(" cm");//seri monitöre mesafe değerinin sonuna "cm" yazdır
   }
delay(500);//500ms bekle
}

if (mesafe >= 200 || mesafe <=2){ komutu ölçülen mesafe 200 cm’den büyük eşitse veya 2’den küçük eşitse Serial.println(“Ölçüm Hatası!”); komutuyla seri monitöre “Ölçüm Hatası!” yazdıracak.

else { komutu if’deki şart sağlanmazsa çalışacaktır. Yani ölçüm HC-SR04’ün düzgün ölçebileceği aralıktaysa Serial.print(mesafe); komutu ile seri monitöre mesafe değişkenindeki değer yazılacak. Serial.println(” cm”); komutuyla da seri monitörde mesafe değerinin sonuna “cm” yazdırılacak.

delay(500); komutu ile 500ms bekleme yapılacak. Bu sayede her 500ms bir mesafe ölçümü yapılacak ve seri monitöre sonuçları yazdırılacak.

Serial Monitor’ü Tools menüsünden Serial Monitörü seçerek yada klavyeden ctrl + shift + M tuş kombinasyonuyla açabilirsiniz.

Reply