Innehållsförteckning:

Trådlös dörrsensor - Ultra Low Power: 5 steg
Trådlös dörrsensor - Ultra Low Power: 5 steg

Video: Trådlös dörrsensor - Ultra Low Power: 5 steg

Video: Trådlös dörrsensor - Ultra Low Power: 5 steg
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, November
Anonim
Trådlös dörrsensor - Ultra Low Power
Trådlös dörrsensor - Ultra Low Power
Trådlös dörrsensor - Ultra Low Power
Trådlös dörrsensor - Ultra Low Power
Trådlös dörrsensor - Ultra Low Power
Trådlös dörrsensor - Ultra Low Power
Trådlös dörrsensor - Ultra Low Power
Trådlös dörrsensor - Ultra Low Power

Ännu en dörrsensor !! Tja, motivationen för mig att skapa den här sensorn var att många som jag såg på internet hade en eller annan begränsning. Några av målen med sensorn för mig är:

1. Sensorn ska vara mycket snabb - helst mindre än 5 sekunder

2. Sensorn ska köra av ett 3,7V Li-ion-batteri eftersom jag har dussintals av dem liggande

3. Sensorn ska köras i många månader på en enda laddning av batteriet. Det bör konsumera <10uA i viloläge

4. Sensorn ska kunna vakna för överföring av kritisk data, till exempel batteristatus, även när dörren inte är på länge.

5. Sensorn ska överföra data till ett MQTT -ämne när dörren öppnas såväl som när dörren är stängd

6. Sensorn bör förbrukas lika mycket ström oavsett dörrens tillstånd

Sensorn fungerar:

Sensorn har 2 huvudkontroller. Den första är liten mikrokontroller ATiny 13A. Den andra är ESP som vanligtvis är i viloläge och vaknar bara när ATiny möjliggör det. Hela kretsen kan också göras av bara ESP genom att använda den i viloläge men strömmen som den förbrukar är mycket större än vad som behövs för att ett batteri ska hålla i månader så ATTiny kommer till undsättning. Det tjänar bara till att vakna upp varannan sekund, leta efter en dörrhändelse eller en hälsokontrollhändelse, om det finns en, håller den CH_PD -stiftet på ESP till HIGH och skickar lämplig signal för typ av händelse till ESP. Dess roll slutar där.

ESP tar sedan över, läser signaltypen, ansluter till WiFi/MQTT, publicerar nödvändiga meddelanden inklusive batterinivå och stänger sedan av sig själv genom att föra tillbaka EN -stiftet till LÅGT.

Genom att använda dessa marker på det här sättet drar jag nytta av den låga sömnströmmen hos ATtiny och ESP -nollströmmen när chipet är inaktiverat via CH_PD -stift.

Tillbehör

Förförfrågan:

- Kunskap om programmering av ATTiny & ESP 01

- Kunskap om lödningskomponenter på ett kretskort

ESP-01 (eller någon ESP)

ATTiny 13A - AVR

LDO 7333 -A - Spänningsregulator med lågt utfall

Motstånd - 1K, 10K, 3K3

Kondensatorer: 100uF, 0,1 uF

Tryckknappsbrytare, mikro ON/OFF -omkopplare - (båda tillval)

Diod - IN4148 (eller motsvarande)

Li-ion batteri

Reed Switch

Ett fall för att hysa allt

Lödning, kretskort etc.

Steg 1: Schemat & källkod

Schemat & källkod
Schemat & källkod

Schemat är som visas i det bifogade diagrammet.

Jag har inkluderat en P Channel MOSFET för skydd mot omvänd polaritet. Om du inte behöver detta kan du utelämna det. Alla P -kanaler MOSFET med låg Rds ON kommer att göra.

För närvarande har ESP inte möjlighet till OTA men det är för framtida förbättringar.

Källkod smart-door-sensor

Steg 2: Kretsens arbete

ATTiny Arbetsflöde

Magin här händer i hur ATTiny övervakar dörrkontaktens position.

Det normala alternativet skulle vara att fästa ett uppdragningsmotstånd till omkopplaren och fortsätta övervaka dess tillstånd. Detta har nackdelen med konstant ström som förbrukas av uppdragningsmotståndet. Hur detta har undvikits här är att jag har använt två stift för att övervaka omkopplaren snarare än en. Jag har använt PB3 och PB4 här. PB3 definieras som input och PB4 som output med en intern INPUT_PULLUP på PB3. Normalt hålls PB4 HÖG när ATtiny är i viloläge. Detta säkerställer att det inte finns något strömflöde genom ingångsdragningsmotståndet oberoende av läget för vassomkopplaren. dvs. Om omkopplaren är stängd är både PB3 och PB4 HÖG och det rinner därför ingen ström mellan dem. Om omkopplaren är öppen finns det ingen väg mellan dem och strömmen är alltså noll. När ATtiny vaknar skriver den en LÅG på PB4 och kontrollerar sedan tillståndet för PB3. Om PB3 är HIGH är reed -omkopplaren ÖPPEN, annars är den STÄNGD. Den skriver sedan tillbaka en HIGH på PB4.

Kommunikationen mellan ATtiny & ESP sker via två stift PB1 / PB2 anslutna till Tx / RX på ESP. Jag har definierat signalen som

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (hälsokontroll)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_CLOSED

1 1 ====== oanvänd

Förutom att skicka signalen till ESP skickar den också en HÖG puls på PB0 som är ansluten till ESP CH_PD -stiftet. Detta väcker ESP. Det första ESP gör för att hålla GPIO0 HIGH som är ansluten till CH_PD och därmed säkerställa att dess krafter stiger även om ATTiny tar bort PB0 HIGH. Kontrollen är nu med ESP för att avgöra när den vill stänga av.

Den ansluter sedan till WiFi, MQTT, lägger ut meddelandet och slår av sig själv genom att skriva LOW på GPIO0.

ESP 01 Arbetsflöde:

ESP -flödet är rakt fram. Den vaknar och läser värdena på Tx/Rx -stiften för att avgöra vilken typ av meddelande som ska postas. Ansluter till WiFi och MQTT, lägger ut meddelandet och stänger av sig själv.

Innan den stängs av kontrollerar den igen värdena på ingångsstiften för att se om de har ändrats sedan den lästes senast. Detta för att ta hand om en snabb öppning och stängning av dörren. Om du inte har den här kontrollen är det några fall du kan missa stängningen av dörren om den är stängd inom 5-6 sekunder efter öppnandet. Ett praktiskt scenario med att dörren öppnas och stängs inom 2 sekunder eller så fångas väl av medan loop som fortsätter att posta meddelandena så länge dörrens nuvarande tillstånd är annorlunda än det föregående. Det enda scenariot det kan missa att spela in alla öppna/stänga händelser är när dörren öppnas/stängs upprepade gånger inom 4-5 sek fönster vilket är ett mycket osannolikt fall - förmodligen ett barn som leker med dörren.

Steg 3: Hälsokontroll

Jag behövde också ett sätt att få ett hälsokontrollmeddelande från ESP där det också skickar batterinivån på ESP för att säkerställa att sensorn fungerar bra utan manuell inspektion. För detta skickar ATTiny en WAKE_UP -signal var 12: e timme. Den kan konfigureras via variabeln WAKEUP_COUNT i ATtiny -koden. Detta är mycket användbart för dörrar eller fönster som sällan öppnas och så du kanske inte får veta om något är fel med sensorn eller dess batteri någonsin.

Om du inte behöver hälsokontrollfunktionen behövs inte hela konceptet med att använda ATTiny. I så fall kan du hitta andra mönster som människor har skapat där försörjningen till ESP matas via en MOSFET och så kan du uppnå nollströmdragning när dörren inte används. Det finns andra saker att ta hand om, som att den nuvarande dragningen är densamma i dörröppning och dörrstängning - för det såg jag någonstans en design som använde en 3 -statig reed -switch istället för den vanliga 2 -staten.

Steg 4: Effektmätningar och batteritid

Jag har mätt strömförbrukningen i kretsen och det tar ~ 30uA när jag sover och runt. Baserat på databladen för ATTiny, bör det vara omkring 1-4 uA för hela kretsen inklusive stillastående ström för LDO men sedan visar mina mätningar 30. MOSFET och LDO förbrukar obetydlig ström.

Så ett 800mAH -batteri ska hålla länge. Jag har inte exakt statistik men jag har använt den på 2 av mina dörrar i mer än ett år nu och varje 18650 cell med cirka 800mAH kvar i dem håller i cirka 5-6 månader på min huvuddörr som öppnas och stängs kl. minst 30 gånger om dagen. Den på takdörren som öppnas bara några gånger i veckan, den varar 7-8 månader.

Steg 5: Framtida förbättringar

1. ESP godkänner inte leveransen av MQTT -meddelandet. Programmet kan förbättras genom att prenumerera på ämnet som det publicerar meddelandet för att bekräfta leverans eller ett Async MQTT -bibliotek kan användas för att lägga upp ett meddelande med QoS 1.

2. OTA -uppdatering: ESP -koden kan ändras för att läsa ett MQTT -ämne för en uppdatering och så gå in i ett OTA -läge för att ta emot en fil.

3. ESP01 kan ersättas med ESP-12 för att få åtkomst till fler inmatade PIN-koder och så kan ansluta fler sensorer till samma. I så fall är kommunikation via 2 bitars metoden inte möjlig. Detta kan sedan förbättras för att implementera I2C -kommunikation mellan ATtiny & ESP. Detta är lite komplicerat men fungerande. Jag har det som fungerar i en annan uppsättning där en ATTiny skickar roterande kodarvärden till ESP över I2C -linjen.

4. Den aktuella kretsen övervakar ESP: s interna Vcc. Om vi använder ESP12 kan denna modifieras för att läsa den faktiska batterinivån via ADC -stiftet.

5. I framtiden kommer jag också att lägga upp en ändring av denna som kan användas som en fristående sensor utan att behöva en MQTT eller något hemautomatiseringssystem. Sensorn fungerar fristående och kan ringa ett samtal när den utlöses - självklart behöver den en internetanslutning för detta.

6. Och listan fortsätter …

7. Omvänd batteriskydd - KLAR (Faktiska enhetsbilder är gamla och återspeglar alltså inte MOSFET)

Rekommenderad: