28 Haziran 2014 Cumartesi

Arduino - PIR Sensörü ile Hareket Dedektörü Uygulaması

Merhabalar...
Bu yazımda hareket algıladığında dijital çıkış veren PIR Sensörü uygulaması yapacağız. Amacımız hareket algılandığında çıkış olarak led yakılması.

Fritzing devre şeması için kusura bakmayın, herşeyler var bi'tek PIR yok.








PIR SENSÖRÜ NEDİR ?
Orjinal ismi Passive InfraRed Sensor  yani Pasif Kızılötesi Sensör olan bu ekipman objelerden yayılan kızılaltı (IR) ışın değişimini tespit etmek için bir Fresnel lens ve IR’ye duyarlı sensör yardımıyla, 6 metreye kadar mesafedeki hareketleri algılayabilir; ucuzdur, kullanımı kolaydır; alarm sistemleri, hareketle aktif olan ışıklar gibi uygulamalar için idealdir.




 Sensörün başlığını açarsak üzerinde bulunan 3 bacağın ne ile alakalı bacaklar olduğunu görebiliriz.

Üstten baktığımızda en soldaki pin TOPRAK, en sağdaki pin +VCC, ortadaki pin de DATA çıkışıdır.Hareket varken DATA çıkışı '1', yokken '0' olmaktadır.


PIR sensörleri bir mikrodenetleyiciye bağlı olmadan kendi başlarına çalışabilen elemanlardır. Bu sayede satın aldığımız PIR sensörünü önce kendimiz test edebiliriz. Sensörümüze verdiğimiz besleme ile DATA çıkışının ucuna bir LED bağlayarak çalışıp çalışmadığına bakabiliriz. Sensörün arkasında 2 adet trimer var ve bu test aşamasında trimerlerin değerlerini küçük bir tornavida ile değiştirerek istenilen hassasiyete ve  DATA çıkışının istenilen zaman kadar '1' olmasını sağlayabiliriz.

Uygulamamızın kodlarına bakacak olursak...



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 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);  
  }
  else{
    digitalWrite(ledPin,LOW);   // Eğer okunan değer 0 ise LED söndürülüyor.
  }

}


Programımızı bu şekilde bırakırsak trimerlerin  ayarlarına bağlı olarak çalışır sensörümüz. Bu haliyle bırakırsak Arduino kullanmamızın bir mantığı olmaz. O yüzden sizler "digitalWrite (ledPin,HIGH)" olan kısmın altına "delay(istenilen zaman)" kodunu ekleyerek hareket algılandıktan sonra ledin 1 olma süresini kendiniz ayarlayabilirsiniz.


Bu da videomuz ;

Bu uygulamada yardımcı olan arkadaşım Aykut KELEŞ'e teşekkür ederim.

Kaynak olarak kullandığım ve daha detaylı bilgi edinmek isteyenler için bu sitelerin linkleri;

http://www.mcu-turkey.com/arduino-pir-sensor-kullanimi/

https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/overview