Arduino ile Sensör kullanımını anlatacağımız bu serinin ilk çalışması olarak HC-SR501 Pasif Kızılötesi (PIR) sensörünün seçmemin nedeni bu sensörün digital çıkış vermesi, Arduino ile çok kolay bağlantı yapılabilmesi ve kodun kısa olmasıydı. Hemen tanıyalım bu arkadaşı.

img_20190623_134020.jpg

Aslında çok kararlı çalışmadıklarını söylemeliyim. Hırsız alarmı olarak yaptığım ve hareket algıladığında cep telefonuma mesaj yollayan projemde evde hareket olmamasına rağmen gün içinde gelen mesajlar beni oldukça korkutmuştu!. O yüzden o projemi rafa kaldırdım. Bir de çok çabuk zarar görüyorlar; yukarıdaki resimde gördüğünüz iki arkadaş artık aramızda değil!

32 mm*24 mm boyutlarındaki sensörün ön yüzünde kızılötesi duyarlı bir sensör (pyroelectric sensor)var. Bu sensörün üzerinde de kubbe biçimli bir plastik. Takılıp çıkartılabilen bu plastik yarım kürenin üzerinde değişik açılardan gelen ışını, sensör üzerine odaklayan onlarca mercek var. Bu sisteme “Fresnel Merceği” deniliyor. Kızılötesi (InfraRed = IR) demişken acıcık da elektromanyetik dalgalardan bahsedelim. Var olan tüm dalgalar Elektromanyetik Tayf denen bir göstergede özetleniyor.

em-spectrum

Burada Gama ışınlarından radyo dalgalarına kadar olan tüm dalgalar sıralanmış. Sağ tarafa doğru gidildikçe dalganın enerjisi azalıyor. Morötesi ve kızılötesi arasındaki dar bölge insan gözünün görebildiği dalga boylu ışınları gösteriyor. Kızılötesi, görünebilen bölgenin hemen altındaki (enerji olarak) dalgalar. Uzaktan kumandalarda ve gece görüş kameralarında kızılötesi kullanılıyor. Aslında cisimlerin sıcaklıklarına göre yaydıkları bir ışın. Biz göremiyoruz ama örneğin yılanlar gece fare yakalamak için bu özelliklerini kullanıyor. Sivrisineklerin de bu özelliği olduğundan bahsedilir.

fare

İşte sensörün önündeki kızılötesi duyarlı parçanın insan vücut sıcaklığına göre çalıştığı söylenmiş. Bu arada biraz bakınca etrafımızdaki bazı hayvan dostlarımızın da benzer sıcaklıklara sahip olduğunu görüyoruz. Yani bu sensör sadece insen değil bu hayvanların da hareketini algılayabiliyor.

sicsklik

Kartın bu yüzeyindeyken bahsetmek gereken bir nokta da, lehim için hazırlanmış iki deliğin bulunması (RL). Buraya bir ışığa duyarlı direnç (Light Dependent Resistor = LDR) lehimlenerek, sensörün sadece karanlıkta çalışması sağlanabiliyor. Küçük bir LDR eklenirse bu zaten merceğin altında kaldığından görünmüyor bile. Işık altında LDR’nin direnci düşüyor ve bu sensörde kullanılan (BISS0001 ) işlemci otomatik olarak OFF oluyor. Aşağıdaki linkten devre şemasına da ulaşabilirsiniz.

img_20190622_142032.jpg

Kartın arka yüzüne de bakalım

img_20190622_142146.jpg

En üstte üç tane bağlantı bacağı var. Vcc, GND ve çıkış bacakları. Besleme gerilimi olarak 5-12 volt denmiş, arduino’daki 5V hattı kullanılabiliyor. Zaten kart üzerindeki voltaj regülatöründen anlaşılıyorki bu kart 3,3V ile çalışıyor. Zaten ortadaki bacaktaki çıkış geriliminin “1” hali de 3,3V verilmiş.  Aslında Arduino olmadan da bu arkadaş kullanılabilir. 65 mA çektiği de veri kağıdında belirtilmiş. Oldukça az. Çünkü normalde bu sensör çalışırken ışın, enerji yaymıyor, sadece karşıdan IR sinyali algılıyor. O yüzden de adı ‘Pasif kızılötesi’ olmuş. Bu arada değişik veri kağıtlarında farklı bilgiler de var. Örneğin öndeki IR duyarlı gözün 3-7 metre uzaklığa kadar hassasiyeti tüm kaynaklarda aynıyken yanlardaki açı 110°, 120° hatta bazı kaynaklarda 140° olarak verilmiş. Yukarıdaki resme göre soldaki trimpot ile gözün hassasiyet mesafesini ayarlayabiliyoruz. Sağdaki trimpot ise hareket algılandığına verilecek olan “1” çıkışının süresini ayarlıyoruz. En soldaki jumper “L” konumundayken; hareket algılandığında devre çıkışının sağdaki trimpotla ayarladığımız süre kadar “1” çıkışı verip tekrar “0” düşeceğini, “H” konumundayken ise hareket algılandıktan sonra hareket devam ettiği sürece çıkışın “1” olacağı, hareket sona erdiğinde ise trimpotla belirlenen süre kadar sonra çıkışın “0” olacağını ayırıyor. ‘Ne fark ederki!’ demeyin.  Çıkış bir kez “1” de “0” a düştükten sonra 2,5 saniye veri yollamıyor. Bu arada ilk çalıştırıldığında da kararlı halde çalışabilmesi için 10 saniyeye ihtiyacı olduğunu da belirtelim.

Arduino ile bağlantı şeması vermiyorum. Çünkü 5V ve GND bağlantısından başka kalan tek bağlantı; çıkışın, Arduino’nun herhangi bir bacağına bağlanması. Ben 8 numaralı digital pine bağladım. Kod çok basit:
void setup()

{
pinMode(13,OUTPUT);
pinMode(8,INPUT);
}
void loop()

{
digitalWrite(13,digitalRead(8));
}

Setup da 8 numaralı pini giriş, 13 numaralı pini de çıkış olarak tanımladım. Amacım 13 numaralı pine bağlı LED’in hareket olduğunda yanması, olmadığında sönmesi. Loop kısmında da bu pinin durumunu 8 numaralı bacaktan değer olarak yazmak yetti. Bu şekilde yazmak çok avantajlı oldu. Yoksa 8 numaralı bacaktaki veriyi oku başka bir değişkene ata vs. Yukardaki notasyon gerçekten işi kolaylaştırdı. Aynı girişten bir de buzzer çalıştırmak için bir çıkış daha tanımlayıp buzzer’ı da ona bağladım. Kod 2 satır daha arttı. Neyse genel mantık net herhalde. Bu çıkışı bir roleye bağlayarak istediğimiz şekilde geliştirebiliriz.

Sıradaki sensör yazımızda görüşmek üzere…

Hoşça kalın.

 

 

Kaynaklar:

31227sc.pdf erişimi için tıklayın

BISS0001.pdf erişimi için tıklayın

PIR-7.pdf erişimi için tıklayın