Innholdsfortegnelse:

ESP-01 bevegelsessensor med dyp søvn: 5 trinn
ESP-01 bevegelsessensor med dyp søvn: 5 trinn

Video: ESP-01 bevegelsessensor med dyp søvn: 5 trinn

Video: ESP-01 bevegelsessensor med dyp søvn: 5 trinn
Video: 8 Часов Музыка для Глубокого Сна, Расслабляющая, Медитации, Музыка для сна и медитации, ☯159 2024, November
Anonim
Image
Image

Jeg har jobbet med å lage hjemmelagde bevegelsessensorer som sender en e -postmelding når den utløses. Det er mange eksempler på instrukser og andre eksempler på å gjøre dette. Jeg trengte nylig å gjøre dette med en batteridrevet PIR-bevegelsessensor og en ESP-01. ESP-01 er veldig funksjonell og har alle nødvendige funksjoner, så hvorfor ikke bruke det minst nødvendige og minst kostbare? Lagt til blandingen var en annen separat og ekstern ESP-01-modul som utløste en summer når bevegelsessensoren ble utløst.

Koden og det endelige kretsoppsettet er samlet fra mange kilder på nettet, og jeg tror ikke jeg kan identifisere dem spesifikt. Ideen om å sende e -post via gmail kom fra en instruerbar og andre kilder, og den endelige koden er et amalgam fra disse kildene. Å få dyp søvn på jobb førte meg på mange veier som ofte viste seg å være fruktløse. Morsomt er at når en vei viser seg å være fruktbar, slutter du å lete etter flere stier. Så jeg takker alle som har bidratt til min suksess og som ennå ikke er kjent.

Jeg hadde det samme problemet med å få PIR-sensoren til å jobbe med å utløse ESP-01 dyp søvn. Mange stier til det var en som fungerte.

Unødvendig å si at det var noen interessante hindringer eller kanskje mer relevante, en bedre forståelse av elektronikken jeg trengte. Du fortsetter å lære til noe fungerer, og da trenger du ikke å lære mer.

ESP-01 sover dyp så vel som alle andre ESP8266-moduler så lenge du ikke trenger tidsbestemt søvn. Hvis du vil at modulen skal våkne etter en angitt mengde forløpt tid, er ikke ESP-01 modulen som skal brukes. Men det var ikke det jeg ønsket. Forløpt tid er meningsløst når du bruker PIR. Jeg ønsket at ESP-01 bare skulle våkne når den ble utløst av bevegelse som ble merket av PIR. Hvis det ikke oppdages bevegelse i flere timer eller dager, sover ESP-01 med minimal batteristrøm.

Du vil se mange kretser som bruker GPIO16 koblet til ESP8266 Reset fordi GPIO16 er vekkesignalet. Dette er sant, men det er våknesignalet fra tidsbestemt søvn. Vi kan ignorere denne PIN-koden, som er bra fordi den ikke er tilgjengelig på ESP-01.

I utgangspunktet er alt vi trenger å få signalet fra PIR for å utløse ESP-01 Reset pin. Den første vanskeligheten du vil anta er at Reset utløses på et LOW -signal og PIR sender et HIGH -signal når det utløses. Tilbakestilling må også være HØY eller flyte på støvelen. Så for å holde dette kort, etter å ha prøvd noen forskjellige kretser, bestemte jeg meg for å bruke en NPN-transistor med en opptrekkmotstand for å holde RESET-pinnen HØY under oppstart. Utgangen fra PIR er minimal, men den gir nok basestrøm til å slå på transistoren.

Som du vil se i kretsdiagrammet nedenfor, ble ESP-01 vekket fra dyp søvn hver gang PIR registrerte bevegelse.

Men det var et annet problem. Tilbakestillingen av ESP-01 skjedde først etter at PIR sluttet å registrere bevegelse og returnerte til et lavt signal som slo av transistoren og tilbakestill nullstillingspinnen til HIGH på grunn av pullup-motstanden. Dette vil bety at e -posten ikke vil bli sendt, og heller ikke summeren vil bli aktivert før ETTER PIR sluttet å registrere bevegelse. Jeg ville at utløseren skulle skje så snart bevegelse ble registrert.

Det jeg bestemte fra denne oppførselen er at ESP-01 faktisk utløser på den stigende kanten av signalet. Å holde tilbakestillingsnålen til bakken utløser faktisk ikke ESP-01 fra dyp søvn, men i det øyeblikket spenningen stiger til HIGH-signalet, så skjer tilbakestillingen.

Mitt veldig enkle svar på denne oppførselen var å legge til en kondensator til linjen mellom PIR -utgangen og transistorbasen. Dette forårsaket at transistoren bare slo seg på mens kondensatoren lades. Når den var ladet, var det ingen ytterligere strøm, og transistoren ble slått av. 5k -motstanden lar strømmen renne til bakken. Jeg testet dette med en LED i stedet for ESP-01 og kunne se LED-en blinke i en brøkdel av et sekund før den ble slått av. Denne lille pulsen var nok til å trekke Reset -pinnen til bakken et øyeblikk og lenge nok til å utløse Reset ut av dyp søvn.

Trinn 1: ESP-01 dyp søvnmodul

ESP-01 dyp søvnmodul
ESP-01 dyp søvnmodul
ESP-01 dyp søvnmodul
ESP-01 dyp søvnmodul

Dypsøvnmodulen bruker to arbeidsspenninger. Den tilfeldige 5v+ av batteripakken til PIR og også et 3,3 volt regulatorkort for ESP-01. Jeg inkorporerer også en diode i kretsen for å forhindre at skadede deler blir speilvendt. Dette bruker litt ekstra strøm og reduserer batterispenningen med 0,7 volt. Dioden kan stå utenfor kretsen hvis du er sikker på at du aldri vil reversere batteripakkene. En bryter er også lagt til av bekvemmelighet.

Denne modulen er en mindre oppdatering av mitt opprinnelige ikke-dype søvnoppsett. I konfigurasjonen for ikke dyp søvn er PIR direkte koblet til RX-pinnen på ESP-01. Jeg bruker RX-pinnen til ESP-01 som inngangspinnen for PIR av flere grunner. GPIO0 fungerte ikke fordi PIR-utgangs-PIN-en ved oppstart ville være LAV og forårsake at ESP-01 går inn i blitsmodus. Jeg brukte ikke GPIO2 fordi jeg da ikke kunne bruke den innebygde LED-en for visuell tilbakemelding. RX- og TX -pinnene beskrives ofte som ekstra IO -pinner, men min erfaring er at RX er en ekstra INPUT -pinne og TX er en ekstra OUTPUT -pinne.

I dyp søvnkonfigurasjon er ikke RX -tilkoblingen strengt nødvendig. Jeg bruker den bare for å overvåke hvor lenge PIR utløses ved å slå på LED -en mens inngangen er HØY. Som nevnt tidligere, hvis du sletter sløyfefunksjonen og bare bruker oppsettrutinen, er RX -tilkoblingen unødvendig.

Her er delelisten for ESP-01 dyp søvnmodul:

1 - 5 x 7 cm PCB Prototype Board

1 - 2 pinners kontakt

2 - 1 x 3 hunnhoder

1 - AMS1117 - 3.3 spenningsregulator kretskort

1 - 1 x 3 Rett vinkel Hannstikkspinne

1 - 1 x 3 hunstikkontakt

1 - 1 x 4 hunstikkontakt

1 - 2 x 4 kvinnelig topptekst

1 - 1uf kondensator

1 - HC -SR501 PIR bevegelsessensor

1 - 2N2222 Transistor

1 - 10k motstand

1 - 4.7k motstand

1 - 1k motstand

1 - 1N4148 diode

1 - bryter SS12D00G4 SPDT

1 - ESP -01

1 - 4AA batteripakke

Vær oppmerksom på at i videoen bruker kretskortet en ESP-01 brødbrettadapter i stedet for 2 x 4 overskriften. Selv om denne adapteren er lettere å lodde, fungerer 2 x 4 header fint og passer faktisk bedre.

Trinn 2: ESP-01 Deep Sleep Code

Deep Sleep -koden utfører to funksjoner. Send en e-postmelding (via gmail som standard) og send en http-webforespørsel til den tilhørende ESP-01 summermodulen for å aktivere summeren.

Når den utløses, har denne modulen to varslingsalternativer og kan være spesielt nyttig når du ikke tar hensyn til e -postmeldinger.

Du må oppdatere seks kodelinjer med dine spesifikke verdier for å få skissen til å fungere:

const char* ssid = "xxxxx"; // Ditt WiFi SSIDconst char* passord = "xxxxx"; // WiFi Passord String Senders_Login = "xxxxx"; // e -postleverandørens pålogging String Senders_Password = "xxxxx"; // passordet til e -postleverandøren din

Til = "xxxxxx"; From = "xxxxxx"; // Gmail foretrekker vanligvis at dette er det samme som Senders_Login og kan erstatte

Jeg fant at dypsøvnmodulen fungerte uforutsigbart da PIR -sensoren ble satt til under 10 sekunder for lengden på triggerhendelsen. Jeg har min satt til 20 sekunder. Dette har vist seg veldig pålitelig, men det betyr også at utløsende hendelser kan skje med den frekvensen.

Jeg har også lagt til kode i loop-funksjonen for å holde ESP-01 ledd på så lenge PIR fortsatt registrerer bevegelse. All koden i sløyfefunksjonen kan fjernes og oppfordringen til dyp søvn flyttes til slutten av oppsettfunksjonen.

Jeg bruker blinkfunksjonen for en visuell indikator på aktivitet med ESP-01-modulen.

Selv om jeg har brukt og testet tilkobling med gmail, fungerer andre e -postleverandører også. Jeg har prøvd et par. Jeg har faktisk funnet gmail mer plagsom. Gmail krever at du har kontoen din konfigurert for tilgang av mindre sikre apper. Denne kontoinnstillingen er AV som standard, så sørg for å finne den og endre den til mindre sikker. Gmail fungerer IKKE ellers.

Hvis du velger å ha mer enn én summermodul, kan du bare legge til ekstra anrop til http -klienten (gjenta de tre kodelinjene, men endre ip -adressen som brukes, og definer også httpCode -variabelen som int en gang!

Vær oppmerksom på at ip -adressen til summeren er hardkodet i denne modulen. Du trenger ikke å bruke ip -adressen jeg har valgt, men du må matche ip -adressen til nettanropet i denne modulen med ip -adressen til webserveroppsettet i den neste modulen.

Trinn 3: ESP-01 summermodul

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

Summermodulen har et ganske enkelt oppsett. Den bruker en USB -kontakt i stedet for en batteripakke fordi jeg ikke tror denne modulen er egnet for en batteripakke. Den må forbli på og nework/wifi tilkoblet hele tiden, fordi den aldri vet når en webforespørsel blir sendt. Dette krever mer kontinuerlig strøm enn batteripakker er nyttige for.

Summermoduler kan plasseres beleilig på flere steder og gir varsel om en bevegelsessensorutløserhendelse uansett hvor du er!

Summeren er koblet til 5v på USB-kontakten, og det er et annet 3.3v regulatorkort som gir strøm til ESP-01.

Summermodulen fungerer med TX, GPIO0 eller GPIO2 for utgangen. I min konfigurasjon bruker jeg GPIO0. (På bildet av modulen er ledningen koblet til GPIO2, men jeg har siden flyttet den.) Mens GPIO0 ikke fungerte for dypsøvnmodulen (som INPUT) fungerer den fint med dette oppsettet som OUTPUT. Den trekkes ikke til bakken på støvelen, noe som vil forårsake problemer. Jeg brukte GPIO2, men da kunne jeg ikke bruke innebygd LED for tilbakemelding, men ved å bruke GPIO0 for OUTPUT kan jeg bruke LED -lampen ombord.

Jeg prøvde å bruke en NPN-transistor for å drive summeren i kretsen da ESP-01 satte et HØYT signal på GPIO0-pinnen, men resultatene var fryktelig inkonsekvente. Summeren så ut til å ville lyde hele tiden, selv med veldig lite strøm. Så i stedet brukte jeg en N -kanal MOSFET (2n7000), og resultatet var fantastisk. IO -pinnen driver porten etter behov.

Selv om vi bare trenger to pinner fra USB-kontakten Vcc (+) og Gnd (-), bruker jeg en 5-pins header for å koble til PCB-kortet for ekstra stabilitet og for lodding før du kobler USB til regulatoren. Mitt 3.3v regulatorbord kom med pinnene forhåndsinstallert og i tankene mine, opp ned. Så for å sette regulatoren inn i toppnålene kan du se at kretskortet er skjult, men verre enn det er vcc og gnd på regulatoren reversert fra vcc og gnd på USB -kontakten. Så ledningene krysser hverandre.

Vær også oppmerksom på at + strøm for den aktive summeren kommer fra 5v på USB. Dessuten fungerer en 4 -pinners hunkontaktoverskrift fint med pinnenes plassering av summeren.

ESP-01 summermodul Deleliste:

1 - 5 x 7 kretskort

1 - USB mini -kontakt med pinnehoder (7 pinner)

2 - 1 x 3 kvinnelige overskrifter

1 - AMS1117-3.3 v spenningsregulatorkort

1 - 2 x 4 kvinnelig topptekst

2 - 1 x 4 hunkontakthoder

1 - 2N7000 N -kanal MOSFET

1 - 10 ohm motstand

1 - 5v aktiv summer

Trinn 4: ESP-01 summermodulkode

Summermodulen fungerer som en enkel ESP-01 webserver. Den reagerer med en enkel melding på en root -forespørsel, og når den mottar summerforespørselen, vil den utløse summeren. GPIO0 brukes til GPIO -pinnen for summeret.

Vær oppmerksom på at ESP-01 er konfigurert med en hardt kodet ip-adresse. Dette er nødvendig for at dypsøvnmodulen skal kobles til summeradressen.

I likhet med den forrige modulen, må du oppdatere to kodelinjer med dine spesifikke verdier:

// SSID og passord for WiFi -ruteren din: char* ssid = "xxxxxxx";

const char* passord = "xxxxxxxx";

Hvis du har opprettet flere summermoduler, bør hver enkelt lastes med sin egen unike ip -adresse.

Du kan også legge til forskjellige summer metoder som produserer forskjellige summer melodier. For eksempel, hvis du har en PIR -sensor ved inngangsdøren og en på bakdøren, kan de lage en webforespørsel til hver av summermodulene dine, men en sensor kan ha en skisse som kaller buzz og den andre skissen kan ringe buzz2 slik at du kan se fra lyden hvilken sensor som ble utløst. Og så videre og så videre! Buzz2 -funksjonen eksisterer ikke, men bare kopier buzz -funksjonen og endre forsinkelsesverdiene.

For webserveren må du bare legge til en kode linje som denne:

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

Trinn 5: Avsluttende tanker

Dette er min første instruks, så jeg kan ha savnet noen praktiske ting jeg burde ha inkludert. AMS1117-3.3 regulatorbrettet jeg brukte inkluderer en liten LED som lyser når den slås på. For dypsøvnmodulen ønsket jeg ikke at dette skulle fortsette og tappe strømmen unødvendig. Så jeg loddet det jeg kunne på den ene siden av ledningen på brettet og brukte deretter en verktøykniv til å kutte sporlinjen. Dette var enklere enn jeg trodde og forhindrer lysdioden i å lyse. Jeg har ikke klart å finne ut hva kraftuttaket er når ESP-01 er i dyp søvn, men jeg kan ha svar om noen uker. En kollega av meg kjørte sensoren (ikke i dyp søvn) og fant batteriene utladet (5AA) på omtrent en uke. Jeg tror dette oppsettet burde gi en måned eller enda mer. Vi får se.

Dypsøvnmodulen kostet ca $ 8 CDN i deler (batterier er ikke inkludert!) Og summermodulen $ 5.

Anbefalt: