back to top

#18 Akıllı Ev

İşyerleri, fabrikalar, evlerimiz hatta hayvan barınakları… Yaşam alanlarımızı istemediğimiz davetsiz misafirlere karşı korumak için kullanılabilecek farklı elektronik sistemler bulunmaktadır. Bu sistemler ev ve iş yeri güvenlik sistemleri olarak üretilmekte ve pazarlanmaktadır. Güvenlik kameralarının ürettiği görüntülerin işlenip yorumlandığı sistemler bulunduğu gibi insan bedenini ve hareketlerinin sensörler ile tespit edip harekete geçen güvenlik sistemleri de mevcuttur. Güvenlik sistemleri bir tür alarmlı saat gibi kurulur ve belirlenen zaman diliminde tanımlanmayan bir hareketlilik algılandığında sesli ve ışıklı uyarılar verir. İşletme veya ev sahibine bildirimde bulunur ayrıca güvenlik birimlerine de otomatik bildirimlerde bulunabilmektedir.

Gaz kaçağı yangın vb. durumlarda zehirlenmeleri önlemek için ev ve işyerlerinde gaz sensörleri kullanılır. Olumsuz bir durumda yüksek sesle alarm vererek ortamda yaşayan insanlar uyarılır.

PicoBricks ile HC-SR501 ve MQ-2 gaz sensörü kullanarak maket bir akıllı ev projesi hazırlayacağız. Bu sensör HC-SR501 , PIR sensörü olarak da ifade edilmekte, insan vücudunun yansıttığı kızılötesi dalgaların değişimlerini yakalayarak hareketi tespit etmektedirler.

Proje Detayları ve Algoritma

HC-SR501 PIR sensörü hareket algıladığında 3 saniye boyunca dijital çıkış vermektedir. Proje maketinde Picoboard, buzzer ve buton LED modülünü kullanacağız. Tüm parçalar maketin içinde olmalı. Picobricks başladığında alarm sisteminin devreye girmesi için butona basılması gerekmektedir. Butona basıldıktan sonra elin maketi içinden çekilmesi için 3 saniye bekleme koymalıyız. 3 saniyenin sonunda kırmız LED yanar ve alarm sistemi devreye girer. Alarm sistemi devredeyken bir hareket algıladığında kırmızı LED yanıp sönmeye başlar ve buzzer’dan alarm sesi çalınır. Susturmak için Picobricks’in yeniden başlatılması gerekmelidir. MQ-2 sensörü ise sürekli devrededir. Zehirli bir gaz algıladığında ise buzzer ve kırmızı LED ile bunu bildirecektir.

Bağlantı Şeması

Projenin MicroBlocks ile Kodlanması

Alarm sisteminin aktifleşmek için butona basılmasını bekler. Butona basıldıktan 3 saniye sonra activated yayını yapılır.

Alarm sistemi aktif hale geldiğini kırmızı LED’i yakarak belirt. Library>Sensing>PIR.ubl yolunu izle ve PIR sensörünün bloğunu MicroBlocks’a ekle. Pin numarasını 14 olarak değiştir. Hareket algılayana kadar kodun işletilmesini beklet. Hareket algılandığında motion detected yayını yap.

Motion detected yayını alındığında sürekli olarak buzzerdan alarm sesi çıkar. Alarm sesini Tone.ubl kütüphanesini ekleyerek dilediğin gibi kişiselleştirebilirsin.

MQ-2 sensörü gaz algıladığında dijital çıkış vermektedir. Dijital çıkış verdiğinde PicoBricks’in butonuna basılana kadar alarm çalmasını ve kırmızı LED’in yanıp sönmesini sağlıyoruz.

Projenin kodlarına erişmek için tıkla.

Projenin Yapım Aşamaları

Projeyi çalıştırmak için karton bir kutuyu maket ev haline getirmelisin. Makas, kalem, bant, yapıştırıcı, maket bıçağı lazım olacaktır. Kutunun üzerine pencere ve kapıları kurşun kalemle çizin.Kapı bölümünü maket bıçak ile kes.

Çatı kısmını yapmak için başka bir kartondan faydalanabilirsin.

Picobricks parçalarının altına çift taraflı köpük bant yapıştır.

Picobricks’in parçalarını maket evinin içine yerleştir. PIR sensörün içeriden kapıyı doğrudan görecek şekilde konumlandır. Buton modülünü ise içeriden kapının hemen üstüne yapıştır.

Pil kutusunu Picoboard a bağlayıp açtığında kodlar çalışmaya başlayacak. Butona bastıktan 3 saniye sonra alarm sistemi devreye girecek ve kırmızı LED yanacak. Elini kapıdan içeri sokar sokmaz buzzer alarm çalmaya başlayacaktır.

Çakmak gazını evin içine tuttuğunuzda alarm sisteminin yine devreye girmesi beklenir.

Proje Önerisi

25. proje olan akıllı serayı yaptıktan sonra akıllı ev projesine ESP8266 modünü ekleyerek eve hırsız girdiğinde ev sahibinin telefonuna internet üzerinden bildirim gönderebilir ve projeyi IOT projesine dönüştürebilirsin.Dalgıç pompa ile ev tavanına yangın söndürme boruları çekebilir, bu sayede evde yangın çıktığında otomatik olarak söndürülmesi sağlayabilirsin.

Projenin MicroPython Kodları

from machine import Pin, PWM
from utime import sleep

PIR=Pin(14, Pin.IN)
MQ2=Pin(1,Pin.IN)
buzzer=PWM(Pin(20,Pin.OUT))
redLed=Pin(7,Pin.OUT)
button=Pin(10,Pin.IN,Pin.PULL_DOWN)


activated=0
gas=0

while True:
    if button.value()==1:
        activated=1
        gas=0
        sleep(3)
        redLed.value(1)
        buzzer.duty_u16(0)
    if MQ2.value()==1:
        gas=1
    if activated==1:
        if PIR.value()==1:
buzzer.duty_u16(6000)
            buzzer.freq(440)
	sleep(0.2)
            buzzer.freq(330)
            sleep(0.1)
            buzzer.freq(494)
            sleep(0.15)
            buzzer.freq(523)
            sleep(0.3)
    if gas==1:
	buzzer.duty_u16(6000)
            buzzer.freq(330)
            sleep(0.5)
            redLed.value(1)
            buzzer.freq(523)
            sleep(0.5)
            redLed.value(0)

 Projenin Arduino C Kodları

void actived (){
  digitalWrite(7,1);
  while(!(digitalRead(14) == 1))
  {
    _loop();
  }
  motion_dedected();
}

void motion_dedected (){
  while(1) {
      tone(20,262,0.25*1000);
      delay(0.25*1000);
      tone(20,330,0.25*1000);
      delay(0.25*1000);
      tone(20,262,0.25*1000);
      delay(0.25*1000);
      tone(20,349,0.25*1000);
      delay(0.25*1000);

      _loop();
  }
}

void _delay(float seconds) {
  long endTime = millis() + seconds * 1000;
  while(millis() < endTime) _loop();
}

void _loop() {
}

void loop() {
  _loop();
}

void setup() {
  
  pinMode(10,INPUT);
  pinMode(1,INPUT);
  pinMode(20,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(14,INPUT);
  
  while(1) {
      if(digitalRead(10) == 1){
          _delay(3);
          actived();
      }
      if(digitalRead(1) == 1){
          while(!(digitalRead(10) == 1))
          {
            _loop();
            tone(20,349,0.5*1000);
            delay(0.5*1000);
            digitalWrite(7,1);
            _delay(0.5);
            tone(20,392,0.5*1000);
            delay(0.5*1000);
            digitalWrite(7,0);
            _delay(0.5);
          }
      }
      _loop();
  }
}



Önceki İçerik
Sonraki İçerik

Son Çıkan Yazılar

CEVAP VER

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