Innholdsfortegnelse:

Trådløs dørsensor - Ultra Low Power: 5 trinn
Trådløs dørsensor - Ultra Low Power: 5 trinn

Video: Trådløs dørsensor - Ultra Low Power: 5 trinn

Video: Trådløs dørsensor - Ultra Low Power: 5 trinn
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Trådløs dørsensor - Ultra Low Power
Trådløs dørsensor - Ultra Low Power
Trådløs dørsensor - Ultra Low Power
Trådløs dørsensor - Ultra Low Power
Trådløs dørsensor - Ultra Low Power
Trådløs dørsensor - Ultra Low Power
Trådløs dørsensor - Ultra Low Power
Trådløs dørsensor - Ultra Low Power

Nok en dør sensor !! Motiveringen for meg for å lage denne sensoren var at mange jeg så på internett hadde den ene eller den andre begrensningen. Noen av målene med sensoren for meg er:

1. Sensoren skal være veldig rask - helst mindre enn 5 sek

2. Sensoren skal kjøre av et 3,7V Li-ion-batteri ettersom jeg har dusinvis av dem liggende

3. Sensoren skal kjøre i mange måneder på en enkelt lading av batteriet. Det bør forbruke <10uA i hvilemodus

4. Sensoren skal kunne våkne for å overføre kritiske data, for eksempel batteristatus, selv når døren ikke er betjent på lenge.

5. Sensoren skal overføre data til et MQTT -emne når døren åpnes så vel som når døren er lukket

6. Sensoren bør bruke samme mengde strøm uavhengig av dørens tilstand

Sensorens arbeid:

Sensoren har 2 hovedkontroller. Den første er liten mikrokontroller ATiny 13A. Den andre er ESP som vanligvis er i hvilemodus og først våkner når ATiny gjør det mulig. Hele kretsen kan også lages av bare ESP ved å bruke den i hvilemodus, men strømmen den bruker er langt større enn nødvendig for at et batteri skal vare i flere måneder, så ATTiny kommer til unnsetning. Det tjener bare formålet med å våkne hvert N sekund, se etter en dørhendelse eller en helsekontrollhendelse, hvis det er en, holder den CH_PD -pinnen til ESP til HIGH og sender det passende signalet om hendelsestypen til ESP. Dens rolle ender der.

ESP tar deretter over, leser signaltypen, kobler seg til WiFi/MQTT, publiserer de nødvendige meldingene inkludert batterinivå og slår seg deretter AV ved å bringe EN -pinnen tilbake til LAV.

Ved å bruke disse sjetongene på denne måten drar jeg fordel av den lave søvnstrømmen til ATtiny og null tomgangsstrøm for ESP når brikken er deaktivert via CH_PD -pin.

Rekvisita

Forhåndskrav:

- Kunnskap om programmering av ATTiny & ESP 01

- Kunnskap om loddingskomponenter på en PCB

ESP-01 (eller hvilken som helst ESP)

ATTiny 13A - AVR

LDO 7333 -A - Lavt frafallsspenningsregulator

Motstander - 1K, 10K, 3K3

Kondensatorer: 100uF, 0,1 uF

Trykknappbryter, mikro PÅ/AV -bryter - (begge valgfrie)

Diode - IN4148 (eller tilsvarende)

Li-ion batteri

Reed Switch

En sak for å huse alt

Lodding, PCB osv

Trinn 1: Skjematikk og kildekode

Skjema og kildekode
Skjema og kildekode

Skjematikk er som vist i vedlagte diagram.

Jeg har inkludert en P Channel MOSFET for beskyttelse mot omvendt polaritet. Hvis du ikke trenger dette, kan du utelate det. Enhver P Channel MOSFET med lav Rds ON vil gjøre.

For øyeblikket har ESP ikke OTA, men det er for fremtidig forbedring.

Kildekode smart-door-sensor

Trinn 2: Arbeid av kretsen

ATTiny Arbeidsflyt

Magien her skjer i hvordan ATTiny overvåker posisjonen til dørbryteren.

Det vanlige alternativet ville være å feste en opptrekksmotstand til bryteren og fortsette å overvåke tilstanden. Dette har ulempen ved konstant strøm som forbrukes av trekkmotstanden. Måten dette er unngått her på er at jeg har brukt to pinner til å overvåke bryteren i stedet for en. Jeg har brukt PB3 og PB4 her inne. PB3 er definert som input og PB4 som output med en intern INPUT_PULLUP på PB3. Normalt holdes PB4 HØY når ATtiny er i dvalemodus. Dette sikrer at det ikke er noen strøm gjennom inngangsmotstanden uavhengig av posisjonen til sivbryteren. dvs. Hvis bryteren er lukket, er både PB3 og PB4 HØY, og det strømmer derfor ingen strøm mellom dem. Hvis bryteren er åpen, er det ingen vei mellom dem, og strømmen er derfor null. Når ATtiny våkner, skriver den en LAV på PB4 og kontrollerer deretter tilstanden til PB3. Hvis PB3 er HIGH, er reed -bryteren Åpen, ellers er den STENGT. Den skriver deretter tilbake en HØY på PB4.

Kommunikasjonen mellom ATtiny og ESP skjer via to pinner PB1 / PB2 koblet til Tx / RX på ESP. Jeg har definert signalet som

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (helsesjekk)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_CLOSED

1 1 ====== UBRUKT

Bortsett fra å sende signalet til ESP sender den også en HØY puls på PB0 som er koblet til ESP CH_PD -pinnen. Dette vekker ESP. Det første ESP gjør det for å holde GPIO0 HIGH som er koblet til CH_PD og derved sikre kraften opp selv om ATTiny tar bort PB0 HIGH. Kontrollen er nå hos ESP for å avgjøre når den vil slå av.

Den kobles deretter til WiFi, MQTT, legger ut meldingen og slår seg av ved å skrive LOW på GPIO0.

ESP 01 Arbeidsflyt:

ESP -strømmen er rett frem. Den våkner og leser verdiene til Tx/Rx -pinnene for å bestemme hvilken type melding som skal legges ut. Kobler til WiFi og MQTT, legger ut meldingen og slår seg av.

Før den slås av, sjekker den igjen verdiene til inngangspinnene for å se om de har endret seg siden den sist ble lest. Dette er for å ta vare på en rask åpning og lukking av døren. Hvis du ikke har denne sjekken, er det noen tilfeller du kan gå glipp av lukningen av døren hvis den er lukket innen 5-6 sekunder etter åpning. Et praktisk scenario med at døren åpnes og lukkes innen 2 sekunder eller så, blir godt fanget opp av mens loop som fortsetter å legge ut meldingene så lenge dørens nåværende tilstand er forskjellig fra den forrige. Det eneste scenariet det kan gå glipp av å registrere alle åpne/lukke hendelser er når døren gjentatte ganger åpnes/lukkes i løpet av 4-5 sek vindu, noe som er et svært usannsynlig tilfelle - sannsynligvis et tilfelle av et barn som leker med døren.

Trinn 3: Helsekontroll

Jeg trengte også en måte å få en helsemelding fra ESP der den sender batterinivået til ESP også for å sikre at sensoren fungerer fint uten manuell inspeksjon. For dette sender ATTiny et WAKE_UP -signal hver 12. time. Den kan konfigureres via variabelen WAKEUP_COUNT i ATtiny -koden. Dette er veldig nyttig for dører eller vinduer som sjelden åpnes, så du kan ikke få vite om det er noe galt med sensoren eller batteriet.

Hvis du ikke trenger helsesjekkfunksjonaliteten, er ikke hele konseptet med å bruke ATTiny nødvendig. I så fall kan du finne andre design folk har laget der forsyningen til ESP mates via en MOSFET, og slik at du kan oppnå nullstrømstrekk når døren ikke blir betjent. Det er andre ting som skal tas vare på, for eksempel den nåværende trekningen for å være den samme i døråpning og dørlukkeposisjon - for det så jeg et sted et design som gjorde bruk av en 3 -statig sivbryter i stedet for den vanlige 2 -tilstanden.

Trinn 4: Strømmålinger og batterilevetid

Jeg har målt strømforbruket til kretsen, og det tar ~ 30uA når jeg sover og rundt. Når vi går etter databladene til ATTiny, bør det være rundt 1-4 uA for hele kretsen, inkludert hvilestrøm for LDO, men da viser målingene mine 30. MOSFET og LDO bruker ubetydelig strøm.

Så et 800mAH batteri skal vare lenge. Jeg har ikke nøyaktig statistikk, men jeg har brukt den på 2 av dørene mine i mer enn et år nå, og hver 18650 celle med rundt 800 mAH igjen i dem varer i omtrent 5-6 måneder på hoveddøren min som åpnes og lukkes kl. minst 30 ganger om dagen. Den på takdøren som åpnes bare noen få ganger i uken, den varer 7-8 måneder.

Trinn 5: Fremtidige forbedringer

1. ESP godkjenner ikke levering av MQTT -meldingen. Programmet kan forbedres ved å abonnere på emnet det publiserer meldingen for å bekrefte levering eller et Async MQTT -bibliotek kan brukes til å legge ut en melding med QoS 1.

2. OTA -oppdatering: ESP -koden kan endres for å lese et MQTT -emne for en oppdatering, og så gå inn i en OTA -modus for å motta en fil.

3. ESP01 kan erstattes med ESP-12 for å få tilgang til flere PIN-koder, og dermed kan flere sensorer festes til det samme. I så fall er kommunikasjon via 2 -bit -metoden ikke mulig. Dette kan deretter forbedres for å implementere I2C -kommunikasjon mellom ATtiny og ESP. Dette er litt komplisert, men gjennomførbart. Jeg har det til å fungere i et annet oppsett der en ATTiny sender roterende koderverdier til ESP over I2C -linjen.

4. Den nåværende kretsen overvåker den interne Vcc i ESP. Hvis vi bruker ESP12, kan dette endres for å lese det faktiske batterinivået via ADC -pinnen.

5. I fremtiden vil jeg også legge ut en modifikasjon av denne som kan brukes som en frittstående sensor uten behov for en MQTT eller noe hjemmeautomatiseringssystem. Sensoren fungerer frittstående og kan ringe når den utløses - selvfølgelig trenger den en internettforbindelse for dette.

6. Og listen fortsetter …

7. Omvendt batteribeskyttelse - FERDIG (Faktiske enhetsbilder er gamle og gjenspeiler derfor ikke MOSFET)

Anbefalt: