Arduino Proje 7 – Mesafe Ölçer

Merhaba arkadaşlar, bu yazımda sizlere Arduino ile mesafe ölçer uygulamasının nasıl yapılacağından bahsedeceğim. Uygulamamıza geçmeden önce hemen aşağıdaki malzemeleri temin etmemiz gerekiyor. Eğer malzemelerimiz eksik veya yoksa tinkercad.com veya benzeri ortamlarda simülasyon da yapabilirsiniz.

Kullanacağımız Malzemeler

  1. 1 x Arduino Uno
  2. 1 x A’dan B’ye USB Kablo
  3. 1 x Orta Boy BreadBoard
  4. 15 x Erkek Erkek Jumper Kablo
  5. 1 x HCSR-04 Mesafe Sensörü

Haydi Başlayalım!

Öncelikle bu uygulamamızda yapacağımız mesafe ölçerimizin ölçtüğü mesafeleri herhangi bir dış modüle değil bilgisayarımızın ekranına yazdıracağız. Bunu yaparken de seri haberleştirme yapacağız. Seri haberleşmeden çok kısaca bahsedelim.

Seri haberleştirme bizim Arduino kartımız ve bilgisayarımız arasında iletiletilecek sinyallerimizin tek bir hat üzerinden aktarılmasına denir. Biz bu uygulamada çok kısa bir kod yardımıyla seri haberleşmeden yararlanacağız.

Mesafe Sensörü Çalışma Mantığı

Yarasa ve yunusların iletişim kurabilme yeteneklerinden yola çıkarak aynı mantık ile mesafe sensörleri tasarlanmıştır. Sensörümüzün 2 adet ses dalgası terminali ve toplamda 4 terminali vardır. Bunlardan 2 tanesi 5V ve GND terminalleri olup diğer ikisi echo ve trig pinlerimizdir. Trig pinimiz ile ses dalgasını yollayacak ve echo pinimiz ile ses dalgasını alacağız. Bu sayede giden ses dalgasının echo pinine varış süresine ve sesin ortamın sıcaklığına bağlı hızına dayanarak istediğimiz cisim ile aramızdaki mesafeyi ölçebileceğiz. Tabiki bunu yaparken sensörümüzün bize sağladığı etkili menzil boyunca ölçümlerimizi yapabileceğiz.

Yol hesapları fizik dersinden de bildiğimiz üzere X = V * t formülü üzerinden hesaplanıyor. Biz burada t ile ifade ettiğimiz zamanımızı pulseIn fonskiyonumuz ile ölçeceğiz. Aslında ölçtüğümüz bu değer trig pininden çıkan ses dalgasının echo pinine ilk ulaştığı an ile son ulaştığı an arasındaki zaman farkıdır. Daha sonra V ile ifade ettiğimiz hız değişkenimiz yerine de ortamın sıcaklığı ile değişebilen sesin hızını yazacağız. Sesin hızını yazarken genellikle 20 °C ortamdaki ses hızı baz alındığı için cm ölçümler için 58, inç ölçümler için 148 olarak yazacağız. X olarak ifade ettiğimiz mesafeyi ölçerken burada dikkat etmemiz gereken en önemli husus ise zamanın yarısını almak olacaktır. Çünkü trig ve echo pinleri arasındaki ses dalgasının ulaşma zamanı aslında bizim istediğimiz yolun 2 katını temsşil etmektedir. Hem gidiş hem de dönüş. Bu sebepten ötürü zamanın yarısı ile 58‘i çarparak aradığımız mesafenin 20 °C ortamda cm olarak karşılığını bulabiliriz.

NOT: HC – SR04 mesafe sensörümüz 2cm – 400 cm arası mesafeleri ölçebilir. Bu aralık sensörden sensöre değişiklik gösterebilir.

Devre Şeması ve Kodlama

Hemen aşağıda devremizin şeması mevcuttur. Oldukça kolay bir uygulama olan bu devremizim çalışabilmesi için gerekli kodlar da hemen devremizin altındadır.

Yukarıdaki devremizin kodları aşağıda mevcuttur.

#define echo 11
#define trig 12

void setup()
{
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  //trig pini ses dalgasını yolar
  //echo pini ses dalgasını alır
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(trig, HIGH);
  delayMicroseconds(2);
  digitalWrite(trig, LOW);
  
  float zaman = pulseIn(echo, HIGH);
  //LOW - HIGH arası zamanı ölçer
  
  float mesafe = zaman / 58.2;
  delay(200);
  
  Serial.println(mesafe);
}

Burada dikkat ettiyseniz seri haberleşme yaptık. Kodumuzda yazan 9600 sayısı seri haberleşmenin hızı olup println ise seri haberlşmenin dahilindeki seri monitöre yazdırma foınskiyonudur. Hemen derleyicideki seri monitörü açarak ölçülen değerleri görebilirsiniz.

Uygulamamız ile ilgili anlamadığınız bir şey olursa yorum kısmından bizimle iletişime geçebilirsiniz.