Innehållsförteckning:

ESP-01 rörelsessensor med djup sömn: 5 steg
ESP-01 rörelsessensor med djup sömn: 5 steg

Video: ESP-01 rörelsessensor med djup sömn: 5 steg

Video: ESP-01 rörelsessensor med djup sömn: 5 steg
Video: 🚀 AMAZON 2.0 - ИНТЕРНЕТ МАГАЗИН с нуля за 6 часов [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, November
Anonim
Image
Image

Jag har arbetat med att göra hemgjorda rörelsesensorer som skickar ett e -postmeddelande när de utlöses. Det finns många exempel på instruktioner och andra exempel på att göra detta. Jag behövde nyligen göra detta med en batteridriven PIR-rörelsesensor och en ESP-01. ESP-01 är mycket funktionell och har alla funktioner som krävs så varför inte använda det lägsta och minst kostsamma som krävs? Till mixen kom ytterligare en separat och fjärr ESP-01-modul som utlöste en summer när rörelsessensorn utlöstes.

Koden och den slutliga kretslayouten har samlats in från många källor på webben och jag tror inte att jag kan identifiera dem specifikt. Tanken att skicka e -postmeddelanden via gmail kom från en instruerbar och andra källor och den slutliga koden är en amalgam från dessa källor. Att få djup sömn till jobbet ledde mig på många vägar som ofta visade sig vara fruktlösa. Det roliga är att när en väg visar sig vara fruktbar slutar du leta efter fler vägar. Så jag säger tack till alla som har bidragit till min framgång och som ännu inte är okända.

Jag hade samma problem med att få PIR-sensorn att arbeta med att utlösa ESP-01 djup sömn. Många vägar tills det fanns en som fungerade.

Naturligtvis fanns det några intressanta hinder eller kanske mer relevanta, en bättre förståelse av elektroniken som jag krävde. Du fortsätter att lära tills något fungerar och sedan behöver du inte lära dig mer.

ESP-01 sover djupt såväl som alla andra ESP8266-moduler så länge du inte behöver tidsmässig sömn. Om du vill att modulen ska vakna efter en viss tid, är ESP-01 inte den modul som ska användas. Men det var inte det jag ville. Förfluten tid är meningslös när du använder en PIR. Jag ville att ESP-01 bara skulle vakna när den triggades av rörelse som känns av PIR. Om ingen rörelse känns av i timmar eller dagar, sover ESP-01 med minimal batterikraft.

Du kommer att se många kretsar som använder GPIO16 anslutna till ESP8266 Reset eftersom GPIO16 är väcksignalen. Detta är sant, men det är väckningssignalen från tidsbestämd sömn. Vi kan ignorera denna PIN-kod, vilket är bra eftersom den inte är tillgänglig på ESP-01.

I grund och botten är allt vi behöver för att få signalen från PIR för att utlösa ESP-01 Återställ stift. Den första svårigheten du kommer att anta är att Återställning utlöses på en LÅG signal och PIR skickar en HÖG signal när den utlöses. Återställningen måste också vara HÖG eller flytande vid start. Så för att hålla detta kort, efter att ha provat några olika kretsar bestämde jag mig för att använda en NPN-transistor med ett uppdragningsmotstånd för att hålla RESET-stiftet HÖG under start. Utsignalen från PIR är minimal men den ger tillräckligt med basström för att starta transistorn.

Som du kommer att se i kretsschemat nedan väcktes ESP-01 från djup sömn varje gång PIR kände rörelse.

Men det var ett annat problem. Återställningen av ESP-01 hände först efter att PIR slutade känna av rörelse och återvände till en låg signal som stängde av transistorn och återställde återställningsstiftet till HIGH på grund av pullup-motståndet. Detta skulle innebära att e -postmeddelandet inte skulle skickas eller att summern skulle aktiveras förrän EFTER att PIR slutade känna rörelse. Jag ville att avtryckaren skulle hända så snart rörelse känns.

Vad jag bestämde utifrån detta beteende är att ESP-01 faktiskt triggar på signalens stigande kant. Att hålla nollställningsstiftet på marken utlöser faktiskt inte ESP-01 från djup sömn, men i det ögonblick som spänningen stiger till HIGH-signalen, sker återställningen.

Mitt mycket enkla svar på detta beteende var att lägga till en kondensator till linjen mellan PIR -utgången och transistorbasen. Detta orsakade att transistorn bara startade medan kondensatorn laddades. När den väl var laddad fanns det ingen ytterligare ström och transistorn stängdes av. 5k -motståndet låter strömmen rinna till marken. Jag testade detta med en lysdiod istället för ESP-01 och kunde se lysdioden blinka i en bråkdel av en sekund innan den stängdes av. Denna lilla puls var tillräckligt för att dra återställningsnålen till marken en stund och tillräckligt länge för att utlösa återställningen ur djup sömn.

Steg 1: ESP-01 Deep Sleep Module

ESP-01 Deep Sleep-modul
ESP-01 Deep Sleep-modul
ESP-01 Deep Sleep-modul
ESP-01 Deep Sleep-modul

Modulen för djup sömn använder två arbetsspänningar. Den slumpmässiga 5v+ av batteripaketet för PIR och även ett 3,3 volt regulatorkort för ESP-01. Jag införlivar också en diod i kretsen för att förhindra skadade delar från omvänd spänning. Detta använder lite extra ström och minskar batterispänningen med 0,7 volt. Dioden kan lämnas utanför kretsen om du är säker på att du aldrig kommer att vända batteriets ledningar. En omkopplare läggs också till av bekvämlighet.

Denna modul är en mindre uppdatering av min ursprungliga icke-djupa sömnlayout. I konfigurationen för icke-djup sömn är PIR direkt ansluten till RX-stiftet på ESP-01. Jag använder RX-stiftet på ESP-01 som ingångsstift för PIR av några skäl. GPIO0 fungerade inte eftersom PIR-utgångskoden skulle vara LÅG vid start skulle ESP-01 gå in i blixtläge. Jag använde inte GPIO2 för då kunde jag inte använda den inbyggda lysdioden för visuell återkoppling. RX- och TX -stiften beskrivs ofta som extra IO -stift men min erfarenhet är att RX är en extra INPUT -stift och TX är en extra OUTPUT -stift.

I djup sömnkonfiguration är RX -anslutningen inte absolut nödvändig. Jag använder den bara för att övervaka hur länge PIR utlöses genom att slå på lysdioden medan ingången är HÖG. Som nämnts tidigare, om du rensar ut loop -funktionen och bara använder installationsrutinen är RX -anslutningen onödig.

Här är listan med delar för ESP-01 djup sömn modul:

1 - 5 x 7 cm PCB -prototypkort

1 - 2 -polig kontakt

2 - 1 x 3 kvinnliga rubriker

1 - AMS1117 - 3.3 spänningsregulatorns kretskort

1 - 1 x 3 Höger vinkel Manlig huvudstift

1 - 1 x 3 honkontaktstiftshuvudstift

1 - 1 x 4 honkontaktstiftshuvudstift

1 - 2 x 4 kvinnlig rubrik

1 - 1uf kondensator

1 - HC -SR501 PIR -rörelsesensor

1 - 2N2222 Transistor

1 - 10k motstånd

1 - 4.7k motstånd

1 - 1k motstånd

1 - 1N4148 diod

1 - switch SS12D00G4 SPDT

1 - ESP -01

1 - 4AA batteripaket

Observera att kretskortet i videon använder en ESP-01-brödbrädaadapter istället för 2 x 4-rubriken. Även om den här adaptern är lättare att löda fungerar den 2 x 4 rubriken bra och passar faktiskt bättre.

Steg 2: ESP-01 Deep Sleep Code

Deep Sleep -koden utför två funktioner. Skicka ett e-postmeddelande (via gmail som standard) och skicka en http-webbförfrågan till den tillhörande ESP-01-summermodulen för att aktivera summern.

När den utlöses ger den här modulen två aviseringsalternativ och kan vara särskilt användbar när du inte uppmärksammar e -postmeddelanden.

Du måste uppdatera sex rader kod med dina specifika värden för att få skissen att fungera:

const char* ssid = "xxxxx"; // Ditt WiFi SSIDconst char* lösenord = "xxxxx"; // Ditt WiFi -lösenord String Senders_Login = "xxxxx"; // din e -postleverantörs inloggning String Senders_Password = "xxxxx"; // ditt e -postleverantörslösenord

Till = "xxxxxx"; From = "xxxxxx"; // Gmail föredrar i allmänhet att detta är samma som Senders_Login och kan ersätta

Jag tyckte att den djupa sömnmodulen fungerade oförutsägbart när PIR -sensorn var inställd på under 10 sekunder under längden på triggerhändelsen. Jag har min inställd på 20 sekunder. Detta har visat sig vara mycket tillförlitligt men det betyder också att utlösande händelser kan hända med den frekvensen.

Jag har också lagt till kod i loop-funktionen för att hålla ESP-01 lysdioden på så länge PIR fortfarande känner av rörelse. All kod i loop -funktionen kan tas bort och uppmaningen till djup sömn flyttas till slutet av installationsfunktionen.

Jag använder blinkfunktionen för en visuell indikator på aktivitet med ESP-01-modulen.

Medan jag har använt och testat anslutning med gmail fungerar andra e -postleverantörer också. Jag har provat ett par. Jag har faktiskt tyckt att gmail är mer besvärligt. Gmail kräver att du har ditt konto konfigurerat för åtkomst av mindre säkra appar. Denna kontoinställning är AV som standard, så se till att du hittar den och ändra den till mindre säker. Gmail fungerar INTE annars.

Om du väljer att ha mer än en summermodul lägger du bara till extra samtal från http -klienten (upprepa de tre kodraderna men ändra den använda ip -adressen och definiera även httpCode -variabeln som int en gång!

Observera att summerns ip -adress är hårdkodad i denna modul. Du behöver inte använda den ip -adress som jag har valt, men du måste matcha ip -adressen för webbsamtalet i den här modulen med ip -adressen för webbserverinställningen i nästa modul.

Steg 3: ESP-01 summermodul

ESP-01 summermodul
ESP-01 summermodul
ESP-01 summermodul
ESP-01 summermodul
ESP-01 summermodul
ESP-01 summermodul

Summermodulen har en ganska enkel installation. Den använder en USB -kontakt istället för ett batteri eftersom jag inte tror att den här modulen är lämplig för ett batteri. Den måste förbli på och nework/wifi ansluten hela tiden eftersom den aldrig vet när en webbförfrågan kommer att göras. Detta kräver mer kontinuerlig ström än batteripaket är användbara för.

Buzzer -moduler kan placeras bekvämt på flera platser för att meddela en rörelsessensorhändelse oavsett var du befinner dig!

Summern är ansluten till 5v på USB-kontakten och det finns ytterligare ett 3.3v regulatorkort som ger ström till ESP-01.

Summermodulen fungerar med TX, GPIO0 eller GPIO2 för utgången. I min konfiguration använder jag GPIO0. (På bilden av modulen är kabeln ansluten till GPIO2 men jag har sedan flyttat den.) Medan GPIO0 inte fungerade för djup sömnmodulen (som INPUT) fungerar den bra med denna layout som OUTPUT. Det dras inte till marken på stöveln vilket kommer att orsaka problem. Jag använde GPIO2 men då kunde jag inte använda den inbyggda lysdioden för feedback, men med GPIO0 för OUTPUT kan jag använda den inbyggda lysdioden.

Jag försökte använda en NPN-transistor för att driva summern i kretsen när ESP-01 satte en HIGH-signal på GPIO0-stiftet men resultaten var fruktansvärt inkonsekventa. Summern tycktes vilja låta hela tiden, även med väldigt lite ström. Så istället använde jag en N -kanal MOSFET (2n7000) och resultatet var fantastiskt. IO -stiftet driver Gate efter behov.

Medan vi bara behöver två stift från USB-kontakten Vcc (+) och Gnd (-) använder jag en 5-stifts rubrik för att ansluta till kretskortet för extra stabilitet och för lödning innan du ansluter USB till regulatorn. Min 3.3v regulator board kom med stiften förinstallerade och i mitt sinne, upp och ner. Så för att sätta in regulatorn i huvudstiften kan du se att kretskortet är dolt, men värre än så är vcc och gnd på regulatorn omvända från vcc och gnd på USB -kontakten. Så trådarna går över.

Observera också att + ström för den aktiva summern kommer från 5v på USB. Dessutom fungerar en 4 -stifts honkontakthuvud snyggt med summerns stiftplacering.

ESP-01 Buzzer Module Parts List:

1 - 5 x 7 kretskort

1 - USB -minikontakt med stifthuvuden (7 stift)

2 - 1 x 3 kvinnliga rubriker

1 - AMS1117-3.3 v spänningsregulatorkort

1 - 2 x 4 kvinnlig rubrik

2 - 1 x 4 hona för honuttag

1 - 2N7000 N -kanal MOSFET

1 - 10 ohm motstånd

1 - 5v aktiv summer

Steg 4: ESP-01 summermodulkod

Summermodulen fungerar som en enkel ESP-01-webbserver. Den svarar med ett enkelt meddelande på en root -begäran och när den får buzz -begäran kommer den att utlösa summern. GPIO0 används för GPIO -stiftet för summern.

Observera att ESP-01 är konfigurerad med en hårdkodad ip-adress. Detta krävs för att djup sömnmodulen ska kopplas till summeradressen.

Liksom den föregående modulen måste du uppdatera två kodrader med dina specifika värden:

// SSID och lösenord för din WiFi -routerkonst char* ssid = "xxxxxxx";

const char* password = "xxxxxxxx";

Om du har skapat flera summermoduler bör var och en laddas med sin egen unika ip -adress.

Du kan också lägga till olika buzz -metoder som producerar olika summermelodier. Om du till exempel har en PIR -sensor vid ytterdörren och en vid bakdörren kan de göra en webbförfrågan till var och en av dina summermoduler, men en sensor kan ha en skiss som kallar buzz och den andra skissen kan kalla buzz2 så att du av ljudet kan se vilken sensor som utlöstes. Och så vidare och så vidare! Buzz2 -funktionen finns inte, men kopiera bara buzz -funktionen och ändra fördröjningsvärdena.

För webbservern måste du bara lägga till en kodrad så här:

server.on ("/buzz2", buzz2);

Steg 5: Slutliga tankar

Detta är min första instruerbara så jag kan ha missat några praktiska saker som jag borde ha inkluderat. AMS1117-3.3 regulatorkortet jag använde innehåller en liten lysdiod som lyser när den slås på. För den djupa sömnmodulen ville jag inte att detta skulle leda till och dränera strömmen i onödan. Så jag lödde bort vad jag kunde på ena sidan av lysdioden på brädet och använde sedan en verktygskniv för att klippa av spårlinjen. Detta var lättare än jag trodde och förhindrar att lysdioden tänds. Jag har inte kunnat avgöra vad kraftuttaget är när ESP-01 är i djup sömn, men jag kan ha ett svar om några veckor. En av mina kollegor körde sensorn (inte i djup sömn) och fann batterierna urladda (5AA) på ungefär en vecka. Jag tror att den här installationen borde ge en månad eller ännu mer. Vi får se.

Modulen för djup sömn kostade cirka $ 8 CDN i delar (batterier ingår inte!) Och summermodulen $ 5.

Rekommenderad: