Indholdsfortegnelse:

Trådløs dørføler - ultra lav effekt: 5 trin
Trådløs dørføler - ultra lav effekt: 5 trin

Video: Trådløs dørføler - ultra lav effekt: 5 trin

Video: Trådløs dørføler - ultra lav effekt: 5 trin
Video: Core of natural pesticide, JADAM Wetting Agent (JWA), [Multi-language subtitles] 2024, November
Anonim
Trådløs dørføler - Ultra Low Power
Trådløs dørføler - Ultra Low Power
Trådløs dørføler - Ultra Low Power
Trådløs dørføler - Ultra Low Power
Trådløs dørføler - Ultra Low Power
Trådløs dørføler - Ultra Low Power
Trådløs dørføler - Ultra Low Power
Trådløs dørføler - Ultra Low Power

Endnu en dør sensor !! Tja, motivationen for mig til at oprette denne sensor var, at mange, som jeg så på internettet, havde den ene eller den anden begrænsning. Nogle af målene med sensoren for mig er:

1. Sensoren skal være meget hurtig - helst mindre end 5 sek

2. Sensoren skal køre et 3.7V Li-ion batteri, da jeg har snesevis af dem liggende

3. Sensoren skal køre i mange måneder på en enkelt opladning af batteriet. Det bør forbruge <10uA i dvaletilstand

4. Sensoren skal være i stand til at vågne op til overførsel af kritiske data som f.eks. Batteristatus, selvom døren ikke betjenes i lang tid.

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

6. Sensoren skal forbruge den samme mængde strøm uanset dørens tilstand

Sensorens funktion:

Sensoren har 2 hovedkontroller. Den første er lille mikrokontroller ATiny 13A. Den anden er ESP, som normalt er i dvaletilstand og kun vågner, når ATiny muliggør det. Hele kredsløbet kan også laves af bare ESP ved at bruge det i dvaletilstand, men strømmen det forbruger er langt større end nødvendigt for at et batteri kan holde i flere måneder, så ATTiny kommer til undsætning. Det tjener kun formålet med at vågne op hvert N sekund, se efter en dørhændelse eller en sundhedstjekhændelse, hvis der er en, holder den CH_PD pin på ESP til HIGH og sender det relevante signal om hændelsestypen til ESP. Dens rolle ender der.

ESP overtager derefter, læser signaltypen, opretter forbindelse til WiFi/MQTT, udgiver de nødvendige meddelelser inklusive batteriniveau og slukker derefter sig selv ved at bringe EN -stiften tilbage til LAV.

Ved at bruge disse chips på denne måde drager jeg fordel af den lave søvnstrøm i ATtiny og nul inaktiv strøm af ESP, når chippen deaktiveres via CH_PD pin.

Forbrugsvarer

Forud:

- Kendskab til programmering af ATTiny & ESP 01

- Kendskab til loddekomponenter på et printkort

ESP-01 (eller enhver ESP)

ATTiny 13A - AVR

LDO 7333 -A - Lavt frafaldsspændingsregulator

Modstande - 1K, 10K, 3K3

Kondensatorer: 100uF, 0,1 uF

Trykknapkontakt, mikro ON/OFF -kontakt - (begge valgfri)

Diode - IN4148 (eller tilsvarende)

Li-ion batteri

Reed Switch

En sag til at huse det hele

Lodde, PCB osv

Trin 1: Skemaer & kildekode

Skemaer og kildekode
Skemaer og kildekode

Skemaer er som vist i vedlagte diagram.

Jeg har inkluderet en P Channel MOSFET til beskyttelse mod omvendt polaritet. Hvis du ikke har brug for dette, kan du undlade det. Enhver P -kanal MOSFET med en lav Rds ON gør.

På nuværende tidspunkt har ESP ikke mulighed for OTA, men det er til fremtidig forbedring.

Kildekode smart-door-sensor

Trin 2: Kredsløbets arbejde

ATTiny Arbejdsgang

Magien her sker i, hvordan ATTiny overvåger dørkontaktens position.

Den normale mulighed ville være at fastgøre en pull -up -modstand til kontakten og fortsat overvåge tilstanden. Dette har ulempen ved konstant strøm, der forbruges af pull up -modstanden. Den måde, det er undgået her på, er, at jeg har brugt to ben til at overvåge kontakten frem for en. Jeg har brugt PB3 & PB4 herinde. PB3 er defineret som input og PB4 som output med en intern INPUT_PULLUP på PB3. Normalt holdes PB4 HØJ, når ATtiny er i dvaletilstand. Dette sikrer, at der ikke er nogen strøm gennem input -pull -up -modstanden uanset positionen af reedkontakten. dvs. Hvis kontakten er lukket, er både PB3 og PB4 HØJ, og der strømmer derfor ingen strøm mellem dem. Hvis kontakten er åben, er der ingen vej mellem dem, og strømmen er derfor nul. Når ATtiny vågner, skriver den en LAV på PB4 og kontrollerer derefter tilstanden for PB3. Hvis PB3 er HIGH, er reedkontakten ÅBEN, ellers er den LUKKET. Det skriver derefter et HIGH tilbage på PB4.

Kommunikationen mellem ATtiny og ESP sker via to ben PB1 / PB2 forbundet til Tx / RX på ESP. Jeg har defineret signalet som

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (sundhedstjek)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_CLOSED

1 1 ====== UBRUGT

Bortset fra at sende signalet til ESP sender det også en HØJ puls på PB0, som er forbundet til ESP CH_PD -stiften. Dette vækker ESP. Den første ting ESP gør det for at holde GPIO0 HIGH, som er forbundet til CH_PD, og derved sikre dets kræfter op, selvom ATTiny fjerner PB0 HIGH. Kontrollen er nu hos ESP for at afgøre, hvornår den vil slukke.

Den opretter derefter forbindelse til WiFi, MQTT, sender beskeden og slukker sig selv ved at skrive LOW på GPIO0.

ESP 01 Arbejdsgang:

ESP flow er lige frem. Den vågner og læser værdierne for Tx/Rx -stifterne for at bestemme, hvilken type besked der skal postes. Forbindes til WiFi og MQTT, sender beskeden og slukker sig selv.

Inden den slukkes, kontrollerer den igen værdierne for inputstifterne for at se, om de har ændret sig siden den sidst blev læst. Dette er for at sørge for en hurtig åbning og lukning af døren. Hvis du ikke har denne check, er der nogle tilfælde, du kan gå glip af lukningen af døren, hvis den er lukket inden for 5-6 sekunder efter åbningen. Et praktisk scenario med, at døren åbnes og lukkes inden for 2 sekunder eller deromkring, fanges godt af while -sløjfen, der bliver ved med at sende beskederne, så længe dørens aktuelle tilstand er forskellig fra den forrige. Det eneste scenario, det kan gå glip af at registrere alle åbne/lukke hændelser er, når døren gentagne gange åbnes/lukkes inden for 4-5 sek vindue, hvilket er et meget usandsynligt tilfælde - sandsynligvis et tilfælde af et barn, der leger med døren.

Trin 3: Sundhedstjek

Jeg havde også brug for en måde at få en sundhedscheckbesked fra ESP'en, hvor den også sender batteriniveauet i ESP'en for at sikre, at sensoren fungerer fint uden manuel inspektion. Til dette sender ATTiny et WAKE_UP signal hver 12. time. Den kan konfigureres via variablen WAKEUP_COUNT i ATtiny -koden. Dette er meget nyttigt til døre eller vinduer, der sjældent åbnes, og så får du måske ikke at vide, om der nogensinde er noget galt med sensoren eller batteriet.

Hvis du ikke har brug for sundhedstjekfunktionen, er hele konceptet med at bruge ATTiny ikke nødvendigt. I så fald kan du finde andre designs, folk har skabt, hvor forsyningen til ESP tilføres via en MOSFET, og så du kan opnå nulstrømstrækning, når døren ikke betjenes. Der er andre ting, der skal tages hånd om, ligesom den nuværende trækning skal være den samme i døråbning og dørlukkestilling - til det så jeg et sted et design, der brugte en 3 -tilstands rørkontakt i stedet for den sædvanlige 2 -tilstand.

Trin 4: Strømmålinger og batterilevetid

Jeg har målt strømforbruget i kredsløbet, og det tager ~ 30uA, når jeg sover og rundt. Går vi efter databladene for ATTiny, skal det være omkring 1-4 uA for hele kredsløbet, herunder hvilende strøm af LDO, men så viser mine målinger 30. MOSFET og LDO forbruger ubetydelig strøm.

Så et 800mAH batteri skulle holde i lang lang tid. Jeg har ikke nøjagtig statistik, men jeg har brugt det på 2 af mine døre i mere end et år nu, og hver 18650 celle med omkring 800mAH tilbage i dem holder i cirka 5-6 måneder på min hoveddør, som åbner og lukker kl. mindst 30 gange om dagen. Den på tagdøren, der kun åbner et par gange om ugen, den holder 7-8 måneder.

Trin 5: Fremtidige forbedringer

1. ESP anerkender ikke levering af MQTT -meddelelsen. Programmet kan forbedres ved at abonnere på det emne, det offentliggør meddelelsen for at bekræfte levering, eller et Async MQTT -bibliotek kan bruges til at sende en besked med QoS 1.

2. OTA -opdatering: ESP -koden kan ændres til at læse et MQTT -emne for en opdatering og så gå ind i en OTA -tilstand for at modtage en fil.

3. ESP01 kan udskiftes med ESP-12 for at få adgang til flere input-PIN-koder og kan dermed tilslutte flere sensorer til det samme. I så fald er kommunikation via 2 bit metoden ikke mulig. Dette kan derefter forbedres for at implementere I2C -kommunikation mellem ATtiny & ESP. Dette er lidt kompliceret, men brugbart. Jeg har det til at fungere i et andet sæt, hvor en ATTiny sender roterende encoderværdier til ESP over I2C -linjen.

4. Det nuværende kredsløb overvåger ESP's interne Vcc. Hvis vi bruger ESP12, kan dette ændres til at aflæse det faktiske batteriniveau via ADC -stiften.

5. Fremover vil jeg også sende en ændring til denne, som kan bruges som en selvstændig sensor uden behov for en MQTT eller noget hjemmeautomatiseringssystem. Sensoren fungerer selvstændigt og kan foretage et telefonopkald, når den udløses - selvfølgelig har den brug for en internetforbindelse til dette.

6. Og listen fortsætter …

7. Omvendt batteribeskyttelse - UDFØRT (Faktiske enhedsbilleder er gamle og afspejler derfor ikke MOSFET)

Anbefalede: