Obsah:

Bezdrôtový senzor dverí - extrémne nízky výkon: 5 krokov
Bezdrôtový senzor dverí - extrémne nízky výkon: 5 krokov

Video: Bezdrôtový senzor dverí - extrémne nízky výkon: 5 krokov

Video: Bezdrôtový senzor dverí - extrémne nízky výkon: 5 krokov
Video: Jak odemknout fabii bez klíčů rukama za 2 vteřiny 2024, November
Anonim
Bezdrôtový senzor dverí - extrémne nízky výkon
Bezdrôtový senzor dverí - extrémne nízky výkon
Bezdrôtový senzor dverí - extrémne nízky výkon
Bezdrôtový senzor dverí - extrémne nízky výkon
Bezdrôtový senzor dverí - extrémne nízky výkon
Bezdrôtový senzor dverí - extrémne nízky výkon
Bezdrôtový senzor dverí - extrémne nízky výkon
Bezdrôtový senzor dverí - extrémne nízky výkon

Ďalší senzor dverí !! Motiváciou pre vytvorenie tohto senzora bolo, že mnohé z nich, ktoré som videl na internete, mali jedno alebo druhé obmedzenie. Niektoré z cieľov senzora pre mňa sú:

1. Senzor by mal byť veľmi rýchly - najlepšie menej ako 5 sekúnd

2. Senzor by mal vybiť z 3,7 V lítium-iónovej batérie, pretože ich mám okolo seba desiatky

3. Senzor by mal fungovať mnoho mesiacov na jedno nabitie batérie. V režime spánku by mala spotrebovať <10uA

4. Senzor by mal byť schopný prebudiť sa na prenos kritických údajov, ako je stav batérie, aj keď dvere nie sú dlhší čas v prevádzke.

5. Senzor by mal prenášať údaje na tému MQTT pri otvorení dverí aj pri ich zatvorení

6. Senzor by mal spotrebovať rovnaké množstvo energie bez ohľadu na stav dverí

Fungovanie senzora:

Senzor má 2 hlavné ovládače. Prvým je malý mikrořadič ATiny 13A. Druhým je ESP, ktorý je zvyčajne v režime spánku a prebúdza sa, iba keď to ATiny umožňuje. Celý obvod je možné vytvoriť aj pomocou ESP tak, že ho použijete v režime spánku, ale prúd, ktorý spotrebuje, je oveľa väčší, ako je potrebné na to, aby batéria vydržala mesiace, takže ATTiny príde na pomoc. Slúži iba na to, aby sa prebudil každých N sekúnd, hľadal udalosť na dverách alebo udalosť kontroly stavu, ak existuje, drží pin CH_PD ESP na HIGH a vysiela príslušný signál typu udalosti do ESP.. Tam jeho úloha končí.

ESP potom prevezme kontrolu, načíta typ signálu, pripojí sa k WiFi/MQTT, zverejní požadované správy vrátane stavu batérie a potom sa vypne, čím prepne pin EN späť na LOW.

Použitím týchto čipov týmto spôsobom využívam výhody nízkeho spánkového prúdu ATtiny a nulového voľnobežného prúdu ESP, keď je čip deaktivovaný pomocou pinu CH_PD.

Zásoby

Predbežná požiadavka:

- Znalosť programovania ATTiny & ESP 01

- Znalosť spájkovacích súčiastok na DPS

ESP-01 (alebo akýkoľvek ESP)

ATTiny 13A - AVR

LDO 7333 -A - regulátor nízkeho napätia

Rezistory - 1K, 10K, 3K3

Kondenzátory: 100 uF, 0,1 uF

Tlačidlový spínač, mikro zapínač/vypínač - (oba voliteľné)

Dióda - IN4148 (alebo akýkoľvek ekvivalent)

Li-ion batéria

Jazýčkový spínač

Prípad, v ktorom je všetko

Spájka, PCB atď

Krok 1: Schémy a zdrojový kód

Schémy a zdrojový kód
Schémy a zdrojový kód

Schéma je znázornená na priloženom obrázku.

Zahrnul som MOSFET kanála P na ochranu proti obrátenej polarite. Ak to nepotrebujete, môžete to vynechať. Akýkoľvek MOSFET kanála P s nízkym RDS ON bude fungovať.

V súčasnosti ESP nemá schopnosť OTA, ale to je pre budúce zlepšenie.

Inteligentný dverový snímač zdrojového kódu

Krok 2: Práca na obvode

ATTiny Pracovný tok

Kúzlo sa tu deje v tom, ako ATTiny monitoruje polohu spínača dverí.

Normálnou možnosťou by bolo pripojiť k prepínaču vyťahovací odpor a pokračovať v monitorovaní jeho stavu. To má nevýhodu konštantného prúdu, ktorý spotrebúva pull up odpor. Tu sa tomu zabránilo tým, že som použil dva piny na monitorovanie prepínača, nie jeden. Tu som použil PB3 a PB4. PB3 je definovaný ako vstup a PB4 ako výstup s vnútorným INPUT_PULLUP na PB3. Normálne je PB4 držaný HIGH, keď je ATtiny v režime spánku. Tým je zaistené, že cez vstupný pull up odpor nepreteká žiadny prúd bez ohľadu na polohu jazýčkového spínača. tj. Ak je spínač zatvorený, PB3 aj PB4 sú VYSOKÉ, takže medzi nimi neprúdi žiadny prúd. Ak je spínač otvorený, neexistuje medzi nimi žiadna cesta, takže prúd je nulový. Keď sa ATtiny prebudí, napíše LOW na PB4 a potom skontroluje stav PB3. Ak je PB3 VYSOKÝ, potom je jazýčkový spínač OTVORENÝ, inak je ZATVORENÝ. Potom to odpíše HIGH na PB4.

Komunikácia medzi ATtiny a ESP prebieha prostredníctvom dvoch pinov PB1 / PB2 pripojených k Tx / RX ESP. Signál som definoval ako

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (kontrola stavu)

0 1 ====== SENSOR_OPEN

1 0 ====== SENZOR_ZATVORENÝ

1 1 ====== nepoužité

Okrem odoslania signálu do ESP vysiela aj VYSOKÝ impulz na PB0, ktorý je pripojený na pin ESP CH_PD. Tým sa prebúdza ESP. Prvá vec, ktorú ESP robí, je udržať GPIO0 HIGH, ktorý je pripojený k CH_PD, a tým zaistiť jeho výkon, aj keď ATTiny odoberie PB0 HIGH. Teraz je na riadení ESP, aby určil, kedy sa chce vypnúť.

Potom sa pripojí k WiFi, MQTT, zverejní správu a vypne sa napísaním LOW na GPIO0.

ESP 01 Pracovný tok:

Tok ESP je priamy. Prebudí sa a prečíta hodnoty pinov Tx/Rx, aby určil, aký typ správy sa má odoslať. Pripojí sa k WiFi a MQTT, zverejní správu a vypne sa.

Pred vypnutím znova skontroluje hodnoty vstupných pinov, aby zistil, či sa od posledného čítania zmenili. Ten sa má postarať o rýchle otváranie a zatváranie dverí. Ak túto kontrolu nemáte, v niektorých prípadoch vám môže chýbať zatváranie dverí, ak sú zatvorené do 5-6 sekúnd od otvorenia. Praktický scenár otvárania a zatvárania dverí zhruba do 2 sekúnd je dobre zachytený v slučke while, ktorá odosiela správy, pokiaľ sa aktuálny stav dverí líši od predchádzajúceho. Jediný scenár, ktorý môže chýbať pri zaznamenávaní všetkých udalostí otvorenia/zatvorenia, je, keď sa dvere opakovane otvárajú/zatvárajú v priebehu 4 až 5 sekúnd, čo je veľmi nepravdepodobný prípad - pravdepodobne prípad, keď sa dieťa s dverami hrá.

Krok 3: Kontrola stavu

Tiež som potreboval spôsob, ako mať správu o stave z ESP, kde tiež odošle úroveň batérie ESP, aby sa zabezpečilo, že senzor funguje bez manuálnej kontroly. Za týmto účelom ATTiny posiela signál WAKE_UP každých 12 hodín. Je možné ho nakonfigurovať prostredníctvom premennej WAKEUP_COUNT v kóde ATtiny. Je to veľmi užitočné pre dvere alebo okná, ktoré sa otvárajú len zriedka, a tak sa nemusíte dozvedieť, či niečo nie je v poriadku so snímačom alebo s jeho batériou.

V prípade, že nepotrebujete funkciu kontroly stavu, potom nie je potrebný celý koncept používania ATTiny. V takom prípade nájdete ďalšie návrhy, ktoré ľudia vytvorili, kde je napájanie do ESP napájané cez MOSFET, a tak môžete dosiahnuť nulový odber prúdu, keď dvere nie sú v prevádzke. Je potrebné postarať sa o ďalšie veci, ako napríklad o to, aby bol súčasný ťah rovnaký v polohe otvorených a zatvorených dverí - kvôli tomu som niekde videl dizajn, ktorý namiesto bežného 2 stavu využíval 3 -stupňový jazýčkový spínač.

Krok 4: Merania výkonu a životnosť batérie

Zmeral som aktuálnu spotrebu obvodu a pri spánku a naokolo to trvá ~ 30uA. Ak sa pozrieme na listy ATTiny, malo by to byť okolo 1-4 uA pre celý obvod vrátane pokojového prúdu LDO, ale potom moje merania ukazujú 30. MOSFET a LDO spotrebúvajú nevýznamný prúd.

Batéria 800mAH by teda mala vydržať dlho. Nemám presné štatistiky, ale používam ho na 2 svojich dverách viac ako rok a každá bunka 18650 s približne 800 mAh v nich vydrží asi 5 až 6 mesiacov na mojich hlavných dverách, ktoré sa otvárajú a zatvárajú o najmenej 30 -krát denne. Ten na strešných dverách, ktorý sa otvára iba niekoľkokrát za týždeň, vydrží 7-8 mesiacov.

Krok 5: Budúce zlepšenia

1. ESP neakceptuje doručenie správy MQTT. Program je možné vylepšiť prihlásením sa k téme, v ktorej je správa zverejnená, na potvrdenie doručenia, alebo na odoslanie správy s QoS 1 možno použiť knižnicu Async MQTT.

2. Aktualizácia OTA: Kód ESP je možné upraviť tak, aby čítal tému MQTT pre aktualizáciu, a tak vstúpiť do režimu OTA na prijatie súboru.

3. ESP01 môže byť nahradený ESP-12, aby ste získali prístup k viacerým vstupným PIN, a tak k nemu môžete pripojiť viac senzorov. V takom prípade nie je možná komunikácia prostredníctvom 2 -bitovej metódy. To je potom možné zlepšiť tak, aby sa implementovala komunikácia I2C medzi ATtiny a ESP. Je to trochu komplikované, ale uskutočniteľné. Mám to fungujúce v inom nastavení, kde ATTiny posiela hodnoty rotačného enkodéra do ESP cez linku I2C.

4. Aktuálny obvod monitoruje interný Vcc ESP. Ak použijeme ESP12, môže byť tento upravený tak, aby čítal aktuálnu úroveň batérie pomocou kolíka ADC.

5. V budúcnosti tiež zverejním modifikáciu, ktorá môže byť použitá ako samostatný senzor bez potreby MQTT alebo akéhokoľvek systému domácej automatizácie. Senzor bude fungovať samostatne a po spustení môže telefonovať - samozrejme na to potrebuje internetové pripojenie.

6. A zoznam pokračuje …

7. Reverzná ochrana batérie - HOTOVO (Skutočné obrázky zariadení sú staré, a preto neodzrkadľujú MOSFET)

Odporúča: