INHOUDSOPGAWE:

Draadlose deursensor - ultra lae krag: 5 stappe
Draadlose deursensor - ultra lae krag: 5 stappe

Video: Draadlose deursensor - ultra lae krag: 5 stappe

Video: Draadlose deursensor - ultra lae krag: 5 stappe
Video: 🛜Neil Degrasse Tyson, WRONG about Tesla?!? 🛜 ​⁠@joerogan (30min) 2024, November
Anonim
Draadlose deursensor - ultra lae krag
Draadlose deursensor - ultra lae krag
Draadlose deursensor - ultra lae krag
Draadlose deursensor - ultra lae krag
Draadlose deursensor - ultra lae krag
Draadlose deursensor - ultra lae krag
Draadlose deursensor - ultra lae krag
Draadlose deursensor - ultra lae krag

Nog 'n deursensor !! Die motivering vir my om hierdie sensor te skep, was dat baie wat ek op die internet gesien het, die een of ander beperking het. Sommige van die doelwitte van die sensor vir my is:

1. Die sensor moet baie vinnig wees - verkieslik minder as 5 sekondes

2. Die sensor moet 'n 3.7V Li-ion battery laat loop, want ek het tientalle daarvan rondgelê

3. Die sensor behoort baie maande op 'n enkele lading van die battery te werk. Dit moet minder as 10uA in die slaapmodus verbruik

4. Die sensor moet kan wakker word vir die oordrag van kritieke data, soos die batterystatus, selfs as die deur nie lank gebruik word nie.

5. Die sensor moet data na 'n MQTT -onderwerp oordra wanneer die deur oopgemaak word, sowel as wanneer die deur toegemaak word

6. Die sensor moet dieselfde hoeveelheid krag verbruik, ongeag die toestand van die deur

Werking van die sensor:

Die sensor het 2 hoofbeheerders. Die eerste is 'n klein mikrobeheerder ATiny 13A. Die tweede is die ESP wat gewoonlik in die slaapmodus is en eers wakker word as die ATiny dit moontlik maak. Die hele stroombaan kan ook slegs deur die ESP gemaak word deur dit in die slaapmodus te gebruik, maar die stroom wat dit verbruik, is baie groter as wat nodig is om 'n battery maande lank te hou, sodat die ATTiny tot die redding kom. Dit dien slegs om elke N sekonde wakker te word, na 'n deurgebeurtenis of 'n gesondheidsondersoek te kyk, as dit een is, hou dit die CH_PD -pen van die ESP op HIGH en stuur die toepaslike sein van die tipe gebeurtenis na die ESP. Sy rol eindig daar.

Die ESP neem dan oor, lees die seintipe, maak verbinding met WiFi/MQTT, publiseer die vereiste boodskappe, insluitend die batteryniveau, en skakel hom dan uit deur die EN -pen terug te bring na LOW.

Deur hierdie skyfies op hierdie manier te gebruik, trek ek voordeel uit die lae slaapstroom van die ATtiny en die nul -ledige stroom van die ESP as die chip uitgeskakel word via CH_PD -pen.

Voorrade

Vooraf aanvraag:

- Kennis van die programmering van ATTiny & ESP 01

- Kennis van soldeerkomponente op 'n PCB

ESP-01 (of enige ESP)

ATTiny 13A - AVR

LDO 7333 -A - Lae -uitvalspanningsreguleerder

Weerstande - 1K, 10K, 3K3

Kondensators: 100uF, 0.1 uF

Drukknopskakelaar, mikro AAN/UIT -skakelaar - (beide opsioneel)

Diode - IN4148 (of enige ekwivalent)

Li-ion battery

Rietskakelaar

'N Saak om dit alles te huisves

Soldeer, PCB ens

Stap 1: Skema's en bronkode

Skema's en bronkode
Skema's en bronkode

Die skema is soos aangetoon in die aangehegte diagram.

Ek het 'n P Channel MOSFET ingesluit vir beskerming teen omgekeerde polariteit. As u dit nie nodig het nie, kan u dit weglaat. Enige P -kanaal MOSFET met 'n lae Rds AAN sal doen.

Tans beskik die ESP nie oor OTA nie, maar dit is vir toekomstige verbetering.

Bronkode smart-door-sensor

Stap 2: Werk van die kring

ATTiny Werkstroom

Die magie hier vind plaas in hoe die ATTiny die posisie van die deurskakelaar monitor.

Die normale opsie sou wees om 'n optrekweerstand aan die skakelaar te koppel en die toestand daarvan te monitor. Dit het die nadeel van konstante stroom wat deur die optelweerstand verbruik word. Die manier waarop dit hier vermy is, is dat ek twee penne gebruik het om die skakelaar eerder as een te monitor. Ek het PB3 en PB4 hier gebruik. PB3 word gedefinieer as invoer en PB4 as uitvoer met 'n interne INPUT_PULLUP op PB3. Gewoonlik word PB4 HOOG gehou wanneer ATtiny in die slaapmodus is, wat verseker dat daar geen stroomvloei deur die ingangstrekweerstand is nie, ongeag die posisie van die rietskakelaar. ie. As die skakelaar gesluit is, is beide PB3 en PB4 HOOG en vloei daar dus geen stroom tussen hulle nie. As die skakelaar oop is, is daar geen pad tussen hulle nie, en die stroom is dus nul. As die ATtiny wakker word, skryf dit 'n LAAG op PB4 en kyk dan na die toestand van PB3. As PB3 HOOG is, dan is die rietskakelaar OOP, anders is dit GESLUIT. Dit skryf dan 'n HOOG terug op PB4.

Die kommunikasie tussen die ATtiny en ESP geskied via twee penne PB1 / PB2 wat gekoppel is aan Tx / RX van ESP. Ek het die sein gedefinieer as

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (gesondheidstoets)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_GESLUIT

1 1 ====== ONGEBRUIK

Behalwe dat die sein na die ESP gestuur word, stuur dit ook 'n HOOG puls op PB0 wat aan die ESP CH_PD -pen gekoppel is. Dit maak die ESP wakker. Die eerste ding wat ESP doen, is om GPIO0 HIGH te hou wat aan CH_PD gekoppel is, waardeur sy kragte verseker word, selfs as die ATTiny die PB0 HIGH wegneem. Die beheer is nou by die ESP om te bepaal wanneer hy wil afskakel.

Dit maak dan verbinding met WiFi, MQTT, plaas die boodskap en skakel homself af deur LOW op GPIO0 te skryf.

ESP 01 Werkvloei:

ESP vloei is reguit vorentoe. Dit word wakker en lees die waardes van die Tx/Rx -penne om te bepaal watter tipe boodskap gepos moet word. Koppel aan WiFi en MQTT, plaas die boodskap en skakel homself af.

Voordat dit afgeskakel word, kyk dit weer na die waardes van die invoerpenne om te sien of dit verander het sedert dit laas gelees is. Dit is nodig om die deur vinnig oop en toe te maak. As u nie hierdie tjek het nie, kan u die sluiting van die deur in sommige gevalle misloop as dit binne 5-6 sekondes van die opening gesluit is. 'N Praktiese scenario waarin die deur binne 2 sekondes oopgemaak of toegemaak word, word goed vasgelê deur die while lus wat die boodskappe aanhou plaas, solank die huidige toestand van die deur anders is as die vorige. Die enigste scenario wat dit kan misloop om al die oop/toe gebeurtenisse op te neem, is wanneer die deur herhaaldelik binne 4-5 sekondes oopgemaak/toegemaak word, wat 'n baie onwaarskynlike geval is - waarskynlik 'n geval van 'n kind wat met die deur speel.

Stap 3: Gesondheidsondersoek

Ek het ook 'n manier nodig gehad om 'n gesondheidsboodskap van die ESP af te stuur, waarheen dit ook die batteryniveau van die ESP stuur, om te verseker dat die sensor goed werk sonder 'n handmatige inspeksie. Hiervoor stuur die ATTiny elke 12 uur 'n WAKE_UP -sein. Dit kan gekonfigureer word via die veranderlike WAKEUP_COUNT in die ATtiny -kode. Dit is baie handig vir deure of vensters wat selde oopgemaak word, en daarom sal u moontlik nie weet as daar iets met die sensor of die battery is nie.

As u nie die gesondheidskontrole -funksie nodig het nie, is die hele konsep van die gebruik van die ATTiny nie nodig nie. In daardie geval kan u ander ontwerpe vind wat mense geskep het waar die toevoer na die ESP via 'n MOSFET gevoer word, en u dus 'n nulstroom trekking kan behaal as die deur nie bedien word nie. Daar is ander dinge wat in ag geneem moet word, soos die huidige trekking om dieselfde te wees in die deur oop en deur toe - daarvoor het ek iewers 'n ontwerp gesien wat gebruik gemaak het van 'n 3 -staat rietskakelaar in plaas van die gewone 2 -toestand.

Stap 4: Kragmetings en batterylewe

Ek het die stroomverbruik van die stroombaan gemeet en dit neem ongeveer 30uA as ek slaap en rondgaan. Volgens die gegewensblaaie van ATTiny, behoort dit ongeveer 1-4 uA vir die hele kring te wees, insluitend stilstaande stroom van die LDO, maar dan toon my metings 30. Die MOSFET en LDO verbruik onbeduidende stroom.

'N 800 mAH -battery behoort dus lank te hou. Ek het nie presiese statistieke nie, maar ek gebruik dit nou al meer as 'n jaar op 2 van my deure, en elke 18650-sel met ongeveer 800mAH in hulle hou ongeveer 5-6 maande op my hoofdeur wat oopmaak en sluit om minstens 30 keer per dag. Die een op die dakdeur wat slegs 'n paar keer in 'n week oopmaak, dit duur 7-8 maande.

Stap 5: Toekomstige verbeterings

1. Die ESP erken nie die aflewering van die MQTT -boodskap nie. Die program kan verbeter word deur in te teken op die onderwerp waarin dit die boodskap publiseer om die aflewering te bevestig, of 'n Async MQTT -biblioteek kan gebruik word om 'n boodskap met QoS 1 te plaas.

2. OTA -opdatering: die ESP -kode kan gewysig word om 'n MQTT -onderwerp vir 'n opdatering te lees en gaan dus in die OTA -modus om 'n lêer te ontvang.

3. ESP01 kan vervang word met ESP-12 om toegang tot meer invoer-PIN's te kry en kan dus meer sensors daaraan koppel. In daardie geval is kommunikasie via die 2 bis metode nie moontlik nie. Dit kan dan verbeter word om I2C -kommunikasie tussen ATtiny en ESP te implementeer. Dit is 'n bietjie ingewikkeld, maar werkbaar. Ek laat dit werk in 'n ander opset waar 'n ATTiny roterende enkodeerderwaardes na die ESP oor I2C -lyn stuur.

4. Die stroombaan monitor die interne Vcc van die ESP. As ons ESP12 gebruik, kan dit aangepas word om die werklike batteryniveau te lees via die ADC -pen.

5. In die toekoms sal ek ook 'n wysiging hiervan plaas, wat as 'n selfstandige sensor gebruik kan word sonder dat 'n MQTT of 'n tuisautomatiseringstelsel nodig is. Die sensor werk selfstandig en kan 'n oproep maak as dit geaktiveer word - dit het natuurlik 'n internetverbinding hiervoor nodig.

6. En die lys gaan aan …

7. Omgekeerde batterybeskerming - GEDOEN (die werklike apparaatfoto's is oud en weerspieël dus nie die MOSFET nie)

Aanbeveel: