Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Apžvalga
Šis nurodymas suteiks jums galimybę namų automatikos programinėje įrangoje peržiūrėti paskutinę datą/laiką (ir pasirinktinai kartų istoriją), kada buvo suaktyvinti jūsų namų signalizacijos PIR (pasyvūs infraraudonųjų spindulių jutikliai). Šiame projekte aptarsiu, kaip naudotis su „OpenHAB“(nemokama namų automatizavimo programinė įranga, kurią aš asmeniškai naudoju), nors ji veiks su bet kuria kita namų automatikos programine įranga ar programa, palaikančia MQTT (taip pat aprašyta vėliau šiame straipsnyje). Ši instrukcija padės jums atlikti reikiamus veiksmus, kaip prijungti plokštę ir „Wemos D1 mini“(IOT plokštę, kurioje naudojama ESP8266 mikroschema), kuri prisiliečia prie pavojaus zonų jūsų signalizacijos valdymo dėžutėje, kad kai zona (kurioje yra suaktyvinamas vienas ar daugiau PIR), „Wemos“siunčia pranešimą belaidžiu ryšiu, naudodamas MQTT protokolą, į jūsų namų automatikos programinę įrangą, kuri savo ruožtu rodo paskutinę to trigerio datą/laiką. Taip pat pateikiamas „Arduino“kodas programuojant „Wemos“.
Įvadas
Aukščiau pateiktą vaizdą matau per vieną iš „iPhone“„OpenHAB“programos ekranų. Datos ir laiko tekstas yra koduotas spalvomis, kad būtų galima greičiau parodyti, kada buvo suaktyvintas PIR - jis bus rodomas raudonai (suaktyvintas per paskutinę 1 minutę), oranžinei (suaktyvintas per paskutines 5 minutes), žaliai (suaktyvintas per paskutines 30 minučių), mėlyna (suveikė per paskutinę valandą) arba kitaip, juoda. Spustelėjus datą/laiką, bus parodytas istorinis PIR aktyviklių vaizdas, kuriame 1 reiškia suaktyvintą, o 0 neveikia. Tam yra daug naudojimo būdų, pavyzdžiui, jis gali papildyti jūsų buvimo namuose sprendimą, jis gali aptikti judėjimą, kai esate toli, ir pagal „OpenHAB“taisykles, siųsti pranešimus į jūsų telefoną, galite naudoti kaip aš, norėdami pamatyti, ar mano vaikai yra atsikėlimas vidury nakties, kurį sukelia PIR, esantis už jų miegamųjų!
„OpenHAB“yra tiesiog mano naudojama namų automatikos programinė įranga, yra daug kitų - ir jei jie palaiko MQTT, galite lengvai pritaikyti šį projektą, kad jis atitiktų jūsų naudojamą programinę įrangą.
Prielaidos
Šioje instrukcijoje daroma prielaida, kad jau turite (ar nustatysite):
- Akivaizdu, kad namų signalizacija su PIR (pasyviais infraraudonųjų spindulių jutikliais) ir kad jūs turite prieigą prie signalizacijos valdymo dėžutės, kad galėtumėte prijungti reikiamus laidus
- „OpenHAB“(nemokama atviro kodo namų automatizavimo programinė įranga) veikia, nors, kaip aptarta, ji turėtų veikti su bet kokia namų automatikos programine įranga, kuri gali apimti MQTT įrišimą. Arba galite patys pakeisti kodą, kad atitiktų jūsų poreikius.
- Įdiegtas „Mosquitto MQTT“(ar panašus) brokeris ir įrišimas sukonfigūruotas naudojant „OpenHAB“(MQTT yra pranešimų prenumeratos/paskelbimo tipo protokolas, kuris yra lengvas ir puikiai tinka bendravimui tarp įrenginių)
Jei nepaleidžiate „OpenHAB“ir „MQTT“brokerio, peržiūrėkite šį puikų straipsnį „MakeUseOf“svetainėje
Ko man reikia?
Norėdami sukurti belaidį valdiklį, turėsite įsigyti šias dalis:
- „Wemos D1 mini V2“(turi integruotą ESP8266 belaidį CHIP)
- LM339 lygintuvas (tai atliks PIR tuščiosios eigos ir suveikimo patikrinimą)
- 5 V nuolatinės srovės maitinimo šaltinis „Wemos“(ARBA, nuolatinės srovės ir nuolatinės srovės konverteris. Pastaba: LM7805 įtampos reguliatorius gali neveikti šioje programoje, kaip aptarta vėliau šiame projekte)
- Du įtampos skirstytuvo rezistoriai (dydis priklausys nuo jūsų signalizacijos įtampos, aptarta vėliau projekte)
- Vienas 1K omo rezistorius, veikiantis kaip nuleidžiamas rezistorius LM339 galiai valdyti
- Vienas 2N7000 (arba panašus) MOSFET logiškai įjungti LM339 (galbūt neprivaloma, aptarta vėliau projekte)
- Tinkamo dydžio duonos lenta grandinei nustatyti ir išbandyti
- Pluoštas laidų, skirtų viskam sujungti
- Reikalingi įrankiai: šoniniai pjovikliai, vieno gyslo viela
- DC daugiametris (privalomas!)
1 žingsnis: Signalizacijos sistemos valdymo dėžutė
Pirmiausia keli įspėjimai ir atsisakymai
Asmeniškai aš turiu „Bosch“signalizacijos sistemą. Aš labai rekomenduoju jums atsisiųsti atitinkamos jūsų signalizacijos sistemos vadovą ir prieš pradedant jį susipažinti, nes jums reikės išjungti signalizacijos sistemą, kad prijungtumėte zonas. Taip pat rekomenduoju perskaityti visą šį straipsnį prieš pradedant!
Žemiau yra keletas dalykų, kuriuos turėtumėte žinoti prieš pradėdami, sąrašas - prieš tęsdami būtinai perskaitykite ir supraskite kiekvieną iš jų! Aš neprisiimu jokios atsakomybės, jei sugadinsite savo signalizacijos sistemą ir (arba) turėsite sumokėti montuotojui, kad ji sutvarkytų. Tačiau jei perskaitysite ir suprasite toliau nurodytus dalykus ir imsitės būtinų atsargumo priemonių, viskas bus gerai:
1. Mano signalizacijos sistemoje buvo atsarginė baterija dėžutėje, taip pat dangtelio vidinėje pusėje buvo tamperio jungiklis (kuris suteikia prieigą prie signalizacijos sistemos plokštės), todėl net išjungus signalą iš išorės, nuimant priekinį valdymo skydelį dėžutė suveikė aliarmą! Norėdami tai išspręsti, kol dirbau prie projekto, apėjau apsaugą nuo klastojimo, atjungdamas ir trumpai sujungdamas tamperio jungiklį (stora raudona viela, kaip parodyta aukščiau esančioje nuotraukoje)
2. Įjungus signalizacijos sistemą, maždaug po 12 valandų signalizacijos valdymo pultas pradėjo pypsėti su gedimų kodais. Vadove nustatęs gedimų kodus sužinojau, kad tai mane įspėja:
- Data/laikas nebuvo nustatytas (man reikėjo pagrindinio kodo ir raktų sekos iš vadovo, kad galėčiau iš naujo sukonfigūruoti)
- Kad atsarginė baterija nebuvo prijungta (lengva išspręsti, aš tiesiog pamiršau vėl prijungti akumuliatorių)
3. Mano signalizacijoje yra 4 x zonų prijungimo blokai (pažymėti Z1 -Z4), kad PIR galėtų prisijungti prie pagrindinės signalizacijos plokštės, tačiau - mano signalizacijos sistema iš tikrųjų gali sudaryti 8 zonas. Kiekvienas zonų prijungimo blokas iš tikrųjų gali paleisti 2 x zonas (Z1 - Z1 ir Z5, Z2 - Z2 ir Z6 ir pan.). Signalizacijos sistemoje yra įmontuota apsauga nuo klastojimo, kad kas nors negalėtų pasakyti, atidaryti signalizacijos sistemos dangtį, kaip minėta aukščiau, arba nutraukti laidus iki PIR. Jis atskiria kiekvieną zonos klastojimą per EOL (linijos pabaigos) rezistorius. Tai yra konkretaus dydžio rezistoriai, esantys „linijos gale“, kitaip tariant, PIR viduje (arba valdymo dėžės tamperio jungiklis, sirenos dėžutė ar bet kas, kas prijungta prie tos zonos). Kaip minėta, šie rezistoriai naudojami kaip „tamperis“apsauga “- techniškai, jei kas nors nutraukia laidus prie PIR, - kadangi signalizacijos sistema tikisi pamatyti tam tikrą PIR pasipriešinimą, tada, jei pasipriešinimas pasikeis, tai darys prielaidą, kad kažkas suklastojo sistemoje ir suaktyvins aliarmą.
Pavyzdžiui:
Mano žadintuvo zonoje „Z4“yra 2 laidai, vienas išeina į PIR mano koridoriuje, o kitas - prie signalizacijos valdymo dėžės tamperio jungiklio. Prieškambario PIR viduje yra 3300 omų rezistorius. Kitas laidas, einantis į valdymo dėžės tamperio jungiklį, turi 6800 omų rezistorių, prijungtą nuosekliai. Taip signalizacija (logiškai) skiria tamponus „Z4“ir „Z8“. Panašiai „Z3“zonoje yra PIR (su 3300 omų rezistoriumi) ir sirenos tamperio jungiklis (su 6800 omų rezistoriumi), kuris sudaro „Z7“. Signalizacijos montuotojas būtų iš anksto sukonfigūravęs signalizacijos sistemą, kad žinotų, koks įrenginys yra prijungtas prie kiekvienos zonos (ir pakeitė EOL rezistoriaus dydį, kad atitiktų, nes signalizacijos sistema yra užprogramuota taip, kad žinotų, kokio dydžio yra skirtingi EOL rezistoriai. jokiomis aplinkybėmis neturėtumėte keisti šių rezistorių vertės!)
Taigi, remiantis tuo, kas išdėstyta pirmiau, nes kiekviena zona taip pat gali būti prijungta prie kelių įrenginių (su skirtingomis varžos reikšmėmis) ir prisiminus formulę V = IR (įtampa = stiprintuvai x varža), tai taip pat gali reikšti, kad kiekviena zona gali turėti skirtingą įtampą. Tai veda mus į kitą žingsnį, matuojant kiekvieną zoną IDLE ir VEIKIANT įtampą …
2 žingsnis: Signalizacijos zonos įtampos matavimas
Gavę prieigą prie savo signalizacijos sistemos pagrindinės plokštės (ir aplenkę tamperio jungiklį, jei tokį turite; kaip nurodyta ankstesniame žingsnyje), vėl įjunkite signalizacijos sistemą. Dabar turime išmatuoti kiekvienos zonos įtampą, kai ji veikia tuščiąja eiga (nėra judesio prieš PIR) ir TRIGGERED (PIR aptiko judesį). Paimkite rašiklį ir popierių, kad galėtumėte užsirašyti įtampos rodmenis.
ĮSPĖJIMAS: didžioji dalis jūsų signalizacijos sistemos greičiausiai veiks 12 V nuolatinės srovės, tačiau pradinė jos maitinimo įtampa bus 220 V (arba 110 V) kintamosios srovės, o transformatorius keis maitinimą iš kintamosios į nuolatinę. SKAITYKITE vadovą ir imkitės papildomų atsargumo priemonių, užtikrindami, kad nematuojate kintamosios srovės gnybtų !!! Kaip rodo šiame puslapyje esanti mano signalizacijos sistemos ekrano kopija, galite pamatyti, kad pačioje vaizdo apačioje yra kintamosios srovės maitinimas, transformuotas į 12 V nuolatinę srovę. Mes matuojame 12 V nuolatinę srovę paryškintose raudonose dėžutėse. Niekada nelieskite kintamosios srovės maitinimo šaltinio. Būkite itin atsargūs!
PIR įtampos matavimas
Turiu 4 x PIR prijungtus prie Z1 iki Z4. Išmatuokite kiekvieną savo zoną taip.
- Pirmiausia nustatykite GND terminalą ir zonos gnybtus pavojaus skydelyje. Aš tai pabrėžiau paveikslėlyje, parodytame iš „Bosch“aliarmo vadovo.
- Paimkite multimetrą ir nustatykite 20 V nuolatinės srovės įtampą. Prijunkite juodą (COM) kabelį iš savo multimetro prie signalizacijos GND terminalo. Įdėkite raudoną (+) laidą iš savo multimetro į pirmąją zoną - mano atveju pažymėtą „Z1“. Užsirašykite įtampos rodmenis. Atlikite tuos pačius veiksmus su likusiomis zonomis. Mano įtampos matavimai yra tokie:
- Z1 = 6,65 V.
- Z2 = 6,65 V.
- Z3 = 7,92 V.
- Z4 = 7,92 V.
Kaip minėta pirmiau, mano pirmosios dvi zonos taip pat turi tik PIR. Pastarosios dvi zonos turi PIR ir apsaugą nuo klastojimo (Z3 valdymo dėžės tamperis, Z4 sirenos tamperis) Atkreipkite dėmesį į įtampos skirtumus.
3. Šiam kitam žingsniui greičiausiai jums reikės 2 žmonių. Taip pat turėsite žinoti, kuris PIR yra kurioje zonoje. Grįžkite atgal ir perskaitykite įtampą pirmoje zonoje. Dabar pakvieskite ką nors savo namuose vaikščioti priešais PIR, įtampa turėtų nukristi. Atkreipkite dėmesį į naują įtampos rodmenį. Mano atveju, kai įjungiami PIR, įtampa skaitoma taip:
- Z1 = 0V
- Z2 = 0V
- Z3 = 4,30 V.
- Z4 = 4,30 V.
Kaip minėta aukščiau, matau, kad suaktyvinus 1 ir 2 zonas, įtampa nukrenta nuo 6,65 V iki 0 V. Tačiau kai suaktyvinamos 3 ir 4 zonos, įtampa sumažėja nuo 7,92 V iki 4,30 V.
12V maitinimo šaltinis
Projektui maitinti naudosime 12 V nuolatinės srovės terminalą iš signalizacijos valdymo dėžutės. Turime išmatuoti įtampą iš 12 V nuolatinės srovės maitinimo signalo. Nors jame jau nurodyta 12V, turime žinoti tikslesnį rodmenį. Mano atveju jis iš tikrųjų rodo 13,15 V. Užsirašykite tai, jums reikės šios vertės kitame žingsnyje.
Kodėl mes matuojame įtampą?
Priežastis, kodėl mums reikia išmatuoti kiekvieno PIR įtampą, yra dėl to, kad mes sukursime grandinę. Šiame projekte kaip pagrindinį elektros komponentą naudosime LM339 keturių diferencialų lyginamąjį lustą (arba keturių op-amp palyginamąjį elementą). LM339 turi 4 nepriklausomus įtampos palyginiklius (4 kanalus), kur kiekvienas kanalas turi 2 x įėjimo įtampas (viena apverčianti (-) ir viena neinvertuojanti (+) įvestis, žr. Schemą). neinvertuojančią įtampą, tada su ja susijusi išvestis bus traukiama į žemę. Panašiai, jei neinvertuojanti įėjimo įtampa nukrenta žemiau nei invertuojanti įvestis, išėjimas traukiamas iki Vcc. Patogiai, mano namuose yra 4 x signalizacijos PIR/zonos - todėl kiekviena zona bus prijungta prie kiekvieno lyginamojo kanalo. Jei turite daugiau nei 4 x PIR, jums reikės lygintuvo su daugiau kanalų arba kito LM339!
Pastaba: LM339 sunaudoja energiją nano amperuose, todėl neturės įtakos esamos signalizacijos sistemos atsparumui EOL.
Jei tai kelia painiavą, bet kokiu atveju tęskite kitą žingsnį, kai jis bus prijungtas, jis taps prasmingesnis!
3 žingsnis: sukurkite įtampos skirstytuvą
Kas yra įtampos daliklis?
Įtampos daliklis yra grandinė su 2 x rezistoriais (ar daugiau) nuosekliai. Mes tiekiame įtampą (Vin) į pirmąjį rezistorių (R1) Kita R1 dalis jungiasi prie pirmosios antrojo rezistoriaus kojos (R2), o kitas R2 galas jungiasi prie GND. Tada mes paimame išėjimo įtampą (Vout) iš jungties tarp R1 ir R2. Ši įtampa taps mūsų atskaitos įtampa LM339. Daugiau informacijos apie tai, kaip veikia įtampos skirstytuvai, rasite „Adohms“„YouTube“vaizdo įraše
(Pastaba: rezistoriai neturi poliškumo, todėl juos galima prijungti bet kokiu būdu)
Mūsų atskaitos įtampos apskaičiavimas
Darant prielaidą, kad įtampa sumažėja, kai suaktyvinamas jūsų PIR (taip turėtų būti daugumos pavojaus signalų atveju), tai, ką mes bandome pasiekti, yra gauti įtampos rodmenį, kuris yra beveik pusiaukelėje tarp žemiausios tuščiosios eigos įtampos ir didžiausios suveikusios įtampos, tai taps mūsų atskaitos įtampa.
Imdamas savo pavojaus signalą kaip pavyzdį …
Zonos tuščiosios eigos įtampos buvo Z1 = 6.65V, Z2 = 6.65V, Z3 = 7.92V, Z4 = 7.92V. Todėl mažiausia tuščiosios eigos įtampa yra 6,65 V.
Zonos suaktyvintos įtampos buvo: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. Taigi aukščiausia įtampa yra 4,30 V.
Taigi mes turime pasirinkti skaičių nuo 4,30 V iki 6,65 V (nebūtinai turi būti tikslus, tik apytiksliai). Mano atveju mano atskaitos įtampa turi būti apie 5,46 V. Pastaba: Jei mažiausia tuščiosios eigos ir didžiausia suveikusi įtampa yra labai arti vienas kito dėl kelių zonų, sukeliančių skirtingos įtampos diapazoną, gali tekti sukurti 2 ar daugiau įtampos skirstytuvų.
Įtampos daliklio rezistorių reikšmių apskaičiavimas
Dabar turime etaloninę įtampą, turime apskaičiuoti, kokio dydžio rezistorių mums reikia, kad sukurtume įtampos daliklį, kuris suteiks mūsų etaloninę įtampą. Mes naudosime 12 V nuolatinės įtampos šaltinį (Vs) iš aliarmo. Tačiau, kaip ir ankstesniame žingsnyje, kai matavome 12 V nuolatinės srovės tiekimą, iš tikrųjų gavome 13,15 V. Turime apskaičiuoti įtampos daliklį, naudodami šią vertę kaip šaltinį.
Apskaičiuokite Vout pagal omų įstatymą …
Vout = Vs x R2 / (R1 + R2)
… arba naudokitės internetine įtampos daliklio skaičiuokle:-)
Turėsite eksperimentuoti su rezistoriaus vertėmis, kol pasieksite norimą išvestį. Mano atveju tai pavyko su R1 = 6,8 k omu ir R2 = 4,7 K omu, apskaičiuota ilga forma taip:
Vout = Vs x R2 / (R1 + R2)
Vout = 13,15 x 4700 / (6800 + 4700)
Vout = 61, 805/11, 500
Vout = 5,37 V
4 žingsnis: prijunkite LM339
Įtampos skirstytuvas į apverstus įėjimus LM339
Kaip aptarta anksčiau dėl lygintuvo LM339, reikės 2 x įėjimų. Viena bus įtampa iš kiekvieno PIR į kiekvieno kanalo neinvertuojantį (+) gnybtą, kita-mūsų atskaitos įtampa į mūsų invertuojantį (-) gnybtą. Etaloninė įtampa turi maitinti visus 4 lyginamojo invertavimo įėjimus. Prieš atlikdami šiuos veiksmus, išjunkite signalizacijos sistemą.
- Išjunkite laidą nuo signalizacijos sistemos 12 V nuolatinės srovės bloko iki duonos lentos + bėgelio *
- Praveskite laidą nuo signalizacijos sistemos GND bloko iki duonos lentos bėgio **
- Įdėkite LM339 lygintuvą į duonos lentos vidurį (įpjova rodo arčiausiai 1 kaiščio)
- Įdiekite 2 x rezistorius, kad sukurtumėte įtampos skirstytuvo grandinę ir laidą, skirtą padalinti įtampą
- Vykdykite laidus iš „įtampos padalinto“Vout į kiekvieną LM339 invertavimo gnybtą
* PATARIMAS: jei įmanoma, naudokite aligatoriaus spaustuką, nes tai palengvina jūsų projekto įjungimo/išjungimo energiją ** SVARBU! MOSFET gali prireikti, jei maitinsite „Wemos“iš aliarmo skydelio! Mano atveju, visi „LM339“, „Wemos“ir „Alarm“gauna maitinimą iš to paties šaltinio (ty: pati signalizacijos sistema). Tačiau pagal numatytuosius nustatymus „Wemos“GPIO kaiščiai yra apibrėžiami kaip „INPUT“kaiščiai - tai reiškia, kad jie ima bet kokią įtampą ir yra pasikliauti tuo šaltiniu, kad užtikrintų teisingą įtampos lygį (min/max lygiai), kad „Wemos“laimėtų “. t sudužti ar sudegti. Mano atveju signalizacijos sistema gauna galią ir pradeda labai greitai paleisti - iš tikrųjų taip greitai, kad tai daro prieš „Wemos“paleidimą ir paskelbia GPIO kaiščius kaip „INPUT_PULLUP“(įtampa viduje pakelta) lustas). Tai nereiškia, kad įtampos skirtumai sukels „Wemos“avariją, kai visa sistema gaus maitinimą. Vienintelis būdas tai padaryti būtų rankiniu būdu išjungti ir įjungti „Wemos“. Norėdami tai išspręsti, pridedamas MOSFET ir veikia kaip „loginis jungiklis“LM339 įjungimui. Tai leidžia „Wemos“paleisti, nustatyti 4 x lyginamojo GPIO kaiščius kaip „INPUT_PULLUP“, atidėti kelias sekundes ir tada (per kitą GPIO kaištį D5, apibrėžtą kaip OUTPUT) nusiųsti „AUKŠTĄ“signalą per GPIO kaištį D5 į MOSFET, kuris logiškai įjungia LM339. Aš rekomenduočiau prijungti laidą, kaip aprašyta aukščiau, bet jei pastebėsite, kad „Wemos“sugenda taip, kaip aš, tada turėsite įtraukti MOSFET su 1k omo ištraukiamuoju rezistoriumi. Daugiau informacijos apie tai, kaip tai padaryti, rasite šios instrukcijos pabaigoje.
Pavojaus zonos į LM339 neinvertuojančius įėjimus
Dabar turime paleisti laidus iš kiekvienos aliarmo valdymo pulto zonos į LM339 lyginamojo įvestį. Kai signalizacija vis dar išjungta, kiekvienai zonai padėkite laidą į kiekvieną nekeičiamą (+) įvestį LM339 lyginamojoje. Pavyzdžiui, mano sistemoje:
- Laidas nuo Z1 eina į LM339 1+ įvestį
- Laidas nuo Z2 eina į 2+ LM339 įvestį
- Laidas nuo Z3 eina į 3+ LM339 įvestį
- Laidas iš Z4 eina į 4+ LM339 įvestį
Jei primenate (žr. Spalvų lentelę su duonos lentos vaizdu), žr. LM339 kaištį, atliktą 3 veiksme. Kai tai padarysite, jūsų duonos lenta turėtų atrodyti panaši į paveikslėlį, parodytą šiame veiksme.
Įjunkite signalizacijos sistemą ir išmatuokite iš įtampos skirstytuvo išeinančią įtampą, kad įsitikintumėte, jog ji yra lygi jūsų atskaitos įtampai, kaip buvo apskaičiuota anksčiau.
5 žingsnis: „Wemos D1 Mini“prijungimas
„Wemos D1 mini“prijungimas
Dabar mes pasirūpinome visais LM339 įėjimais, dabar turime prijungti „Wemos D1 mini“. Kiekvienas LM339 išvesties kaištis patenka į „Wemos GPIO“(bendrosios paskirties įvesties/išvesties) kaištį, kurį kodu nurodysime kaip įvesties kaištį. „Wemos“Vcc (įvesties šaltinis) įtampa yra maksimali iki 5 V. 5 V maitinti „Wemos“. LM7805 duomenų lape nurodoma, kad mums reikia kondensatoriaus, prijungto kiekvienoje reguliatoriaus pusėje, kad būtų išlyginta galia, kaip parodyta duonos lentos paveikslėlyje. Ilgesnė kondensatoriaus kojelė yra teigiama (+), todėl įsitikinkite, kad ji prijungta tinkamu būdu.
Įtampos reguliatorius ima įtampą (kairysis kaištis), įžeminimą (vidurinis kaištis) ir įtampą (dešinės pusės kaištis) Dar kartą patikrinkite kištuką, jei jūsų įtampos reguliatorius skiriasi nuo LM7805.
(Redaguoti: Radau, kad stiprintuvai, gaunami iš signalizacijos skydelio, buvo per dideli, kad būtų galima valdyti LM7805. Tai sukėlė daug šilumos mažame LM7805 radiatoriuje ir sukėlė gedimą, o savo ruožtu „Wemos“sustojo veikia. Aš pakeičiau LM7805 ir kondensatorius DC-DC keitiklio keitikliu ir nuo to laiko jokių problemų neturėjau. Juos labai lengva prijungti. Tiesiog prijunkite įvesties įtampą iš aliarmo, pirmiausia prijunkite prie multimetro ir naudokite potenciometro varžtą ir sureguliuokite, kol išėjimo įtampa bus ~ 5V)
GPIO įvesties kaiščiai
Šiam projektui naudojame šiuos kaiščius:
- Z1 zona => kaištis D1
- Z2 zona => kaištis D2
- Z3 zona => kaištis D3
- Z4 zona => kaištis D5
Prijunkite išėjimus iš LM339 į susijusius GPIO kaiščius „Wemos“plokštėje, kaip parodyta šiame žingsnyje. Vėlgi, turiu įvestas spalvas ir atitinkančius išėjimus, kad būtų lengviau pamatyti, kas į ką nurodo. Kiekvienas „Arduino“GPIO kaištis yra apibrėžiamas kaip „INPUT_PULLUP“, tai reiškia, kad įprastai naudojant (IDLE) jie bus ištraukti iki 3,3 V. Kodas nustato pokyčius nuo HIGH to LOW ir siunčia pranešimą belaidžiu būdu į jūsų namų automatikos programinę įrangą. Jei kyla problemų dėl šio veikimo, gali būti, kad jūsų apverstos ir neinvertuojančios įvestys yra neteisingos (jei suaktyvinus jūsų PIR įtampa padidėja, kaip atsitinka daugeliui pomėgių PIR, tada norėsite prijungti atvirkščiai)
„Arduino IDE“
Pašalinkite „Wemos“iš duonos lentos, dabar turime į ją įkelti kodą (alternatyvi nuoroda čia). Aš nesileisiu į detales, kaip tai padaryti, nes internete yra daug straipsnių apie kodo įkėlimą į „Wemos“ar kitą ESP8266 tipo lentos. Prijunkite USB kabelį prie „Wemos“plokštės ir prie kompiuterio ir įjunkite „Arduino IDE“. Atsisiųskite kodą ir atidarykite jį savo projekte. Turite užtikrinti, kad jūsų projektui būtų įdiegta ir įkelta tinkama plokštė, taip pat pasirinktas teisingas COM prievadas (Įrankiai, Prievadas). Jums taip pat reikės įdiegti atitinkamas bibliotekas („PubSubClient“, ESP8266Wifi) Jei norite, kad „Wemos“lenta būtų įtraukta į eskizą, žr. Šį straipsnį.
Turėsite pakeisti šias kodo eilutes ir pakeisti savo belaidžio ryšio SSID ir slaptažodžiu. Taip pat pakeiskite IP adresą, kad nurodytumėte savo MQTT brokerį.
// Bevielis internetas
const char* ssid = "tavo_wifi_sid_čia"; const char* password = "tavo_wifi_paslaugos_čia"; // „MQTT Broker“IPAddress MQTT_SERVER (172, 16, 223, 254)
Pakeitę, patikrinkite kodą, tada per USB kabelį įkelkite į „Wemos“plokštę.
Pastabos:
- Jei naudojate skirtingus GPIO prievadus, turėsite pakoreguoti kodą. Jei naudojate daugiau ar mažiau zonų nei aš, taip pat turėsite pakoreguoti kodą ir TOTAL_ZONES = 4; pastoviai tinka.
- Įjungus mano signalizacijos sistemą, signalizacijos sistema atliktų visų 4 x PIR maitinimo testą, kuris ištraukė visus prijungtus GPIO į žemę, todėl „Wemos“manė, kad zonos buvo suaktyvintos. Kodas ignoruos MQTT pranešimų siuntimą, jei matys, kad visos 4 x zonos yra aktyvios vienu metu, nes manoma, kad signalizacija įsijungia.
Alternatyvi atsisiuntimo nuoroda į kodą ČIA
6 veiksmas: bandymas ir „OpenHAB“konfigūracija
MQTT testavimas
MQTT yra „prenumeruoti / publikuoti“pranešimų sistema. Vienas ar daugiau įrenginių gali kalbėtis su „MQTT brokeriu“ir „užsiprenumeruoti“tam tikrą temą. Bet kokius gaunamus pranešimus iš bet kurio kito įrenginio, kurie yra „paskelbti“ta pačia tema, brokeris išsiųs į visus jį užsiprenumeravusius įrenginius. Tai labai lengvas ir paprastas naudoti protokolas ir puikiai tinka kaip paprasta paleidimo sistema, tokia kaip čia. Norėdami patikrinti, galite peržiūrėti gaunamus MQTT pranešimus iš „Wemos“į savo MQTT tarpininką, vykdydami šią komandą „Mosquitto“serveryje („Mosquitto“yra viena iš daugelio „MQTT Broker“programinės įrangos). Ši komanda prenumeruoja gaunamus nuolatinius pranešimus:
mosquitto_sub -v -t openhab/alarm/status
Turėtumėte matyti gaunamus pranešimus, gaunamus iš „Wemos“maždaug kas 30 sekundžių su skaičiumi „1“(tai reiškia „aš gyvas“). Kai pamatysite ateinantį skaičių 1, tai reiškia, kad „Wemos“bendrauja su MQTT brokeriu (ieškokite „MQTT Paskutinė valia ir testamentas“, jei norite gauti daugiau informacijos apie tai, kaip tai veikia, arba peržiūrėkite šį tikrai gerą tinklaraščio įrašą)
Kai įrodysite, kad ryšys veikia, galime patikrinti, ar apie zonos būseną pranešama per MQTT. Prenumeruokite šią temą (# yra pakaitos simbolis)
mosquitto_sub -v -t openhab/alarm/#
Turėtų ateiti įprasti būsenos pranešimai, kaip ir paties „Wemos“IP adresas. Eikite priešais PIR ir taip pat turėtumėte pamatyti informaciją apie zoną, rodančią, kad ji ATIDARYTA, o po maždaug sekundės, kad ji UŽDARYTA, panašiai kaip tai:
„openhab“/aliarmas/būsena 1
openhab/signalizacija/zona1 ATIDARYTA
openhab/alarm/zone1 UŽDARYTA
Kai tai veiks, galime sukonfigūruoti „OpenHAB“, kad tai būtų gražiai pavaizduota GUI.
„OpenHAB“konfigūracija
„OpenHAB“reikia atlikti šiuos pakeitimus:
„alarm.map“transformavimo failas: (neprivaloma, bandymui)
UŽDARYTA = IdleOPEN = SuveikęsNULL = Nežinomas- = Nežinomas
„status.map“transformavimo failas:
0 = nepavyko
1 = Prisijungęs -= ŽEMYN! NULL = nežinoma
elementų failas:
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 "1 zonos diagrama" Susisiekite su alarmZone1State "1 zonos būsena [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openhab/alarm/zone1: state: numatytasis "} String alarmZone1Trigger" Lounge PIR [%1 $ ta%1 $ tr] "Number zone2_Chart_Period" 2 zonos diagrama "Kontaktai alarmZone2State" 2 zonos būsena [MAP (alarm.map):%] 3 būsena [MAP (alarm.map):%s] "{mqtt =" <[mqttbroker: openhab/alarm/zone3: state: default "} String alarmZone3Trigger" Miegamojo PIR [%1 $ ta%1 $ tr] "Skaičius zone4_Chart_Period "4 zonos diagrama" Kontaktai alarmZone4State "4 zonos būsena [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openha b/alarm/zone4: state: numatytasis "} String alarmZone4Trigger" Pagrindinė salė PIR [%1 $ ta %1 $ tr]"
„svetainės schemos“failas (įskaitant grafiką „rrd4j“):
Teksto elementas = alarmZone1Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone1_Chart_Period label = „Period“žemėlapiai = [0 = "Valanda", 1 = "Diena", 2 = "Savaitė"] Vaizdo URL = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 0, zone1_Chart_Period = = Neinicializuotas] Vaizdo URL = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 1] Vaizdo URL = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 2]}} Teksto elementas = alarmZone2Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone2_Chart_Period label = "Period" žemėlapiai = [0 = "Valanda", 1 = "Diena", 2 = "Savaitė"] Vaizdo URL = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 0, zone2_Chart_Period == Neinicijuotas] Vaizdo URL = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 1] Vaizdo URL = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 2]}} Teksto elementas = alarmZone3Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone3_Chart_Period label = "Period" susiejimai = [0 = "Valanda", 1 = "Diena", 2 = "Savaitė"] Vaizdo URL = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 0, zone3_Chart_Period == Neinicijuotas] Vaizdas url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 1] Vaizdo url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Tekstas item = alarmZone4Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Frame {Switch item = zone4_Chart_Period label = " Periodas "žemėlapiai = [0 =" Valanda ", 1 =" Diena ", 2 =" Savaitė "] Vaizdo URL =" https:// localhost: 8080/rrdchart.png "visibility = [zone4_Chart_Period == 0, zone4_Chart_Period == Neinicializuotas] Vaizdo URL = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 1] Vaizdo URL = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 2] }} // PASIRENKAMA, bet patogu diagnozuoti būseną ir IP adresus ss Teksto elementas = alarmMonitorState Teksto elementas = alarmMonitorIPAddress
„taisyklių“failas:
taisyklė „1 pavojaus zonos būsenos pakeitimas“
kai elementas alarmZone1State pakeistas į OPEN, tada postUpdate (alarmZone1Trigger, new DateTimeType ()) alarmZone1State.state = UŽDARYTA pabaiga
taisyklė „2 pavojaus zonos būsenos pakeitimas“
kai elementas alarmZone2State pakeistas į OPEN, tada postUpdate (alarmZone2Trigger, new DateTimeType ()) alarmZone2State.state = UŽDARYTA pabaiga
taisyklė „3 pavojaus zonos būsenos pakeitimas“
kai elementas alarmZone3State pakeistas į OPEN, tada postUpdate (alarmZone3Trigger, new DateTimeType ()) alarmZone3State.state = UŽDARYTA pabaiga
taisyklė „4 pavojaus zonos būsenos pakeitimas“
kai elementas alarmZone4State pakeistas į OPEN, tada postUpdate (alarmZone4Trigger, new DateTimeType ()) alarmZone4State.state = UŽDARYTA pabaiga
Jums gali tekti šiek tiek pakeisti aukščiau pateiktą „OpenHAB“konfigūraciją, kad ji atitiktų jūsų sąranką.
Jei kyla problemų suaktyvinant PIR, pradėkite nuo pradžių ir išmatuokite kiekvienos grandinės dalies įtampą. Kai būsite patenkinti tuo, patikrinkite laidus, įsitikinkite, kad yra bendras pagrindas, patikrinkite pranešimus „Wemos“per serijinę derinimo konsolę, patikrinkite MQTT ryšį ir patikrinkite savo transformacijos, elementų ir svetainės schemos failų sintaksę.
Sėkmės!