Indholdsfortegnelse:

ESP-01 bevægelsessensor med dyb søvn: 5 trin
ESP-01 bevægelsessensor med dyb søvn: 5 trin

Video: ESP-01 bevægelsessensor med dyb søvn: 5 trin

Video: ESP-01 bevægelsessensor med dyb søvn: 5 trin
Video: Такие секреты уже все забыли, но их стоит знать! Полезные советы на все случаи жизни! 2024, November
Anonim
Image
Image

Jeg har arbejdet på at lave hjemmelavede bevægelsessensorer, der sender en e -mail -besked, når de udløses. Der er mange eksempler på instruktioner og andre eksempler på at gøre dette. Jeg var for nylig nødt til at gøre dette med en batteridrevet PIR-bevægelsessensor og en ESP-01. ESP-01 er meget funktionel og har alle de nødvendige funktioner, så hvorfor ikke bruge det mindst nødvendige og mindst dyre? Tilføjet til blandingen var et andet separat og fjerntliggende ESP-01-modul, der udløste en summer, da bevægelsessensoren blev udløst.

Koden og det endelige kredsløbslayout er blevet samlet fra mange kilder på internettet, og jeg tror ikke, jeg kan identificere dem specifikt. Ideen om at sende e -mails via gmail kom fra en instruerbar og andre kilder, og den sidste kode er en amalgam fra disse kilder. At få en dyb søvn til at arbejde førte mig på mange veje, der ofte viste sig at være nytteløse. Det sjove er, at når en sti viser sig at være frugtbar, holder du op med at lede efter flere stier. Så jeg siger tak til alle dem, der har bidraget til min succes og endnu ikke er ukendte.

Jeg havde det samme problem at få PIR-sensoren til at arbejde med at udløse ESP-01 dyb søvn. Mange stier, indtil der var en, der virkede.

Det er overflødigt at sige, at der var nogle interessante forhindringer eller måske mere relevante, en bedre forståelse af elektronikken, som jeg krævede. Du bliver ved med at lære, indtil noget virker, og så behøver du ikke at lære mere.

ESP-01 sover dybt så godt som ethvert andet ESP8266-modul, så længe du ikke behøver tidsbestemt søvn. Hvis du vil have modulet til at vågne efter en bestemt mængde forløbet tid, er ESP-01 ikke det modul, der skal bruges. Men det var ikke det, jeg ville. Forløbet tid er meningsløs, når du bruger et PIR. Jeg ønskede, at ESP-01 først skulle vågne, når den blev udløst af bevægelse, der blev registreret af PIR. Hvis der ikke registreres nogen bevægelse i timer eller dage, forbliver ESP-01 i søvn med minimal batteristrøm.

Du vil se mange kredsløb, der bruger GPIO16 tilsluttet ESP8266 Reset, fordi GPIO16 er vækkesignalet. Dette er sandt, men det er vågnesignalet fra tidsbestemt søvn. Vi kan ignorere denne pinkode, hvilket er godt, fordi den ikke er tilgængelig på ESP-01.

Grundlæggende er alt, hvad vi har brug for, at få signalet fra PIR'en til at udløse ESP-01-nulstillingstappen. Den første vanskelighed, du vil formode, er, at Reset udløses på et LOW -signal, og PIR sender et HIGH -signal, når det udløses. Nulstilling skal også være HØJ eller flydende på boot. Så for at holde dette kort, efter at have prøvet nogle forskellige kredsløb, besluttede jeg mig for at bruge en NPN-transistor med en pull-up-modstand for at holde RESET-pin HØJ under opstart. Outputtet fra PIR er minimalt, men det giver nok basestrøm til at tænde transistoren.

Som du vil se i kredsløbsdiagrammet herunder, blev ESP-01 vækket fra dyb søvn hver gang PIR registrerede bevægelse.

Men der var et andet problem. Nulstillingen af ESP-01 skete først, efter at PIR stoppede med at registrere bevægelse og vendte tilbage til et lavt signal, der slukkede transistoren og returnerede nulstillingstappen til HIGH på grund af pullup-modstanden. Dette ville betyde, at e -mailen ikke ville blive sendt, og summeren heller ikke ville blive aktiveret, efter at PIR stoppede med at registrere bevægelse. Jeg ville have, at udløseren skulle ske, så snart bevægelse blev registreret.

Hvad jeg fastslog ud fra denne adfærd er, at ESP-01 faktisk udløser på signalets stigende kant. At holde nulstillingstappen til jorden udløser faktisk ikke ESP-01 fra dyb søvn, men i det øjeblik spændingen stiger til HIGH-signalet, sker nulstillingen.

Mit meget enkle svar på denne adfærd var at tilføje en kondensator til linjen mellem PIR -udgangen og transistorbasen. Dette fik transistoren til kun at tænde, mens kondensatoren oplades. Efter opladning var der ingen yderligere strøm, og transistoren blev slukket. 5k modstanden lader strømmen løbe til jorden. Jeg testede dette med en LED i stedet for ESP-01 og kunne se LED'en blinke i en brøkdel af et sekund, før den blev slukket. Denne lille puls var nok til at trække nulstillingsnålen til jorden et øjeblik og længe nok til at udløse nulstillingen ud af dyb søvn.

Trin 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

Modellen til dyb søvn bruger to arbejdsspændinger. Den tilfældige 5v+ af batteripakken til PIR og også et 3.3 volt regulatorkort til ESP-01. Jeg inkorporerer også en diode i kredsløbet for at forhindre beskadigede dele fra omvendte spændinger. Dette bruger en smule ekstra strøm og sænker batteriets spænding med 0,7 volt. Dioden kan efterlades uden for kredsløbet, hvis du er sikker på, at du aldrig vender batteripakkerne. En switch tilføjes også af bekvemmelighed.

Dette modul er en mindre opdatering af mit originale ikke-dybe søvnlayout. I konfigurationen til ikke dyb søvn er PIR direkte forbundet til RX-pin på ESP-01. Jeg bruger RX-pin på ESP-01 som input-pin til PIR af flere årsager. GPIO0 fungerede ikke, fordi PIR-output-PIN-koden ved opstart ville være LAV, hvilket fik ESP-01 til at gå ind i flash-tilstand. Jeg brugte ikke GPIO2, for så kunne jeg ikke bruge den indbyggede LED til visuel feed back. RX- og TX -benene beskrives ofte som ekstra IO -pins, men min erfaring er, at RX er en ekstra INPUT -pin og TX er en ekstra OUTPUT -pin.

I dyb søvnkonfiguration er RX -forbindelsen ikke strengt nødvendig. Jeg bruger den kun til at overvåge, hvor længe PIR udløses ved at tænde LED'en, mens input er HIGH. Som nævnt før, hvis du rydder loop -funktionen og kun bruger installationsrutinen, er RX -forbindelsen unødvendig.

Her er delelisten til ESP-01 dyb dvalemodul:

1 - 5 x 7 cm PCB Prototype Board

1 - 2 -polet stik

2 - 1 x 3 kvindelige overskrifter

1 - AMS1117 - 3.3 spændingsregulator printkort

1 - 1 x 3 Højre vinkel Mandstykke

1 - 1 x 3 hunstik hovedstik

1 - 1 x 4 hunstik hovedstik

1-2 x 4 hunhoved

1 - 1uf kondensator

1 - HC -SR501 PIR -bevægelsessensor

1 - 2N2222 Transistor

1 - 10k modstand

1 - 4.7k modstand

1 - 1k modstand

1 - 1N4148 diode

1 - switch SS12D00G4 SPDT

1 - ESP -01

1 - 4AA batteripakke

Bemærk, at kortet i videoen bruger en ESP-01 brødbrætadapter i stedet for 2 x 4 header. Selvom denne adapter er lettere at lodde, fungerer 2 x 4 header fint og passer faktisk bedre.

Trin 2: ESP-01 Deep Sleep Code

Deep Sleep -koden udfører to funktioner. Send en e-mail (via gmail som standard), og send en http-webanmodning til det tilhørende ESP-01 summermodul for at aktivere summeren.

Når det udløses, giver dette modul to underretningsmuligheder og kan være særligt nyttigt, når du ikke er opmærksom på e -mail -meddelelser.

Du skal opdatere seks kodelinjer med dine specifikke værdier for at få skitsen til at fungere:

const char* ssid = "xxxxx"; // Dit WiFi SSIDconst char* password = "xxxxx"; // Din WiFi Password String Senders_Login = "xxxxx"; // din e -mailudbyder login String Senders_Password = "xxxxx"; // din adgangskode til din e -mailudbyder

Til = "xxxxxx"; From = "xxxxxx"; // Gmail foretrækker generelt, at dette er det samme som Senders_Login og kan erstatte

Jeg fandt, at det dybe søvnmodul fungerede uforudsigeligt, da PIR -sensoren blev indstillet til under 10 sekunder i længden af triggerhændelsen. Jeg har min indstillet til 20 sek. Dette har vist sig meget pålideligt, men det betyder også, at udløsende begivenheder kan ske med den frekvens.

Jeg har også tilføjet kode til loop-funktionen for at holde ESP-01 tændt, så længe PIR stadig registrerer bevægelse. Al koden i loop -funktionen kan fjernes, og opkaldet til dyb søvn flyttes til slutningen af opsætningsfunktionen.

Jeg bruger blinkfunktionen til en visuel indikator for aktivitet med ESP-01-modulet.

Selvom jeg har brugt og testet forbindelse med gmail, fungerer andre e -mail -udbydere også. Jeg har prøvet et par. Faktisk har jeg fundet gmail mere besværlig. Gmail kræver, at du har din konto konfigureret til adgang for mindre sikre apps. Denne kontoindstilling er OFF som standard, så sørg for at finde den, og rediger den til mindre sikker. Gmail fungerer IKKE ellers.

Hvis du vælger at have mere end et summermodul, skal du blot tilføje ekstra opkald fra http -klienten (gentag de tre linjer med kode, men ændr den anvendte ip -adresse, og definer også kun httpCode -variablen som int én gang!

Bemærk, at summerens ip -adresse er hårdt kodet i dette modul. Du behøver ikke bruge den ip -adresse, jeg har valgt, men du skal matche ip -adressen på webopkaldet i dette modul med ip -adressen til webserveropsætningen i det næste modul.

Trin 3: ESP-01 summermodul

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

Summermodulet har en ret simpel opsætning. Det bruger et USB -stik i stedet for et batteri, fordi jeg ikke tror, at dette modul er egnet til en batteripakke. Det skal forblive tændt og nework/wifi tilsluttet hele tiden, fordi det aldrig ved, hvornår en webanmodning vil blive fremsat. Dette kræver mere kontinuerlig strøm, end batteripakker er nyttige til.

Buzzer -moduler kan placeres bekvemt flere steder og giver besked om en bevægelsessensor -triggerhændelse, uanset hvor du er!

Buzzer er forbundet til 5v på USB-stikket, og der er et andet 3.3v regulatorkort, der forsyner ESP-01 med strøm.

Summermodulet fungerer ved hjælp af TX, GPIO0 eller GPIO2 til output. I min konfiguration bruger jeg GPIO0. (På billedet af modulet er ledningen forbundet til GPIO2, men jeg har siden flyttet det.) Mens GPIO0 ikke fungerede for det dybe søvnmodul (som INPUT) fungerer det fint med dette layout som OUTPUT. Det trækkes ikke til jorden på støvlen, hvilket vil forårsage problemer. Jeg brugte GPIO2, men så kunne jeg ikke bruge den indbyggede LED til nogen feedback, men ved at bruge GPIO0 til OUTPUT kan jeg bruge den indbyggede LED.

Jeg forsøgte at bruge en NPN-transistor til at drive summeren i kredsløbet, da ESP-01 satte et HØJT signal på GPIO0-stiften, men resultaterne var frygtelig inkonsekvente. Summeren syntes at ville lyde hele tiden, selv med meget lidt strøm. Så i stedet brugte jeg en N -kanal MOSFET (2n7000), og resultatet var fantastisk. IO -stiften driver porten efter behov.

Selvom vi kun har brug for to ben fra USB-stikket Vcc (+) og Gnd (-), bruger jeg en 5-pins header til at forbinde til printkortet for ekstra stabilitet og til lodning, før USB'en tilsluttes regulatoren. Mit 3.3v regulator board kom med benene forudinstalleret og i mit sind, på hovedet. Så for at sætte regulatoren i headerstifterne kan du se, at printkortet er skjult, men værre end det, vcc og gnd på regulatoren vendes fra vcc og gnd på USB -stikket. Så trådene krydser hinanden.

Bemærk også, at + strøm til den aktive summer kommer fra USB'ens 5v. Desuden fungerer en 4 -polet hunstikhoved med fem ben fint med buzzerens placering.

ESP-01 Buzzer Module Parts List:

1 - 5 x 7 printkort

1 - USB mini -stik med pinhoveder (7 ben)

2 - 1 x 3 kvindelige overskrifter

1 - AMS1117-3.3 v spændingsregulatorkort

1-2 x 4 hunhoved

2 - 1 x 4 hunstikhoveder

1 - 2N7000 N -kanal MOSFET

1 - 10 ohm modstand

1 - 5v aktiv summer

Trin 4: ESP-01 summermodulkode

Summermodulet fungerer som en simpel ESP-01 webserver. Den reagerer med en simpel besked på en root -anmodning, og når den får en buzz -anmodning, vil den aktivere summeren. GPIO0 bruges til GPIO -stiften til summer -signalet.

Bemærk, at ESP-01 er konfigureret med en hårdkodet ip-adresse. Dette er påkrævet, så modulet til dyb søvn er koblet til summerens adresse.

Ligesom det forrige modul skal du opdatere to kodelinjer med dine specifikke værdier:

// SSID og adgangskode til din WiFi -routerConst char* ssid = "xxxxxxx";

const char* password = "xxxxxxxx";

Hvis du har oprettet flere summermoduler, skal hver enkelt indlæses med sin egen unikke ip -adresse.

Du kan også tilføje forskellige buzz -metoder, der producerer forskellige summermelodier. For eksempel, hvis du har en PIR -sensor ved hoveddøren og en ved bagdøren, kan de hver især foretage en webanmodning til hver af dine summermoduler, men en sensor kan have en skitse, der kalder buzz, og den anden skitse kan kalde buzz2 så du fra lyden kan se, hvilken sensor der blev udløst. Og så videre og så videre! Buzz2 -funktionen findes ikke, men kopier bare buzz -funktionen og ændr forsinkelsesværdierne.

For webserveren skal du bare tilføje en kode kode som denne:

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

Trin 5: Endelige tanker

Dette er min første instruerbare, så jeg kan have savnet nogle praktiske ting, jeg skulle have inkluderet. AMS1117-3.3-regulatorbrættet, jeg brugte, indeholder en lille LED, der lyser, når den tændes. For det dybe søvnmodul ønskede jeg ikke, at dette skulle tændes og tømme strømmen unødigt. Så jeg lodde, hvad jeg kunne på den ene side af LED'en på brættet og brugte derefter en værktøjskniv til at skære sporlinjen. Dette var lettere end jeg troede og forhindrer lysdioden i at lyse. Jeg har ikke været i stand til at afgøre, hvad strømforbruget er, når ESP-01 er i dyb søvn, men jeg kan have et svar om et par uger. En af mine kollegaer kørte sensoren (ikke i dyb søvn) og fandt batterierne afladet (5AA) på cirka en uge. Jeg synes, at dette setup skulle give en måned eller endnu mere. Vi skal se.

Modulet til dyb søvn kostede omkring $ 8 CDN i dele (batterier medfølger ikke!) Og summermodulet $ 5.

Anbefalede: