İçindekiler:

Alarm PIR'den WiFi'ye (ve Ev Otomasyonu): 7 Adım (Resimlerle)
Alarm PIR'den WiFi'ye (ve Ev Otomasyonu): 7 Adım (Resimlerle)

Video: Alarm PIR'den WiFi'ye (ve Ev Otomasyonu): 7 Adım (Resimlerle)

Video: Alarm PIR'den WiFi'ye (ve Ev Otomasyonu): 7 Adım (Resimlerle)
Video: SMS ile Ev Otomasyonu (Akıllı Ev Sistemleri) - Arduino GSM Shield Kullanımı & Kodlar 2024, Temmuz
Anonim
Image
Image
Alarm PIR'den WiFi'ye (ve Ev Otomasyonuna)
Alarm PIR'den WiFi'ye (ve Ev Otomasyonuna)

genel bakış

Bu talimat, ev otomasyon yazılımınızda Ev Alarmınızın PIR'lerinin (pasif kızılötesi sensörler) ne zaman tetiklendiğinin son tarihini/saatini (ve isteğe bağlı olarak bir zaman geçmişini) görüntüleme yeteneği verecektir. Bu projede, MQTT'yi destekleyen diğer herhangi bir ev otomasyon yazılımı veya uygulamasıyla (ayrıca bu makalenin ilerleyen bölümlerinde anlatılacaktır) çalışmasına rağmen OpenHAB (kişisel olarak kullandığım ücretsiz ev otomasyon yazılımı) ile nasıl kullanılacağını tartışacağım. Bu talimat, alarm kontrol kutunuzdaki alarm bölgelerine bağlanan bir devre kartının ve Wemos D1 mini'nin (ESP8266 yongası kullanan bir IOT kartı) nasıl bağlanacağı konusunda gerekli adımlarda size yol gösterecektir. Bir veya daha fazla PIR) tetiklendiğinde, Wemos MQTT protokolünü kullanarak kablosuz olarak ev otomasyon yazılımınıza bir mesaj gönderir ve bu mesaj da tetikleyicinin son tarihini/saatini görüntüler. Wemos'u programlamak için Arduino kodu da sağlanmıştır.

Tanıtım

Yukarıdaki görüntü, iPhone'umdaki OpenHAB uygulamasındaki ekranlardan biri aracılığıyla gördüğüm şeydir. Tarih/saat metni, PIR'nin ne zaman tetiklendiğinin daha hızlı bir temsilini sağlamak için renk kodludur - kırmızı (son 1 dakika içinde tetiklenir), turuncu (son 5 dakika içinde tetiklenir), yeşil (son 30 dakika içinde tetiklenir) gösterilir., mavi (son bir saat içinde tetiklendi) veya başka türlü, siyah. Tarih/saat tıklandığında, 1'in tetiklendiği ve 0'ın boşta olduğu PIR tetikleyicilerinin geçmiş bir görünümü görüntülenir. Bunun birçok kullanım alanı vardır, örneğin evde bulunma çözümünüzü tamamlayabilir, uzaktaysanız ve OpenHAB kuralları aracılığıyla hareket algılayabilir, telefonunuza bildirim gönderebilir, benim yaptığım gibi çocuklarımın olup olmadığını görmek için kullanabilirsiniz. yatak odalarının dışında bulunan bir PIR tarafından tetiklenen gecenin ortasında kalkmak!

OpenHAB sadece benim kullandığım ev otomasyon yazılımı, daha birçokları var - ve eğer MQTT'yi destekliyorlarsa, bu projeyi kullandığınız yazılıma uyacak şekilde kolayca uyarlayabilirsiniz.

varsayımlar

Bu talimat, zaten sahip olduğunuzu (veya kuracağınızı) varsayar:

  • Açıkçası, PIR'lere (pasif kızılötesi sensörler) sahip bir ev alarm sistemi ve gerekli kabloları bağlamak için alarm kontrol kutusuna erişiminiz var.
  • OpenHAB (ücretsiz açık kaynaklı ev otomasyon yazılımı) çalışıyor, ancak tartışıldığı gibi bir MQTT bağlaması içerebilen herhangi bir ev otomasyon yazılımıyla çalışması gerekiyor. Alternatif olarak, kendi ihtiyaçlarınıza göre kodu kendiniz değiştirebilirsiniz.
  • Mosquitto MQTT (veya benzeri) aracısı kurulu ve OpenHAB ile yapılandırılmış bağlayıcı (MQTT, cihazlar arasında iletişim için hafif ve harika olan bir mesajlaşma abone olma/yayınlama tipi protokoldür)

OpenHAB ve bir MQTT aracısı çalıştırmıyorsanız, MakeUseOf web sitesindeki bu mükemmel makaleye bakın

Neye ihtiyacım var?

Kablosuz denetleyiciyi oluşturmak için aşağıdaki parçaları sağlamanız gerekir:

  • Wemos D1 mini V2 (yerleşik bir ESP8266 kablosuz CHIP'e sahiptir)
  • Bir LM339 karşılaştırıcısı (bu, PIR boşta ve tetiklenenlerin kontrolünü yapacaktır)
  • Wemos için bir 5V DC güç kaynağı (VEYA, bir DC-DC dönüştürücü dönüştürücü. Not: Bu projede daha sonra tartışılacağı gibi bir LM7805 voltaj regülatörü bu uygulama için çalışmayabilir)
  • Bir voltaj bölücü için iki direnç (boyut, projede daha sonra tartışılacak olan alarm voltajlarınıza bağlı olacaktır)
  • LM339 gücünü kontrol etmek için aşağı çekme direnci görevi gören bir 1K ohm direnç
  • LM339'u mantıksal olarak açmak için bir adet 2N7000 (veya benzeri) MOSFET (muhtemelen isteğe bağlı, projede daha sonra tartışılacaktır)
  • Devre kurulumu ve testi için uygun boyutta bir devre tahtası
  • Her şeyi birbirine bağlamak için bir grup breadboard kablosu
  • Gerekli aletler: yan kesiciler, tek damarlı tel
  • Bir DC multimetre (zorunlu!)

Adım 1: Alarm Sistemi Kontrol Kutusu

Alarm Sistemi Kontrol Kutusu
Alarm Sistemi Kontrol Kutusu

Önce bazı uyarılar ve sorumluluk reddi beyanları

Şahsen benim bir Bosch alarm sistemim var. Bölgeleri kablolamak için alarm sistemini kapatmanız gerekeceğinden, başlamadan önce kendi alarm sisteminiz için ilgili kılavuzu indirmenizi ve kendinizi tanımanızı şiddetle tavsiye ederim. Başlamadan önce bu makalenin tamamını okumanızı da tavsiye ederim!

Başlamadan önce bilmeniz gereken birkaç şeyin listesi aşağıdadır - devam etmeden önce her birini okuyup anladığınızdan emin olun! Alarm sisteminizi bozarsanız ve/veya tamircinize tamir etmesi için ödeme yapmanız gerekiyorsa sorumluluk kabul etmem. Ancak aşağıdakileri okuyup anlarsanız ve gerekli önlemleri alırsanız, iyi olmalısınız:

1. Alarm sistemimin kutunun içinde yedek bir pili ve ayrıca kapağın iç kısmında (alarm sistem kartına erişim sağlayan) bir dış müdahale anahtarı vardı, böylece kontrolün ön panelini çıkarırken alarmı harici olarak kapatabiliyordu. kutu alarmı tetikledi! Proje üzerinde çalışırken bunu aşmak için dış müdahale koruma anahtarını fişten çekip kısa devre yaparak kurcalama korumasını atladım (yukarıdaki fotoğrafta gösterildiği gibi kalın kırmızı kablo)

2. Alarm sistemini yeniden çalıştırırken, yaklaşık ~12 saat sonra alarm kontrol paneli arıza kodlarıyla bip sesi çıkarmaya başladı. Kılavuz üzerinden arıza kodlarını belirledikten sonra, beni şu şekilde uyardığını öğrendim:

  • Tarih/saat ayarlanmadı (yeniden yapılandırmak için kılavuzdaki ana koda ve tuş dizisine ihtiyacım vardı)
  • Yedek pilin bağlı olmadığını (kolay düzeltme, pili tekrar takmayı unutmuştum)

3. Alarmımda, PIR'lerin ana alarm kartına bağlanması için 4 x bölge bağlantı bloğu (Z1-Z4 etiketli) vardır, ancak - alarm sistemim aslında 8 bölge kapasitesine sahiptir. Her bölge bağlantı bloğu aslında her biri 2 x bölge çalıştırabilir (Z1, Z1 ve Z5 yapar, Z2, Z2 ve Z6 yapar vb.). Alarm sistemi, birinin söylemesini, yukarıda belirtildiği gibi alarm sisteminin kapağını açmasını veya bir PIR'a giden kabloları kesmesini engellemek için yerleşik kurcalamaya karşı koruma özelliğine sahiptir. EOL (hat sonu) dirençleri aracılığıyla her bölge dış müdahalesini ayırt eder. Bunlar, "hattın sonunda" bulunan özel olarak boyutlandırılmış dirençlerdir - başka bir deyişle, PIR'nin (veya kontrol kutusu dış müdahale anahtarının veya siren kutusunun veya o bölgeye bağlı olan her şeyin) içinde belirtildiği gibi, bu dirençler 'tamper' olarak kullanılır. koruma' - teknik olarak, biri bir PIR'ye giden kabloları keserse - alarm sistemi bu PIR'den belirli bir direnç görmeyi beklediğinden, direnç değişirse, birinin sistemi kurcaladığını varsayar ve alarmı tetikler.

Örneğin:

Alarmımda, Zone "Z4" içinde 2 kablo var, biri koridorumdaki PIR'ye gidiyor ve diğeri alarm kontrol kutusu dış müdahale anahtarına gidiyor. PIR koridorunun içinde 3300 ohm'luk bir dirence sahiptir. Kontrol kutusu kurcalama anahtarına giden diğer kablo, seri olarak bağlanmış 6800 ohm'luk bir rezistöre sahiptir. Alarm sistemi (mantıksal olarak) "Z4" ve "Z8" kurcalamaları bu şekilde ayırt eder. Benzer şekilde, "Z3" bölgesi bir PIR'ye (içinde 3300 ohm dirençli) ve ayrıca "Z7"yi oluşturan siren dış müdahale anahtarına (içinde 6800 ohm dirençli) sahiptir. Alarm kurulumcusu, her bölgeye hangi cihazın bağlı olduğunu bilmesi için alarm sistemini önceden yapılandırmış olacaktır (ve alarm sistemi farklı EOL dirençlerinin ne boyutta olduğunu bilecek şekilde programlandığından, EOL direncinin boyutunu buna uyacak şekilde değiştirmiştir. hiçbir koşulda bu dirençlerin değerini değiştirmemelisiniz!)

Bu nedenle, yukarıdakilere dayanarak, her bölgeye bağlı birden fazla cihaz olabileceğinden (farklı direnç değerlerine sahip) ve V=IR (voltaj = amper x direnç) formülünü hatırladığınızda, bu aynı zamanda her bölgenin farklı voltajlara sahip olabileceği anlamına gelebilir. Bu da bizi bir sonraki adıma götürür, her bir bölgenin BOŞTA ve TETİKLENMİŞ gerilime karşı ölçülmesi…

Adım 2: Alarm Bölgesi Voltajını Ölçme

Alarm Bölge Voltajını Ölçme
Alarm Bölge Voltajını Ölçme
Alarm Bölge Voltajını Ölçme
Alarm Bölge Voltajını Ölçme

Alarm sisteminizdeki ana karta erişim sağladıktan (ve varsa dış müdahale anahtarını atladıktan sonra; önceki adıma göre) alarm sisteminizi tekrar açın. Şimdi her bölgenin voltajını BOŞTA (PIR'nin önünde hareket yok) ve TETİKLENMİŞ (PIR hareket algıladı) olduğunda ölçmemiz gerekiyor. Bir kalem ve kağıt alın, böylece voltaj okumalarınızı yazabilirsiniz.

UYARI: Alarm sisteminizin büyük bir kısmı büyük olasılıkla 12V DC'de çalışıyor, ancak ilk güç beslemesi AC'den DC'ye gücü dönüştüren bir transformatör ile 220V (veya 110V) AC'de olacaktır. Kılavuzu OKUYUN ve herhangi bir AC terminalini ölçmediğinizden emin olmak için ekstra önlem alın!!! Bu sayfadaki alarm sistemimin ekran görüntüsüne göre, görüntünün en alt kısmında 12V DC'ye dönüştürülmüş AC gücü olduğunu görebilirsiniz. Vurgulanan kırmızı kutularda 12V DC'yi ölçüyoruz. AC gücüne asla dokunmayın. Son derece dikkatli olun!

PIR Voltajını Ölçme

Z1'den Z4'e bağlı 4 x PIR'ım var. Bölgelerinizin her birini aşağıdaki gibi ölçün.

  1. Öncelikle alarm panelindeki GND terminalini ve bölge terminallerini tanımlayın. Bunları Bosch alarmımın kılavuzundan gösterilen resimde vurguladım.
  2. Multimetrenizi alın ve voltaj ölçümünüzü 20V DC'ye ayarlayın. Siyah (COM) kablosunu multimetrenizden alarmdaki GND terminaline bağlayın. Multimetrenizden gelen kırmızı (+) ucu birinci bölgeye yerleştirin - benim durumumda "Z1" etiketli. Voltaj okumasını yazın. Kalan bölgeler için aynı adımları uygulayın. Voltaj ölçümlerim şu şekilde:
  • Z1 = 6.65V
  • Z2 = 6.65V
  • Z3 = 7.92V
  • Z4 = 7.92V

Yukarıdakilere göre, ilk iki bölgemde yalnızca PIR'ler de bağlı. Son iki bölgede hem PIR'ler hem de bunlara bağlı dış müdahale koruması bulunur (Z3 kontrol kutusu dış müdahalesi, Z4 siren dış müdahalesi) Voltaj farklılıklarını not edin.

3. Bir sonraki adım için muhtemelen 2 kişiye ihtiyacınız olacak. Ayrıca hangi PIR'nin hangi bölgede olduğunu da bilmeniz gerekecektir. Geri dönün ve ilk bölgedeki voltajı okuyun. Şimdi PIR'ın önüne geçmesi için evinize birini getirin, voltaj düşmeli. Yeni voltaj okumasını not edin. Benim durumumda, PIR'ler tetiklendiğinde voltajlar aşağıdaki gibi okunur:

  • Z1 = 0V
  • Z2 = 0V
  • Z3 = 4.30V
  • Z4 = 4.30V

Yukarıdakilere göre, 1. ve 2. bölgeler tetiklendiğinde voltajın 6.65V'den 0V'a düştüğünü görebiliyorum. Ancak 3. ve 4. bölgeler tetiklendiğinde voltaj 7.92V'den 4.30V'a düşer.

12V güç kaynağının ölçülmesi

Projemize güç sağlamak için alarm kontrol kutusundan 12V DC terminali kullanacağız. Alarm üzerindeki 12V DC beslemeden gelen voltajı ölçmemiz gerekiyor. Zaten 12V belirtse de, daha doğru bir okuma bilmemiz gerekiyor. Benim durumumda, aslında 13.15V okuyor. Bunu bir yere yazın, bir sonraki adımda bu değere ihtiyacınız olacak.

Neden voltajı ölçüyoruz?

Her PIR için voltaj ölçmemizin nedeni, oluşturacağımız devreden kaynaklanmaktadır. Bu proje için çekirdek elektrik bileşeni olarak bir LM339 dörtlü diferansiyel karşılaştırıcı çipi (veya dörtlü op-amp karşılaştırıcısı) kullanacağız. LM339'da, her kanalın 2 x giriş voltajı aldığı (bir evirici (-) ve bir evirici olmayan (+) giriş, şemaya bakın) 4 bağımsız voltaj karşılaştırıcısı (4 kanal) vardır. ters çevirmeyen voltaj, daha sonra ilgili çıkışı toprağa çekilecektir. Benzer şekilde, evirmeyen giriş voltajı, evirici girişten daha düşükse, çıkış Vcc'ye kadar çekilir. Elverişli olarak, evimde 4 adet alarm PIR/bölgem var - bu nedenle her bölge karşılaştırıcıdaki her kanala bağlanacaktır. 4'ten fazla PIR'niz varsa, daha fazla kanallı bir karşılaştırıcıya veya başka bir LM339'a ihtiyacınız olacak!

Not: LM339, nano amperlerde güç tüketir, bu nedenle mevcut alarm sisteminin EOL direncini etkilemez.

Bu kafa karıştırıcıysa, yine de bir sonraki adıma geçin, kabloyu bağladığımızda daha anlamlı olmaya başlayacaktır!

Adım 3: Gerilim Bölücü Oluşturma

Image
Image

Gerilim bölücü nedir?

Gerilim bölücü, seri olarak 2 x dirençli (veya daha fazla) olan bir devredir. Birinci dirence (R1) (R1) (Vin) cinsinden voltaj veriyoruz. Daha sonra R1 ve R2 arasındaki bağlantıdan bir çıkış voltajı (Vout) alıyoruz. Bu voltaj, LM339 için referans voltajımız olacaktır. Voltaj bölücülerin nasıl çalıştığı hakkında daha fazla bilgi için Adohms youtube videosuna bakın

(Not: dirençlerin polaritesi yoktur, bu nedenle her iki şekilde de kablolanabilirler)

Referans voltajımızı hesaplamak

PIR'niz tetiklendiğinde voltajın düştüğünü varsayarsak (çoğu alarm için durum böyle olmalıdır), o zaman elde etmeye çalıştığımız şey, en düşük rölanti voltajımız ile en yüksek tetiklenen voltajımız arasında hemen hemen ortada bir voltaj okuması elde etmektir, bu bizim referans voltajımız olacak.

Alarmımı örnek alarak…

Bölge boşta voltajları Z1 = 6.65V, Z2 = 6.65V, Z3 = 7.92V, Z4 = 7.92V idi. Bu nedenle en düşük rölanti voltajı 6.65V'dir.

Bölge tetiklemeli voltajlar: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. Bu nedenle tetiklenen en yüksek voltaj 4.30V'dir.

Bu yüzden 4,30V ile 6,65V arasında bir sayı seçmemiz gerekiyor (tam olması gerekmiyor, sadece kabaca) Benim durumumda referans voltajım 5,46V civarında olmalı. Not: En düşük rölanti ve en yüksek tetiklenen voltaj, farklı voltaj aralığına neden olan birden fazla bölge nedeniyle birbirine çok yakınsa, 2 veya daha fazla voltaj bölücü oluşturmanız gerekebilir.

Gerilim bölücü için direnç değerlerimizin hesaplanması

Şimdi bir referans voltajımız var, referans voltajımızı sağlayacak bir voltaj bölücü oluşturmak için hangi boyutta dirençlere ihtiyacımız olduğunu hesaplamamız gerekiyor. Alarmdan gelen 12V DC voltaj kaynağını (Vs) kullanacağız. Ancak, önceki adıma göre 12V DC beslemeyi ölçtüğümüzde aslında 13.15V elde ettik. Bu değeri kaynak olarak kullanarak voltaj bölücüyü hesaplamamız gerekiyor.

Ohm yasasını kullanarak Vout'u hesaplayın…

Vout = Vs x R2 / (R1 + R2)

…veya çevrimiçi bir voltaj bölücü hesap makinesi kullanın:-)

İstediğiniz çıktıyı elde edene kadar direnç değerlerini denemeniz gerekecektir. Benim durumumda, aşağıdaki gibi uzun biçimde hesaplanan R1 = 6.8k ohm ve R2 = 4.7K ohm ile çalıştı:

Vout = Vs x R2 / (R1 + R2)

Vout = 13.15 x 4700 / (6800 + 4700)

Vout = 61, 805 / 11, 500

Çıkış = 5,37V

Adım 4: LM339'u Bağlayın

Wemos D1 Mini'yi Kablolama
Wemos D1 Mini'yi Kablolama

LM339 ters çevirme girişlerine Gerilim Bölücü

LM339 karşılaştırıcısı ile ilgili daha önce tartışıldığı gibi, 2 x giriş alacaktır. Biri her bir PIR'den her kanalın ters çevirmeyen (+) terminaline bir voltaj olacak, diğeri ise ters çeviren (-) terminalimize referans voltajımız olacaktır. Referans voltajının 4 karşılaştırıcı ters çevirme girişinin tümünü beslemesi gerekir. Bu adımları gerçekleştirmeden önce alarm sisteminizi kapatın.

  • Alarm sistemindeki 12V DC bloğundan devre tahtanızdaki + rayına bir kablo çekin *
  • Alarm sistemindeki GND bloğundan devre tahtanızdaki - raya bir kablo çekin **
  • LM339 karşılaştırıcısını devre tahtasının ortasına takın (çentik, pim 1'e en yakın olanı gösterir)
  • Bir voltaj bölücü devre oluşturmak için 2 x direnç ve bölünmüş voltaj çıkışı için kablo takın
  • 'Voltaj bölünmüş' Vout'tan her bir LM339 ters çevirme terminaline kabloları çalıştırın

* İPUCU: Mümkünse güç için bir timsah klipsi kullanın, çünkü bu, projenize AÇMA/KAPAMA gücü sağlamayı kolaylaştırır** ÖNEMLİ! Wemos'u Alarm panelinden çalıştırıyorsanız, bir MOSFET gerekebilir! Benim durumumda, LM339, Wemos ve Alarm'ın tümü aynı kaynaktan güç alıyor (yani: alarm sisteminin kendisinden) Bu, tek bir güç bağlantısıyla her şeye gücü açmamı sağlıyor. Bununla birlikte, varsayılan olarak Wemos'taki GPIO pinleri "GİRİŞ" pinleri olarak tanımlanır - yani onlara atılan voltajı alırlar ve doğru voltaj seviyeleri (min/maks seviyeleri) sağlamak için bu kaynağa güvenirler, böylece Wemos'un kazanacağı ' çarpma veya yanma. Benim durumumda, alarm sistemi gücünü alır ve başlatma sırasını çok hızlı bir şekilde yapmaya başlar - aslında o kadar hızlıdır ki, bunu Wemos açılmadan ve GPIO pinlerini "INPUT_PULLUP" olarak ilan etmeden önce yapar (voltaj, yonga). Bu, tüm sisteme güç geldiğinde voltaj farklılıklarının Wemos'un çökmesine neden olacağı anlamına gelmez. Etrafındaki tek yol, Wemos'u manuel olarak kapatıp açmak olacaktır. Bunu çözmek için bir MOSFET eklenir ve LM339'u çalıştırmak için "mantıksal bir anahtar" görevi görür. Bu, Wemos'un açılmasına, 4 x karşılaştırıcı GPIO pinlerini "INPUT_PULLUP" olarak ayarlamasına, birkaç saniye gecikmesine ve SONRA (ÇIKIŞ olarak tanımlanan başka bir GPIO pini D5 aracılığıyla) GPIO pin D5 aracılığıyla MOSFET'e "HIGH" sinyali göndermesine izin verir, bu da LM339'u mantıksal olarak açar. Yukarıdaki gibi kablolama yapmanızı tavsiye ederim, ancak Wemos'un benim yaptığım gibi çöktüğünü fark ederseniz, MOSFET'i 1k ohm aşağı çekme direnci ile dahil etmeniz gerekecektir. Bunun nasıl yapılacağı hakkında daha fazla bilgi için, bu talimatın sonuna bakın.

LM339 evirmeyen girişlere alarm bölgeleri

Artık alarm kontrol panelindeki her bölgeden LM339 karşılaştırıcı girişlerine kablo çekmemiz gerekiyor. Alarm sistemi hala kapalıyken, her bölge için LM339 karşılaştırıcısındaki her bir evirmeyen (+) girişe bir kablo besleyin. Örneğin, benim sistemimde:

  • Z1'den gelen kablo LM339 giriş 1+'a gider
  • Z2'den gelen kablo, LM339 giriş 2+'ya gider
  • Z3'ten gelen kablo, LM339 giriş 3+'e gider
  • Z4'ten gelen kablo LM339 girişine gider 4+

Hatırlatıcınız varsa, 3. adımdaki LM339'un pin çıkışına bakın (breadboard görüntüsüyle renk kodludur). Bittiğinde, devre tahtanız bu adımda gösterilen resme benzer görünmelidir.

Alarm sistemini açın ve daha önce hesaplanan referans voltajınıza eşit olduğundan emin olmak için voltaj bölücüden gelen voltajı ölçün.

Adım 5: Wemos D1 Mini'yi Kablolama

Wemos D1 mini'yi kablolama

Artık tüm LM339 girişlerini hallettik, şimdi Wemos D1 mini'ye kablolamamız gerekiyor. Her bir LM339 çıkış pini, giriş pullup pini olarak kod aracılığıyla atayacağımız bir Wemos GPIO (genel amaçlı giriş/çıkış) pinine gider. Wemos, Vcc (giriş kaynağı) voltajı olarak maksimum 5V'a kadar alır (bunu dahili olarak 3,3V'a kadar düzenler) Wemos'a güç sağlamak için 5V. LM7805'in veri sayfası, devre tahtası görüntüsünde gösterildiği gibi gücü yumuşatmak için regülatörün her iki tarafına kablolanmış bir kapasitöre ihtiyacımız olduğunu gösterir. Kondansatörün uzun ayağı pozitif (+) olduğundan, bunun doğru şekilde bağlandığından emin olun.

Voltaj regülatörü voltaj girişi (sol taraf pin), topraklama (orta pin) ve voltaj çıkışı (sağ taraf pin) alır Voltaj regülatörünüz LM7805'ten farklıysa pin çıkışını iki kez kontrol edin.

(EDIT: Alarm panelinden gelen amperlerin LM7805'in kaldıramayacağı kadar yüksek olduğunu buldum. Bu, LM7805'in küçük soğutucusunda çok fazla ısıya ve arızalanmasına ve dolayısıyla Wemos'un durmasına neden oluyordu. LM7805 ve kapasitörleri onun yerine DC-DC dönüştürücü ile değiştirdim ve o zamandan beri hiçbir sorun yaşamadım. Bunların bağlanması çok kolay. Sadece Alarmdan gelen giriş voltajını bağlayın, önce bir multimetreye bağlayın ve potansiyometre vidasını kullanın ve çıkış voltajı ~ 5V olana kadar ayarlayın)

GPIO giriş pinleri

Bu proje için aşağıdaki pinleri kullanıyoruz:

  • bölge Z1 => pin D1
  • bölge Z2 => pin D2
  • bölge Z3 => pin D3
  • bölge Z4 => pin D5

Bu adımda gösterilen devre tahtası görüntüsüne göre, LM339'dan çıkışları Wemos kartındaki ilgili GPIO pinlerine bağlayın. Yine, neyin neyi ifade ettiğini görmeyi kolaylaştırmak için girdileri ve eşleşen çıktıları renkle kodladım. Arduino'daki her GPIO pini bir 'INPUT_PULLUP' olarak tanımlanır, yani normal kullanımda (IDLE) 3,3V'a çekilecek ve PIR tetiklenirse LM339 onları yere çekecektir. Kod YÜKSEK ile DÜŞÜK arasındaki değişikliği algılar ve kablosuz olarak ev otomasyon yazılımınıza bir mesaj gönderir. Bu çalışma ile ilgili sorunlar yaşıyorsanız, ters çevirme ve ters çevirme olmayan girişlerinizin yanlış bir şekilde olması olasıdır (çoğu hobi PIR'sinde olduğu gibi, tetiklendiğinde PIR'ınızdan gelen voltaj yükselirse, o zaman bağlantıları isteyeceksiniz. başka bir yol)

Arduino IDE'si

Wemos'u devre tahtasından kaldırın, şimdi ona kod yüklememiz gerekiyor (buradaki alternatif bağlantı) Web'de Wemos'a veya diğer ESP8266'ya kod yüklemekle ilgili çok sayıda makale olduğundan bunun nasıl yapılacağına dair ayrıntılara girmeyeceğim. tip panolar. USB kablonuzu Wemos kartına ve PC'nize takın ve Arduino IDE'yi çalıştırın. Kodu indirin ve projenizde açın. Projeniz için doğru kartın kurulduğundan ve yüklendiğinden ve ayrıca seçilen doğru COM bağlantı noktasının (Araçlar, Bağlantı Noktası) olduğundan emin olmanız gerekir. Ayrıca uygun kitaplıkların kurulmasına da ihtiyacınız olacak (PubSubClient, ESP8266Wifi) Wemos panosunu çiziminize dahil etmek için bu makaleye bakın.

Aşağıdaki kod satırlarını değiştirmeniz ve kablosuz bağlantınız için kendi SSID'niz ve şifrenizle değiştirmeniz gerekecektir. Ayrıca, IP adresini kendi MQTT aracınıza işaret edecek şekilde değiştirin.

// Wifi

const char* ssid = "your_wifi_ssid_here"; const char* şifre = "your_wifi_password_here"; // MQTT Aracısı IPAdresi MQTT_SERVER(172, 16, 223, 254)

Değiştirdikten sonra kodunuzu doğrulayın ve ardından bir USB kablosuyla Wemos panosuna yükleyin.

Notlar:

  • Farklı GPIO bağlantı noktaları kullanıyorsanız, kodu ayarlamanız gerekecektir. Sahip olduğumdan daha fazla veya daha az bölge kullanıyorsanız, kodu da ayarlamanız gerekecek ve TOTAL_ZONES=4; uyacak şekilde sabit.
  • Alarm sistemimin başlangıcında, alarm sistemi tüm bağlı GPIO'ları toprağa çeken 4 x PIR'nin tümüne bir güç testi yapacak ve Wemos'un bölgelerin tetiklendiğini düşünmesine neden olacaktı. Kod, alarm sisteminin açıldığını varsaydığından, 4 x zonun tümünü aynı anda aktif olarak görürse, MQTT mesajlarının gönderilmesini yok sayar.

BURAYA kod için alternatif indirme bağlantısı

Adım 6: Test Etme ve OpenHAB Yapılandırması

Test ve OpenHAB Yapılandırması
Test ve OpenHAB Yapılandırması

MQTT Testi

MQTT bir "abone ol / yayınla" mesajlaşma sistemidir. Bir veya daha fazla cihaz, bir "MQTT aracısı" ile konuşabilir ve belirli bir konuya "abone olabilir". Aynı konuda "yayınlanan" herhangi bir başka cihazdan gelen mesajlar, aracı tarafından kendisine abone olan tüm cihazlara gönderilir. Son derece hafif ve kullanımı basit bir protokoldür ve buradaki gibi basit bir tetikleme sistemi olarak mükemmeldir. Test için, Mosquitto sunucunuzda aşağıdaki komutu çalıştırarak Wemos'tan MQTT aracınıza gelen MQTT mesajlarını görüntüleyebilirsiniz (Mosquitto, mevcut birçok MQTT Broker yazılımından biridir). Bu komut, gelen canlı tutma mesajlarına abone olur:

mosquitto_sub -v -t openhab/alarm/status

Wemos'tan her 30 saniyede bir "1" sayısıyla gelen mesajları görmelisiniz ("yaşıyorum" anlamına gelir) Sabit "0'lar" (veya yanıt yok) görüyorsanız, iletişim yok demektir. 1 numaranın geldiğini gördüğünüzde, Wemos'un MQTT komisyoncusu ile iletişim kurduğu anlamına gelir (bunun nasıl çalıştığı hakkında daha fazla bilgi için "MQTT Last Will and Testament"ı arayın veya bu gerçekten iyi blog girişine bakın)

İletişimin işlevsel olduğunu kanıtladıktan sonra, MQTT aracılığıyla bir bölge durumunun rapor edildiğini test edebiliriz. Aşağıdaki konuya abone olun (# bir joker karakterdir)

mosquitto_sub -v -t openhab/alarm/#

Wemos'un IP adresi gibi olağan durum mesajları da gelmelidir. Bir PIR'nin önüne geçin ve ayrıca, aşağıdakine benzer şekilde, AÇIK olduğunu belirten bölge bilgisinin geldiğini, ardından bir saniye kadar sonra KAPALI olduğunu görmelisiniz:

openhab/alarm/durum 1

openhab/alarm/zone1 AÇIK

openhab/alarm/zone1 KAPALI

Bu bir kez çalıştığında, bunu GUI'de güzel bir şekilde temsil edecek şekilde OpenHAB'ı yapılandırabiliriz.

OpenHAB Yapılandırması

OpenHAB için aşağıdaki değişiklikler gereklidir:

'alarm.map' dönüştürme dosyası: (isteğe bağlı, test için)

KAPALI=IdleOPEN=TetiklendiNULL=Bilinmiyor-=Bilinmiyor

'status.map' dönüştürme dosyası:

0=Başarısız

1=Çevrimiçi -=AŞAĞI! NULL=bilinmiyor

'öğeler' dosyası:

String alarmMonitorState "Alarm Monitor [MAP(status.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/status:state:default]" } String alarmMonitorIPAddress "Alarm Monitor IP [%s]" { mqtt ="<[mqttbroker:openhab/alarm/ipaddress:state:default]" } Number zone1_Chart_Period "Zone 1 Chart" Contact alarmZone1State "Zone 1 State [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/zone1:state:default" } String alarmZone1Trigger "Lounge PIR [%1$ta %1$tr]" Number zone2_Chart_Period "Zone 2 Chart" Kontak alarmZone2State "Zone 2 State [MAP(alarm.map):% s]" { mqtt="<[mqttbroker:openhab/alarm/zone2:state:default" } String alarmZone2Trigger "İlk Salon PIR [%1$ta %1$tr]" Number zone3_Chart_Period "Zone 3 Chart" Contact alarmZone3State "Zone 3 Durum [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openhab/alarm/zone3:state:default" } String alarmZone3Trigger "Yatak Odası PIR [%1$ta %1$tr]" Sayı zone4_Chart_Period "Bölge 4 Tablosu" İletişim alarmZone4State "Bölge 4 Durumu [MAP(alarm.map):%s]" { mqtt="<[mqttbroker:openha b/alarm/zone4:state:default" } String alarmZone4Trigger "Ana Salon PIR [%1$ta %1$tr]"

'site haritası' dosyası (rrd4j grafiği dahil):

Metin öğesi=alarmZone1Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Frame { Switch item=zone1_Chart_Period label= "Period" eşlemeleri=[0="Saat", 1="Gün", 2="Hafta"] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone1_Chart_Period==0, zone1_Chart_Period= =Başlatılmamış] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone1_Chart_Period==1] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone1_Chart_Period==2] } } Metin öğesi=alarmZone2Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Çerçeve { Öğeyi değiştir= zone2_Chart_Period label="Period" mappings=[0="Saat", 1="Gün", 2="Hafta"] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone2_Chart_Period==0, zone2_Chart_Period==Başlatılmamış] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone2_Chart_Period==1] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone2_Chart_Period ==2] } } Metin öğesi=alarmZone3Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Çerçeve { Öğeyi değiştir=zone3_Chart_Period label="Period" eşlemeleri =[0="Saat", 1="Gün", 2="Hafta"] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone3_Chart_Period==0, zone3_Chart_Period==Başlatılmamış] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone3_Chart_Period==1] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone3_Chart_Period==2] } } Metin item=alarmZone4Trigger valuecolor=[<=60="#ff0000", <=300="#ffa500", <=600="#008000", 3600="#000000"] { Çerçeve { Öğeyi değiştir=zone4_Chart_Period label=" Dönem" eşlemeleri=[0="Saat", 1="Gün", 2="Hafta"] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone4_Chart_Period==0, zone4_Chart_Period== Başlatılmamış] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone4_Chart_Period==1] Resim url="https://localhost:8080/rrdchart.png" görünürlük=[zone4_Chart_Period==2] } } // OPSİYONEL ancak durum ve IP adresini teşhis etmek için kullanışlı ss Metin öğesi=alarmMonitorState Metin öğesi=alarmMonitorIPAdresi

'kurallar' dosyası:

"Alarm Bölgesi 1 durum değişikliği" kuralı

Öğe alarmZone1State OPEN olarak değiştirildiğinde postUpdate(alarmZone1Trigger, new DateTimeType()) alarmZone1State.state = KAPALI bitiş

"Alarm Bölgesi 2 durum değişikliği" kuralı

Öğe alarmZone2State OPEN olarak değiştirildiğinde postUpdate(alarmZone2Trigger, new DateTimeType()) alarmZone2State.state = KAPALI bitiş

"Alarm Bölgesi 3 durum değişikliği" kuralı

Öğe alarmZone3State OPEN olarak değiştirildiğinde postUpdate(alarmZone3Trigger, new DateTimeType()) alarmZone3State.state = KAPALI bitiş

"Alarm Bölgesi 4 durum değişikliği" kuralı

Öğe alarmZone4State OPEN olarak değiştirildiğinde postUpdate(alarmZone4Trigger, new DateTimeType()) alarmZone4State.state = KAPALI bitiş

Kendi kurulumunuza uyması için yukarıdaki OpenHAB konfigürasyonunu biraz değiştirmeniz gerekebilir.

PIR'lerin tetiklenmesiyle ilgili herhangi bir sorununuz varsa, baştan başlayın ve devrenin her bir parçası için voltajları ölçün. Bundan memnun olduğunuzda, kablolamanızı kontrol edin, ortak bir zemin olduğundan emin olun, bir seri hata ayıklama konsolu aracılığıyla Wemos üzerindeki mesajları kontrol edin, MQTT iletişimini kontrol edin ve dönüşümünüzün, öğelerinizin ve site haritası dosyalarınızın sözdizimini kontrol edin.

İyi şanlar!

Önerilen: