Ultrasonic Arduino Kütüphanesi Kurulumu ve Kullanımı - Turkish Tutorial

in utopian-io •  7 years ago  (edited)

Giriş / Introduction

This is a Turkish tutorial of an open source Arduino library, which lets you turn your Arduino to a “Ultrasonic Measurement Device”, with a HS-SR04 Ultrasonic sensor, that measures the distance between ultrasonic sensor and an object. I will show you how to install the library to Arduino IDE and make an example project with the library, throughout this tutorial while giving information ultrasonic sensors and their working principle.

Merhaba, bu yazıda Arduino mikrokontrolörünüze, HS-SR04 Ultrasonik sensörü yardımıyla, “Ultrasonik Mesafe Ölçer” olma özelliği ekleyen, açık kaynak bir kütüphaneden bahsedeceğim. Yazı boyunca ultrasonik sensörlerin ne olduğunu, nasıl çalıştığını, kullanım alanlarını, HS-SR04 kütüphanesinin kurulumunu ve HS-SR04 manyetometre modülü yapacağımız örnek bir proje kodlarını görebilirsiniz.

Neler Öğreneceğim?

Bu rehberde öğrenecekleriniz:
• Ultrasonik sensörler hakkında genel bilgi (Nedir, nasıl çalışır).
• Ultrasonic Arduino kütüphanesini Arduino IDE’sine yükleme.
• Ultrasonic kütüphanesini, kütüphane fonksiyonları ile beraber kullanabilme.
• Ultrasonik Mesafe Ölçer projesini gerçekleştirebilme.

Gereksinimler

Bu rehberin gereksinimleri:
• Arduino UNO veya benzer bir mikrokontrolör
• Arduino IDE’si (Buradan indirebilirsiniz)
• Ultrasonic Arduino kütüphanesi (Buradan indirebilirsiniz)
• HS-SR04 Ultrasonik sensörü, 4 jumper kablo, breadboard (opsiyonel)

Zorluk

Bu rehberin zorluğu:
• Basit/Orta



Rehber İçeriği

Ultrasonik Sensör Nedir ve Nasıl Çalışır

20-500 kHz frekans aralığındaki ses dalgalarına ultrasonik ses dalgaları denir. Ultrasonik dalgalar insan kulağı tarafından duyulamayacak kadar yüksek frekansa sahiptirler. Ultrasonik sensörler bir engel ile kendisi arasındaki mesafeyi bulan sensörlerdir. Ultrasonik sensörler, 20-500 kHz frekans aralığında ultrasonik ses dalgaları yayıp, bu ses dalgalarının engellere çarpması ve geri dönmesi esnasında geçen süreyi hesaplar ve aradaki mesafeyi bulurlar.

im1.jpg
Ultrasonografi, ultrason ışınları kullanılarak elde edilen görüntülerdir. Görüntü kaynağı (Royalty free)

Ultrasonik sensörlerde biri alıcı biri verici olarak çalışan bir adet ultrasonik hoparlör (speaker) bir adet ultrasonik mikrofon bulunur. Her sensörün kendine has frekansı algılayan mikrofonları vardır. Projemizde kullanacağımız HS-SR04 Ultrasonik sensörü 40 kHz frekans dalgalarıyla çalışır ve ölçüm mesafesi en az 2 santimetre, en fazla 4 metredir.


Ultrasonic Kütüphanesin Arduino IDE’sine Kurulumu

1. https://github.com/ErickSimoes/Ultrasonic adresinden kütüphaneyi indirin.

indir.png

2. Arduino programını açıp sırasıyla Sketch->Include Library->Add .ZIP Library seçeneklerini seçin.

ekle.png

3. Ultrasonic-master.zip dosyasını seçin ve Open'a tıklayın.


Ultrasonic Kütüphanesi Kullanımı ve İki Farklı Yolla Gerçekleştirilmiş Örnek Proje

Ultrasonic (HS-SR04) kütüphanesinin kullanımını basit bir örnek ile adım adım göstereceğim. Bu örnek projemizde HS-SR04 Ultrasonik sensörünü kullanarak Arduino’muz ile bir “Ultrasonik Mesafe Ölçer” yapacağız. Bu projeyi basit ve orta farklı zorluk seviyelerine göre iki farklı yolla gerçekleştireceğiz. Bunu yapmamızın nedeni farklı elektronik ve yazılım bilgilerine sahip arkadaşlara hitap edebilmek ve daha öğretici olabilmektir. Projeyi gerçekleştireceğimiz ilk yolda (a şıkkı olarak gösterilmiştir) kütüphane fonksiyonlarından yardım alacağız bu nedenle basit zorlukta olacak. İkinci yolda (b şıkkı olarak gösterilmiştir) ise kütüphane fonksiyonları kullanmadan temel mikrokontrolör komutları ile kullanacağız. HS-SR04 Ultrasonik sensörün Arduino’ya bağlantı şeması aşağıda verilmiştir.

Kütüphanenin temellerini öğrendikten sonra başka projelerde kullanırsanız lütfen yorumlarda belirtin.

proje2.jpg
HS-SR04 Ultrasonik sensörü ve Arduino ile yapılmış "Ultrasonik Mesafe Ölçer".

baglanti.png
HS-SR04 Ultrasonik sensörünün Arduino'ya bağlantı şeması. Fritzing programında çizilmiştir.

a) Birinci Yol
Birinci yolda kütüphane fonksiyonlarını kullanarak bir ultrasonik sensör yapacağız. Bu yol size kolay gelirse daha karışık olan (hazır kütüphane fonksiyonları kullanmadığımız) ikinci yola göre projeyi gerçekleştirebilirsiniz.

1. Yeni bir sketch açın ve "Ultrasonik_Mesafe_Olcer" olarak kaydedin.

2. Kütüphanemizi sketch’imize eklemek için, kodun en başına, #include <Ultrasonic.h> yazın. Ardından kütüphane fonksiyonlarını tanımlayıp, “TRIG” ve “ECHO” pinlerini tanımlayın.

1A.PNG

3. void setup() fonksiyonuna 9600 baud rate’de seri haberleşmeyi başlatacak komutu ekleyin.

2A.PNG

4. void loop() fonksiyonunun içinde bir integer değişkeni oluşturun. Bu değişkene “mesafe” ismini verin ve sensörden okunacak olan mesafeye eşitleyin. Bunun için “distanceRead” adlı kütüphane fonksiyonunu kullanın. Ardından ölçülen mesafe (Santimetre cinsinden) 400 ile 2 değerleri arasındaysa, ekrana ölçülen mesafeyi yazdıracak komutları yazın. Bu koşulu eklememizin nedeni sensörümüzün bu aralıkta ölçüm yapabilme kabiliyeti olmasındandır. Ölçümler arası 1 saniye ara olması adına 1000ms’lik delay komutu ekleyin.

3A.PNG

5. Ölçülen mesafenin 2 ile 400 santimetre arasında olmadığı durumlar için ekrana okuma hatası durumunu yansıtacak else koşulunu ekleyin. 5 saniyelik delay komutu ekleyin.

4A.PNG

6. Kodu önce Arduino IDE’sindeki “Verify” butonuna basarak compile edin, ardından “Upload” butonuna basarak Arduino’nuza yükleyin. Aşağıdaki gibi bir ölçüm ekranı almanız gerekmektedir (Değerler değişebilir).

upload.png

ciktiA.png

b) İkinci Yol

1. Yeni bir sketch açın ve "Ultrasonik_Mesafe_Olcer" olarak kaydedin.

2. "TRIG" & "ECHO" pinlerini tanımlayın. Ardından "ECHO" pininin aktif hale geçme süresini hesaplamak için oluşturulan değişkeni long cinsinden tanımlayın.

1B.PNG

3. void setup() fonksiyonunun içine, 9600 baud rate'de seri haberleşmeyi başlatacak komutu ekleyin. Ardından “TRIG” pinini çıkış olarak atayın. "ECHO" pinini giriş olarak atayın.

2B.PNG

4. void loop() fonksiyonunun içine, “TRIG” pinini LOW’a resetleyecek komutu ekleyin. Bu komutun ardından 2 mikrosaniyelik bir delay ekleyin. "TRIG" pinini 10 mikrosaniye boyunca gerilim yollayacak yani HIGH durumuna getirecek komutu yazın. Ardından “TRIG” pinini tekrar LOW’a getirecek kodu yazın. Bunları yazmamızın nedeni HS-SR04 ultrasonik sensörümüzün 10 mikrosaniyelik ses dalgaları ile mesafe ölçmesidir.

3B.PNG

5. ECHO" pininin HIGH durumuna geçtiği andaki süreyi mikrosaniye cinsinden kaydedecek pulseIn fonksiyonu ekleyin. Ardından daha sonra oluşturacağımız “MesafeOlcum” fonksiyonunu kullanarak mesafeyi "cm" sinsinden ölçecek kodu ekleyin.

4B.PNG

6. Ölçülen mesafe 2 ile 400 santimetre arasındaysa, ekrana ölçülen mesafeyi yazdıracak if koşulunu yazın. Sensörümüzün mesafe ölçüm kabiliyeti bu aralıkta olduğu için bu koşulu ekledik. Ölçümler arası 1 saniye süre olması için delay komutu ekleyin. Sensörün ölçtüğü mesafenin 2 ile 400 santimetre arasında olmadığı durumlar için ekrana okuma hatası durumunu yansıtacak else koşulunu ekleyin. Ardından 5 saniyelik delay komutu ekleyin.

5B.PNG

7. “MesafeOlcum” adında ölçülen mesafeyi santimetre cinsinden sonuç döndüren bir fonksiyon oluşturun. Sensör datasheet’inde yazılan mesafe formülünü ekleyin ve sonucu bu değere döndürün.

6B.PNG

8. Kodu önce Arduino IDE’sindeki “Verify” butonuna basarak compile edin, ardından “Upload” butonuna basarak Arduino’nuza yükleyin. Aşağıdaki gibi bir ölçüm ekranı almanız gerekmektedir (Değerler değişebilir).

ciktiB.png


Kapanış

Bu yazımda Arduino mikrokontrolörü için "ErickSimoes" adlı GitHub kullanıcısı tarafından yazılmış "Ultrasonic" Arduino kütüphanesinin kurulumu, HS-SR04 Ultrasonik sensörü kullanarak “Ultrasonik Mesafe Ölçer” örneği yaparak kütüphanenin kullanımını gösterdim. Umuyorum ki vermiş olduğum bilgileri beğenirsiniz, okuduğunuz için teşekkürler. Başka yazılarda görüşmek dileğiyle.
Kütüphane hakkında daha fazla bilgi ve kaynak için aşağıdaki linki kullanabilirsiniz.

Github: https://github.com/ErickSimoes/Ultrasonic



Kodlar

Birinci Yol

#include <Ultrasonic.h>   // Kütüphaneyi ekler.

Ultrasonic ultrasonic(8, 9);    // Kütüphane fonksiyonlarını tanımlar ve  "TRIG" & "ECHO" pinlerini tanımlar.

void setup() {
  
  Serial.begin(9600);   // 9600 baud rate'de seri haberleşmeyi başlatır.
  
}


void loop() {

  int mesafe = ultrasonic.distanceRead();     // Ölçülecek mesafe için bir değişken oluşturuyoruz.
                                              // Uzaklığı sensörden okuyacak olan kütüphane fonksiyonuna eşitliyoruz.
                                              
  if(mesafe <= 400 && mesafe >= 2 ){          // Ölçülen mesafe 4 metre ve 2 cm uzaklıkları arasında ise,
    Serial.print("Ölçülen mesafe (cm): ");    // ekrana yazdırır.
    Serial.println(ultrasonic.distanceRead());
    delay(1000);   

  }  
  
  else
    Serial.println("Cisim algılanamadı!");    // Ölçülen mesafe sensörün algılayamayacağı bir uzaklıktaysa hata verir.
    delay(5000);   

}



---

### **İkinci yol**


const int trigPin = 8; //"TRIG" & "ECHO" pinlerini tanımlar.
const int echoPin = 9;

long sure = 0;  // "ECHO" pininin aktif hale geçme süresini hesaplamak için oluşturulan değişken.

void setup() {
  
Serial.begin(9600); // 9600 baud rate'de seri haberleşmeyi başlatır.
  
pinMode(trigPin,OUTPUT); // "TRIG" pinini çıkış olarak atar.
pinMode(echoPin,INPUT);  // "ECHO" pinini giriş olarak atar.

}


void loop() {
  
digitalWrite(trigPin, LOW);   // "TRIG" pinini LOW'a resetler.
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);  // "TRIG" pinini 10 mikrosaniye boyunca gerilim yollar.
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

sure = pulseIn(echoPin,HIGH); // "ECHO" pininin HIGH durumuna geçtiği andaki
                              // süreyi mikrosaniye cinsinden, pulseIn fonksiyonu ile kaydeder.
                              

long mesafe = MesafeOlcum(sure);  // Oluşturduğumuz fonksiyonu kullanarak mesafeyi "cm" sinsinden ölçer.


  if(mesafe <= 400 && mesafe >= 2 ) {        // Ölçülen mesafe 4 metre ve 2 cm uzaklıkları arasında ise,
    Serial.print("Ölçülen mesafe (cm): ");   // ekrana yazdırır.
    Serial.println(mesafe);
    delay(1000); 
}

  else
    Serial.println("Cisim algılanamadı!");   // Ölçülen mesafe sensörün algılayamayacağı bir uzaklıktaysa hata verir.
    delay(5000);   
}


long MesafeOlcum(long time) {    // Yapılan ölçümü "cm" cinsinden hesaplar.

long olcMesafe = (time / 58);    // Sensör datasheet'inde belirtilen mesafe formülü.

return olcMesafe;
}



Posted on Utopian.io - Rewarding Open Source Contributors

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Hey @drencolha I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x