Sisukord:

Juhtmevaba uksesensor - üliväike võimsus: 5 sammu
Juhtmevaba uksesensor - üliväike võimsus: 5 sammu

Video: Juhtmevaba uksesensor - üliväike võimsus: 5 sammu

Video: Juhtmevaba uksesensor - üliväike võimsus: 5 sammu
Video: Juhtmevaba uksekell Divo 100m (patareidega)Nexa.MPG 2024, November
Anonim
Juhtmeta uksesensor - üliväike energiatarve
Juhtmeta uksesensor - üliväike energiatarve
Juhtmeta uksesensor - üliväike energiatarve
Juhtmeta uksesensor - üliväike energiatarve
Juhtmeta uksesensor - üliväike energiatarve
Juhtmeta uksesensor - üliväike energiatarve
Juhtmeta uksesensor - üliväike energiatarve
Juhtmeta uksesensor - üliväike energiatarve

Veel üks ukseandur !! Minu motivatsioon selle anduri loomiseks oli see, et paljudel Internetis nähtud juhtudel oli üks või teine piirang. Mõned anduri eesmärgid minu jaoks on järgmised:

1. Andur peaks olema väga kiire - soovitavalt vähem kui 5 sek

2. Andur peaks tühjaks saama 3,7 V liitiumioonaku, kuna mul on neid kümneid

3. Andur peaks ühe aku laadimisega töötama mitu kuud. See peaks unerežiimis tarbima <10uA

4. Andur peaks olema võimeline ärkama kriitiliste andmete, näiteks aku oleku edastamiseks isegi siis, kui ust ei kasutata pikka aega.

5. Andur peaks edastama andmeid MQTT teemale nii ukse avamisel kui ka ukse sulgemisel

6. Andur peaks tarbima sama palju energiat sõltumata ukse olekust

Anduri töö:

Anduril on 2 peamist kontrollerit. Esimene on pisike mikrokontroller ATiny 13A. Teine on ESP, mis on tavaliselt unerežiimis ja ärkab alles siis, kui ATiny seda lubab. Kogu vooluringi saab teha ka ainult ESP abil, kasutades seda unerežiimis, kuid selle tarbitav vool on palju suurem kui vaja, et aku mitu kuud kestaks, nii et ATTiny tuleb appi. Selle eesmärk on ainult ärgata iga N sekundi järel, otsida uksesündmust või tervisekontrolli sündmust, kui see on olemas, hoiab ESP CH_PD tihvti kõrgel ja saadab ESP -le vastava sündmuse tüübi signaali. Selle roll sellega lõpeb.

Seejärel võtab ESP juhtimise üle, loeb signaali tüübi, loob ühenduse WiFi/MQTT -ga, avaldab vajalikud teated, sealhulgas aku taseme, ja lülitub seejärel välja, viies EN -pin tagasi madalale.

Kasutades neid kiipe sel viisil, kasutan ära ATtiny vähese puhkeoleku voolu ja ESP tühikäigu voolu, kui kiip on CH_PD tihvti kaudu keelatud.

Tarvikud

Eeltingimused:

- Teadmised ATTiny & ESP 01 programmeerimisest

- teadmised jootekomponentidest PCB -l

ESP-01 (või mis tahes ESP)

ATTiny 13A - AVR

LDO 7333 -A - madala väljalangemise pingeregulaator

Takistid - 1K, 10K, 3K3

Kondensaatorid: 100uF, 0,1 uF

Nupplüliti, mikro ON/OFF lüliti - (mõlemad valikulised)

Diood - IN4148 (või mõni muu samaväärne)

Li-ioon aku

Reed lüliti

Juhtum selle kõige majutamiseks

Jootmine, trükkplaat jne

Samm: skeemid ja lähtekood

Skeemid ja lähtekood
Skeemid ja lähtekood

Skeemid on näidatud lisatud skeemil.

Olen lisanud P -kanali MOSFET -i, et kaitsta polaarsust. Kui te seda ei vaja, võite selle vahele jätta. Sobib iga P -kanali MOSFET, millel on madal Rds ON.

Praegu ei ole ESP -l OTA -võimalust, kuid see on tuleviku parandamiseks.

Lähtekood smart-door-sensor

2. etapp: ahela töötamine

ATTiny Töövoog

Võlu seisneb selles, kuidas ATTiny jälgib ukselüliti asendit.

Tavaline võimalus oleks lülitile kinnitada tõmmatav takisti ja jälgida selle olekut. Selle negatiivne külg on pideva voolu tarbimine tõmbetakisti poolt. Siin on seda vältitud nii, et olen lüliti jälgimiseks kasutanud kahte tihvti, mitte ühte. Olen siin kasutanud PB3 ja PB4. PB3 on määratletud sisendina ja PB4 väljundina, millel on sisemine INPUT_PULLUP PB3 -l. Tavaliselt hoitakse PB4 HIGH, kui ATtiny on unerežiimis. See tagab, et sisendtõmbetakisti kaudu ei toimu voolu, olenemata pilliroo lüliti asendist. st. Kui lüliti on suletud, on nii PB3 kui ka PB4 HIGH ja seega ei voola nende vahel voolu. Kui lüliti on avatud, pole nende vahel teed ja seega on vool null. Kui ATtiny ärkab, kirjutab see PB4 -le LOW ja kontrollib seejärel PB3 olekut. Kui PB3 on HIGH, siis pilliroo lüliti on Avatud, muidu on see SULETUD. Seejärel kirjutab see PB4 -le HIGH.

Side ATtiny ja ESP vahel toimub kahe tihvti PB1 / PB2 kaudu, mis on ühendatud ESP Tx / RX -ga. Olen määratlenud signaali järgmiselt

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (tervisekontroll)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_SULETUD

1 1 ====== KASUTAMATA

Lisaks signaali saatmisele ESP -le saadab see ka HIGH impulsi PB0 -l, mis on ühendatud ESP CH_PD tihvtiga. See äratab ESP. Esimene asi, mida ESP teeb, hoiab GPIO0 HIGH, mis on ühendatud CH_PD -ga, tagades selle võimsuse isegi siis, kui ATTiny võtab PB0 HIGH ära. Juhtimine on nüüd ESP -ga, et teha kindlaks, millal see soovib välja lülitada.

Seejärel loob ühenduse WiFi, MQTT, postitab sõnumi ja lülitab end välja, kirjutades GPIO0 -le LOW.

ESP 01 Töövoog:

ESP vool on otse edasi. See ärkab ja loeb Tx/Rx tihvtide väärtusi, et määrata, millist tüüpi sõnumeid postitada. Ühendub WiFi ja MQTT -ga, postitab sõnumi ja lülitab end välja.

Enne väljalülitamist kontrollib see uuesti sisendtihvtide väärtusi, et näha, kas need on pärast viimast lugemist muutunud. See on mõeldud ukse kiireks avamiseks ja sulgemiseks. Kui teil seda kontrolli pole, võib mõnel juhul jääda ukse sulgemisest ilma, kui see suletakse 5-6 sekundi jooksul pärast avamist. Praktiline stsenaarium ukse avamise ja sulgemise kohta umbes 2 sekundi jooksul on hästi tabatud samasilmus, mis jätkab sõnumite postitamist seni, kuni ukse hetkeseis erineb eelmisest. Ainus stsenaarium, mis võib kõikide avamise/sulgemise sündmuste salvestamisel vahele jääda, on see, kui ust avatakse/suletakse korduvalt 4-5 sekundi jooksul, mis on väga ebatõenäoline juhtum - tõenäoliselt juhtub see, et mõni laps mängib uksega.

3. samm: tervisekontroll

Vajasin ka viisi, kuidas saada ESP -lt tervisekontrolli teade, kus see saadab ka ESP -i aku taseme, et veenduda, et andur töötab ilma käsitsi kontrollimata hästi. Selleks saadab ATTiny WAKE_UP signaali iga 12 tunni järel. Seda saab konfigureerida ATtiny koodi muutuja WAKEUP_COUNT kaudu. See on väga kasulik uste või akende puhul, mida avatakse harva ja seega ei pruugi te teada saada, kas anduri või selle akuga on kunagi midagi valesti.

Kui te ei vaja tervisekontrolli funktsioone, pole kogu ATTiny kasutamise kontseptsiooni vaja. Sel juhul võite leida teisi inimeste loodud disainilahendusi, kus toiteallikas ESP -ile tarnitakse MOSFET -i kaudu, nii et saate saavutada nullvoolu, kui ust ei kasutata. On ka muid asju, mille eest tuleb hoolitseda, nagu praegune tõmme, mis oleks sama ukse avamise ja ukse sulgemise asendis - selleks nägin kuskil disainilahendust, mis kasutas tavapärase 2 oleku asemel 3 -astmelist pilliroo lülitit.

Samm: toite mõõtmised ja aku kasutusaeg

Olen mõõtnud vooluahela voolutarvet ja see võtab magades ja ümberringi ~ 30uA. Kui minna ATTiny andmelehtedele, peaks see olema umbes 1-4 uA kogu vooluahela jaoks, sealhulgas LDO puhkevool, kuid siis näitavad minu mõõtmised 30. MOSFET ja LDO tarbivad ebaolulist voolu.

Nii et 800 mAh aku peaks vastu pidama kaua. Mul pole täpset statistikat, kuid olen seda kasutanud kahel oma uksel juba üle aasta ja iga 18650 lahtrit, millesse on jäänud umbes 800 mAh, jätkub minu peauksel umbes 5-6 kuud, mis avaneb ja sulgub kl. vähemalt 30 korda päevas. Katuseukse uks, mis avaneb vaid paar korda nädalas, kestab 7-8 kuud.

5. samm: tulevased täiustused

1. ESP ei tunnista MQTT sõnumi edastamist. Programmi saab täiustada, tellides selle teema, milles see avaldab sõnumi kohaletoimetamise kinnitamiseks, või saab Async MQTT raamatukogu kasutada QoS 1 -ga sõnumi postitamiseks.

2. OTA värskendus: ESP -koodi saab muuta, et lugeda värskenduse jaoks MQTT -teemat ja siseneda faili vastuvõtmiseks OTA -režiimi.

3. ESP01 saab asendada ESP-12-ga, et saada juurdepääs rohkematele sisend-PIN-koodidele ja seega saaks samale seadmele lisada rohkem andureid. Sellisel juhul ei ole 2 -bitise meetodi kaudu side võimalik. Seda saab seejärel täiustada, et rakendada I2C -side ATtiny ja ESP vahel. See on natuke keeruline, kuid toimiv. Mul töötab see teises seadistuses, kus ATTiny saadab pöörleva kodeerija väärtused ESP -le üle I2C liini.

4. Vooluahel jälgib ESP sisemist Vcc -d. Kui kasutame ESP12, siis saab seda muuta, et lugeda ADC tihvti kaudu aku tegelikku taset.

5. Edaspidi postitan sellele ka muudatuse, mida saab kasutada eraldiseisva andurina, ilma et oleks vaja MQTT -d või koduautomaatikasüsteemi. Andur töötab iseseisvalt ja saab käivitamisel helistada - loomulikult vajab see selleks Interneti -ühendust.

6. Ja nimekiri jätkub…

7. Aku tagurpidi kaitse - VALMIS (tegelikud seadmepildid on vanad ja seega ei kajasta MOSFET -i)

Soovitan: