Sisällysluettelo:

Hälytys PIR WiFi -yhteydelle (ja kotiautomaatiolle): 7 vaihetta (kuvilla)
Hälytys PIR WiFi -yhteydelle (ja kotiautomaatiolle): 7 vaihetta (kuvilla)

Video: Hälytys PIR WiFi -yhteydelle (ja kotiautomaatiolle): 7 vaihetta (kuvilla)

Video: Hälytys PIR WiFi -yhteydelle (ja kotiautomaatiolle): 7 vaihetta (kuvilla)
Video: Anti pet PIR Tuya wifi smart motion sensor tuya connected to infrared anti theft security alarm 2024, Heinäkuu
Anonim
Image
Image
Hälytys PIR WiFi -yhteydelle (ja kotiautomaatiolle)
Hälytys PIR WiFi -yhteydelle (ja kotiautomaatiolle)

Yleiskatsaus

Tämä ohje antaa sinulle mahdollisuuden tarkastella kotiautomaatio -ohjelmistossasi viimeistä päivämäärää/aikaa (ja valinnaisesti aikahistoriaa), jolloin House Alarm -laitteen PIR (passiiviset infrapuna -anturit) laukaistiin. Tässä projektissa keskustelen siitä, miten sitä käytetään OpenHAB: n (ilmainen kotiautomaatio -ohjelmisto, jota itse käytän) kanssa, vaikka se toimii minkä tahansa muun kodin automaatio -ohjelmiston tai sovelluksen kanssa, joka tukee MQTT: tä (kuvattu myös myöhemmin tässä artikkelissa). Tämä ohje antaa sinulle tarvittavat vaiheet piirilevyn ja Wemos D1 minin (IOT -levy, joka käyttää ESP8266 -sirua) kytkemiseen, joka koskettaa hälytyskentän hälytysalueita niin, että kun vyöhyke (joka sisältää yksi tai useampia PIR -tunnisteita), Wemos lähettää viestin langattomasti MQTT -protokollaa käyttäen kotiautomaatio -ohjelmistoosi, joka puolestaan näyttää liipaisimen viimeisen päivämäärän/ajan. Mukana on myös Arduino -koodi Wemosin ohjelmoimiseksi.

Johdanto

Yllä oleva kuva näkyy yhdellä iPhoneni OpenHAB -sovelluksen näytöllä. Päivämäärän ja kellonajan teksti on värikoodattu, jotta saadaan nopeampi esitys siitä, milloin PIR laukaistiin - se näyttää punaista (aktivoitu viimeisen minuutin aikana), oranssia (aktivoitu viimeisten 5 minuutin aikana), vihreää (aktivoitu viimeisten 30 minuutin aikana), sininen (aktivoitu viimeisen tunnin aikana) tai muuten musta. Napsauttamalla päivämäärää/aikaa, näyttöön tulee historiallinen näkymä PIR -laukaisimista, joissa 1 tarkoittaa laukaisua ja 0 on käyttämättömänä. Tälle on monia käyttötarkoituksia, esimerkiksi se voi täydentää kotisi läsnäoloratkaisua, se voi havaita liikkeen, jos olet poissa ja OpenHAB -sääntöjen kautta, lähettää ilmoituksia puhelimeesi, voit käyttää sitä kuten minäkin nähdäkseni, ovatko lapseni herääminen keskellä yötä, laukaisee PIR, joka asuu heidän makuuhuoneensa ulkopuolella!

OpenHAB on yksinkertaisesti käyttämäni kodin automaatio -ohjelmisto, monia muita - ja jos ne tukevat MQTT: tä, voit helposti muokata tätä projektia käyttämääsi ohjelmistoon sopivaksi.

Oletukset

Tässä ohjeessa oletetaan, että sinulla on jo (tai aiot asentaa):

  • Ilmeisesti kotihälytysjärjestelmä, jossa on PIR (passiiviset infrapuna -anturit) ja että sinulla on pääsy hälytyksen ohjauslaatikkoon tarvittavan johdotuksen liittämiseksi
  • OpenHAB (ilmainen avoimen lähdekoodin kotiautomaatio -ohjelmisto) on käynnissä, vaikka sen pitäisi toimia minkä tahansa kodin automaatio -ohjelmiston kanssa, joka voi sisältää MQTT -sidonnan. Vaihtoehtoisesti voit muuttaa koodia itse tarpeidesi mukaan.
  • Mosquitto MQTT (tai vastaava) välittäjä asennettu ja sidonta määritetty OpenHAB: llä (MQTT on viestien tilaus-/julkaisutyyppiprotokolla, joka on kevyt ja sopii erinomaisesti laitteiden väliseen viestintään)

Jos et käytä OpenHABia ja MQTT -välittäjää, katso tämä erinomainen artikkeli MakeUseOf -verkkosivustolla

Mitä minä tarvitsen?

Langattoman ohjaimen luomiseksi sinun on hankittava seuraavat osat:

  • Wemos D1 mini V2 (sisäänrakennettu langaton ESP8266 CHIP)
  • LM339 -vertailija (tämä tarkistaa PIR -joutokäynnin vs laukaisun)
  • 5 V: n tasavirtalähde Wemosille (TAI, DC-DC-buck-muunnin. Huomautus: LM7805-jännitesäädin ei ehkä toimi tässä sovelluksessa, kuten myöhemmin tässä projektissa käsitellään)
  • Kaksi vastusta jännitteenjakajalle (koko riippuu hälytysjännitteistäsi, keskustellaan myöhemmin projektissa)
  • Yksi 1K ohmin vastus toimii alasvetovastusna LM339 -tehon ohjaamiseen
  • Yksi 2N7000 (tai vastaava) MOSFET LM339: n loogiseen kytkemiseen (mahdollisesti valinnainen, keskustellaan myöhemmin projektissa)
  • Sopivan kokoinen leipälauta piirin asennusta ja testausta varten
  • Joukko leipälautajohtoja kaiken yhdistämiseksi
  • Tarvittavat työkalut: sivuleikkurit, yksisäikeinen lanka
  • DC-monimittari (pakollinen!)

Vaihe 1: Hälytysjärjestelmän ohjauslaatikko

Hälytysjärjestelmän ohjauslaatikko
Hälytysjärjestelmän ohjauslaatikko

Ensin varoituksia ja vastuuvapauslausekkeita

Henkilökohtaisesti minulla on Bosch -hälytysjärjestelmä. Suosittelen, että lataat hälytysjärjestelmääsi vastaavan käyttöoppaan ja perehdyt siihen ennen kuin aloitat, koska joudut sammuttamaan hälytysjärjestelmän silmukoiden kytkemiseksi. Suosittelen myös, että luet tämän artikkelin kokonaan ennen kuin aloitat!

Alla on luettelo muutamista asioista, jotka sinun pitäisi tietää ennen kuin aloitat - muista lukea ja ymmärtää jokainen niistä ennen kuin jatkat! En ole vastuussa, jos rikkoo hälytysjärjestelmän ja/tai joudut maksamaan asentajallesi sen korjaamisesta. Jos kuitenkin luet ja ymmärrät seuraavan ja ryhdyt tarvittaviin varotoimiin, sinun pitäisi olla kunnossa:

1. Hälytysjärjestelmässäni oli vara -akku laatikon sisällä ja myös kannen sisäpuolella oleva peukalointikytkin (joka mahdollistaa pääsyn hälytysjärjestelmään), joten hälytys sammutetaan jopa ulkoisesti, kun irrotat ohjaimen etupaneelin laatikko, se laukaisi hälytyksen! Jotta voisin kiertää tämän, kun työskentelin projektissa, ohitin peukalosuojauksen irrottamalla pistokkeen pistorasiasta ja oikosulkemalla peukalokytkimen (paksu punainen lanka, kuten yllä olevassa kuvassa)

2. Kun hälytysjärjestelmä käynnistetään uudelleen, noin 12 tunnin kuluttua hälytyskeskus alkoi piipata vikakoodeilla. Kun olin määrittänyt vikakoodit käsikirjan kautta, huomasin, että se varoitti minua seuraavista:

  • Päivämäärää/aikaa ei ole asetettu (tarvitsin pääkäyttäjän koodin ja avainsarjan käsikirjasta uudelleenkonfiguroimiseksi)
  • Että vara -akkua ei ollut kytketty (helppo korjata, unohdin vain kytkeä akun takaisin)

3. Hälytyksessäni on 4 x vyöhykeliitäntälohkoa (merkitty Z1 -Z4) PIR -laitteiden kytkemiseksi päähälytyskortille, mutta hälytysjärjestelmäni pystyy itse asiassa 8 vyöhykkeeseen. Jokainen vyöhykeliitäntälohko voi itse asiassa ajaa 2 x vyöhykettä (Z1 ei Z1 ja Z5, Z2 tekee Z2 ja Z6 ja niin edelleen). Hälytysjärjestelmässä on sisäänrakennettu peukalosuojaus, joka estää jotkut sanomasta, avaamasta hälytysjärjestelmän kannen edellä mainitulla tavalla tai katkaisemalla johdot PIR: ään. Se erottaa jokaisen vyöhykkeen peukaloinnin EOL (rivin loppu) -vastuksien kautta. Nämä ovat erityisen kokoisia vastuksia, jotka sijaitsevat "linjan päässä" - toisin sanoen PIR: n (tai ohjauskotelon peukalointikytkimen tai sireenilaatikon tai mitä tahansa siihen vyöhykkeeseen kytkettyä) sisällä. Kuten mainittiin, näitä vastuksia käytetään suojaus ' - teknisesti, jos joku katkaisee PIR -kaapelit - koska hälytysjärjestelmä odottaa tiettyä vastusta kyseiseltä PIR: ltä, niin jos vastus muuttuu, oletetaan, että joku on murtautunut järjestelmään ja laukaisee hälytyksen.

Esimerkiksi:

Hälytyksessäni vyöhykkeellä "Z4" on 2 johtoa, yksi menee käytävän PIR -laitteeseen ja toinen hälytyksen ohjauslaatikon peukalointikytkimeen. Käytävän PIR: n sisällä on 3300 ohmin vastus. Toisessa johtimessa, joka kulkee ohjauslaatikon peukalointikytkimeen, on sarjaan kytketty 6800 ohmin vastus. Näin hälytysjärjestelmä (loogisesti) erottaa "Z4" ja "Z8" peukaloinnit. Samoin vyöhykkeellä "Z3" on PIR (jossa on 3300 ohmin vastus) ja myös sireenin peukalointikytkin (jossa on 6800 ohmin vastus), joka muodostaa "Z7". Hälytyksenasentaja olisi esikonfiguroinut hälytysjärjestelmän, jotta se tietää, mikä laite on kytketty kuhunkin vyöhykkeeseen (ja muuttanut EOL-vastuksen kokoa sopivaksi, koska hälytysjärjestelmä on ohjelmoitu tietämään, minkä kokoiset eri EOL-vastukset ovat. Älä missään tapauksessa muuta näiden vastusten arvoa!)

Joten edellä olevan perusteella, koska jokaiseen vyöhykkeeseen voi olla liitetty myös useita laitteita (eri vastusarvoilla) ja muistaa kaava V = IR (jännite = ampeerit x vastus), mikä voi myös tarkoittaa, että jokaisella vyöhykkeellä voi olla eri jännitteet. Mikä johtaa meidät seuraavaan vaiheeseen, joka mittaa jokaisen vyöhykkeen IDLE vs. LÄHTÖJÄRJESTELMÄ …

Vaihe 2: Hälytysalueen jännitteen mittaaminen

Hälytysalueen jännitteen mittaaminen
Hälytysalueen jännitteen mittaaminen
Hälytysalueen jännitteen mittaaminen
Hälytysalueen jännitteen mittaaminen

Kun olet saanut pääsyn hälytysjärjestelmän emolevyyn (ja ohittanut peukalointikytkimen, jos sinulla on sellainen; edellisen vaiheen mukaisesti), käynnistä hälytysjärjestelmä uudelleen. Meidän on nyt mitattava kunkin vyöhykkeen jännite, kun sen tyhjäkäynti (ei liikettä PIR: n edessä) vs TRIGGERED (PIR on havainnut liikkeen) Tartu kynään ja paperiin, jotta voit kirjoittaa jännitteen lukemat.

VAROITUS: Suurin osa hälytysjärjestelmästäsi toimii todennäköisesti 12 V DC: llä, mutta sen alkusyöttö syötetään 220 V (tai 110 V) vaihtovirtaan ja muuntaja muuntaa tehon AC: sta DC: ksi. LUE ohjekirja ja ole erityisen varovainen, ettet mittaa AC -liittimiä !!! Tämän sivun hälytysjärjestelmäni kuvakaappauksen mukaan näet, että kuvan alareuna on verkkovirta, muunnettuna 12 V DC: ksi. Mittaamme 12 V DC: n punaisissa laatikoissa. Älä koskaan koske verkkovirtaan. Ole äärimmäisen varovainen!

PIR -jännitteen mittaaminen

Minulla on 4 x PIR -yhteyttä Z1: stä Z4: ään. Mittaa jokainen vyöhykkeesi seuraavasti.

  1. Tunnista ensin hälytyspaneelin GND -pääte ja vyöhykepäätteet. Olen korostanut ne Bosch -hälytyksen käyttöoppaasta näkyvässä kuvassa.
  2. Tartu yleismittariin ja aseta jännitemittaukseksi 20 V DC. Kytke yleismittarisi musta (COM) kaapeli hälytyksen GND -liittimeen. Aseta yleismittarisi punainen (+) johto ensimmäiselle vyöhykkeelle - minun tapauksessani "Z1". Kirjoita muistiin jännitteen lukema. Suorita samat vaiheet muille alueille. Jännitemittaukseni ovat seuraavat:
  • Z1 = 6,65 V
  • Z2 = 6,65 V
  • Z3 = 7,92 V.
  • Z4 = 7,92 V.

Kuten edellä, kahdessa ensimmäisessä vyöhykkeessäni on vain PIR: t. Kahdessa jälkimmäisessä vyöhykkeessä on sekä PIR: t että peukalosuojaus (Z3 -ohjauslaatikon peukalointi, Z4 -sireenin peukalointi) Huomaa jännite -erot.

3. Tarvitset todennäköisesti 2 henkilöä seuraavaan vaiheeseen. Sinun on myös tiedettävä, mikä PIR on millä vyöhykkeellä. Palaa taaksepäin ja lue jännite ensimmäiseltä alueelta. Pyydä nyt joku talossasi kävelemään PIR: n edessä, jännitteen pitäisi laskea. Huomaa uusi jännitteen lukema. Minun tapauksessani jännitteet luetaan seuraavasti, kun PIR: t laukaistaan:

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

Kuten edellä, näen, että kun vyöhykkeet 1 ja 2 laukaistaan, jännite laskee 6,65 V: sta 0 V: ksi. Kuitenkin, kun vyöhykkeet 3 ja 4 laukaistaan, jännite laskee 7,92 V: sta 4,30 V.

12V virtalähteen mittaus

Käytämme projektin virtalähteenä 12 V DC -liitintä hälytyksen ohjauslaatikosta. Meidän on mitattava jännite hälytyksen 12 V DC -syötöstä. Vaikka se jo ilmoittaa 12 V, meidän on tiedettävä tarkempi lukema. Minun tapauksessani se todella näyttää 13,15 V. Kirjoita tämä muistiin, tarvitset tämän arvon seuraavassa vaiheessa.

Miksi mittaamme jännitettä?

Syy, joka meidän on mitattava jännitettä kullekin PIR: lle, johtuu luomastamme piiristä. Käytämme LM339 quad-differentiaalikomparaattorin sirua (tai quad op-amp -vertailua) tämän projektin ydinsähkökomponenttina. LM339: ssä on 4 itsenäistä jännitevertailijaa (4 kanavaa), joissa jokainen kanava ottaa 2 x tulojännitettä (yksi invertoiva (-) ja yksi ei-invertoiva (+) tulo, katso kaavio) Jos invertoivan tulojännitteen jännitteen pitäisi laskea alle ei-invertoiva jännite, niin siihen liittyvä lähtö vedetään maahan. Samoin, jos ei-invertoiva tulojännite putoaa alemmaksi kuin invertoiva tulo, ulostulo vedetään Vcc-arvoon. Kätevästi kotonani on 4 x PIR -hälytys/vyöhykettä - siksi jokainen vyöhyke kytketään jokaiseen vertailukanavan kanavaan. Jos sinulla on enemmän kuin 4 x PIR, tarvitset vertailulaitteen, jossa on enemmän kanavia, tai toisen LM339: n!

Huomautus: LM339 kuluttaa virtaa nano-ampeereissa, joten se ei vaikuta olemassa olevan hälytysjärjestelmän EOL-vastukseen.

Jos tämä on hämmentävää, jatka seuraavaan vaiheeseen joka tapauksessa, se alkaa olla järkevämpi, kun se on kytketty!

Vaihe 3: Jännitteenjakajan luominen

Image
Image

Mikä on jännitteenjakaja?

Jännitteenjakaja on piiri, jossa on 2 x vastuksia (tai enemmän) sarjassa. Tarjoamme jännitteen (Vin) ensimmäiseen vastukseen (R1) R1: n toinen jalka kytkeytyy toisen vastuksen (R2) ensimmäiseen haaraan ja R2: n toinen pää GND: hen. Otamme sitten lähtöjännitteen (Vout) R1: n ja R2: n välisestä liitännästä. Tästä jännitteestä tulee vertailujännite LM339: lle. Lisätietoja jännitteenjakajien toiminnasta on Adohmsin YouTube -videossa

(Huomautus: vastuksilla ei ole napaisuutta, joten ne voidaan kytkeä kumpaankin suuntaan)

Vertailujännitteen laskeminen

Olettaen, että jännite putoaa, kun PIR käynnistyy (näin pitäisi olla useimmissa hälytyksissä), niin mitä yritämme saavuttaa, on saada jännitteen lukema, joka on melkein puolivälissä alimman tyhjäkäyntijännitteen ja korkeimman laukaisujännitteen välillä, tästä tulee vertailujännite.

Otan hälytyksen esimerkkinä…

Alueen tyhjäkäyntijännitteet olivat Z1 = 6.65V, Z2 = 6.65V, Z3 = 7.92V, Z4 = 7.92V. Alin tyhjäkäyntijännite on siis 6,65 V.

Vyöhykkeen laukaisujännitteet olivat: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. Suurin lauennut jännite on siis 4,30 V.

Joten meidän on valittava numero puoliväliin välillä 4.30V ja 6.65V (ei tarvitse olla tarkka, vain suunnilleen) Minun tapauksessani viitejännitteen on oltava noin 5.46V. Huomautus: Jos alin joutokäynti ja korkein laukaisujännite ovat hyvin lähellä toisiaan, koska useat vyöhykkeet aiheuttavat erilaisia jännitteitä, sinun on ehkä luotava kaksi tai useampia jännitteenjakajia.

Laskemme vastuksen arvot jännitteenjakajalle

Nyt meillä on vertailujännite, meidän on laskettava, minkä kokoisia vastuksia tarvitsemme, jotta voimme luoda jännitejakajan, joka tarjoaa vertailujännitteen. Käytämme hälytyksen 12 V DC -jännitelähdettä (Vs). Kuitenkin edellisen vaiheen mukaisesti, kun mittaimme 12 V DC -syöttöä, saimme itse asiassa 13,15 V. Meidän on laskettava jännitteenjakaja käyttämällä tätä arvoa lähteenä.

Laske Vout ohmin lain avulla …

Vout = Vs x R2 / (R1 + R2)

… Tai käytä online-jännitteenjakajalaskuria:-)

Sinun on kokeiltava vastusarvoja, kunnes saavutat halutun tehon. Minun tapauksessani se toimi R1 = 6,8 k ohm ja R2 = 4,7 K ohm, laskettuna pitkässä muodossa seuraavasti:

Vout = Vs x R2 / (R1 + R2)

Vout = 13,15 x 4700 / (6800 + 4700)

Vout = 61, 805/11, 500

Vout = 5,37 V

Vaihe 4: Johdot LM339

Wemos D1 Minin kytkentä
Wemos D1 Minin kytkentä

Jännitteenjakaja LM339 -invertoivaan tuloon

Kuten aiemmin keskusteltiin LM339 -vertailusta, se vaatii 2 x tuloa. Toinen on jännite kustakin PIR: stä jokaiseen kanavaan, joka ei ole invertoiva (+), ja toinen on vertailujännite invertoivaan (-) liittimeemme. Referenssijännitteen on syötettävä kaikki 4 vertailutuloa. Sammuta hälytysjärjestelmä ennen näiden vaiheiden suorittamista.

  • Vedä johto hälytysjärjestelmän 12 V DC -lohkosta leipälevyn + -kiskoon *
  • Vie johto hälytysjärjestelmän GND -lohkosta leipälevyn - kiskoon **
  • Asenna vertailulaite LM339 leipälevyn keskelle (lovi osoittaa lähimpänä tappia 1)
  • Asenna 2 x vastukset luodaksesi jännitteenjakajapiirin ja johdon jaetulle jännitteelle
  • Vedä johdot jännitejaetusta Voutista jokaiseen LM339 -invertteriliitäntään

* VINKKI: käytä virtalähteenä alligaattoripidiketta, jos mahdollista, sillä se helpottaa projektisi ON/OFF -virran saamista ** TÄRKEÄÄ! MOSFET -laite saattaa olla tarpeen, jos kytket Wemos -laitteeseen virran hälytyspaneelista! Minun tapauksessani LM339, Wemos ja Alarm saavat kaikki virtaa samasta lähteestä (eli itse hälytysjärjestelmästä). Näin voin kytkeä kaiken päälle virran yhdellä virtaliitännällä. Oletusarvoisesti Wemon GPIO -nastat on kuitenkin määritelty "INPUT" -napoiksi - eli ne ottavat kaiken jännitteen, joka heitetään heihin, ja luottavat kyseiseen lähteeseen tarjoamaan oikeat jännitetasot (min/max -tasot), jotta Wemot voittivat " t kaatua tai palaa. Minun tapauksessani hälytysjärjestelmä saa tehonsa ja alkaa suorittaa käynnistysjärjestystä hyvin nopeasti - itse asiassa niin nopeasti, että se tekee tämän ennen kuin Wemot voivat käynnistyä ja julistaa GPIO -nastat "INPUT_PULLUP" (jännite vedetty sisäisesti siru). Tämä ei tarkoita sitä, että jännite -erot aiheuttaisivat Wemosin kaatumisen, kun koko järjestelmä saa virran. Ainoa tapa kiertää se olisi sammuttaa ja käynnistää Wemos manuaalisesti. Tämän ratkaisemiseksi lisätään MOSFET, joka toimii "loogisena kytkimenä" LM339: n kytkemiseksi päälle. Näin Wemot voivat käynnistyä, asettaa 4 x vertailupiirin GPIO -nastat "INPUT_PULLUP's" -laitteiksi, viivästyä muutaman sekunnin ja sitten (toisen GPIO -nastan D5 kautta, joka on määritetty OUTPUT: ksi) lähettää "HIGH" -signaalin GPIO -nastan D5 kautta MOSFETiin, joka loogisesti kytkee LM339: n päälle. Suosittelen johdotusta kuten yllä, mutta JOS huomaat, että Wemos kaatuu kuten minä, sinun on sisällytettävä MOSFET 1 k ohmin vetovastus. Lisätietoja tämän tekemisestä on tämän ohjeen lopussa.

Hälytysvyöhykkeet LM339 ei-invertoiville tuloille

Meidän on nyt johdettava johdot kustakin hälytyksen ohjauspaneelin vyöhykkeestä LM339 -vertailutuloihin. Kun hälytysjärjestelmä on edelleen pois päältä, syötä lanka kullekin vyöhykkeelle jokaiselle LM339-vertailijan ei-invertoivalle (+) tulolle. Esimerkiksi omassa järjestelmässäni:

  • Johto Z1: stä menee LM339 -tuloon 1+
  • Johto Z2: sta menee LM339 -tuloon 2+
  • Johto Z3: sta menee LM339 -tuloon 3+
  • Johto Z4: stä menee LM339 -tuloon 4+

Katso LM339: n pin-out-pistettä vaiheessa 3, jos saat muistutuksen (se on värikoodattu leipälevyn kuvan kanssa). Kun olet valmis, leipälaudasi pitäisi näyttää samanlaiselta kuin tässä vaiheessa näytetty kuva.

Käynnistä hälytysjärjestelmä ja mittaa jännitteenjakajasta tuleva jännite varmistaaksesi, että se on sama kuin aikaisemmin laskettu vertailujännite.

Vaihe 5: Wemos D1 Minin kytkentä

Wemos D1 minin johdotus

Nyt kaikki LM339 -tulot on hoidettu, joudumme nyt kytkemään Wemos D1 miniin. Jokainen LM339 -ulostulonappi menee Wemos GPIO (yleiskäyttöinen tulo/lähtö) -nastaan, jonka nimeämme koodin kautta tulon vetotapiksi. Wemos kestää enintään 5 V: n Vcc (tulolähde) -jännitteenä (vaikka säätelee tätä sisäisesti 3,3 V: ksi). Käytämme hyvin yleistä LM7805 -jännitesäädintä (EDIT: katso alla) pudottaaksesi 12 V: n kiskon leipälaudalle 5 V Wemosin virtalähteeksi. LM7805: n tietolomake osoittaa, että tarvitsemme kondensaattorin, joka on kytketty säätimen kummallekin puolelle virran tasoittamiseksi, kuten leipälevyn kuvassa. Kondensaattorin pidempi jalka on positiivinen (+), joten varmista, että se on kytketty oikein päin.

Jännitesäädin ottaa jännitteen sisään (vasemmanpuoleinen nasta), maadoituksen (keskimmäinen nasta) ja jännitteen ulos (oikeanpuoleinen tappi) Tarkista kaksoisnasta, jos jännitesäätimesi vaihtelee LM7805-mallista.

(EDIT: Huomasin, että hälytyspaneelista tulevat vahvistimet olivat liian korkeita LM7805: lle. Tämä aiheutti paljon lämpöä LM7805: n pienessä jäähdytyselementissä ja aiheutti sen epäonnistumisen ja puolestaan Wemosin pysähtymisen Vaihdoin LM7805: n ja kondensaattorit DC-DC-buck-muuntimeen, eikä minulla ole ollut ongelmia sen jälkeen. Nämä on erittäin helppo kytkeä. Liitä vain hälytyksen tulojännite, liitä ensin yleismittariin ja käytä potentiometrin ruuvia ja säädä, kunnes lähtöjännite on ~ 5V)

GPIO -tulonapit

Tässä projektissa käytämme seuraavia tappeja:

  • vyöhyke Z1 => nasta D1
  • vyöhyke Z2 => nasta D2
  • vyöhyke Z3 => nasta D3
  • vyöhyke Z4 => nasta D5

Kytke lähdöt LM339: stä Wemos -kortin GPIO -nastoihin tässä vaiheessa esitetyn leipälevyn kuvan mukaisesti. Jälleen kerran olen värikoodannut tulot ja vastaavat lähdöt, jotta on helpompi nähdä, mikä viittaa mihin. Jokainen Arduinon GPIO -nasta on määritelty 'INPUT_PULLUPiksi', mikä tarkoittaa, että ne vedetään 3,3 V: iin normaalikäytössä (IDLE) ja LM339 vetää ne alas maahan, jos PIR laukaisee. Koodi havaitsee HIGH to LOW -muutoksen ja lähettää viestin langattomasti kotiautomaatio -ohjelmistoosi. Jos sinulla on ongelmia tämän toiminnan kanssa, on mahdollista, että käänteiset ja ei-invertoivat tulosi ovat väärin päin (jos PIR-laitteesi jännite nousee korkealle, kun se laukaistaan, kuten useimpien harrastus-PIR-laitteiden kohdalla, haluat liitäntöjä toisin päin)

Arduino IDE

Poista Wemot leipälevyltä, meidän on nyt ladattava koodi siihen (vaihtoehtoinen linkki täällä). tyyppiset levyt. Liitä USB -kaapeli Wemos -korttiin ja tietokoneeseen ja käynnistä Arduino IDE. Lataa koodi ja avaa se projektissasi. Sinun on varmistettava, että oikea kortti on asennettu ja ladattu projektillesi ja että oikea COM -portti on valittu (Työkalut, Portti). Tarvitset myös asianmukaiset kirjastot (PubSubClient, ESP8266Wifi), jotta saat Wemos -kortin luonnokseen, katso tämä artikkeli.

Sinun on muutettava seuraavat koodirivit ja korvattava se omalla SSID -tunnuksellasi ja salasanallasi langatonta yhteyttä varten. Vaihda myös IP -osoite osoittamaan omaa MQTT -välittäjääsi.

// Wifi

const char* ssid = "sinun_wifi_palvelutunnuksesi"; const char* password = "sinun_wifi_salasana_ täällä"; // MQTT Broker IPAddress MQTT_SERVER (172, 16, 223, 254)

Kun koodi on muutettu, tarkista se ja lähetä se Wemos -levylle USB -kaapelin kautta.

Huomautuksia:

  • Jos käytät eri GPIO -portteja, sinun on säädettävä koodi. Jos käytät enemmän tai vähemmän vyöhykkeitä kuin minulla, sinun on myös säädettävä koodi ja TOTAL_ZONES = 4; vakio sopivaksi.
  • Hälytysjärjestelmäni käynnistyessä hälytysjärjestelmä tekisi tehotestin kaikille 4 x PIR: lle, jotka vetivät kaikki yhdistetyt GPIO -laitteet maahan, jolloin Wemot luulivat vyöhykkeiden laukaisevan. Koodi ohittaa MQTT -viestien lähettämisen, jos se näkee kaikki 4 x silmukkaa aktiivisina samanaikaisesti, koska se olettaa, että hälytysjärjestelmä käynnistyy.

Vaihtoehtoinen latauslinkki koodiin TÄSTÄ

Vaihe 6: Testaus ja OpenHAB -määritykset

Testaus ja OpenHAB -määritykset
Testaus ja OpenHAB -määritykset

MQTT -testaus

MQTT on "tilaa / julkaise" -viestijärjestelmä. Yksi tai useampi laite voi puhua "MQTT -välittäjän" kanssa ja "tilata" tietyn aiheen. Välittäjä lähettää kaikki muiden laitteiden saapuvat viestit, jotka on "julkaistu" samaan aiheeseen, kaikille laitteille, jotka ovat tilanneet sen. Se on erittäin kevyt ja helppokäyttöinen protokolla ja täydellinen yksinkertaisena laukaisujärjestelmänä, kuten tässä. Testausta varten voit tarkastella Wemosin MQTT -välittäjälle saapuvia MQTT -viestejä suorittamalla seuraavan komennon Mosquitto -palvelimellasi (Mosquitto on yksi monista MQTT Broker -ohjelmistoista). Tämä komento tilaa saapuvat pysyvät viestit:

mosquitto_sub -v -t openhab/alarm/status

Sinun pitäisi nähdä saapuvia viestejä, jotka tulevat Wemosilta noin 30 sekunnin välein numerolla "1" (eli "olen elossa"). Jos näet vakio "0" (tai ei vastausta), viestintää ei ole. Kun näet numeron 1 tulossa, se tarkoittaa, että Wemos kommunikoi MQTT -välittäjän kanssa (hae "MQTT Last Will and Testament" saadaksesi lisätietoja siitä, miten tämä toimii, tai katso tämä todella hyvä blogikirjoitus)

Kun olet osoittanut, että tiedonsiirto on toimiva, voimme testata, että vyöhykkeen tila raportoidaan MQTT: n kautta. Tilaa seuraava aihe (# on yleismerkki)

mosquitto_sub -v -t openhab/alarm/#

Tavallisten tilaviestien pitäisi tulla sisään, samoin kuin itse Wemosin IP -osoite. Kävele PIR: n edessä, ja sinun pitäisi myös nähdä vyöhyketiedot, jotka osoittavat, että se on AUKI, ja noin sekunnin kuluttua, että se on SULJETTU, kuten seuraavassa:

openhab/hälytys/tila 1

openhab/alarm/zone1 OPEN

openhab/alarm/zone1 SULJETTU

Kun tämä toimii, voimme määrittää OpenHAB: n näyttämään sen hienosti graafisessa käyttöliittymässä.

OpenHAB -määritykset

Seuraavat muutokset ovat tarpeen OpenHAB: lle:

'alarm.map' -muunnostiedosto: (valinnainen, testausta varten)

SULJETTU = IdleOPEN = KäynnistettyNULL = Tuntematon- = Tuntematon

'status.map' -muunnostiedosto:

0 = Epäonnistui

1 = Online -= ALAS! NULL = tuntematon

"items" -tiedosto:

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 "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 "Ota yhteyttä alarmZone3State" Zone 3 Tila [MAP (alarm.map):%s] "{mqtt =" <[mqttbroker: openhab/alarm/zone3: state: default "} String alarmZone3Trigger" Makuuhuone PIR [%1 $ ta%1 $ tr] "Numero zone4_Chart_Period "Zone 4 Chart" Ota yhteyttä alarmZone4State "Zone 4 State [MAP (alarm.map):%s]" {mqtt = "<[mqttbroker: openha b/alarm/zone4: state: default "} String alarmZone4Trigger" Pääsali PIR [%1 $ ta %1 $ tr]"

sivukarttatiedosto (mukaan lukien rrd4j -piirtäminen):

Tekstikohde = alarmZone1Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Kehys {Switch item = zone1_Chart_Period label = "Jakson" kartoitus = [0 = "Tunti", 1 = "Päivä", 2 = "Viikko"] Kuvan URL -osoite = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 0, zone1_Chart_Period = = Alustamaton] Kuvan URL -osoite = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 1] Kuvan URL -osoite = "https:// localhost: 8080/rrdchart.png" visibility = [zone1_Chart_Period == 2]}} Tekstikohde = alarmZone2Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Kehys {Switch item = zone2_Chart_Period label = "Kausi" -kartoitukset = [0 = "Tunti", 1 = "Päivä", 2 = "Viikko"] Kuvan URL -osoite = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 0, zone2_Chart_Period == Alustamaton] Kuvan url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 1] Kuvan url = "https:// localhost: 8080/rrdchart.png" visibility = [zone2_Chart_Period == 2]}} Tekstikohde = alarmZone3Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Kehys {Switch item = zone3_Chart_Period label = "Period" -kartoitukset = [0 = "Tunti", 1 = "Päivä", 2 = "Viikko"] Kuvan URL -osoite = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 0, zone3_Chart_Period == Alustamaton] Kuva url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 1] Kuvan url = "https:// localhost: 8080/rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Teksti item = alarmZone4Trigger valuecolor = [<= 60 = "#ff0000", <= 300 = "#ffa500", <= 600 = "#008000", 3600 = "#000000"] {Kehys {Switch item = zone4_Chart_Period label = " Jakso "mappings = [0 =" Tunti ", 1 =" Päivä ", 2 =" Viikko "] Kuvan URL -osoite =" https:// localhost: 8080/rrdchart.png "visibility = [zone4_Chart_Period == 0, zone4_Chart_Period == Alustamaton] Kuvan URL -osoite = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 1] Kuvan URL -osoite = "https:// localhost: 8080/rrdchart.png" visibility = [zone4_Chart_Period == 2] }} // VALINNAINEN, mutta kätevä tilan ja IP -osoitteen diagnosointiin ss Text item = alarmMonitorState Tekstikohde = alarmMonitorIPAddress

"säännöt" -tiedosto:

sääntö "Hälytysvyöhykkeen 1 tilan muutos"

kun kohde alarmZone1State muutettiin tilaan AUKI ja postUpdate (alarmZone1Trigger, new DateTimeType ()) alarmZone1State.state = SULJETTU loppu

sääntö "Hälytysvyöhykkeen 2 tilan muutos"

kun kohde alarmZone2State muutettiin tilaan AUKI ja postUpdate (alarmZone2Trigger, new DateTimeType ()) alarmZone2State.state = SULJETTU loppu

sääntö "Hälytysvyöhykkeen 3 tilan muutos"

kun kohde alarmZone3State muutettiin tilaan AUKI ja postUpdate (alarmZone3Trigger, new DateTimeType ()) alarmZone3State.state = SULJETTU loppu

sääntö "Hälytysvyöhykkeen 4 tilan muutos"

kun kohde alarmZone4State muutettiin tilaan AUKI ja postUpdate (alarmZone4Trigger, new DateTimeType ()) alarmZone4State.state = SULJETTU loppu

Saatat joutua muuttamaan yllä olevaa OpenHAB -kokoonpanoa hieman omaan asetukseesi sopivaksi.

Jos sinulla on ongelmia PIR -käynnistyksen kanssa, aloita alusta ja mittaa jännitteet piirin jokaisesta osasta. Kun olet tyytyväinen siihen, tarkista johdotus, varmista, että on olemassa yhteinen perusta, tarkista Wemos -viestit sarjamuotoisen virheenkorjauskonsolin kautta, tarkista MQTT -tiedonsiirto ja tarkista muunnoksen, kohteiden ja sivustokarttatiedostojen syntaksi.

Onnea!

Suositeltava: