Mündəricat:

WiFi -ə Alarm PIR (və Ev Otomasyonu): 7 addım (şəkillərlə)
WiFi -ə Alarm PIR (və Ev Otomasyonu): 7 addım (şəkillərlə)

Video: WiFi -ə Alarm PIR (və Ev Otomasyonu): 7 addım (şəkillərlə)

Video: WiFi -ə Alarm PIR (və Ev Otomasyonu): 7 addım (şəkillərlə)
Video: Unboxing| WiFi smart PIR motion sensor |adding for smart home automation#motionsensor#smarthome 2024, Iyul
Anonim
Image
Image
WiFi siqnalizasiya PIR (və ev avtomatlaşdırılması)
WiFi siqnalizasiya PIR (və ev avtomatlaşdırılması)

Baxış

Bu təlimat, ev avtomatlaşdırma proqramınızda Ev Siqnalizasiyasının PIR -lərinin (passiv infraqırmızı sensorlar) işə salındığı son tarix/saatı (və isteğe bağlı olaraq tarixlərin tarixini) görmək imkanı verəcək. Bu layihədə, MQTT -ni dəstəkləyən hər hansı digər ev avtomatlaşdırma proqramı və ya tətbiqi ilə işləsə də, OpenHAB (şəxsən istifadə etdiyim pulsuz ev avtomatlaşdırma proqramı) ilə necə istifadə edəcəyimi müzakirə edəcəyəm. Bu təlimat, siqnal idarəetmə qutunuzdakı həyəcan zonalarına daxil olan Wemos D1 mini (ESP8266 çipindən istifadə edən bir IOT lövhəsi) bağlamaq üçün lazımi addımları atacaq. bir və ya daha çox PIR) işə salındıqda, Wemos MQTT protokolundan istifadə edərək kabelsiz olaraq ev avtomatlaşdırma proqramınıza mesaj göndərir ki, bu da həmin tətikin son tarixini/vaxtını göstərir. Wemos proqramlaşdırmaq üçün Arduino kodu da verilir.

Giriş

Yuxarıdakı şəkil, iPhone'umdakı OpenHAB tətbiqindəki ekranlardan birində gördüyüm şeydir. Tarix/vaxt mətni, PIR -in tetiklendiğini daha sürətli bir şəkildə göstərmək üçün rənglə kodlanır - qırmızı (son 1 dəqiqə ərzində tetiklenir), narıncı (son 5 dəqiqə ərzində tetiklenir), yaşıl (son 30 dəqiqə ərzində tetiklenir), mavi (son bir saat ərzində tetiklenir) və ya başqa şəkildə qara. Tarixi/saatı tıkladığınızda, 1 -in tetiklendiği və 0 -un boş olduğu PIR tetikleyicilerinin tarixi görünüşü görünəcək. Bunun bir çox istifadəsi var, məsələn, evdə olma həllini tamamlaya bilər, uzaqda olsanız və OpenHAB qaydaları ilə hərəkəti aşkar edə bilər, telefonunuza bildirişlər göndərə bilər, uşaqlarımın olub olmadığını görmək üçün istifadə edə bilərsiniz. yataq otağının xaricində yaşayan bir PIR tərəfindən tetiklenen gecə yarısı qalxmaq!

OpenHAB sadəcə istifadə etdiyim ev avtomatlaşdırma proqramıdır, digərləri də çoxdur - MQTT -ni dəstəkləyirlərsə, bu layihəni istifadə etdiyiniz proqrama uyğun olaraq asanlıqla uyğunlaşdıra bilərsiniz.

Fərziyyələr

Bu təlimat, artıq sahib olduğunuzu (və ya quracağını) ehtimal edir:

  • Aydındır ki, PIR -lər (passiv infraqırmızı sensorlar) olan ev siqnalizasiya sistemi və lazımi naqilləri bağlamaq üçün siqnalizasiya qutusuna girişiniz var.
  • OpenHAB (pulsuz açıq mənbəli ev avtomatlaşdırma proqramı) işləyir, baxmayaraq ki, müzakirə edildiyi kimi MQTT bağlamasını ehtiva edə biləcək hər hansı bir ev avtomatlaşdırma proqramı ilə işləməlidir. Alternativ olaraq, kodu öz ehtiyaclarınıza uyğun olaraq dəyişdirə bilərsiniz.
  • OpenHAB ilə qurulmuş və bağlanan Mosquitto MQTT (və ya oxşar) brokeri (MQTT, yüngül və cihazlar arasında ünsiyyət üçün əlverişli olan mesajlaşma abunə/nəşr tipli protokoldur)

OpenHAB və MQTT brokerini işləmirsinizsə, MakeUseOf veb saytındakı bu əla məqaləyə baxın

Mənə nə lazımdır?

Simsiz idarəedici yaratmaq üçün aşağıdakı hissələri qaynaqlamalısınız:

  • Wemos D1 mini V2 (quraşdırılmış ESP8266 simsiz CHIP var)
  • LM339 müqayisəsi
  • Wemos üçün 5V DC enerji mənbəyi (OR, DC-DC buck çeviricisi. Qeyd: LM7805 gərginlik tənzimləyicisi bu layihədə daha sonra müzakirə edildiyi kimi bu tətbiq üçün işləməyə bilər)
  • Bir gərginlik bölücü üçün iki rezistor (ölçüsü daha sonra layihədə müzakirə olunan həyəcan gərginliyinizdən asılı olacaq)
  • LM339 gücünü idarə etmək üçün bir aşağı çəkmə müqaviməti rolunu oynayan bir 1K ohm rezistor
  • LM339 -u məntiqi olaraq açmaq üçün bir 2N7000 (və ya oxşar) MOSFET (ehtimal ki, layihədə daha sonra müzakirə ediləcək)
  • Dövrə qurulması və sınanması üçün uyğun ölçülü çörək taxtası
  • Hər şeyi bir -birinə bağlamaq üçün bir dəstə çörək taxtası telləri
  • Lazım olan alətlər: yan kəsicilər, tək nüvəli tel
  • DC çox sayğac (məcburidir!)

Addım 1: Siqnalizasiya Sisteminə Nəzarət Qutu

Siqnalizasiya Sisteminə Nəzarət Qutusu
Siqnalizasiya Sisteminə Nəzarət Qutusu

Əvvəlcə bir neçə xəbərdarlıq və xəbərdarlıq

Şəxsən mənim Bosch siqnalizasiya sistemim var. Xüsusi siqnalizasiya sisteminiz üçün müvafiq təlimatı yükləməyinizi və başlamazdan əvvəl onunla tanış olmağı çox tövsiyə edərdim, çünki zonaları bağlamaq üçün siqnalizasiya sistemini söndürməlisiniz. Başlamazdan əvvəl bu məqaləni tamamilə oxumağı da tövsiyə edərdim!

Aşağıda başlamazdan əvvəl bilməli olduğunuz bir neçə şeyin siyahısı var - davam etməzdən əvvəl hər birini oxuduğunuzdan və anladığınızdan əmin olun! Siqnalizasiya sisteminizi pozarsanız və/və ya onu düzəltmək üçün quraşdırıcınıza pul ödəməli olsanız, heç bir məsuliyyət daşımıram. Aşağıdakıları oxuyub anlayırsınızsa və lazımi tədbirləri görürsünüzsə, yaxşı olarsınız:

1. Siqnalizasiya sistemimdə qutunun içərisində ehtiyat batareyası vardı və qapağın iç tərəfində (siqnalizasiya sistemi lövhəsinə çıxışı təmin edən) bir müdaxilə açarı da var idi, buna görə də idarəetmə panelinin ön panelini sökərkən siqnalı xaricdən söndürürdüm. qutu həyəcanı işə saldı! Layihə üzərində işləyərkən bunun qarşısını almaq üçün, müdaxilə açarını çıxarıb qısa qapatmaqla (yuxarıdakı fotoşəkildə göstərildiyi kimi qalın qırmızı tel) müdaxilənin qorunmasını aşdım.

2. Siqnalizasiya sistemini yenidən işə saldıqda, təxminən ~ 12 saatdan sonra siqnalizasiya idarəetmə paneli səhv kodları ilə siqnal verməyə başladı. Təlimat vasitəsi ilə səhv kodlarını təyin etdikdən sonra mənə xəbərdarlıq etdiyini bildim:

  • Tarix/vaxt təyin olunmadı (yenidən konfiqurasiya etmək üçün təlimatdakı əsas koda və açar ardıcıllığına ehtiyacım var idi)
  • Yedek batareyanın bağlanmadığı (asan həll, sadəcə batareyanı yenidən bağlamağı unutmuşdum)

3. Mənim həyəcan siqnalımda, PIR -lərin əsas siqnal lövhəsinə qoşulması üçün 4 x zonalı əlaqə bloku var (Z1 -Z4 etiketli), lakin mənim siqnalizasiya sistemim əslində 8 zonaya qadirdir. Hər bir zona əlaqə bloku əslində hər biri 2 x zonada işləyə bilər (Z1 Z1 və Z5, Z2 Z2 və Z6 və s.). Siqnalizasiya sistemi, yuxarıda qeyd edildiyi kimi siqnalizasiya sisteminin qapağını açmaq və ya telləri PIR-ə kəsməklə kiminsə dediklərini dayandırmaq üçün quraşdırılmış müdaxilənin qorunmasına malikdir. EOL (xəttin sonu) rezistorları vasitəsi ilə hər bir bölgə müdaxiləsini fərqləndirir. Bunlar xüsusi olaraq "xəttin sonunda" yerləşən rezistorlardır - başqa sözlə, PIR daxilində (və ya idarəetmə qutusu müdaxilə açarı, ya da siren qutusu və ya o zonaya bağlı olan hər şey) qeyd edildiyi kimi, bu rezistorlar 'müdaxilə olaraq istifadə olunur qoruma ' - texniki olaraq, kimsə kabelləri PIR -ə kəsərsə - siqnalizasiya sistemi bu PIR -dan müəyyən bir müqavimət görəcəyini gözlədiyi üçün müqavimət dəyişərsə, kiminsə sistemə müdaxilə etdiyini və həyəcanı tetikleyeceğini düşünür.

Misal üçün:

Siqnalımda "Z4" Zonasında 2 tel var, biri koridorumdakı PIR -ə, digəri isə siqnalizasiya qutusu müdaxilə açarına gedir. PIR koridorunun içərisində 3300 ohm rezistora malikdir. İdarəetmə qutusu müdaxilə açarına gedən digər tel, ardıcıl olaraq bağlanmış 6800 ohm müqavimətçiyə malikdir. Siqnalizasiya sistemi (məntiqi olaraq) "Z4" və "Z8" tamponlarını belə fərqləndirir. Eyni şəkildə, "Z3" zonasında "Z7" ni təşkil edən bir PIR (içərisində 3300 ohm müqavimət olan) və həmçinin siren müdaxilə açarı (6800 ohm rezistoru olan) var. Siqnal qurğusu siqnalizasiya sistemini əvvəlcədən konfiqurasiya edərdi ki, hər bir zonaya hansı cihazın bağlı olduğunu bilsin (və EOL rezistorunun ölçüsünü uyğun olaraq dəyişdirsin, çünki siqnalizasiya sistemi fərqli EOL rezistorlarının hansı ölçüdə olduğunu bilmək üçün proqramlaşdırılıb. Heç bir halda bu rezistorların dəyərini dəyişməməlisiniz!)

Yuxarıda göstərilənlərə əsaslanaraq, çünki hər bir zonaya bir çox cihaz qoşula bilər (fərqli müqavimət dəyərləri ilə) və V = IR (gərginlik = amper x müqavimət) formulunu xatırlayaraq, bu da hər zonanın fərqli gərginliklərə malik ola biləcəyini ifadə edə bilər. İDLE vs TRIGGERED gərginliyini hər zonanı ölçərək bizi növbəti mərhələyə aparan…

Addım 2: Siqnal Zonası Gərginliyinin Ölçülməsi

Siqnal Zonası Gərginliyinin Ölçülməsi
Siqnal Zonası Gərginliyinin Ölçülməsi
Siqnal Zonası Gərginliyinin Ölçülməsi
Siqnal Zonası Gərginliyinin Ölçülməsi

Siqnalizasiya sisteminizdəki ana lövhəyə giriş əldə etdikdən sonra (və əgər varsa, müdaxilə açarını aşmışsınız; əvvəlki addıma görə) siqnalizasiya sisteminizi yenidən işə salın. İDLE (PIR qarşısında heç bir hərəkət yoxdur) və TRIGGERED (PIR hərəkəti aşkar etdi) zaman gərginlik oxunuşlarınızı yazmaq üçün bir qələm və kağız götürün.

XƏBƏRDARLIQ: Siqnalizasiya sisteminizin böyük bir hissəsi çox güman ki, 12V DC -də işləyir, lakin 220V (və ya 110V) AC -də, AC -dən DC -ə çevirən transformatorla birlikdə ilkin enerji təchizatı olacaq. Təlimatı oxuyun və heç bir AC terminalını ölçmədiyinizə əmin olun !!! Bu səhifədəki siqnalizasiya sistemimin ekran görüntüsünə görə, görüntünün ən alt hissəsinin 12V DC -ə çevrilmiş AC gücü olduğunu görə bilərsiniz. Vurgulanan qırmızı qutularda 12V DC ölçürük. AC gücünə heç vaxt toxunmayın. Çox diqqətli olun!

PIR gərginliyinin ölçülməsi

Z1 -dən Z4 -ə qoşulmuş 4 x PIR var. Zonalarınızın hər birini aşağıdakı kimi ölçün.

  1. Əvvəlcə siqnal panelindəki GND terminalını və zona terminallarını təyin edin. Bunları Bosch həyəcan siqnalımın təlimatında göstərilən şəkildə vurğuladım.
  2. Multimetrinizi götürün və gərginlik ölçməsini 20V DC -ə təyin edin. Qara (COM) kabelini multimetrinizdən həyəcan siqnalındakı GND terminalına qoşun. Multimetrinizdəki qırmızı (+) qurğunu birinci zonaya qoyun - mənim vəziyyətimdə "Z1" etiketli. Gərginlik oxunuşunu yazın. Qalan bölgələr üçün eyni addımları yerinə yetirin. Mənim gərginlik ölçmələrim belədir:
  • Z1 = 6.65V
  • Z2 = 6.65V
  • Z3 = 7.92V
  • Z4 = 7.92V

Yuxarıda göstərilənlərə görə, mənim ilk iki zonamda yalnız PIR -lər var. Son iki zonada həm PIR -lər, həm də müdaxilə qorunması var (Z3 idarəetmə qutusu, Z4 siren müdaxiləsi) Gərginlik fərqlərinə diqqət yetirin.

3. Bu növbəti addım üçün çox güman ki, 2 nəfərə ehtiyacınız olacaq. Hansı PIR -in hansı zonada olduğunu da bilməlisiniz. Geri qayıdın və birinci zonadakı gərginliyi oxuyun. İndi evinizdən birini PIR qarşısında gəzdirin, gərginlik düşməlidir. Yeni gərginliyin oxunmasına diqqət yetirin. Mənim vəziyyətimdə, PIR -lər işə salındıqda gərginliklər aşağıdakı kimi oxunur:

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

Yuxarıda göstərilənlərə görə, görürəm ki, 1 və 2 -ci zonalar işə düşəndə gərginlik 6,65V -dan 0V -a enir. Lakin 3 və 4 -cü zonalar işə salındıqda gərginlik 7.92V -dan 4.30V -ə düşür.

12V enerji təchizatı ölçülür

Layihəmizi gücləndirmək üçün siqnalizasiya qutusundan 12V DC terminaldan istifadə edəcəyik. Siqnaldakı 12V DC qidalanmadan gələn gərginliyi ölçməliyik. Artıq 12V göstərməsinə baxmayaraq, daha dəqiq oxunuşu bilməmiz lazımdır. Mənim vəziyyətimdə, həqiqətən, 13.15V oxuyur. Bunu yazın, növbəti addımda bu dəyərə ehtiyacınız olacaq.

Niyə gərginliyi ölçürük?

Hər bir PIR üçün gərginliyi ölçməyimizin səbəbi, yaradacağımız dövrə görədir. Bu layihə üçün əsas elektrik komponenti olaraq LM339 dörd diferensial müqayisə çipindən (və ya dörd op-amp müqayisəli) istifadə edəcəyik. LM339-da hər bir kanalın 2 dəfə giriş gərginliyi (bir ters çevrilməsi (-) və bir də ters çevrilməməsi (+) daxil olduğu 4 müstəqil gərginlik müqayisəedicisi (4 kanal) var. Ters giriş gərginliyinin gərginliyi daha aşağı düşməlidirsə ters çevrilməyən gərginlik, sonra əlaqəli çıxışı yerə çəkiləcək. Eynilə, ters çevrilməyən giriş gərginliyi ters girişdən aşağı düşərsə, çıxış Vcc-ə qədər çəkilir. Əlverişli bir şəkildə, evimdə 4 x siqnalizasiya PIR/zonası var - buna görə də hər bir zonada komparatorun hər bir kanalına tel bağlanacaq. 4 x -dən çox PIR -a sahibsinizsə, daha çox kanalı olan bir müqayisə cihazına və ya başqa bir LM339 -a ehtiyacınız olacaq!

Qeyd: LM339 nano-amperdə enerji istehlak edir, buna görə də mövcud həyəcan sisteminin EOL müqavimətinə təsir göstərməyəcək.

Bu çaşqınlıq yaradırsa, növbəti addıma davam edin, biz onu bağladıqdan sonra daha məntiqli olmağa başlayacaq!

Addım 3: Gərginlik Bölücü Yaratmaq

Image
Image

Gərginlik bölücü nədir?

Gərginlik bölücü, ardıcıl olaraq 2 x rezistoru (və ya daha çoxu) olan bir dövrədir. Birinci müqavimətə (R1) (Vin) gərginlik veririk R1 -in digər ayağı ikinci müqavimətin (R2) birinci ayağına, R2 -nin digər ucu isə GND -yə qoşulur. Daha sonra R1 və R2 arasındakı əlaqədən bir çıxış gərginliyi (Vout) alırıq. Bu gərginlik LM339 üçün istinad gərginliyimiz olacaq. Gərginlik ayırıcılarının necə işlədiyinə dair daha çox məlumat üçün Adohms youtube videosuna baxın

(Qeyd: Rezistorların qütblülüyü yoxdur, buna görə də hər hansı bir şəkildə bağlana bilər)

İstinad gərginliyimizin hesablanması

PIR -in işə salındıqda geriliyin düşdüyünü (əksər həyəcan siqnalları üçün belə olmalıdır) düşündükdə, əldə etməyə çalışdığımız şey, ən aşağı boş gərginliyimizlə ən yüksək tetiklenen gərginliyimiz arasında yarıdan çox olan bir gərginlik oxunuşunu əldə etməkdir. bu bizim istinad gərginliyimiz olacaq.

Siqnalımı nümunə götürürəm …

Zonanın boş gərginliyi Z1 = 6.65V, Z2 = 6.65V, Z3 = 7.92V, Z4 = 7.92V idi. Ən aşağı boş gərginlik 6.65V -dir

Zonanın tetiklediği gərginliklər: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. Ən yüksək tetiklenen gərginlik 4.30V -dir

Beləliklə, 4.30V və 6.65V arasında bir sıra seçməliyik (dəqiq olmaq lazım deyil, təxminən) Mənim vəziyyətimdə istinad gərginliyimin 5.46V ətrafında olması lazımdır. Qeyd: Müxtəlif gərginliklərə səbəb olan bir çox zonaya görə ən aşağı boş və ən yüksək tetiklenen gərginlik bir -birinə çox yaxındırsa, 2 və ya daha çox gərginlik bölücü yaratmalı ola bilərsiniz.

Gərginlik bölücü üçün müqavimət dəyərlərimizin hesablanması

İndi bir referans gərginliyimiz var, referans gərginliyimizi təmin edəcək bir gərginlik bölücü yaratmaq üçün hansı ölçüdə rezistorlara ehtiyacımız olduğunu hesablamalıyıq. Siqnaldan 12V DC gərginlik mənbəyindən (Vs) istifadə edəcəyik. Bununla birlikdə, 12V DC qidalanmasını ölçdüyümüz əvvəlki addıma görə əslində 13.15V aldıq. Mənbə olaraq bu dəyəri istifadə edərək gərginlik bölücüsünü hesablamalıyıq.

Ohm qanunu ilə Vout hesablayın …

Vout = Vs x R2 / (R1 + R2)

… və ya onlayn bir gərginlik bölücü kalkulyatorundan istifadə edin:-)

İstədiyiniz çıxışı əldə edənə qədər müqavimət dəyərləri ilə təcrübə aparmalı olacaqsınız. Mənim vəziyyətimdə, uzun formada aşağıdakı kimi hesablanan R1 = 6.8k ohm və R2 = 4.7K ohm ilə işlənmişdir:

Vout = Vs x R2 / (R1 + R2)

Vout = 13.15 x 4700 / (6800 + 4700)

Vout = 61, 805/11, 500

Vout = 5.37V

Addım 4: LM339 -u bağlayın

Wemos D1 Mini -nin bağlanması
Wemos D1 Mini -nin bağlanması

LM339 inverting girişlərinə Gərginlik Bölücü

LM339 komparatoru ilə bağlı əvvəllər müzakirə edildiyi kimi, 2 dəfə giriş tələb edəcək. Biri hər PIR-dən hər bir kanalın ters çevrilməyən (+) terminalına bir gərginlik, digəri isə ters çevirən (-) terminalımıza istinad gərginliyimiz olacaq. Referans gərginliyi bütün 4 müqayisəli inverting girişini qidalandırmalıdır. Bu addımları atmadan əvvəl siqnalizasiya sisteminizi söndürün.

  • Siqnalizasiya sistemindəki 12V DC blokundan + çörək taxtanızdakı + rayına qədər bir tel çəkin *
  • Zəngli sistemdəki GND blokundan çörək taxtanızdakı relsə qədər bir tel çəkin **
  • LM339 müqayisə cihazını çörək taxtasının ortasına quraşdırın (çentik pin 1 -ə ən yaxın olduğunu göstərir)
  • Bir gərginlik bölücü dövrə və bölünmüş gərginlik üçün tel yaratmaq üçün 2 x rezistoru quraşdırın
  • Telləri 'gərginliyə bölünmüş' Vout -dan hər LM339 inverting terminalına çəkin

* İPUCU: Mümkünsə güc üçün bir timsah klipi istifadə edin, çünki bu, layihənizə ON/OFF güc verməyi asanlaşdırır ** Vacib! Alarm panelindən Wemos -a güc verirsinizsə MOSFET tələb oluna bilər! Mənim vəziyyətimdə, LM339, Wemos və Alarm hamısı eyni mənbədən enerji alır (yəni: siqnalizasiya sisteminin özü) Bu, tək bir enerji bağlantısı ilə hər şeyi enerjiyə bağlamağa imkan verir. Varsayılan olaraq, Wemos üzərindəki GPIO pinləri "GİRİŞ" pinləri olaraq təyin olunur, yəni atılan hər hansı bir gərginliyi götürür və Wemosun qalib gəlməsi üçün doğru gərginlik səviyyələrini (min/maksimum səviyyələr) təmin etmək üçün bu mənbəyə güvənirlər. t qəza və ya yanma. Mənim vəziyyətimdə siqnalizasiya sistemi öz gücünü alır və açılış ardıcıllığını çox sürətli etməyə başlayır - o qədər sürətlidir ki, Wemos GPIO sancaqlarını "INPUT_PULLUP" (daxili daxilində çəkilmiş gərginlik) olaraq elan etməzdən əvvəl bunu edir. çip). Bu o demək deyil ki, gərginlik fərqləri bütün sistem güc alanda Wemosun qəzaya uğramasına səbəb olacaq. Bunun yeganə yolu Wemos'u əl ilə söndürmək və yandırmaq olardı. Bunu həll etmək üçün bir MOSFET əlavə olunur və LM339 -u işə salmaq üçün "məntiqi açar" rolunu oynayır. Bu, Wemos -un yüklənməsinə, 4 x müqayisəli GPIO sancaqlarını "INPUT_PULLUP" olaraq təyin etməsinə, bir neçə saniyə gecikdirməsinə və daha sonra (ÇIXIŞ olaraq təyin olunan başqa bir GPIO pin D5 vasitəsi ilə) GPIO pin D5 vasitəsilə MOSFET -ə "YÜKSƏK" siqnalı göndərməsinə imkan verir, məntiqi olaraq LM339 -u işə salır. Yuxarıdakı kimi tel bağlamağı məsləhət görürəm, amma Wemos -un mənim kimi çökdüyünü görürsünüzsə, 1k ohm aşağı çəkmə rezistoru olan MOSFET -i daxil etməli olacaqsınız. Bunun necə ediləcəyi haqqında daha çox məlumat üçün bu təlimatın sonuna baxın.

LM339 ters çevrilməyən girişlərə siqnalizasiya zonaları

İndi siqnalizasiya idarəetmə panelindəki hər zonadan telləri LM339 müqayisəli girişlərə çəkməliyik. Siqnalizasiya sistemi hələ də söndürüldükdə, hər bir zona üçün LM339 komparatorundakı hər bir ters çevrilməyən (+) girişə bir tel verin. Məsələn, mənim sistemimdə:

  • Z1 -dən tel LM339 giriş 1+ -ə gedir
  • Z2 -dən tel LM339 giriş 2+ -ya gedir
  • Z3 -dən olan tel, LM339 giriş 3+ -ə gedir
  • Z4 -dən tel LM339 giriş 4+ -ya gedir

Bir öyüd-nəsihət edirsinizsə, LM339-un 3-cü addımdakı pin çıxışına baxın (rəng çörək lövhəsi şəkli ilə kodlanır). Bitirdikdən sonra çörək taxtanız bu addımda göstərilən şəklə bənzər görünməlidir.

Siqnal sistemini işə salın və əvvəllər hesablandığı kimi referans gərginliyinizə bərabər olduğundan əmin olmaq üçün gərginlik bölücüsündən çıxan gərginliyi ölçün.

Addım 5: Wemos D1 Mini -ni bağlayın

Wemos D1 mini -nin naqilləri

İndi bütün LM339 girişlərinə diqqət yetiririk, indi Wemos D1 mini ilə tel bağlamalıyıq. Hər LM339 çıxış pimi, kod vasitəsilə giriş çəkmə pimi olaraq təyin edəcəyimiz Wemos GPIO (ümumi təyinatlı giriş/çıxış) pininə gedir. Wemos, Vcc (giriş mənbəyi) gərginliyi olaraq maksimum 5V -ə qədər çəkir (hərçənd bunu 3,3V -ə qədər tənzimləyir) Çörək lövhəsindəki 12V rayı aşağı salmaq üçün çox yayılmış LM7805 gərginlik tənzimləyicisindən (EDIT: aşağıya baxın) istifadə edəcəyik. Wemos'u gücləndirmək üçün 5V. LM7805 məlumat cədvəli, çörək lövhəsi şəkilində göstərildiyi kimi, gücünü hamarlaşdırmaq üçün tənzimləyicinin hər tərəfinə bağlı bir kondansatörə ehtiyacımız olduğunu göstərir. Kondansatörün daha uzun ayağı pozitivdir (+), buna görə də düzgün bir şəkildə bağlandığından əmin olun.

Gərginlik tənzimləyicisi gərginliyi (sol tərəfdəki pin), toprağı (orta pin) və geriliyi (sağdakı pin) götürür, gərginlik tənzimləyiciniz LM7805-dən fərqlənirsə, çıxışı iki dəfə yoxlayın.

(EDIT: Zəngli paneldən gələn amperlərin LM7805 -in idarə edə bilməyəcəyi üçün çox yüksək olduğunu gördüm. Bu, LM7805 -in kiçik radiatorunda çox istiliyə səbəb oldu və arızaya səbəb oldu və öz növbəsində Wemosun dayanmasına səbəb oldu. LM7805 və kondansatörləri əvəzinə bir DC-DC buck çeviricisi ilə əvəz etdim və o vaxtdan bəri heç bir problem yaşamadım. Bunları bağlamaq çox asandır. Siqnaldan giriş gərginliyini bağlayın, əvvəlcə bir multimetrə qoşun və potansiometr vidasını istifadə edin. və çıxış gərginliyi ~ 5V olana qədər tənzimləyin)

GPIO giriş pinləri

Bu layihə üçün aşağıdakı pinlərdən istifadə edirik:

  • Z1 zonası => D1 pin
  • Z2 zonası => D2 pin
  • Z3 zonası => D3 pin
  • Z4 zonası => D5 pin

Çıxışları LM339 -dan Wemos lövhəsindəki əlaqədar GPIO pinlərinə, bu addımda göstərilən çörək taxtası görüntüsünə görə bağlayın. Yenə nəyin nəyə aid olduğunu görməyi asanlaşdırmaq üçün girişləri və uyğun gələn çıxışları rənglə kodladım. Arduino'daki hər bir GPIO pin, 'INPUT_PULLUP' olaraq təyin olunur, yəni normal istifadə (IDLE) altında 3.3V -a qədər çəkiləcək və LM339, PIR tetiklendiğinde onları yerə endirəcək. Kod, YÜKSƏDƏN DÜŞÜK dəyişikliyi algılar və ev avtomatlaşdırma proqramınıza simsiz olaraq mesaj göndərir. Bu işlə bağlı problemləriniz varsa, ters çevrilməyinizlə ters çevrilməməyiniz səhvdir. əksinə)

Arduino IDE

Wemos -u çörək taxtasından çıxarın, indi ona kod yükləməliyik (alternativ link burada) Bunu necə edəcəyimi ətraflı izah etməyəcəyəm, çünki Wemos və ya digər ESP8266 -ya kod yükləməklə bağlı internetdə çoxlu məqalələr var. lövhələr. USB kabelinizi Wemos lövhəsinə və kompüterinizə qoşun və Arduino IDE -ni yandırın. Kodu yükləyin və layihənizdə açın. Layihəniz üçün düzgün lövhənin quraşdırıldığını və yükləndiyini və seçilmiş düzgün COM portunu (Alətlər, Port) təmin etməlisiniz. Wemos lövhəsini eskizinizə daxil etmək üçün müvafiq kitabxanalara da ehtiyacınız olacaq (PubSubClient, ESP8266Wifi), bu məqaləyə baxın.

Aşağıdakı kod sətirlərini dəyişdirməlisiniz və simsiz bağlantınız üçün öz SSID və şifrənizlə əvəz etməlisiniz. Ayrıca, öz MQTT brokerinizə işarə etmək üçün IP ünvanını dəyişdirin.

// Wifi

const char* ssid = "your_wifi_ssid_here"; const char* parol = "your_wifi_password_here"; // MQTT Broker IPAddress MQTT_SERVER (172, 16, 223, 254)

Dəyişdirildikdən sonra kodunuzu doğrulayın və sonra USB kabel vasitəsilə Wemos lövhəsinə yükləyin.

Qeydlər:

  • Fərqli GPIO portlarından istifadə edirsinizsə, kodu tənzimləməlisiniz. Məndən daha çox və ya daha az zonadan istifadə edirsinizsə, kodu da tənzimləməlisiniz və TOTAL_ZONES = 4; uyğun olmaq üçün daimi.
  • Siqnalizasiya sistemimi işə salanda siqnalizasiya sistemi bütün bağlı GPIO -nu yerə çəkən bütün 4 x PIR -lər üçün güc testi aparacaq və bu da Wemosun zonaların tetiklendiğini düşünməsinə səbəb olacaq. Siqnalizasiya sisteminin işə düşdüyünü güman etdiyi üçün, kod eyni zamanda 4 x zonanın hamısını aktiv görsə MQTT mesajlarının göndərilməsini görməyəcək.

Alternativ yükləmə linki BURADA

Addım 6: Test və OpenHAB Konfiqurasiyası

Test və OpenHAB Konfiqurasiyası
Test və OpenHAB Konfiqurasiyası

MQTT Testi

MQTT "abunə ol / yayımla" mesajlaşma sistemidir. Bir və ya daha çox cihaz "MQTT brokeri" ilə danışa və müəyyən bir mövzuya "abunə" ola bilər. Eyni mövzuya "nəşr olunan" başqa bir cihazdan gələn bütün mesajlar, broker tərəfindən ona abunə olan bütün cihazlara göndəriləcək. Protokoldan istifadə etmək son dərəcə yüngül və sadədir və buradakı kimi sadə bir tetikleyici sistem kimi mükəmməldir. Test etmək üçün, Mosquitto serverinizdə (Mosquitto mövcud olan bir çox MQTT Broker proqramından biridir) işləyərək Wemos -dan MQTT brokerinizə gələn MQTT mesajlarını görə bilərsiniz. Bu əmr, gələn mesajlara abunə olur:

mosquitto_sub -v -t openhab/alarm/status

Hər 30 saniyədə bir Wemosdan gələn mesajları görməlisiniz və ya "1" rəqəmi ilə ("mən yaşayıram" deməkdir). Əgər daimi "0" lar görürsünüzsə (və ya cavab yoxdursa) heç bir əlaqə yoxdur. 1 nömrəsinin gəldiyini gördükdə, bu, Wemosun MQTT brokeri ilə əlaqə qurduğu deməkdir (bunun necə işlədiyinə dair daha çox məlumat üçün "MQTT Son İstək və vəsiyyət" də axtarın və ya həqiqətən yaxşı bir blog girişinə baxın).

Əlaqənin işlək olduğunu sübut etdikdən sonra, MQTT vasitəsilə bir zona vəziyyətinin bildirildiyini test edə bilərik. Aşağıdakı mövzuya abunə olun (# jokerdir)

mosquitto_sub -v -t openhab/alarm/#

Adi status mesajları, Wemosun özünün IP ünvanı daxil olmalıdır. Bir PIR -ın önündə gedin və eyni zamanda aşağıdakılara bənzər olaraq AÇIQ olduğunu, sonra bir saniyə sonra QAPALI olduğunu göstərən zona məlumatlarını görməlisiniz:

openhab/alarm/status 1

openhab/alarm/zone1 AÇIQ

openhab/alarm/zone1 QAPALI

Bu işlədikdən sonra OpenHAB -ı GUI -də gözəl bir şəkildə təmsil etmək üçün konfiqurasiya edə bilərik.

OpenHAB Konfiqurasiyası

OpenHAB -da aşağıdakı dəyişikliklər tələb olunur:

'alarm.map' dəyişdirmə faylı: (isteğe bağlı, test üçün)

CLOSED = IdleOPEN = TriggeredNULL = Naməlum- = Naməlum

'status.map' faylını dəyişdirin:

0 = Uğursuz oldu

1 = Online -= AŞAĞI! NULL = naməlum

'items' faylı:

String alarmMonitorState "Alarm Monitoru [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 "Contact alarmZone2State" Zone 2 State [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab/alarm/zone2: state: default "} String alarmZone2Trigger" First Hall PIR [%1 $ ta %1 $ tr] "Number zone3_Chart_Period" Zone 3 Chart "Contact alarmZone3State" Zone 3 Vəziyyət [MAP (alarm.map):%s] "{mqtt =" <[mqttbroker: openhab/alarm/zone3: state: default "} String alarmZone3Trigger" Yataq otağı PIR [%1 $ ta%1 $ tr] "Nömrəsi zone4_Chart_Period "Zone 4 Chart" Əlaqə həyəcanıZone4State "Zone 4 State [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openha b/alarm/zone4: state: default "} String alarmZone4Trigger" Ana Salon PIR [%1 $ ta %1 $ tr]"

'sayt xəritəsi' faylı (rrd4j qrafik daxil olmaqla):

Mətn maddəsi = alarmZone1Trigger dəyəri = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Çərçivə {Switch item = zone1_Chart_Period label = "Dövr" eşlemeleri = [0 = "Saat", 1 = "Gün", 2 = "Həftə"] Şəkil url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 0, zone1_Chart_Period = = Başlatılmamış] Şəkil url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 1] Image url = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 2]}} Mətn maddəsi = alarmZone2Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Çərçivə {Maddəni dəyişdir = zone2_Chart_Period label = "Dövr" eşlemeleri = [0 = "Saat", 1 = "Gün", 2 = "Həftə"] Şəkil url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 0, zone2_Chart_Period == Başlatılmadı] Şəkil url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 1] Image url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 2]}} Mətn elementi = alarmZone3Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone3_Chart_Period label = "Period" eşlemeleri = [0 = "Saat", 1 = "Gün", 2 = "Həftə"] Şəkil url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 0, zone3_Chart_Period == Başlatılmamış] Şəkil url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 1] Image url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Mətn item = alarmZone4Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone4_Chart_Period label = " Dövr "eşlemeleri = [0 =" Saat ", 1 =" Gün ", 2 =" Həftə "] Şəkil url =" https:// localhost: 8080/rrdchart.png "visibility = [zone4_Chart_Period == 0, zone4_Chart_Period == Başlanğıcsız] Şəkil url = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 1] Image url = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 2] }} // İSTƏYƏNLİ, lakin statusun və IP ünvanının diaqnozu üçün əlverişlidir ss Mətn maddəsi = alarmMonitorState Mətn maddəsi = alarmMonitorIPAddress

'qaydalar' faylı:

"Alarm Zone 1 vəziyyətinin dəyişməsi" qaydası

Maddə alarmZone1State AÇIQ olaraq dəyişdikdə postUpdate (alarmZone1Trigger, yeni DateTimeType ()) alarmZone1State.state = QAPALI son

"Alarm Zone 2 vəziyyətinin dəyişməsi" qaydası

Maddə alarmZone2State AÇIQ olaraq dəyişdikdə postUpdate (alarmZone2Trigger, yeni DateTimeType ()) alarmZone2State.state = QAPALI son

"Alarm Zone 3 vəziyyət dəyişikliyi" qaydası

Maddə alarmZone3State AÇIQ olaraq dəyişdikdə postUpdate (alarmZone3Trigger, yeni DateTimeType ()) alarmZone3State.state = QAPALI son

"Alarm Zone 4 vəziyyətinin dəyişməsi" qaydası

Maddə alarmZone4State AÇIQ olaraq dəyişdikdə postUpdate (alarmZone4Trigger, yeni DateTimeType ()) alarmZone4State.state = QAPALI son

Yuxarıdakı OpenHAB konfiqurasiyasını öz konfiqurasiyanıza uyğun olaraq bir az dəyişməyiniz lazım ola bilər.

PIR -lərin işə salınması ilə bağlı hər hansı bir probleminiz varsa, əvvəldən başlayın və dövrənin hər bir hissəsi üçün gərginliyi ölçün. Bundan məmnun olduqdan sonra, naqillərinizi yoxlayın, ortaq bir zəmin olduğundan əmin olun, Wemos üzərindəki mesajları serial debug konsol vasitəsilə yoxlayın, MQTT ünsiyyətini yoxlayın və çevrilmənizin, maddələrinizin və sayt xəritəsi sənədlərinizin sintaksisini yoxlayın.

Uğurlar!

Tövsiyə: