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





11 yorum:

  1. Merhaba
    Pır sensörü ile sd karttan müzik çalmayı birleştirmek istiyorum bu konuda yardımcı olma imkanınız olur mu? sensör gördüğünde sd karttaki müzik çalacak şeklinde.

    YanıtlaSil
    Yanıtlar
    1. Aynı konuyla ilgili bende kafa patlatıyorum..
      Hatta ilk projem şu an..
      Brnim derdimde sensör her algıladığında 10sn hareket algılasada 10sn sonra kapanması..
      Yada sadece dfplayermini next tuşunu tetikledikten sonra kapanması...
      Ve 10sn sonra aynı işlemi tekrar etmesi..
      Burdaki sıkıntı şu
      Sensöre bir türlü next yaptıramadım..
      Yaptırsamda her algılamada next yapıyor..

      Sil
    2. Aynı konuyla ilgili bende kafa patlatıyorum..
      Hatta ilk projem şu an..
      Brnim derdimde sensör her algıladığında 10sn hareket algılasada 10sn sonra kapanması..
      Yada sadece dfplayermini next tuşunu tetikledikten sonra kapanması...
      Ve 10sn sonra aynı işlemi tekrar etmesi..
      Burdaki sıkıntı şu
      Sensöre bir türlü next yaptıramadım..
      Yaptırsamda her algılamada next yapıyor..

      Sil
    3. Aynı konuyla ilgili bende kafa patlatıyorum..
      Hatta ilk projem şu an..
      Brnim derdimde sensör her algıladığında 10sn hareket algılasada 10sn sonra kapanması..
      Yada sadece dfplayermini next tuşunu tetikledikten sonra kapanması...
      Ve 10sn sonra aynı işlemi tekrar etmesi..
      Burdaki sıkıntı şu
      Sensöre bir türlü next yaptıramadım..
      Yaptırsamda her algılamada next yapıyor..

      Sil
  2. Merhaba
    Ben pır sensörü ve mesafe sensörünü bir arada kullanmak istiyorum.Yani pır hareketi algıladığında mesafe sensörünü tetikleyerek mesafe sensörünün çalışmasını sağlamalı.
    Yardımlarınızı bekliyorum ..Şimdiden teşekkürler

    YanıtlaSil
    Yanıtlar
    1. if koşulu oluşturun ve bu koşulu pir sensörüne bağlayın. Mesafe ölçmek için bir function oluşturun ve bu functionı daha önce oluşturduğumuz koşulun içine koyun. Böylelikle sadece koşul sağlandığında (pir sensörü hareket algıladığında) mesafe sensörü ölçüm yapabilecektir.

      Sil
  3. Pır sensörün bacaklarını uzatabilecegimiz bir aparat varmı

    YanıtlaSil
  4. Pır sensörün bacaklarını uzatabilecegimiz bir aparat varmı

    YanıtlaSil
    Yanıtlar
    1. kablo lehimleyerek istediğin kadar uzatabilirsin.aparata gerek yok 😊

      Sil
  5. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  6. Merhaba,Kodların doğruluğundan emin misiniz sadece yazdığınız şekilde mi yazmamız gerekiyor ?

    YanıtlaSil