Bu yazımızda sizlere HC-SR04 Ultrasonik Mesafe Sensörünün Arduino ile nasıl kullanılacağından bahsedeceğiz. HC-SR04 Ses dalgaları ile çalışan bir sensördür. Bu ses dalgalarını mesafeye çevirmek için birkaç matematiksel işleme ihtiyaç duyar. HC-SR04 kendi başına bu hesaplamayı yapamadığından bir kontrolcüye ihtiyaç duyar yani Arduino gibi işlem yapabilen kartlar bunlara örnektir. Biz Arduino kullanacağız, ilerleyen yazılarımızda HC-SR04 Sensörünü Raspberry Pi gibi kartlarla da nasıl aktif kullanabilir bunu anlatacağız.
Yazımızın başında bahsettiğimiz gibi HC-SR04 Mesafe Sensörü ses dalgaları ile çalışmakta. Sensörün ön tarafını iki tane göz gibi düşünebiliriz. Bu gözlerden bir tanesi alıcı bir tanesi verici olarak çalışır. Verici olan göz kulağımızla duyamacağımız kadar yüksek frekansta ses dalgaları yayar. Bu ses dalgaları cisimlerden yansır ve alıcı göze geri gelir. Arada geçen süreye bağlı olarak mesafe hesaplanır.
Hesaplamanın detayı şöyle Mesafe = HIGH Level Süresi (Lojik 1 süresi) * Ses Hızı (340M/S) / 2
Öncelikle gereken malzemeleri temin edelim.
• Arduino UNO R3
• HC-SR04 Ultrasonik Mesafe Sensörü
• Breadboard
• Erkek – Erkek Jumper Kablolar
Malzemeleri Direnc.net sitemizden temin ettikten sonra devre kurulumunu aşağıdaki gibi yapıyoruz.
HC-SR04 Trigger Pini –> Arduino 7. Pinine
HC-SR04 Echo Pini –> Arduino 6. Pinine
HC-SR04 VCC Pini –> Arduino 5V Pinine
HC-SR04 GND Pini –> Arduino GND Pinine
Tüm bağlantıları yaptıktan sonra yazılım kısmına geçiyoruz. Aşağıdaki kodu Arduino IDE programına yapıştırıp portu ayarladıktan sonra kartımıza yüklemeyi yapıyoruz. Unutmayın yüklemeyi yaptıktan sonra Arduino IDE programından mesafeyi görebilmemiz için Seri Monitörü açmamız gerekiyor.
/*
Türkiye'nin en büyük elektronik komponent, malzeme, takım, geliştirme kartları, modülleri, robotik ürünleri ve Arduino - Raspberry Pi resmi satış adresi.
www.direnc.net
*/
int trigger = 10; // Sensörün Trigger bacağının bağlı olduğu pin
int echo = 11; // Sensörün Echo bacağının bağlı olduğu pin
unsigned long sure; // Echo bacağının kac mikro saniyede aktif olduğunu saklayacak olan değişken
double toplamYol;
int aradakiMesafe;
void setup() {
pinMode(trigger, OUTPUT); // Sensörün Trigger bacağına gerilim uygulayabilmemiz için OUTPUT yapıyoruz.
pinMode(echo, INPUT); // Sensörün Echo bacağındaki gerilimi okuyabilmemiz için INPUT yapıyoruz.
Serial.begin(9600);
}
void loop()
{
/* Başlangıçta LOW durumda olan trigger bacağına gerilim uygulayıp ardından gerilimi keserek bir ses dalgası
oluşturmuş oluyoruz. Bu işlem arasında 10 mikro saniye beklenmenin sebebi HC-SR04'ün en az 10 mikro saniyelik
dalgalar ile çalışmasıdır. */
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
// Dalga üretildikten sonra geri yansıyıp Echo bacağının HIGH duruma geçireceği süreyi pulseIn fonksiyonu ile
// kaydediyoruz.
sure = pulseIn(echo, HIGH);
// Aşağıda yapılan süre-mesafe dönüşüm işlemleri yazımızda açıklanmıştır.
toplamYol = (double)sure * 0.034;
aradakiMesafe = toplamYol / 2;
Serial.print("Ses dalgasinin geri donus suresi :");
Serial.print(sure);
Serial.println("mikro saniye");
Serial.print("Ses dalgasinin toplam kat ettigi yol :");
Serial.print(toplamYol);
Serial.println("cm.");
Serial.print("HC-SR04 ile karsisindaki yuzey arasindaki mesafe :");
Serial.print(aradakiMesafe);
Serial.println("cm.\n\n");
delay(2000);
}
Kodu Arduino’ya yükledikten sonra seri monitörde mesafe bilgisini görebilirsiniz.