Talaan ng mga Nilalaman:

Alarm PIR sa WiFi (at Home Automation): 7 Hakbang (na may Mga Larawan)
Alarm PIR sa WiFi (at Home Automation): 7 Hakbang (na may Mga Larawan)

Video: Alarm PIR sa WiFi (at Home Automation): 7 Hakbang (na may Mga Larawan)

Video: Alarm PIR sa WiFi (at Home Automation): 7 Hakbang (na may Mga Larawan)
Video: 20 SCARY GHOST Videos That'll Chill You To The Bone 2024, Hulyo
Anonim
Image
Image
Alarm PIR sa WiFi (at Home Automation)
Alarm PIR sa WiFi (at Home Automation)

Pangkalahatang-ideya

Ang itinuturo na ito ay magbibigay sa iyo ng kakayahang tingnan ang huling petsa / oras (at opsyonal na isang kasaysayan ng mga oras) kung kailan ang mga PIR ng iyong House Alarm (passive infrared sensor) ay na-trigger, sa iyong home automation software. Sa proyektong ito, tatalakayin ko kung paano gamitin sa OpenHAB (libreng software sa pag-aautomat sa bahay, na personal kong ginagamit) kahit na gagana ito sa anumang iba pang software sa bahay o aplikasyon na sumusuporta sa MQTT (na inilalarawan din sa ibang pagkakataon sa artikulong ito). Ang itinuturo na ito ay tatakbo sa iyo sa mga kinakailangang hakbang sa kung paano mag-wire up ng isang circuit board at Wemos D1 mini (isang IOT board na gumagamit ng isang chip na ESP8266) na nag-tap sa mga alarm zone sa iyong alarm control box upang kapag ang isang zone (na naglalaman ng isa o higit pang mga PIR) ay na-trigger, ang Wemos ay nagpapadala ng isang mensahe nang wireless gamit ang MQTT protocol sa iyong home automation software na siya namang, ay nagpapakita ng huling petsa / oras ng pag-trigger na iyon. Ang code ng Arduino upang mai-program ang Wemos ay ibinigay din.

Panimula

Ang imahe sa itaas ay ang nakikita ko sa pamamagitan ng isa sa mga screen sa OpenHAB app sa aking iPhone. Ang teksto ng petsa / oras ay naka-code sa kulay upang makapagbigay ng isang mas mabilis na representasyon kung kailan na-trigger ang PIR - magpapakita ito ng pula (na-trigger sa loob ng huling 1 minuto), kahel (na-trigger sa loob ng huling 5 minuto), berde (na-trigger sa loob ng huling 30 minuto), asul (na-trigger sa loob ng huling oras) o kung hindi man, itim. Ang pag-click sa petsa / oras, magpapakita ng isang makasaysayang pagtingin sa mga pag-trigger ng PIR, kung saan ang isang 1 ay nangangahulugang na-trigger, at 0 ay idle. Mayroong maraming mga paggamit para dito, halimbawa maaari itong dagdagan ang iyong solusyon sa pagkakaroon ng tahanan, maaari itong makita ang paggalaw kung wala ka at sa pamamagitan ng mga panuntunan sa OpenHAB, magpadala ng mga abiso sa iyong telepono, maaari mo itong magamit tulad ng ginagawa ko upang makita kung ang aking mga anak ay Bumangon sa kalagitnaan ng gabi, na na-trigger ng isang PIR na naninirahan sa labas ng kanilang mga silid-tulugan!

Ang OpenHAB ay simpleng home automation software na ginagamit ko, maraming iba pa - at kung sinusuportahan nila ang MQTT maaari mong madaling maiangkop ang proyektong ito upang umangkop sa ginagamit mong software.

Mga palagay

Ipinagpapalagay na itinuturo na mayroon ka (o mag-set up):

  • Malinaw na isang sistema ng alarma sa bahay na may mga PIR (passive infrared sensor) at mayroon kang access sa alarm control box upang ikonekta ang kinakailangang mga kable
  • Ang OpenHAB (libreng bukas na mapagkukunan ng software ng home automation) na tumatakbo, kahit na tulad ng tinalakay dapat itong gumana sa anumang software sa pag-aautomat sa bahay na maaaring magsama ng isang umiiral na MQTT. Bilang kahalili, maaari mong baguhin ang code sa iyong sarili upang umangkop sa iyong sariling mga pangangailangan.
  • Ang Mosquitto MQTT (o katulad) na naka-install na broker at nagbubuklod na naka-configure sa OpenHAB (MQTT ay isang pag-subscribe / pag-publish ng uri ng protokol sa pagmemensahe na magaan at mahusay para sa komunikasyon sa pagitan ng mga aparato)

Kung hindi mo pinatakbo ang OpenHAB at isang MQTT broker, tingnan ang mahusay na artikulong ito sa MakeUseOf web site

Anong kailangan ko?

Upang likhain ang wireless controller, kakailanganin mong mapagkukunan ang mga sumusunod na bahagi:

  • Ang Wemos D1 mini V2 (may built-in na wireless CHIP na ESP8266)
  • Isang kumpare ng LM339 (gagawin nito ang pag-check ng PIR idle vs na-trigger)
  • Isang mapagkukunang 5V DC power para sa Wemos (O, isang DC-DC buck converter. Tandaan: ang isang LM7805 boltahe regulator ay maaaring hindi gumana para sa application na ito tulad ng tinalakay sa ibang pagkakataon sa proyektong ito)
  • Dalawang resistors para sa isang divider ng boltahe (ang laki ay nakasalalay sa iyong mga voltages ng alarma, tinalakay sa ibang pagkakataon sa proyekto)
  • Isang 1K ohm risistor upang kumilos bilang isang pull down risistor para sa pagkontrol sa LM339 na lakas
  • Isang 2N7000 (o katulad) MOSFET upang lohikal na buksan ang LM339 (maaaring opsyonal, tatalakayin sa paglaon sa proyekto)
  • Ang isang naaangkop na laki ng breadboard para sa pag-setup at pagsubok ng circuit
  • Ang isang bungkos ng mga wire ng tinapay upang ikonekta ang lahat nang magkasama
  • Kailangan ng mga tool: mga cutter sa gilid, solong core wire
  • Isang DC multi-meter (sapilitan!)

Hakbang 1: Ang Alarm System Control Box

Ang Alarm System Control Box
Ang Alarm System Control Box

Una ang ilang mga babala at disclaimer

Sa personal, mayroon akong isang sistema ng alarma sa Bosch. Lubos kong inirerekumenda na i-download mo ang nauugnay na manu-manong para sa iyong partikular na system ng alarma at pamilyarin ito sa iyong sarili bago ka magsimula dahil kakailanganin mong i-power down ang alarm system upang mai-wire ang mga zone. Inirerekumenda ko rin na basahin mo ang artikulong ito nang buo bago ka magsimula!

Nasa ibaba ang isang listahan ng ilang mga bagay na dapat mong malaman bago ka magsimula - siguraduhin na basahin at maunawaan mo ang bawat isa sa kanila bago magpatuloy! Hindi ako responsibilidad kung i-turn up mo ang iyong alarm system at / o kailangang bayaran ang iyong installer upang ayusin ito. Kung nabasa mo at naintindihan ang sumusunod subalit at ginagawa ang mga kinakailangang pag-iingat, dapat kang maging maayos:

1. Ang aking alarm system ay mayroong backup na baterya sa loob ng kahon at mayroon ding isang tamper switch sa loob ng takip (na nagbibigay ng pag-access sa board system ng alarma) kaya't pinapagana ang alarm sa panlabas, kapag inaalis ang front panel ng control kahon na nag-trigger ng alarma! Upang mapalibot ito habang nagtrabaho ako sa proyekto, nilagpasan ko ang proteksyon ng pakialaman sa pamamagitan ng pag-unplug pagkatapos ay maiikli ang circuit ng tamper switch (ang makapal na pulang kawad tulad ng ipinakita sa larawan sa itaas)

2. Kapag pinapagana ang sistema ng alarma sa pag-back up, pagkatapos ng humigit-kumulang ~ 12 oras ang panel ng control alarm ay nagsimulang beep na may mga code ng kasalanan. Matapos matukoy ang mga code ng kasalanan sa pamamagitan ng manwal, nalaman kong binalaan nito ako na:

  • Ang petsa / oras ay hindi nakatakda (kailangan ko ng master code at pangunahing pagkakasunud-sunod mula sa manu-manong upang muling ayusin)
  • Na ang backup na baterya ay hindi nakakonekta (madaling ayusin, nakalimutan ko lamang na isaksak muli ang baterya)

3. Sa aking alarma, mayroong 4 x zone na mga bloke ng koneksyon (may label na Z1-Z4) para sa wire ng PIR sa pangunahing alarm board, gayunpaman - ang aking system ng alarm ay talagang may kakayahang 8 zones. Ang bawat bloke ng koneksyon ng zone ay maaaring magpatakbo ng 2 x zones bawat isa (ang Z1 ay gumagawa ng Z1 at Z5, ang Z2 ay gumagawa ng Z2 at Z6 at iba pa). Ang sistema ng alarma ay may built-in na proteksyon ng pakialaman upang ihinto ang sabi ng isang tao, buksan ang talukap ng mata sa sistema ng alarma tulad ng nabanggit sa itaas, o i-cut ang mga wire sa isang PIR. Natutukoy ito sa pagitan ng bawat tamper ng zone sa pamamagitan ng mga resistensya ng EOL (dulo ng linya). Partikular ang sukat na resistors na naninirahan sa "dulo ng linya" - sa madaling salita, sa loob ng PIR (o control box tamper switch, o siren box o kung ano ang nai-wire sa zone na iyon) Tulad ng nabanggit na ang mga resistor na ito ay ginagamit bilang 'tamper proteksyon '- ayon sa teknikal, kung may pumuputol ng mga kable sa isang PIR - sapagkat ang sistema ng alarma ay umaasang makakakita ng isang tiyak na paglaban mula sa PIR na iyon, kung gayon dapat magbago ang paglaban, ipinapalagay na ang isang tao ay binagabag ang system at magpapalitaw ng alarma.

Halimbawa:

Sa aking alarma, ang Zone "Z4" ay mayroong 2 mga wire dito, ang isa ay pupunta sa PIR sa aking pasilyo at ang isa ay pupunta sa alarm control box na tamper switch. Sa loob ng hallway PIR, mayroon itong 3300 ohm resistor. Ang iba pang kawad na tumatakbo sa control box tamper switch, ay may 6800 ohm resistor na naka-wire sa serye. Ito ay kung paano ang sistema ng alarma (lohikal) na nakikilala sa pagitan ng "Z4" at "Z8" na mga tampers. Gayundin, ang zone na "Z3" ay mayroong PIR (na may 3300 ohm resistor dito) at pati na rin ang siren tamper switch (na may 6800 ohm resistor dito) na bumubuo sa "Z7". Ang installer ng alarma ay pre-configure ang sistema ng alarma upang malaman nito kung anong aparato ang nakakonekta sa bawat zone (at binago ang laki ng EOL risistor upang umangkop, dahil ang sistema ng alarma ay naka-program upang malaman kung anong sukat ang iba't ibang mga EOL resistor. Sa ilalim walang mga pangyayari na dapat mong baguhin ang halaga ng mga resistors na ito!)

Kaya batay sa nasa itaas, dahil ang bawat zone ay maaaring may maraming mga aparato na nakakabit din nito (na may iba't ibang mga halaga ng paglaban), at pag-alala sa pormulang V = IR (boltahe = amps x paglaban) pagkatapos ay maaari ding sabihin na ang bawat zone ay maaaring may iba't ibang mga voltages. Na humahantong sa amin sa susunod na hakbang, sinusukat ang bawat mga zone IDLE kumpara sa na-TRIGGER na boltahe …

Hakbang 2: Pagsukat ng Boltahe ng Alarm Zone

Pagsukat ng Boltahe ng Alarm Zone
Pagsukat ng Boltahe ng Alarm Zone
Pagsukat ng Boltahe ng Alarm Zone
Pagsukat ng Boltahe ng Alarm Zone

Sa sandaling nakuha mo ang pag-access sa pangunahing board sa iyong alarm system (at na-bypass ang tamper switch kung mayroon ka; ayon sa naunang hakbang) ibalik ang lakas ng iyong alarm system. Kailangan namin ngayon upang sukatin ang bawat boltahe ng mga zone kapag ang IDLE nito (walang paggalaw sa harap ng PIR) kumpara sa TRIGGERED (Nakita ng PIR ang paggalaw) Kumuha ng panulat at papel upang maisulat mo ang iyong mga pagbasa ng boltahe.

BABALA: Ang karamihan ng iyong system ng alarma ay malamang na tumatakbo sa 12V DC, subalit magkakaroon ito ng paunang power feed sa 220V (o 110V) AC, na may isang transformer na nagko-convert ng lakas mula sa AC patungong DC. BASAHIN ang manu-manong at gumawa ng karagdagang pag-iingat na tinitiyak na HINDI ka sumusukat sa anumang mga AC terminal !!! Tulad ng screenshot ng aking sistema ng alarma sa pahinang ito, maaari mong makita na ang pinakailalim ng imahe ay ang lakas ng AC, na binago sa 12V DC. Sinusukat namin ang 12V DC sa mga pulang kahon na naka-highlight. Huwag hawakan ang lakas ng AC. Ingat na ingat!

Pagsukat ng Boltahe ng PIR

Mayroon akong koneksyon na 4 x PIR sa Z1 hanggang sa Z4. Sukatin ang bawat isa sa iyong mga zone tulad ng sumusunod.

  1. Una, kilalanin ang terminal ng GND at ang mga terminal ng zone sa alarm panel. Na-highlight ko ang mga ito sa imaheng ipinakita mula sa manwal ng aking alarma sa Bosch.
  2. Grab ang iyong multimeter at itakda ang iyong pagsukat ng boltahe sa 20V DC. Ikonekta ang itim (COM) na cable mula sa iyong multimeter sa terminal ng GND sa alarma. Ilagay ang pula (+) na tingga mula sa iyong multimeter sa unang zone - sa aking kaso na may label na "Z1". Isulat ang pagbasa ng boltahe. Gawin ang parehong mga hakbang para sa natitirang mga zone. Ang aking mga sukat sa boltahe ay ang mga sumusunod:
  • Z1 = 6.65V
  • Z2 = 6.65V
  • Z3 = 7.92V
  • Z4 = 7.92V

Tulad ng nabanggit sa itaas, ang aking unang dalawang mga zona ay may kalakip din na PIR. Ang huli na dalawang mga zona ay may parehong mga PIR at proteksyon ng tamper na naka-wire sa kanila (Z3 control box tamper, Z4 siren tamper) Tandaan ang mga pagkakaiba-iba ng boltahe.

3. Malamang kakailanganin mo ng 2 tao para sa susunod na hakbang na ito. Kakailanganin mo ring malaman kung aling PIR ang nasaang zone. Bumalik at basahin ang boltahe sa unang zone. Ngayon kumuha ng isang tao sa iyong bahay na maglakad sa harap ng PIR, ang boltahe ay dapat na bumaba. Itala ang bagong pagbabasa ng boltahe. Sa aking kaso, ang mga voltages ay basahin ang mga sumusunod kapag ang PIRs ay na-trigger:

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

Tulad ng sa itaas, nakikita ko na kapag ang mga zone 1 at 2 ay na-trigger, ang boltahe ay bumaba mula 6.65V hanggang 0V. Gayunpaman kapag ang mga zone 3 at 4 ay na-trigger, ang boltahe ay bumaba mula 7.92V hanggang 4.30V.

Pagsukat ng 12V power supply

Gagamitin namin ang 12V DC terminal mula sa alarm control box upang mapagana ang aming proyekto. Kailangan nating sukatin ang boltahe mula sa 12V DC feed sa alarma. Bagaman nagsasaad na ng 12V, kailangan nating malaman ang isang mas tumpak na pagbabasa. Sa aking kaso, talagang bumabasa ito ng 13.15V. Isulat ito, kakailanganin mo ang halagang ito sa susunod na hakbang.

Bakit namin sinusukat ang boltahe?

Ang dahilan na kailangan namin upang masukat ang boltahe para sa bawat PIR ay dahil sa circuit na lilikha namin. Gumagamit kami ng isang LM339 quad differential comparator chip (o quad op-amp comparator) bilang pangunahing sangkap ng elektrikal para sa proyektong ito. Ang LM339 ay may 4 na independiyenteng mga kumpare ng boltahe (4 na mga channel) kung saan ang bawat channel ay tumatagal ng 2 x input voltages (isang inverting (-) at isang hindi inverting (+) na input, tingnan ang diagram) Kung ang boltahe ng invert ng input boltahe ay dapat na bumaba nang mas mababa kaysa sa ang di-boltahe na boltahe, kung gayon ang kaugnay na output ay iguguhit sa lupa. Gayundin, kung ang non-inverting input boltahe ay bumaba ng mas mababa kaysa sa invert ng input, kung gayon ang output ay hinila hanggang sa Vcc. Maginhawa, sa aking bahay mayroon akong 4 x alarm PIR's / zones - samakatuwid ang bawat zone ay mai-wire hanggang sa bawat channel sa kumpare. Kung mayroon kang higit sa 4 x PIRs, kakailanganin mo ang isang kumpara sa maraming mga channel, o ibang LM339!

Tandaan: Ang LM339 ay kumokonsumo ng lakas sa mga nano-amp, kaya't hindi makakaapekto sa paglaban ng EOL ng umiiral na sistema ng alarma.

Kung nakalilito ito, magpatuloy sa susunod na hakbang pa rin magsisimula itong magkaroon ng higit na kahulugan sa sandaling ma-wire natin ito!

Hakbang 3: Lumilikha ng isang Divider ng Boltahe

Image
Image

Ano ang isang divider ng boltahe?

Ang isang voltage divider ay isang circuit na may 2 x resistors (o higit pa) sa serye. Nagbibigay kami ng boltahe sa (Vin) sa unang risistor (R1) Ang iba pang mga binti ng R1 ay kumokonekta sa unang binti ng pangalawang risistor (R2), at ang iba pang dulo ng R2 ay kumokonekta sa GND. Pagkatapos ay kukuha kami ng isang output boltahe (Vout) mula sa koneksyon sa pagitan ng R1 at R2. Ang boltahe na iyon ay magiging aming boltahe ng sanggunian para sa LM339. Para sa karagdagang impormasyon tungkol sa kung paano gumagana ang mga divider ng boltahe, tingnan ang video ng Adohms youtube

(Tandaan: ang mga resistors ay walang polarity, kaya maaari silang mai-wire sa alinmang paraan sa paligid)

Kinakalkula ang aming boltahe ng sanggunian

Ipagpalagay na ang boltahe ay bumaba kapag ang iyong PIR ay na-trigger (ito dapat ang kaso para sa karamihan ng mga alarma) kung gayon ano ang sinusubukan naming makamit, ay upang makakuha ng isang pagbasa ng boltahe na halos kalahati sa pagitan ng aming pinakamababang boltahe na walang ginagawa at ang aming pinakamataas na nag-trigger na boltahe, ito ang magiging boltahe ng aming sanggunian.

Ginagawa ang aking alarma bilang isang halimbawa …

Ang mga voltase ng zone idle ay Z1 = 6.65V, Z2 = 6.65V, Z3 = 7.92V, Z4 = 7.92V. Ang pinakamababang boltahe na walang ginagawa ay samakatuwid ay 6.65V

Ang mga nag-trigger ng voltages ng zone ay: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. Ang pinakamataas na nag-trigger na boltahe ay samakatuwid ay 4.30V

Kaya kailangan naming pumili ng isang numero sa kalahati sa pagitan ng 4.30V at 6.65V (hindi kailangang eksakto, halos lamang) Sa aking kaso, ang aking sanggunian na boltahe ay kailangang nasa paligid ng 5.46V. Tandaan: Kung ang pinakamababang idle at pinakamataas na nag-trigger na boltahe ay napakalapit sa bawat isa dahil sa maraming mga zone na nagdudulot ng isang hanay ng iba't ibang mga voltages, maaaring kailanganin mong lumikha ng 2 o higit pang mga divider ng boltahe.

Kinakalkula ang aming mga halaga ng risistor para sa divider ng boltahe

Ngayon mayroon kaming isang boltahe ng sanggunian, kailangan naming kalkulahin kung anong mga sukat ng resistors ang kailangan namin upang lumikha ng isang boltahe divider na magbibigay ng aming boltahe ng sanggunian. Gagamitin namin ang mapagkukunang 12V DC boltahe (Vs) mula sa alarma. Gayunpaman, ayon sa naunang hakbang nang sukatin namin ang 12V DC feed talagang nakuha namin ang 13.15V. Kailangan nating kalkulahin ang divider ng boltahe gamit ang halagang ito bilang mapagkukunan.

Kalkulahin ang Vout gamit ang batas ng ohms…

Vout = Vs x R2 / (R1 + R2)

… O gumamit ng isang calculator sa online na divider ng boltahe:-)

Kakailanganin mong mag-eksperimento sa mga halaga ng risistor hanggang sa makamit mo ang nais mong output. Sa aking kaso, nagtrabaho ito kasama ang R1 = 6.8k ohm at R2 = 4.7K ohm, kinakalkula sa mahabang form tulad ng sumusunod:

Vout = Vs x R2 / (R1 + R2)

Vout = 13.15 x 4700 / (6800 + 4700)

Vout = 61, 805/11, 500

Vout = 5.37V

Hakbang 4: Wire Up ang LM339

Pagkabit ng Wemos D1 Mini
Pagkabit ng Wemos D1 Mini

Divider ng Boltahe sa LM339 pag-invert ng mga input

Tulad ng tinalakay nang mas maaga tungkol sa kumpare ng LM339, kukuha ito ng 2 x input. Ang isa ay magiging boltahe mula sa bawat PIR sa bawat channel na hindi inverting (+) na terminal, ang iba pa ay ang aming sanggunian na boltahe sa aming invertting (-) terminal. Kailangang pakainin ng boltahe ng sanggunian ang lahat ng 4 na input ng inverting na inverter. I-power down ang iyong alarm system bago isagawa ang mga hakbang na ito.

  • Patakbuhin ang isang kawad mula sa 12V DC block sa alarm system patungo sa + rail sa iyong breadboard *
  • Patakbuhin ang isang kawad mula sa block ng GND sa system ng alarma patungo sa - riles sa iyong breadboard **
  • I-install ang kumpare ng LM339 sa gitna ng breadboard (ipinahiwatig ng bingaw na pinakamalapit sa pin 1)
  • I-install ang 2 x resistors upang lumikha ng isang boltahe divider circuit at wire para sa hinati na boltahe palabas
  • Patakbuhin ang mga wire mula sa 'hinahati na boltahe' Vout sa bawat terminal ng pag-invert ng LM339

* TIP: gumamit ng isang clip ng buaya para sa lakas kung maaari, dahil ginagawang mas madali ang pagbibigay ng KAPANG-ON / OFF na kapangyarihan sa iyong proyekto ** MAHALAGA! Maaaring kailanganin ang isang MOSFET KUNG pinapagana mo ang mga Wemos mula sa panel ng Alarm! Sa aking kaso, ang LM339, Wemos at Alarm lahat ay tumatanggap ng lakas mula sa parehong mapagkukunan (ibig sabihin: ang sistema mismo ng alarma) Pinapayagan akong i-on ang kapangyarihan sa lahat ng bagay na may isang solong koneksyon sa kuryente. Gayunpaman, bilang default ang mga GPIO na pin sa Wemos ay tinukoy bilang mga "INPUT" na mga pin - nangangahulugang kinukuha nila ang anumang boltahe na itinapon sa kanila at umaasa sa mapagkukunang iyon upang magbigay ng tamang mga antas ng boltahe (mga antas ng min / max) upang ang Wemos ay nanalo ' hindi nag-crash o nasunog. Sa aking kaso ang sistema ng alarma ay nakakakuha ng lakas nito at nagsimulang gawin ang pagkakasunud-sunod ng pag-boot up nito nang napakabilis - napakabilis sa katunayan, na ginagawa ito bago mag-boot up ang Wemos at ideklara ang mga GPIO na pin bilang "INPUT_PULLUP" (boltahe na nakuha sa loob ng maliit na tilad) Nangangahulugan ito na ang mga pagkakaiba sa boltahe ay magiging sanhi ng pag-crash ng Wemos kapag ang buong system ay may lakas. Ang tanging paraan sa paligid nito ay ang manu-manong pag-power off at sa Wemos. Upang malutas ito, ang isang MOSFET ay idinagdag at gumaganap bilang isang "lohikal na paglipat" para sa pag-power sa LM339. Pinapayagan nito ang Wemos na mag-boot up, itakda ang 4 x kumparador na mga GPIO pin bilang "INPUT_PULLUP's", antalahin ang ilang segundo at THEN (sa pamamagitan ng isa pang GPIO pin D5 na tinukoy bilang isang OUTPUT) magpadala ng "TAAS" na signal sa pamamagitan ng GPIO pin D5 sa MOSFET, na lohikal na binabago ang LM339. Inirerekumenda ko ang mga kable sa itaas, ngunit KUNG nakita mo na ang mga Wemos ay nag-crash tulad ng ginawa ko, pagkatapos ay isasama mo ang MOSFET sa isang 1k ohm pull down risistor. Para sa karagdagang impormasyon sa kung paano ito gawin, tingnan ang katapusan ng itinuturo na ito.

Ang mga alarm zone sa LM339 na mga hindi input na inververt

Kailangan namin ngayon upang magpatakbo ng mga wire mula sa bawat zone sa alarm control panel sa mga input ng kumpare ng LM339. Sa pamamagitan ng system ng alarma na pinapagana pa rin, para sa bawat zone feed ang isang wire sa bawat di-inverting (+) na input sa kumpare ng LM339. Halimbawa, sa aking system:

  • Ang wire mula sa Z1 ay papunta sa LM339 input 1+
  • Ang wire mula sa Z2 ay papunta sa LM339 input 2+
  • Ang wire mula sa Z3 ay papunta sa LM339 input 3+
  • Ang wire mula sa Z4 ay papunta sa LM339 input 4+

Sumangguni sa pin-out ng LM339 sa ilalim ng hakbang 3 kung ikaw ay isang paalala (ito ay may kulay na naka-code sa imahe ng breadboard). Kapag tapos na, dapat lumitaw ang iyong breadboard na katulad ng imaheng ipinakita sa hakbang na ito.

Lakas sa sistema ng alarma at sukatin ang boltahe na lumalabas sa divider ng boltahe upang matiyak na katumbas nito ang iyong boltahe ng sanggunian tulad ng kinakalkula nang mas maaga.

Hakbang 5: Pag-kable sa Wemos D1 Mini

Kable ng Wemos D1 mini

Ngayon mayroon kaming lahat ng mga LM339 input na inaalagaan, kailangan namin ngayon na mag-wire sa Wemos D1 mini. Ang bawat LM339 output pin ay pupunta sa isang Wemos GPIO (pangkalahatang layunin na input / output) na pin na itatalaga namin sa pamamagitan ng code bilang isang input pullup pin. Ang Wemos ay tumatagal ng hanggang sa 5V maximum bilang kanyang Vcc (input source) boltahe (kahit na kinokontrol ito sa loob pababa sa 3.3V) Gumagamit kami ng isang napaka-karaniwang LM7805 boltahe regulator (EDIT: tingnan sa ibaba) upang i-drop ang 12V rail sa breadboard pababa sa 5V upang mapagana ang Wemos. Ang datasheet para sa LM7805 ay nagpapahiwatig na kailangan namin ng isang capacitor na naka-wire sa bawat panig ng regulator upang makinis ang kuryente, tulad ng ipinakita sa imahe ng breadboard. Ang mas mahabang paa ng capacitor ay positibo (+) kaya tiyaking naka-wire ito sa paligid ng tamang paraan.

Ang boltahe regulator ay kumukuha ng boltahe sa (kaliwang gilid na pin), lupa (gitnang pin) at boltahe palabas (kanang gilid na pin) Dobleng suriin ang pin-out kung ang iyong boltahe na regulator ay nag-iiba mula sa LM7805.

(EDIT: Natagpuan ko ang mga amp na nagmula sa alarm panel ay masyadong mataas para hawakan ng LM7805. Nagdudulot ito ng maraming init sa maliit na heat sink ng LM7805 at naging sanhi ito upang mabigo, at sa gayon ay huminto sa Wemos gumagana. Pinalitan ko ang LM7805 at mga capacitor gamit ang isang DC-DC buck converter sa halip at walang mga isyu mula noon. Napakadali nitong mag-wire up. Ikonekta lamang ang input boltahe mula sa Alarm, kumonekta muna sa isang multimeter at gamitin ang potentiometer screw at ayusin hanggang sa ang boltahe ng output ay ~ 5V)

Mga input ng GPIO

Para sa proyektong ito, gumagamit kami ng mga sumusunod na pin:

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

Wire ang mga output mula sa LM339, sa mga kaugnay na GPIO pin sa board ng Wemos, ayon sa imahe ng breadboard na ipinapakita sa hakbang na ito. Muli, nai-code ko ang kulay ng mga input at pagtutugma ng mga output, upang gawing mas madaling makita kung ano ang tumutukoy sa kung ano. Ang bawat GPIO pin sa Arduino ay tinukoy bilang isang 'INPUT_PULLUP', nangangahulugang hilahin sila hanggang sa 3.3V sa ilalim ng normal na paggamit (IDLE) at ang LM339 ay hilahin sila pababa sa lupa dapat na ma-trigger ang PIR. Nakita ng code ang pagbabago ng TAAS hanggang sa mababang, at nagpapadala ng isang mensahe nang wireless sa iyong software sa pag-automate ng bahay. Kung nagkakaroon ka ng mga isyu sa pagtatrabaho na ito, posible na magkaroon ka ng iyong pag-invert kumpara sa hindi pag-inverting na maling paraan sa paligid (kung ang boltahe mula sa iyong PIR ay napupunta nang mataas kapag na-trigger, tulad ng nangyayari sa karamihan ng libangan na PIR's, pagkatapos ay gugustuhin mong koneksyon ang iba pang paraan)

Arduino IDE

Alisin ang Wemos mula sa breadboard, kailangan namin ngayong mag-upload ng code dito (kahaliling link dito) Hindi ko idedetalye kung paano ito gawin, dahil maraming mga artikulo sa web sa pag-upload ng code sa Wemos o iba pang ESP8266 uri ng mga board. I-plug ang iyong USB cable sa board ng Wemos at sa iyong PC at sunugin ang Arduino IDE. I-download ang code at buksan ito sa iyong proyekto. Kakailanganin mong tiyakin na ang tamang board ay na-install at na-load para sa iyong proyekto pati na rin ang tamang COM port na napili (Tools, Port). Kakailanganin mo rin ang mga naaangkop na naka-install na aklatan (PubSubClient, ESP8266Wifi) Upang mapasama ang board ng Wemos sa iyong sketch, tingnan ang artikulong ito.

Kakailanganin mong baguhin ang mga sumusunod na linya ng code, at palitan ng iyong sariling SSID at password para sa iyong wireless na koneksyon. Gayundin, baguhin ang IP address upang ituro ang iyong sariling MQTT broker.

// Wifi

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

Kapag nabago, i-verify ang iyong code pagkatapos mag-upload sa board ng Wemos sa pamamagitan ng isang USB cable.

Mga Tala:

  • Kung gumagamit ka ng iba't ibang mga port ng GPIO, kakailanganin mong ayusin ang code. Kung gumagamit ka ng higit o mas kaunting mga zone kaysa sa mayroon ako, kakailanganin mo ring ayusin ang code at ang TOTAL_ZONES = 4; pare-pareho sa suit.
  • Sa ilalim ng pagsisimula ng aking system ng alarma, ang sistema ng alarma ay magsasagawa ng isang pagsubok sa kuryente sa lahat ng 4 x PIRs na hinila ang lahat ng nakakonektang GPIO sa lupa, na naging sanhi ng pag-iisip ng Wemos na ang mga zone ay na-trigger. Hindi papansinin ng code ang pagpapadala ng mga mensahe ng MQTT kung nakikita nito ang lahat ng 4 x zones na aktibo nang sabay, dahil ipinapalagay na ang sistema ng alarma ay nagpapagana.

Kahaliling link sa pag-download sa code DITO

Hakbang 6: Pagsubok at Pag-configure ng OpenHAB

Pagsubok at Pag-configure ng OpenHAB
Pagsubok at Pag-configure ng OpenHAB

Pagsubok sa MQTT

Ang MQTT ay isang "subscribe / publish" na sistema ng pagmemensahe. Ang isa o higit pang mga aparato ay maaaring makipag-usap sa isang "MQTT broker" at "mag-subscribe" sa isang tiyak na paksa. Anumang mga papasok na mensahe mula sa anumang iba pang aparato na "nai-publish" sa parehong paksa, ay itulak ng broker sa lahat ng mga aparato na nag-subscribe dito. Ito ay isang lubos na magaan at payak na gumamit ng protokol at perpekto bilang isang simpleng sistema ng pagpapalitaw tulad ng isa dito. Para sa pagsubok, maaari mong tingnan ang mga papasok na mensahe ng MQTT mula sa Wemos sa iyong MQTT broker sa pamamagitan ng pagpapatakbo ng sumusunod na utos sa iyong Mosquitto server (ang Mosquitto ay isa sa maraming magagamit na MQTT Broker software). Ang utos na ito ay nag-subscribe sa mga papasok na mensahe na nagpapanatili:

mosquitto_sub -v -t openhab / alarm / status

Dapat mong makita ang mga papasok na mensahe na nagmumula sa mga Wemos bawat 30 segundo o higit pa kasama ang bilang na "1" (nangangahulugang "Buhay ako") Kung nakikita mo ang patuloy na "0" (o walang tugon) kung gayon walang komunikasyon. Kapag nakita mo ang papasok na numero 1, nangangahulugan ito na ang Wemos ay nakikipag-usap sa broker ng MQTT (hanapin ang "MQTT Last Will and Testament" para sa karagdagang impormasyon kung paano ito gumagana, o tingnan ang talagang magandang blog entry na ito)

Kapag napatunayan mo na ang komunikasyon ay gumagana, maaari naming subukan na ang isang estado ng zone ay naiuulat sa pamamagitan ng MQTT. Mag-subscribe sa sumusunod na paksa (ang # ay isang wildcard)

mosquitto_sub -v -t openhab / alarm / #

Ang karaniwang mga mensahe sa katayuan ay dapat na pumasok, tulad ng IP address ng mismong Wemos. Maglakad sa harap ng isang PIR, at dapat mo ring makita ang impormasyon ng zone na ipinapahiwatig na BUKAS ito, pagkatapos ng isang segundo o mas huli, na isinara ito, katulad ng sumusunod:

openhab / alarm / status 1

openhab / alarm / zone1 BUKSAN

openhab / alarm / zone1 CLOSED

Kapag ito ay gumagana, maaari naming mai-configure ang OpenHAB upang ito ay kinatawan nang maayos sa GUI.

Pag-configure ng OpenHAB

Ang mga sumusunod na pagbabago ay kinakailangan sa OpenHAB:

'alarm.map' ibahin ang anyo ng file: (opsyonal, para sa pagsubok)

CLOSED = IdleOPEN = TriggeredNULL = Hindi kilalang- = Hindi kilalang

'status.map' ibahin ang anyo ng file:

0 = Nabigo

1 = Online - = Pababa! NUL = hindi alam

file na 'item':

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" Makipag-ugnay sa 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 "Makipag-ugnay sa 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 "Makipag-ugnay sa alarmZone3State" Zone 3 State [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab / alarm / zone3: state: default "} String alarmZone3Trigger" Bedroom PIR [% 1 $ ta% 1 $ tr] "Number zone4_Chart_Period "Zone 4 Chart" Makipag-ugnay sa alarmZone4State "Zone 4 State [MAP (alarm.map):% s]" {mqtt = "<[mqttbroker: openha b / alarm / zone4: state: default "} String alarmZone4Trigger" Main Hall PIR [% 1 $ ta% 1 $ tr]"

'Sitemap' file (kasama ang rrd4j graphing):

Item sa teksto = alarmZone1Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone1_Chart_Period label = "Period" mappings = [0 = "Hour", 1 = "Day", 2 = "Week"] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 0, zone1_Chart_Period = = Uninitialized] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 2]}} Item sa teksto = alarmZone2Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Lumipat ng item = zone2_Chart_Period label = "Period" mappings = [0 = "Hour", 1 = "Day", 2 = "Week"] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 0, zone2_Chart_Period == Uninitialized] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 2]}} Item sa teksto = alarmZone3Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone3_Chart_Period label = "Period" mappings = [0 = "Oras", 1 = "Araw", 2 = "Linggo"] Larawan url = "https:// localhost: 8080 / rrdchart.png" kakayahang makita = [zone3_Chart_Period == 0, zone3_Chart_Period == Hindi Pinagsama-sama] Larawan url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Text item = alarmZone4Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone4_Chart_Period label = " Period "mappings = [0 =" Hour ", 1 =" Day ", 2 =" Week "] Image url =" https:// localhost: 8080 / rrdchart.png "visibility = [zone4_Chart_Period == 0, zone4_Chart_Period == Hindi naintindi) Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone4_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone4_Chart_Period == 2] }} // OPSYONAL ngunit madaling gamitin para sa pag-diagnose ng katayuan at karagdagan sa IP ss Item sa teksto = alarmMonitorState Text item = alarmMonitorIPAddress

file na 'rules':

tuntunin ang "Alarm Zone 1 pagbabago ng estado"

kapag ang item alarmZone1State ay binago sa OPEN pagkatapos ay postUpdate (alarmZone1Trigger, bagong DateTimeType ()) alarmZone1State.state = CLOSED end

tuntunin ang "Alarm Zone 2 pagbabago ng estado"

kapag ang item alarmZone2State ay binago sa OPEN pagkatapos ay postUpdate (alarmZone2Trigger, bagong DateTimeType ()) alarmZone2State.state = CLOSED end

tuntunin ang "Alarm Zone 3 pagbabago ng estado"

kapag ang item alarmZone3State ay binago sa OPEN pagkatapos ay postUpdate (alarmZone3Trigger, bagong DateTimeType ()) alarmZone3State.state = CLOSED end

tuntunin ang "Alarm Zone 4 na pagbabago sa estado"

kapag ang item alarmZone4State ay binago sa OPEN pagkatapos ay postUpdate (alarmZone4Trigger, bagong DateTimeType ()) alarmZone4State.state = CLOSED end

Maaaring kailanganin mong baguhin ang nasa itaas ng pagsasaayos ng OpenHAB upang umangkop sa iyong sariling pag-set up.

Kung mayroon kang anumang mga problema sa mga PIR na na-trigger pagkatapos magsimula mula sa simula, at sukatin ang mga voltages para sa bawat bahagi ng circuit. Kapag masaya ka na, suriin ang iyong mga kable, tiyaking mayroong isang karaniwang batayan, suriin ang mga mensahe sa Wemos sa pamamagitan ng isang serial debug console, suriin ang komunikasyon ng MQTT at suriin ang syntax ng iyong pagbabago, mga item at mga file ng sitemap.

Good luck!

Inirerekumendang: