11
Bu yazıyı " 2 " dakikada okuyabilirsiniz. 🙂

Merhabalar bu yazımızda arduino ile HC-SR04 mesafe sensörünün kullanımını inceleyeceğiz. Dijital pinler üzerinden çalışan bir sensör olan HC-SR04 mesafe sensörü nasıl çalışıyor öncelikle ondan bahsedelim.

HC-SR04 Mesafe Sensörü Nasıl Çalışıyor?

HC-SR04 mesafe sensörü 2 cm ile 400 cm arasındaki mesafeleri ölçebilmektedir. Böyle bir aralık söz konusuyken ilk bakışta bunu dijital sinyallerle değil de analog sinyallerle yapması gerekiyor gibi duruyor ancak Hc-SR04 ultrasonik mesafe sensörü mesafeyi hesaplarken dijital sinyallerini kullanıyor. Ses sinyali üreten hc-sr04 ultrasonik mesafe sensörüne ses sinyalinin sensörden çıkışı ve geri dönüşü arasında geçen süreyi hesaplayıp basit bir fizik formülünü (yol=hız X zaman) kullanarak aradaki mesafeyi hesaplatıyoruz. Yani analog sensörlerde olduğu gibi sensör bize direkt bir değer sunmuyor. Sensör üzerinde bulunan Trig pini sensörün yayılmasını tetikliyor Echo pini de yüzeye çarpıp geri dönen ses sinyalini sensöre geldiğinde yakalıyor. Kod üzerinde açıklayıp sensörü kullandığımızda nasıl çalıştığını pekiştirelim.

Arduino İle Mesafe Sensörü Uygulaması

Gerekli Malzemeler;

  • Arduino Uno
  • Breadboard
  • HC-SR04 Ultrasonik Mesafe Sensörü
  • Erkek – Dişi Jumper Kablolar
Arduino İle Mesafe Sensörü Kullanımı Uygulaması Devresi

Kodlamaya Geçelim

Öncelikle Hc-sr04 üzerinde bulunan echo ve trig pinlerini değişkenlere tanımlıyoruz.

  • trigPin’i 4. pine (trigPin değişkenimizi 4. pine tanımladık.)
  • echoPin’i 2. pine (echoPin değişkenimizi 2. pine tanımladık.) bağladığımızı belirttik.
  • long veri türünde sure ve mesafe değişkenlerimizi tanımladık.
#define trigPin 4
#define echoPin 2
long sure, mesafe;

Setup içerisinde program çalıştığında Arduinomuzun neler yapmasını istediğimizi kodlayalım.

  • Seri ekranı 9600 baud’da kullanacağımızı belirttik.
  • trigPin’i çıkış pini,
  • echoPin’i giriş pini olarak ayarladık.
  • Bu şekilde yapmamızın sebebi Trig pini mesafe sensöründen ses sinyalinin çıkışını sağladığı için çıkış olarak ayarladık. Echo pini ise sinyal yüzeye çarpıp geri döndüğünde sinyali yakalayıp sinyalin geri döndüğü verisini Arduinoya aktardığı için giriş pini olarak ayarladık.
  • Serial println kodu ile seri ekrana programın başlayacağına dair uyarımızı yazdırdık ve alt satıra geçtik.
  • delay(3000) kodu ile de uyarı mesajından sonra 3 saniye beklemesini sağladık.
void setup () {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

Serial.println("Arduino İle Mesafe Sensörü Uygulaması Başlatılıyor...");
delay(3000);
}

Loop içerisinde Arduino çalıştığı sürece neler yapmasını istediğimizi kodlayalım.

  • trigPin’i LOW konuma getirerek ses sinyallerimizi göndermeyi kestik.
  • 3 mikrosaniye beklettik.
  • trigPin’i HIGH konuma getirerek ses sinyallerimizi gönderdik.
  • 10 mikrosaniye beklettik.
  • trigPin’i LOW konuma getirerek ses sinyallerimizi göndermeyi kestik.
  • pulseIn komutu ile echoPin e gelen ses sinyalin gidip gelme süresini hesaplattık ve değeri sure değişkenine tanımladık.
  • mesafe değerimizi yol = zaman X hız formülünü kullanarak hesaplattık. Burada hesapladığımız süre hem gidiş hem de geliş süresini aldığı için sure değişkenini 2 ye bölerek hesaplamamızı gerçekleştirdik. 0.0343 hız değeri de ses’in 1 mikro saniyedeki hızı olduğu için hız değerini 0.0343 olarak aldık. mesafe =(sure/2)*0.0343 işlemiyle mesafe değerimizi hesaplattık.
void loop () {
digitalWrite(trigPin, LOW);
delayMicroseconds(3);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

sure = pulseIn(echoPin, HIGH);

mesafe = (sure/2) * 0.0343;
Serial.print(mesafe);
Serial.println(" cm uzaklıkta");
delay(500);
}

Arduino İle Mesafe Sensörü Uygulaması Kodların Tamamı

#define trigPin 4
#define echoPin 2
long sure, mesafe

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

Serial.println("Arduino İle Mesafe Sensörü Uygulaması Başlatılıyor...");
delay(3000);
}
void loop () {
digitalWrite(trigPin, LOW);
delayMicroseconds(3);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

sure = pulseIn(echoPin, HIGH);

mesafe = (sure/2) * 0.0343;
Serial.print(mesafe);
Serial.println(" cm uzaklıkta");
delay(500);
}
Ahmet Kemal YILDIZ
Eskişehir Osmangazi Üniversitesi Bilgisayar ve Öğretim Teknolojileri Öğretmenliği mezunu bir Bilişim Teknolojileri ve Yazılım Dersi Öğretmeniyim. Bilişim Teknolojileri ve Yazılım dersi ile ilgili ders etkinlikleri, kaynak materyaller, örnek etkinlikler ve ilgi duyduğum birçok konu hakkında vakit buldukça buradan blogluyorum. :)

    Çocuklar İçin Yapay Zeka Kitabı

    önceki yazı

    Teknofest 2021 Heyecanı Başlıyor

    Sonraki Yazı

    Bu Yazılar da İlgini Çekebilir!

    11 Yorumlar

    1. teşşekürler çok yardımı dokundu

    2. HC-SR04 mesafe sensörü kodunda, neden trigPin’i önce LOW konumuna getiriyoruz ve ardından HIGH konumuna taşıyoruz? Bu adımların amacı nedir?

      1. Merhabalar,
        Trig pini üzerinden HC-SR04 mesafe sensöründen ses sinyallerini tetiklemek için kullanılır. Bu pini önce LOW (düşük) konumuna getirmemizin nedeni, sensörün hazır konumda olduğunu ve ses sinyallerini göndermeye hazır olduğunu belirtmek içindir. Daha sonra trigPin’i HIGH (yüksek) konumuna getirmemizin nedeni, sensörden bir ultrasonik ses sinyali göndermektir. Bu, ses dalgasının yayılmasını tetikler.

        Bu adımlar, sensörden ses sinyallerinin gönderilmesini ve mesafe ölçümünün yapılmasını sağlamak için gereklidir. Ardından trigPin tekrar LOW konumuna getirilir, böylece sensör ses sinyali göndermeyi durdurur. Bu adımlar, sensörün doğru şekilde çalışabilmesi için önemlidir ve mesafe ölçümünün doğru bir şekilde gerçekleşmesini sağlar.

    3. mesafe hesaplamasında 0,348 değil de 0,0348 olmayacak mı? sanırım yanlış yazılmış

      1. Yazarken gözden kaçırmışım, düzelttim. çok teşekkür ederim. 🙂

    4. HC-SR04 mesafe sensörünü UNO haricinde farklı bir Arduino modeliyle kullanabilir miyim?

      1. Evet, HC-SR04 mesafe sensörünü farklı Arduino modelleriyle kullanabilirsiniz. HC-SR04, Arduino Uno ile popüler hale gelmiş olsa da, diğer Arduino modelleriyle de uyumlu çalışabilir. HC-SR04’ün Trig ve Echo pinlerini doğru dijital pinlere bağladığınızdan ve kodunuzda doğru pin numaralarını kullandığınızdan emin olmanız yeterlidir. Arduino modelleri arasında bazı farklılıklar olabilir, bu nedenle Arduino modelinizin belgelerine başvurarak doğru pin konfigürasyonunu ve kodlamayı kullanmanız önemlidir. Ayrıca, farklı Arduino modellerinin farklı voltaj gereksinimleri olabileceğini unutmayın, bu yüzden doğru güç kaynağını kullanmanız da önemlidir.

    5. Merhabalar,
      Arduino Uno veya Mega ile kaçar tane HC-SR04 aynı anda çalıştırabilirim?

      1. Arduino Uno ve Mega gibi mikrodenetleyicilerle aynı anda kaç HC-SR04 sensörünü çalıştırabileceğiniz, mikrodenetleyicinizin pin sayısı, işlem gücü ve projenizin gereksinimlerine bağlıdır. Özetle:

        Pin Sayısı: Her HC-SR04 sensörü için en az 2 pin gereklidir (bir trig pin ve bir echo pin). Pin sayısı, aynı anda çalıştırabileceğiniz sensör sayısını sınırlar.

        İşlem Gücü: Daha fazla sensör kullanmak için mikrodenetleyicinizin işlem gücü önemlidir. Arduino Uno ve Mega, işlem gücü bakımından farklıdır. Daha fazla sensör veya karmaşık hesaplamalar için daha güçlü bir mikrodenetleyici tercih edilebilir.

        Zamanlama: Birden fazla sensörün doğru zamanlama gerektirdiği unutulmamalıdır. Zamanlama çakışmalarını önlemek için programlama ve tasarım önemlidir.

        Programlama Yetenekleri: Birden fazla sensörü kullanmak için uygun kodu yazmak gereklidir. Zamanlama ve veri işleme becerileri önemlidir.

        Sonuç olarak, projenizin ihtiyaçlarına ve mikrodenetleyicinizin yeteneklerine bağlı olarak, kaç HC-SR04 sensörünü aynı anda kullanabileceğinizi belirlemelisiniz. Basit projeler için birkaç sensör kullanılabilirken, daha karmaşık projeler daha fazla pin ve işlem gücü gerektirebilir.

    6. selam bir malzemenin sürekli aynı yükseklikte kalması için servo motor ile mesafe sönsöründen gelen sinyallerle otomatik aşağı yukarı hareket etmesini sağlayabilirmiyiz? yada bunun için ne kullanmalıyım ?

      1. Evet, bir malzemenin sürekli aynı yükseklikte kalmasını sağlamak için servo motor ve HC-SR04 ultrasonik mesafe sensörü kullanarak bir otomatik yükseklik ayarlama sistemi oluşturabilirsiniz. Bu sistemde, mesafe sensörü yüzeye olan mesafeyi sürekli olarak ölçer ve bu bilgiyi Arduino’ya gönderir. Arduino, mesafe bilgisine göre servo motoru kontrol ederek malzemenin yüksekliğini ayarlar. Yükseklik, önceden belirlenen bir hedef değere ulaştığında, sistem malzemeyi bu yükseklikte sabit tutmak için gerekli düzeltmeleri yapar.

        Bu uygulamayı gerçekleştirmek için şu adımları izleyebilirsiniz:

        Malzemeler: Arduino Uno, HC-SR04 Ultrasonik Mesafe Sensörü, Servo Motor, Erkek – Dişi Jumper Kabloları ve Breadboard.

        Devre Kurulumu: HC-SR04’ün Trig ve Echo pinlerini Arduino’ya bağlayın. Servo motorun kontrol hattını da Arduino’nun bir dijital pinine bağlayın.

        Kodlama: Arduino’ya, mesafe sensöründen gelen veriyi okuyacak ve bu veriye göre servo motorun açısını ayarlayacak bir program yazın. Program, belirlenen hedef yüksekliğe ulaşıldığında servo motorun konumunu ayarlayarak malzemenin bu yükseklikte kalmasını sağlamalıdır.

        Kalibrasyon: Sistemi test ederek, servo motorun malzemeyi yeterince hızlı ve doğru bir şekilde ayarlayıp ayarlamadığını kontrol edin. Gerekirse, hedef yüksekliği, servo motorun hızını ve hassasiyetini ayarlayarak sistemi kalibre edin.

        Bu tür bir sistem, özellikle drone’lar, otomatik takip sistemleri veya yüksekliği hassas bir şekilde kontrol edilmesi gereken diğer uygulamalar için çok kullanışlıdır. Önemli olan, sistemin doğru şekilde kalibre edilmesi ve hedeflenen uygulamaya uygun olarak ayarlanmasıdır.

    Yorum yap

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    Daha Arduino