PIR, olarak bilinen Pasif Kızılötesi sensörler ortamdaki kızılötesi ısı/ışık yayn nesnelerin hareket etmesini algılayabilen sensörlerdir.
Bu modüller doğrudan bir relay kart yada röle ile birlikte kullanılabilir. Üzerindeki potans ile hareket algılama özelliğinin hassasiyeti ayarlanabilmektedir. Yine üzerinde bulunan başka bir potans ile hareket algıladığı zaman ne kadar süreyle sinyal vereceği/çıkış verecebileceği zamanı ayarlanabilmektedir.
Teknik olarak genellikle 3-7 metre aralığındaki hareketleri algılayabilmektedir ve çıkış süresi 5 saniye ile 10 dakikaya kadar uzatılabilmektedir.
Bir röle kartı ile bağlantı yapmak çok kolay ve basittir. Rölenin çıkışına istediğiniz bir yükü bağlayabilir, siren çaldırabilir yada ışık yakabilirsiniz.
Bu sensörü daha detaylı kullanmak ve programlayarak bir çok proje imza atmak isterseniz arduino ile kullanılabilir. isterseniz güvenlik sistemi olarak planlayın isterseniz harekete göre yanan sönen ışıklar planlayın. Arduino gibi bir kartla yapabileceğiniz bir çok proje mevcuttur.
Bu yazımızda arduino ile güvenlik alarmı projesi yaptık. Tek bir buton ile sistem kurma yine aynı butonla sistemi açma kapama yapacağımız şifreleme örneği yaptık.
//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı pır sensörü - kullanımı örnek Kodları
#define yesil 2
#define kirmizi 3
#define buzzer 4
#define pir 8
#define buton 9
byte sayac = 0;
unsigned long simdikizaman;
unsigned long oncekizaman=0;
void setup() {
Serial.begin(9600);
pinMode(yesil, OUTPUT);
pinMode(kirmizi, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(pir, INPUT);
pinMode(buton, INPUT);
}
void kontrol(){
int btn_drm = digitalRead(buton);
if (btn_drm == HIGH)
{
sayac++;
if (sayac <0 || sayac >15)
sayac = 0;
digitalWrite(buzzer, 1);
delay(10);
while(btn_drm == HIGH)
{
btn_drm = digitalRead(buton);
digitalWrite(buzzer, 0);
Serial.println(sayac);
}
}
}
void zmn_kntrl()
{ Serial.print("zaman kntrol ");
simdikizaman=millis();
if(simdikizaman-oncekizaman >= 2000)
{
sayac = 0;
oncekizaman=simdikizaman;
}
}
void loop() {
Serial.print("void loop sayac ");
Serial.println(sayac);
kontrol();
zmn_kntrl();
if (sayac == 1)
{
digitalWrite(yesil, 1);
delay(5000);
while(1)
{
kontrol();
digitalWrite(yesil, 1);
digitalWrite(kirmizi, 0);
Serial.println("alarm devrede");
bool pir_drm = digitalRead(pir);
zmn_kntrl();
Serial.print("alarm devrede sayac ");
Serial.println(sayac);
if (sayac > 6)
break;
if (pir_drm == 1)
{
digitalWrite(buzzer, 1);
delay(250);
digitalWrite(buzzer, 0);
}
else
{
digitalWrite(buzzer, 0);
}
}
}
else
{
digitalWrite(yesil, 0);
digitalWrite(kirmizi, 1);
}
}