Obsah:

Bezdrátový dveřní senzor - ultra nízký výkon: 5 kroků
Bezdrátový dveřní senzor - ultra nízký výkon: 5 kroků

Video: Bezdrátový dveřní senzor - ultra nízký výkon: 5 kroků

Video: Bezdrátový dveřní senzor - ultra nízký výkon: 5 kroků
Video: Новый Xpeng P7i 2023 с автопилотом и запас хода 700 км./Обзор/Интерьер/Цена/ 2024, Červenec
Anonim
Bezdrátový dveřní senzor - extrémně nízký výkon
Bezdrátový dveřní senzor - extrémně nízký výkon
Bezdrátový dveřní senzor - extrémně nízký výkon
Bezdrátový dveřní senzor - extrémně nízký výkon
Bezdrátový dveřní senzor - extrémně nízký výkon
Bezdrátový dveřní senzor - extrémně nízký výkon
Bezdrátový dveřní senzor - extrémně nízký výkon
Bezdrátový dveřní senzor - extrémně nízký výkon

Ještě další dveřní senzor !! Motivací pro vytvoření tohoto senzoru pro mě bylo, že mnoho z nich, které jsem viděl na internetu, mělo jedno nebo druhé omezení. Některé z cílů senzoru pro mě jsou:

1. Senzor by měl být velmi rychlý - nejlépe méně než 5 sekund

2. Senzor by měl vybít 3,7V Li-ion baterii, protože jich mám kolem sebe desítky

3. Senzor by měl běžet mnoho měsíců na jedno nabití baterie. V režimu spánku by měla spotřebovat <10uA

4. Senzor by měl být schopen probudit se pro přenos kritických dat, jako je stav baterie, i když dveře nejsou delší dobu v provozu.

5. Senzor by měl přenášet data do tématu MQTT, když jsou dveře otevřeny, stejně jako když jsou dveře zavřeny

6. Senzor by měl spotřebovávat stejné množství energie bez ohledu na stav dveří

Funkce senzoru:

Senzor má 2 hlavní ovladače. Prvním je malý mikrořadič ATiny 13A. Druhým je ESP, který je obvykle v režimu spánku a probouzí se pouze tehdy, když to ATiny umožňuje. Celý obvod může být také vyroben pouze pomocí ESP jeho použitím v režimu spánku, ale proud, který spotřebovává, je mnohem větší, než je potřeba k tomu, aby baterie vydržela měsíce, takže ATTiny přijde na záchranu. Slouží pouze k probuzení každých N sekund, vyhledání události dveří nebo události kontroly stavu, pokud existuje, přidrží pin CH_PD ESP na HIGH a odešle příslušný signál typu události do ESP. Tím jeho role končí.

ESP poté převezme kontrolu, přečte typ signálu, připojí se k WiFi/MQTT, zveřejní požadované zprávy včetně úrovně baterie a poté se vypne, čímž vrátí pin EN zpět na LOW.

Použitím těchto čipů tímto způsobem využívám výhod nízkého spánkového proudu ATtiny a nulového klidového proudu ESP, když je čip deaktivován pomocí pinu CH_PD.

Zásoby

Předběžná žádost:

- Znalost programování ATTiny & ESP 01

- Znalost pájení součástek na DPS

ESP-01 (nebo jakýkoli ESP)

ATTiny 13A - AVR

LDO 7333 -A - nízkonapěťový regulátor napětí

Rezistory - 1K, 10K, 3K3

Kondenzátory: 100 uF, 0,1 uF

Tlačítko, mikro zapínač/vypínač - (oba volitelně)

Dioda - IN4148 (nebo jakýkoli ekvivalent)

Li-ion baterie

Jazýčkový spínač

Případ, ve kterém je vše uloženo

Pájka, PCB atd

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

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

Schémata jsou uvedena v přiloženém schématu.

Zahrnul jsem MOSFET kanálu P pro ochranu proti přepólování. Pokud to nepotřebujete, můžete to vynechat. Jakýkoli MOSFET kanálu P s nízkými RDS ON bude stačit.

V současné době ESP nemá schopnost OTA, ale to je pro budoucí zlepšení.

Zdrojový kód smart-door-sensor

Krok 2: Práce obvodu

ATTiny Pracovní tok

Kouzlo se zde děje v tom, jak ATTiny monitoruje polohu dveřního spínače.

Normální možností by bylo připojit k přepínači vytahovací odpor a sledovat jeho stav. To má nevýhodu konstantního proudu spotřebovávaného odporem. Tomu se zde vyhneme tím, že jsem ke sledování přepínače použil dva piny než jeden. Zde jsem použil PB3 a PB4. PB3 je definován jako vstup a PB4 jako výstup s interním INPUT_PULLUP na PB3. Normálně je PB4 držen VYSOKÝ, když je ATtiny v režimu spánku. Tím je zajištěno, že vstupním vytahovacím odporem neprotéká žádný proud bez ohledu na polohu jazýčkového spínače. tj. Pokud je spínač sepnutý, PB3 i PB4 jsou VYSOKÉ, takže mezi nimi neteče žádný proud. Pokud je spínač otevřený, není mezi nimi žádná cesta, takže proud je nulový. Když se ATtiny probudí, napíše LOW na PB4 a poté zkontroluje stav PB3. Pokud je PB3 VYSOKÝ, pak je jazýčkový spínač OTEVŘEN, jinak je ZAVŘEN. Poté odepíše HIGH na PB4.

Komunikace mezi ATtiny a ESP probíhá přes dva piny PB1 / PB2 připojené k Tx / RX ESP. Definoval jsem signál jako

PB1 PB2 ====== Tx Rx

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

0 1 ====== SENSOR_OPEN

1 0 ====== SENZOR_ZAVŘEN

1 1 ====== NEPOUŽITÉ

Kromě odeslání signálu do ESP také vysílá VYSOKÝ puls na PB0, který je připojen ke kolíku ESP CH_PD. Tím se probouzí ESP. První věc, kterou ESP dělá, aby udržel GPIO0 HIGH, který je připojen k CH_PD, a tím zajistil jeho výkon, i když ATTiny odejme PB0 HIGH. Nyní je na ESP, aby určil, kdy chce vypnout napájení.

Poté se připojí k WiFi, MQTT, zveřejní zprávu a vypne se psaním LOW na GPIO0.

ESP 01 Pracovní tok:

Tok ESP je přímý. Probudí se a načte hodnoty pinů Tx/Rx, aby určil, jaký typ zprávy má být zveřejněn. Připojí se k WiFi a MQTT, zveřejní zprávu a vypne se.

Před vypnutím znovu zkontroluje hodnoty vstupních pinů, aby zjistil, zda se od posledního čtení změnily. To se má postarat o rychlé otevírání a zavírání dveří. Pokud tuto kontrolu nemáte, v některých případech vám může uniknout zavření dveří, pokud jsou zavřená do 5-6 sekund od otevření. Praktický scénář otevírání a zavírání dveří do 2 sekund je dobře zachycen smyčkou while, která stále zveřejňuje zprávy, pokud se aktuální stav dveří liší od předchozího. Jediný scénář, který může zaznamenat událost otevření/zavření, je, když se dveře opakovaně otevírají/zavírají během 4-5 sekundového okna, což je velmi nepravděpodobný případ - pravděpodobně případ nějakého dítěte, které si hraje s dveřmi.

Krok 3: Kontrola stavu

Také jsem potřeboval způsob, jak mít zprávu o kontrole stavu z ESP, kde také odešle úroveň baterie ESP, aby bylo zajištěno, že senzor funguje dobře bez ruční kontroly. Za tímto účelem ATTiny vysílá signál WAKE_UP každých 12 hodin. Lze jej konfigurovat pomocí proměnné WAKEUP_COUNT v kódu ATtiny. To je velmi užitečné u dveří nebo oken, která se otevírají jen zřídka, a tak se nemusíte dovědět, jestli je něco v nepořádku se senzorem nebo jeho baterií.

V případě, že nepotřebujete funkci kontroly stavu, pak není potřeba celý koncept používání ATTiny. V takovém případě můžete najít další návrhy, které lidé vytvořili, kde je napájení ESP napájeno přes MOSFET, a tak můžete dosáhnout nulového odběru proudu, když dveře nejsou v provozu. Je třeba se postarat o další věci, jako je současná kresba, aby byla stejná v poloze otevřených dveří a zavřených dveří - za tím účelem jsem někde viděl design, který místo obvyklého 2 stavu používal třípásmový jazýčkový spínač.

Krok 4: Měření výkonu a životnost baterie

Změřil jsem aktuální spotřebu obvodu a při spánku a kolem to trvá ~ 30uA. Pokud jde o datové listy ATTiny, mělo by to být kolem 1-4 uA pro celý obvod včetně klidového proudu LDO, ale pak moje měření ukazuje 30. MOSFET a LDO spotřebovává nevýznamný proud.

Baterie 800mAH by tedy měla vydržet dlouho. Nemám přesné statistiky, ale používám to na 2 mých dveřích více než rok a každá buňka 18650 s přibližně 800mAH v nich vydrží asi 5-6 měsíců na mých hlavních dveřích, které se otevírají a zavírají v nejméně 30krát denně. Ten na střešních dveřích, který se otevírá jen několikrát za týden, vydrží 7–8 měsíců.

Krok 5: Budoucí vylepšení

1. ESP neakceptuje doručení zprávy MQTT. Program lze vylepšit přihlášením k odběru tématu, které zprávu zveřejňuje, k potvrzení doručení, nebo lze k odeslání zprávy pomocí QoS 1 použít knihovnu Async MQTT.

2. Aktualizace OTA: Kód ESP lze upravit tak, aby četl téma MQTT pro aktualizaci, a tak vstoupit do režimu OTA pro příjem souboru.

3. ESP01 lze nahradit ESP-12, abyste získali přístup k více vstupním PINům, a tak k němu můžete připojit více senzorů. V takovém případě není komunikace přes 2bitovou metodu možná. To lze poté vylepšit a implementovat komunikaci I2C mezi ATtiny a ESP. Je to trochu komplikované, ale funkční. Mám to funguje v jiném nastavení, kde ATTiny posílá hodnoty rotačního kodéru do ESP přes I2C linku.

4. Aktuální obvod monitoruje interní Vcc ESP. Pokud použijeme ESP12, pak to lze upravit tak, aby odečetlo skutečnou úroveň baterie pomocí kolíku ADC.

5. V budoucnu také zveřejním modifikaci, která může být použita jako samostatný senzor bez potřeby MQTT nebo jakéhokoli systému domácí automatizace. Senzor bude fungovat samostatně a při spuštění může telefonovat - samozřejmě k tomu potřebuje připojení k internetu.

6. A seznam pokračuje…

7. Reverzní ochrana baterie - HOTOVO (Skutečné obrázky zařízení jsou staré, a proto neodrážejí MOSFET)

Doporučuje: