Arduino Eğitim Kiti – Tüm Yıl İçin Arduino Müfredatı: Ders 16 Arduino ile Uzaklık Hesabı ve Hareket Sensörü için isterseniz sunu şeklinde alt taraftaki kutucuğu büyüterek takip edebilir, isterseniz de tüm sunu sayfalarının makale haline dönüştürülmüş versiyonu takip edebilirsiniz. İçerikler büyük oranda aynıdır. Sınıf ortamında kolaylık olması açısından sunu şeklinde de sunulmuştur.

Ders İçeriği:

Arduino ile Uzaklık Hesabı ve Hareket Sensörü.

Ders Kazanımları:

  • PIR sensörünün görevini açıklar.
  • PIR sensörü uygulamasını yardım almadan başarılı bir şekilde yapar.
  • Ultrasonic mesafe sensörünün çalışma mantığını açıklar.
  • Ultrasonic mesafe sensörü uygulamasını yardım almadan başarılı bir şekilde yapar.

HC-SR04 Arduino Ultrasonic Mesafe Sensörü:

  • 2 cm’den 400 cm’ye kadar 3 mm hassasiyetle ölçüm yapabilen bu ultrasonik sensör çeşitli uzaklık okuma, radar ve robot uygulamalarında kullanılabilir.
  • Çalışma mantığı şu şekildedir: Trig pini dik bir şekilde karşıya insan kulağının algılayamayacağı şiddette bir ses sinyali gönderir.
  • Echo pini ses dalgasını aldığında 0V’tan 5V’a geçer ve mesafeyle orantılı bir süre bekler.
  • Biz burada Echo pinindeki genişliği ölçerek veya sensörün kütüphanelerini kullanarak herhangi bir hesaplama yapmadan aradaki mesafeyi elde edebiliriz.

HC-SR501 Ayarlanabilir Hareket Algılama Sensörü (PIR):

  • Cisim hareketi algılamak için kullanılan bir modüldür.
  • İçerisinde IR sensör bulunur. Hareketi algılayan sensör bu sensördür.
  • Üzerinde bulunan potansiyometreleri bir tornavida aracılığıyla ayarlayarak algılama hassasiyetini ve ölçüm mesafesini ayarlayabilirsiniz.
  • Ayrıca bu sensörün güç tüketimi çok düşük olduğu için sadece bu sensörü besleyerek mikrokontrolcünüzü uyku moduna almak için kullanabilirsiniz.

Oluşabilecek Hatalar:

Aşağıdaki programları çalıştırırken bir takım hatalarla karşılaşabilirsiniz. Bu hataların kodların yazımında meydana gelen hatalar dışında başka sebeplerle ortaya çıkması muhtemeldir. Bu hatalardan sık karşılaşılanlara aşağıda değinilmiştir.

Kart Seçilmesinden Kaynaklı Hata:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru kartın seçilmesi gerekmektedir. Kart seçilmediğinde “Karta yüklenirken bir sorun oluştu” benzeri bir hata alabilirsiniz.

USB Portun Seçilmesiyle İlgili Hatalar:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru portun seçilmesi gerekmektedir. Bu port Arduino Uno’nun bilgisayara bağlandığı usb porttur. Farklı şekilde bilgisayarınızda usb driver yüklenmemiş olabilir. Bu gibi hatalarda “port bulunamadı” gibi hatalar almanız muhtemeldir.


Uygulama 1: Hareket Sensörü İle LED Yakma

Kullanılacak Malzemeler:

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

  1. Arduino Uno’ nun 5V pinini breadboard üzerinde “+” hatta, GND pinini ise “-” hatta bağlayın.
  2. PIR sensörünün VCC pinini breadboard üzerinde “+” hatta, GND pinini “-” hatta bağlayın.
  3. Ortadaki OUT pinini ise Arduino Uno üzerinde 3 nolu pine bağlayın.
  4. LEDi breadboard üzerine yatay şekilde yerleştirin.
  5. LEDin uzun bacağına şekildeki gibi 220R direnç bağlayın.
  6. Direncin boşta kalan bacağını Arduino Uno üzerinde 4 nolu pine , LEDin boşta kalan bacağını ise breadboard üzerinde “-” hatta bağlayın.

Kodlar:

Uygulamanın “.inodosyasını (kod dosyasını) buradan indirebilirsiniz.

int pirPin = 3; // PIR pin
int ledPin = 4; // LED pin
int deger = 0;
void setup() {
pinMode(pirPin, INPUT); // PIR Pin'i giriş yapılıyor
pinMode(ledPin, OUTPUT); // LED Pin'i çıkış yapılıyor
Serial.begin(9600); //Serial Porttan veri göndermek için
//baundrate(9600(veri gönderim hızı)) ayarlanıyor.
}
void loop(){
deger = digitalRead(pirPin); // Dijital pin okunuyor
Serial.println(deger); // Okunan değer seri porttan okunuyor.
if (deger == HIGH) {
digitalWrite(ledPin, HIGH); // Eğer okunan değer 1 ise LED yakılıyor.
}
else{
digitalWrite(ledPin,LOW); // Eğer okunan değer 0 ise LED söndürülüyor.
}
}

  • Yukarıdaki bağlantı yapıldığında ve kodlar Arduino Uno’ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • Bu uygulama çalıştırıldığında hareket sensörü eğer bir hareket algılarsa LED ışık verecek algılanmayan sürede ise LED ışık vermeyecektir.
  • Aynı zamanda hareket sensörünün okuduğu değerler seri ekranda gösterilecektir.

Uygulama 2: Cisme Olan Uzaklığı LCD Ekranda Gösterme

Kullanılacak Malzemeler:

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

  1. Arduino Uno’nun 5V pinini breaboard üzerinde “+” hatta, GND pinini “-”  hatta bağlayın.
  2. LCD ekranın bağlı olduğu I2C modülünün 4 pinini aşağıdan yukarı doğru sırasıyla (breadboard üzerinden) “-” hatta, “+” hatta, (Arduino Uno üzerinden) A4 ve A5 pinlerine bağlayın.
  3. Mesafe Sensörünün VCC pinini (breadboard üzerinde) “+” hatta, GND pinini (breadboard üzerinde) “-” hatta, Trig pinini Arduino Uno’nun 13 nolu pinine ve Echo pinini ise 12 nolu pine bağlayın.

Kodlar:

Uygulamanın “.inodosyasını (kod dosyasını) buradan indirebilirsiniz.

#include <Wire.h>
#include <LiquidCrystal_I2C.h> // LCD ekran için Kod Kütüphanesi
#include <NewPing.h> // HC-SR04 için Kod Kütüphanesi
LiquidCrystal_I2C lcd(0x3F,16,2);
#define TRIGGER_PIN 13 // Ultrasonik Sensör’ün Trig pininin bağlı olduğu Arduino pini.
#define ECHO_PIN 12 // Ultrasonik Sensör’ün Echo pininin bağlı olduğu Arduino pini.
#define MAX_DISTANCE 400 // Ölçmek istediğimiz maksimum mesafe.
//(Maksimum 400-500cm civarı ölçülebilir. Ölçüm alanı dışında ise “0” değeri döndürür.)
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Pinler ve maksimum mesafe ile
// NewPing nesnesi oluşturma.HC-SR04 kütüphanesi kullanıldığı için bu tanımlama yapıldı.
void setup() {
lcd.begin(); // LCD ekranın genişlik ve yükseklik ölçülerini derleyiciye bildirme.
lcd.setCursor(0,0); // İmleci ilk satırın ilk sütununa yerleştirme.
lcd.print("Uzaklik:"); // İmlecin olduğu yere “Uzaklik:” yazdırma.
}
void loop() {
delay(50); // Gönderilen dalgalar arası 50 ms bekle.
//(Minimum bekleme süresi 29ms olmalı.)
lcd.setCursor(0,1); // İmleci ikinci satırın ilk sutünuna yerleştirme.
lcd.print(sonar.ping_cm() ); // İmlecin olduğu yere ölçülen uzaklığı santimetre
//cinsinden yazma.
lcd.print(" cm"); // Uzaklık birimi olan “cm” yazma.
}

  • Yukarıdaki bağlantı yapıldığında ve kodlar Arduino Uno’ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • Bu uygulamada mesafe sensörü hesapladığı uzaklığı LCD ekranda görülecektir.
  • Eğer hata alıyor veya veri okuyamıyorsanız I2C modülünüzün adresini güncelleyip güncellemediğinizi ve kontrast ayarını (I2C modülün arkasındaki pot yardımıyla) yaptığınızdan emin olun.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz