Kazalo:

Brezžični senzor vrat - ultra nizka poraba energije: 5 korakov
Brezžični senzor vrat - ultra nizka poraba energije: 5 korakov

Video: Brezžični senzor vrat - ultra nizka poraba energije: 5 korakov

Video: Brezžični senzor vrat - ultra nizka poraba energije: 5 korakov
Video: ЗАПУСКАЕМ СЕБЯ В КОСМОС ► 3 Прохождение ASTRONEER 2024, Julij
Anonim
Brezžični senzor vrat - ultra nizka poraba energije
Brezžični senzor vrat - ultra nizka poraba energije
Brezžični senzor vrat - ultra nizka poraba energije
Brezžični senzor vrat - ultra nizka poraba energije
Brezžični senzor vrat - ultra nizka poraba energije
Brezžični senzor vrat - ultra nizka poraba energije
Brezžični senzor vrat - ultra nizka poraba energije
Brezžični senzor vrat - ultra nizka poraba energije

Še en senzor vrat !! No, motivacija za ustvarjanje tega senzorja je bila ta, da so mnogi, ki sem jih videl na internetu, imeli eno ali drugo omejitev. Nekateri cilji senzorja zame so:

1. Senzor mora biti zelo hiter - po možnosti manj kot 5 sekund

2. Senzor bi moral izprazniti 3,7 V Li-ionsko baterijo, saj jih imam na ducate

3. Senzor mora delovati več mesecev z enim polnjenjem baterije. V stanju spanja bi moral porabiti <10uA

4. Tipalo bi se moralo zbuditi za prenos kritičnih podatkov, kot je stanje baterije, tudi če vrata dlje časa ne delujejo.

5. Tipalo mora prenašati podatke v temo MQTT, ko se vrata odprejo, in ko so vrata zaprta

6. Senzor mora porabiti enako količino energije, ne glede na stanje vrat

Delovanje senzorja:

Senzor ima 2 glavna krmilnika. Prvi je majhen mikro krmilnik ATiny 13A. Drugi je ESP, ki je običajno v načinu mirovanja in se zbudi le, ko ATiny to omogoči. Celotno vezje lahko naredi tudi samo ESP z uporabo v načinu mirovanja, vendar je tok, ki ga porabi, veliko večji, kot je potrebno, da baterija zdrži več mesecev, zato ATTiny priskoči na pomoč. Služi samo za prebujanje vsakih N sekund, iskanje dogodka na vratih ali pregleda zdravstvenega stanja, če obstaja, drži pin CH_PD ESP na HIGH in pošlje ustrezen signal vrste dogodka ESP. Tu se njegova vloga konča.

ESP nato prevzame, prebere vrsto signala, se poveže z WiFi/MQTT, objavi zahtevana sporočila, vključno z nivojem baterije, nato pa se izklopi tako, da pin EN ponovno spusti na NIZKO.

Z uporabo teh čipov na ta način izkoristim nizek tok mirovanja ATtiny in ničelni tok v prostem teku ESP, ko je čip onemogočen prek zatiča CH_PD.

Zaloge

Predpogoji:

- Poznavanje programiranja ATTiny & ESP 01

- Poznavanje spajkanja komponent na tiskanem vezju

ESP-01 (ali kateri koli ESP)

ATTiny 13A - AVR

LDO 7333 -A - Regulator napetosti z nizkim izpadom

Upori - 1K, 10K, 3K3

Kondenzatorji: 100uF, 0,1 uF

Stikalno stikalo, mikro stikalo za vklop/izklop - (oboje neobvezno)

Dioda - IN4148 (ali kateri koli enakovreden)

Li-ionska baterija

Reed stikalo

Primer za vse

Spajkanje, PCB itd

1. korak: Sheme in izvorna koda

Sheme in izvorna koda
Sheme in izvorna koda

Sheme so prikazane na priloženem diagramu.

Vključil sem M kanalni tranzistor kanala P za zaščito pred povratno polariteto. Če tega ne potrebujete, ga lahko izpustite. Vsak M -tranzistorski kanal P kanala z nizkim Rds ON je primeren.

Trenutno ESP nima zmogljivosti OTA, vendar je to za prihodnje izboljšave.

Izvorna koda senzor pametnih vrat

2. korak: Delovanje vezja

ATTiny Delovni tok

Čarobnost se zgodi v tem, kako ATTiny spremlja položaj stikala na vratih.

Običajna možnost bi bila, da na stikalo priključite vlečni upor in spremljate njegovo stanje. To ima slabost stalnega toka, ki ga porabi vlečni upor. To se je tukaj izognilo tako, da sem uporabil dva zatiča za nadzor stikala in ne enega. Tu sem uporabil PB3 in PB4. PB3 je definiran kot vhod in PB4 kot izhod z notranjim INPUT_PULLUP na PB3. Običajno je PB4 v stanju mirovanja visoko, kar zagotavlja, da ne teče tok skozi vhodni vlečni upor ne glede na položaj trstičnega stikala. tj. Če je stikalo zaprto, sta oba PB3 in PB4 VISOKA, zato med njima ne teče tok. Če je stikalo odprto, med njimi ni poti, zato je tok nič. Ko se ATtiny prebudi, napiše nizko vrednost na PB4 in nato preveri stanje PB3. Če je PB3 VISOK, je trstično stikalo ODPRTO, sicer je ZAPRTO. Nato na PB4 napiše HIGH.

Komunikacija med ATtiny & ESP poteka prek dveh nožic PB1 / PB2, priključenih na Tx / RX ESP. Signal sem definiral kot

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (zdravstveni pregled)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_ZAPRTO

1 1 ====== NE UPORABLJENO

Poleg pošiljanja signala na ESP pošilja tudi VISOKI impulz na PB0, ki je priključen na pin ESP CH_PD. To prebudi ESP. Prva stvar, ki jo ESP naredi, je, da zadrži GPIO0 HIGH, ki je priključen na CH_PD, s čimer zagotovi njegovo moč, tudi če ATTiny odvzame PB0 HIGH. Nadzor je zdaj v ESP -ju, da ugotovi, kdaj se želi izklopiti.

Nato se poveže z WiFi, MQTT, objavi sporočilo in se izklopi tako, da na GPIO0 napiše NIZKO.

ESP 01 Delovni tok:

Pretok ESP je naravnost naprej. Zbudi se in prebere vrednosti zatičev Tx/Rx, da ugotovi, kakšno sporočilo naj se objavi. Poveže se z WiFi in MQTT, objavi sporočilo in se izklopi.

Pred izklopom znova preveri vrednosti vhodnih zatičev in preveri, ali so se spremenile od zadnjega branja. To je za hitro odpiranje in zapiranje vrat. Če tega čeka nimate, lahko v nekaterih primerih zamudite zapiranje vrat, če se zaprejo v 5-6 sekundah po odprtju. Praktičen scenarij odpiranja in zapiranja vrat v približno 2 sekundah dobro ujame zanka while, ki objavlja sporočila, dokler se trenutno stanje vrat razlikuje od prejšnjega. Edini scenarij, ki bi ga lahko zamudil pri zapisovanju vseh dogodkov odpiranja/zapiranja, je, ko se vrata večkrat odprejo/zaprejo v 4-5 sekundnem oknu, kar je zelo malo verjeten primer - verjetno primer, ko se kakšen otrok igra z vrati.

3. korak: Preverite zdravje

Potreboval sem tudi način, da dobim sporočilo o zdravstvenem pregledu od ESP -ja, kjer pošlje raven napolnjenosti ESP -ja, in tako zagotovim, da senzor deluje brez ročnega pregleda. Za to ATTiny pošlje signal WAKE_UP vsakih 12 ur. Lahko ga konfigurirate s spremenljivko WAKEUP_COUNT v kodi ATtiny. To je zelo uporabno za vrata ali okna, ki se redko odprejo, zato morda ne boste vedeli, ali je s senzorjem ali njegovo baterijo kdaj kaj narobe.

Če ne potrebujete funkcije zdravstvenega pregleda, potem celoten koncept uporabe ATTiny ni potreben. V tem primeru lahko najdete druge modele, ki so jih ustvarili ljudje, kjer se napajanje ESP napaja prek MOSFET -a, tako da lahko dosežete ničelno porabo toka, ko vrata ne delujejo. Paziti je treba še na druge stvari, na primer, da je trenutni žreb enak pri odprtih vratih in pri zaprtih vratih - za to sem nekje videl zasnovo, ki je namesto običajnega 2 stanja uporabljala tristransko stikalo s tremi stanji.

4. korak: Meritve moči in življenjska doba baterije

Izmeril sem trenutno porabo tokokroga in potrebuje ~ 30uA med spanjem in okoli. Če pogledamo podatkovne liste ATTiny, bi moralo biti približno 1-4 uA za celotno vezje, vključno s tokom mirovanja LDO, potem pa moje meritve pokažejo 30. MOSFET in LDO porabita zanemarljiv tok.

Baterija s kapaciteto 800 mAH bi morala zdržati dolgo časa. Nimam natančne statistike, vendar jo uporabljam na dveh vratih že več kot eno leto in vsaka celica 18650, v kateri ostane približno 800 mAH, traja približno 5-6 mesecev na mojih glavnih vratih, ki se odpirajo in zapirajo ob vsaj 30 -krat na dan. Tista na strešnih vratih, ki se odprejo le nekajkrat na teden, traja 7-8 mesecev.

5. korak: Prihodnje izboljšave

1. ESP ne potrdi dostave sporočila MQTT. Program lahko izboljšate tako, da se naročite na temo, v kateri objavi sporočilo za potrditev dostave, ali pa uporabite knjižnico Async MQTT za objavo sporočila s QoS 1.

2. Posodobitev OTA: Kodo ESP lahko spremenite v branje teme MQTT za posodobitev in tako vstopite v način OTA za sprejem datoteke.

3. ESP01 lahko zamenjate z ESP-12, da dobite dostop do več vhodnih PIN-ov in tako nanj pritrdite več senzorjev. V tem primeru komunikacija prek 2 -bitne metode ni mogoča. To lahko nato izboljšamo za izvajanje I2C komunikacije med ATtiny & ESP. To je nekoliko zapleteno, vendar izvedljivo. Delam v drugi nastavitvi, kjer ATTiny pošilja vrednosti rotacijskega dajalnika ESP preko linije I2C.

4. Trenutni tokokrog nadzoruje notranji Vcc ESP. Če uporabljamo ESP12, ga lahko spremenimo tako, da preko zatiča ADC odčita dejansko stanje baterije.

5. V prihodnosti bom objavil tudi spremembo tega, ki se lahko uporablja kot samostojen senzor brez potrebe po MQTT ali katerem koli sistemu za avtomatizacijo doma. Tipalo bo delovalo samostojno in lahko pokliče telefonski klic - za to seveda potrebuje internetno povezavo.

6. In seznam se nadaljuje …

7. Zaščita povratne baterije - KONČANO (dejanske slike naprave so stare in zato ne odražajo MOSFET -a)

Priporočena: