Talaan ng mga Nilalaman:

Wireless Sensor ng Pinto - Ultra Mababang Lakas: 5 Hakbang
Wireless Sensor ng Pinto - Ultra Mababang Lakas: 5 Hakbang

Video: Wireless Sensor ng Pinto - Ultra Mababang Lakas: 5 Hakbang

Video: Wireless Sensor ng Pinto - Ultra Mababang Lakas: 5 Hakbang
Video: Camera-LAMP na may pagsubaybay at pagkakakilanlan ng isang tao. 2024, Nobyembre
Anonim
Wireless Sensor ng Pinto - Ultra Mababang Lakas
Wireless Sensor ng Pinto - Ultra Mababang Lakas
Wireless Sensor ng Pinto - Ultra Mababang Lakas
Wireless Sensor ng Pinto - Ultra Mababang Lakas
Wireless Sensor ng Pinto - Ultra Mababang Lakas
Wireless Sensor ng Pinto - Ultra Mababang Lakas
Wireless Sensor ng Pinto - Ultra Mababang Lakas
Wireless Sensor ng Pinto - Ultra Mababang Lakas

Isa pang sensor ng pinto !! Kaya ang pagganyak para sa akin na likhain ang sensor na ito ay maraming nakita ko sa internet na may isang limitasyon o iba pa. Ang ilan sa mga layunin ng sensor para sa akin ay:

1. Ang sensor ay dapat na napakabilis - mas mabuti mas mababa sa 5 sec

2. Ang sensor ay dapat tumakbo sa isang 3.7V Li-ion na baterya dahil mayroon akong dose-dosenang mga ito na nakahiga

3. Ang sensor ay dapat tumakbo ng maraming buwan sa isang solong singil ng baterya. Dapat itong ubusin ang <10uA sa mode ng pagtulog

4. Ang sensor ay dapat na magising para sa paglilipat ng kritikal na data tulad ng katayuan ng baterya kahit na ang pinto ay hindi pinapatakbo ng mahabang panahon.

5. Dapat magpadala ang sensor ng data sa isang paksa ng MQTT kapag binuksan ang pintuan pati na rin kapag ang pinto ay sarado

6. Ang sensor ay dapat ubusin ang parehong dami ng lakas na anuman ang estado ng pinto

Paggawa ng sensor:

Ang sensor ay mayroong 2 pangunahing mga kontroler. Ang una ay maliit na maliit na micro controller ATiny 13A. Ang pangalawa ay ang ESP na karaniwang nasa mode ng pagtulog at nagising lamang kapag pinagana ito ng ATiny. Ang buong circuit ay maaari ring gawin ng ESP lamang sa pamamagitan ng paggamit nito sa mode ng pagtulog ngunit ang kasalukuyang ginugugol nito ay mas malaki kaysa kinakailangan para sa isang baterya na tumagal ng ilang buwan kaya ang ATTiny ay sumagip. Naghahatid lamang ito ng layunin ng paggising sa bawat segundo ng N, maghanap ng isang kaganapan sa pintuan o isang kaganapan sa pagsusuri sa kalusugan, kung mayroon man, hawak nito ang CH_PD pin ng ESP sa TAAS at nagpapadala ng naaangkop na signal ng uri ng kaganapan sa ESP. Nagtatapos doon ang papel nito.

Pagkatapos ay kukuha ang ESP, binabasa ang uri ng signal, kumokonekta sa WiFi / MQTT, naglalathala ng mga kinakailangang mensahe kasama ang antas ng baterya at pagkatapos ay pinapagana ang sarili nito sa pamamagitan ng pagbabalik ng EN pin sa LOW.

Sa pamamagitan ng paggamit ng mga chip sa ganitong paraan sinasamantala ko ang mababang kasalukuyang pagtulog ng ATtiny at ang zero idle kasalukuyang ng ESP kapag ang chip ay hindi pinagana sa pamamagitan ng CH_PD pin.

Mga gamit

Paunang req:

- Kaalaman sa pagprograma ng isang ATTiny & ESP 01

- Kaalaman ng mga bahagi ng paghihinang sa isang PCB

ESP-01 (o anumang ESP)

ATTiny 13A - AVR

LDO 7333-A - Mababang regulator ng boltahe ng Dropout

Mga resistorista - 1K, 10K, 3K3

Mga Capacitor: 100uF, 0.1 uF

Pushbutton switch, micro ON / OFF switch - (parehong opsyonal)

Diode - IN4148 (o anumang katumbas)

Baterya ng Li-ion

Reed Switch

Isang kaso upang maiwanan ang lahat ng ito

Solder, PCB atbp

Hakbang 1: Schematics & Source Code

Schematics & Source Code
Schematics & Source Code

Ang iskematika ay tulad ng ipinakita sa kalakip na diagram.

Nagsama ako ng isang P Channel MOSFET para sa proteksyon ng reverse polarity. Kung hindi mo ito kailangan, maaari mo itong alisin. Anumang P Channel MOSFET na may mababang Rds ON ay magagawa.

Sa kasalukuyan ang ESP ay walang kakayahan ng OTA ngunit iyan ay para sa pagpapabuti sa hinaharap.

Source code na smart-door-sensor

Hakbang 2: Paggawa ng Circuit

MASAKIT na daloy ng pagtatrabaho

Ang mahika dito ay nangyayari kung paano sinusubaybayan ng ATTiny ang posisyon ng switch ng pinto.

Ang normal na pagpipilian ay upang maglakip ng isang pull up risistor sa switch at panatilihin ang pagmamanman nito estado. Ito ay may downside ng pare-pareho ang kasalukuyang natupok ng pull up risistor. Ang paraan ng pag-iwas dito ay gumamit ako ng dalawang mga pin upang subaybayan ang switch kaysa sa isa. Gumamit ako ng PB3 & PB4 dito. Ang PB3 ay tinukoy bilang input at PB4 bilang output na may panloob na INPUT_PULLUP sa PB3. Karaniwan ang PB4 ay gaganapin MATAAS kapag ang ATtiny ay nasa mode ng pagtulog. Tinitiyak nito na walang kasalukuyang daloy sa pamamagitan ng input na pull up resistor anuman ang posisyon ng reed switch. ibig sabihin Kung ang sarado ay sarado, ang parehong PB3 & PB4 ay MATAPOS at sa gayon walang kasalukuyang dumadaloy sa pagitan nila. Kung ang switch ay bukas pagkatapos ay walang daanan sa pagitan ng mga ito at sa gayon ang kasalukuyang ay zero. Kapag nagising ang ATtiny nagsusulat ito ng isang LOW sa PB4 at pagkatapos ay suriin ang estado ng PB3. Kung ang PB3 ay TAAS pagkatapos ang switch ng tambo ay BUKSAN iba pa ay isinara. Sinusulat nito pagkatapos ang isang TAAS sa PB4.

Ang komunikasyon sa pagitan ng ATtiny & ESP ay nangyayari sa pamamagitan ng dalawang mga pin na PB1 / PB2 na konektado sa Tx / RX ng ESP. Tinukoy ko ang signal bilang

PB1 PB2 ==== Tx Rx

0 0 ==== WAKE_UP (Health Check)

0 1 ==== SENSOR_OPEN

1 0 ==== SENSOR_CLOSED

1 1 ==== UNUSED

Bukod sa pagpapadala ng signal sa ESP ay nagpapadala rin ito ng isang TAAS na pulso sa PB0 na konektado sa pin ng CH CHPP. Ginising nito ang ESP. Ang unang bagay na ginagawa ng ESP upang hawakan ang GPIO0 HIGH na konektado sa CH_PD sa gayon tinitiyak ang mga kapangyarihan nito kahit na aalisin ng ATTiny ang PB0 HIGH. Ang kontrol ngayon ay kasama ng ESP upang matukoy kung kailan nais nitong mapatay.

Pagkatapos ay kumokonekta ito sa WiFi, MQTT, nai-post ang mensahe at pinapagana ang sarili sa pamamagitan ng pagsulat ng LOW sa GPIO0.

Daloy sa pagtatrabaho ng ESP 01:

Ang daloy ng ESP ay tuwid na pasulong. Gumising ito at binabasa ang mga halaga ng mga pin ng Tx / Rx upang matukoy kung anong uri ng mensahe ang mai-post. Kumonekta sa WiFi at MQTT, nai-post ang mensahe at pinapagana mismo.

Bago mapapatay, muling susuriin ang mga halaga ng mga input pin upang makita kung nagbago ang mga ito mula nang huli itong mabasa. Ito ay upang mapangalagaan ang isang mabilis na pagbubukas at pagsara ng pinto. Kung wala kang tseke na ito kung gayon ay ilang mga kaso na maaari mong makaligtaan ang pagsasara ng pinto kung ito ay sarado sa loob ng 5-6 segundo ng pagbubukas. Ang isang praktikal na senaryo ng pagbubukas ng pinto at sarado sa loob ng 2 sec o higit pa ay mahusay na nakuha ng loop habang habang pinapanatili ang pag-post ng mga mensahe hangga't ang kasalukuyang estado ng pinto ay naiiba mula sa naunang isa. Ang tanging senaryo na maaaring makaligtaan upang maitala ang lahat ng bukas / malapit na kaganapan ay kapag ang pintuan ay paulit-ulit na binubuksan / sarado sa loob ng 4-5 sec window na kung saan ay isang malamang na hindi kaso - marahil ay isang kaso ng ilang bata na naglalaro sa pintuan.

Hakbang 3: Suriin sa Kalusugan

Kailangan ko rin ng isang paraan upang magkaroon ng mensahe ng pagsusuri sa kalusugan mula sa ESP kung saan ipinapadala nito ang antas ng baterya ng ESP din upang matiyak na ang sensor ay gumagana nang maayos nang walang manu-manong inspeksyon. Para sa mga ito, ang ATTiny ay nagpapadala ng isang signal ng WAKE_UP tuwing 12 oras. Maaari itong mai-configure sa pamamagitan ng variable WAKEUP_COUNT sa ATtiny code. Napaka kapaki-pakinabang nito para sa mga pintuan o bintana na bihirang buksan at sa gayon ay maaaring hindi mo malaman kung may mali sa sensor o sa baterya nito kailanman.

Kung sakaling hindi mo kailangan ang pagpapaandar ng pagsusuri sa kalusugan kung gayon ang buong konsepto ng paggamit ng ATTiny ay hindi kinakailangan. Sa kasong iyon maaari kang makahanap ng iba pang mga disenyo ng mga tao na nilikha kung saan ang supply sa ESP ay pinakain sa pamamagitan ng isang MOSFET at sa gayon maaari mong makamit ang zero kasalukuyang gumuhit kapag ang pinto ay hindi pinapatakbo. Mayroong iba pang mga bagay na dapat alagaan tulad ng kasalukuyang gumuhit upang maging pareho sa pagbukas ng pinto at malapit na posisyon ng pinto - para doon nakita ko ang isang disenyo na ginamit ang isang 3 state reed switch sa halip na ang karaniwang 2 estado.

Hakbang 4: Mga Pagsukat ng Lakas at Buhay ng Baterya

Sinukat ko ang kasalukuyang pagkonsumo ng circuit at tumatagal ng ~ 30uA kapag natutulog at sa paligid. Pagpunta sa mga datasheet ng ATTiny, dapat ay nasa paligid ng 1-4 uA para sa buong circuit kasama ang quiescent kasalukuyang ng LDO ngunit pagkatapos ay nagpapakita ang aking mga sukat ng 30. Ang MOSFET at LDO ay gumagamit ng hindi gaanong mahalaga na kasalukuyang.

Kaya't ang isang 800mAH na baterya ay dapat tumagal ng mahabang mahabang panahon. Wala akong eksaktong istatistika ngunit ginagamit ko ito sa 2 aking mga pintuan nang higit sa isang taon ngayon at bawat cell ng 18650 na may 800mAH na natitira sa kanila huling mga 5-6 na buwan sa aking pangunahing pintuan na magbubukas at magsara sa hindi bababa sa 30 beses sa isang araw. Ang nasa pintuan ng bubong na bumubukas lamang ng ilang beses sa isang linggo, tumatagal ng 7-8 na buwan.

Hakbang 5: Mga Pagpapabuti sa Hinaharap

1. Hindi kinikilala ng ESP ang paghahatid ng mensahe ng MQTT. Ang programa ay maaaring mapabuti sa pamamagitan ng pag-subscribe sa paksang inilalathala nito ang mensahe upang kumpirmahin ang paghahatid o maaaring magamit ang isang library ng Async MQTT upang mag-post ng isang mensahe sa QoS 1.

2. Pag-update ng OTA: Maaaring mabago ang code ng ESP upang mabasa ang isang paksa ng MQTT para sa isang pag-update at sa gayon ay pumasok sa isang mode na OTA upang makatanggap ng isang file.

3. Ang ESP01 ay maaaring mapalitan ng ESP-12 upang makakuha ng pag-access sa maraming mga input PIN at sa gayon ay maaaring maglakip ng higit pang mga sensor sa pareho. Sa kasong iyon ang komunikasyon sa pamamagitan ng 2 bit na pamamaraan ay hindi posible. Maaari itong mapabuti upang maipatupad ang komunikasyon ng I2C sa pagitan ng ATtiny & ESP. Ito ay medyo kumplikado ngunit maisasagawa. Ginagawa ko ito sa isa pang set up kung saan ang isang ATTiny ay nagpapadala ng mga halaga ng rotary encoder sa ESP sa linya ng I2C.

4. Sinusubaybayan ng kasalukuyang circuit ang panloob na Vcc ng ESP, Kung gagamitin namin ang ESP12 pagkatapos ay maaari itong mabago upang mabasa ang aktwal na antas ng baterya sa pamamagitan ng ADC pin.

5. Sa hinaharap ay magpo-post din ako ng isang pagbabago sa ito na maaaring magamit bilang isang standalone sensor nang hindi nangangailangan ng isang MQTT o anumang sistema ng awtomatiko sa bahay. Paandarin ng sensor ang standalone at maaaring tumawag sa telepono kapag na-trigger - syempre kailangan nito ng koneksyon sa internet para dito.

6. At ang listahan ay nagpapatuloy…

7. Baligtarin ang proteksyon ng baterya - TAPOS (Ang mga larawan ng aktwal na aparato ay luma at sa gayon huwag ipakita ang MOSFET)

Inirerekumendang: