Cuprins:

Senzor de mișcare ESP-01 cu somn profund: 5 pași
Senzor de mișcare ESP-01 cu somn profund: 5 pași

Video: Senzor de mișcare ESP-01 cu somn profund: 5 pași

Video: Senzor de mișcare ESP-01 cu somn profund: 5 pași
Video: Post COVID-19 Autonomic Dysfunction 2024, Noiembrie
Anonim
Image
Image

Am lucrat la realizarea unor senzori de mișcare de casă care să trimită un mesaj de e-mail la declanșare. Există multe exemple instructabile și alte exemple de a face acest lucru. De curând am avut nevoie să fac acest lucru cu un senzor de mișcare PIR cu baterie și un ESP-01. ESP-01 este foarte funcțional și are toate capabilitățile necesare, deci de ce să nu folosiți minimul și cel mai puțin costisitor necesar? La amestec s-a adăugat un alt modul ESP-01 separat și la distanță care a declanșat un buzzer când a fost declanșat senzorul de mișcare.

Codul și eventualul aspect al circuitului au fost colectate din numeroase surse de pe web și nu cred că le pot identifica în mod specific. Ideea de a trimite e-mailuri prin Gmail a venit dintr-o sursă instructabilă și din alte surse, iar codul final este un amalgam din acele surse. Somnul profund la muncă m-a condus pe multe căi care s-au dovedit deseori infructuoase. Lucru amuzant este că, odată ce o cale se dovedește fructuoasă, nu mai căutați mai multe căi. Așa că mulțumesc tuturor celor care au contribuit la succesul meu și sunt încă necunoscuți.

Am avut aceeași problemă cu senzorul PIR să acționeze la declanșarea somnului profund ESP-01. Multe căi până când a existat una care a funcționat.

Inutil să spun că au existat câteva obstacole interesante sau poate mai relevante, o mai bună înțelegere a electronicii pe care le-am solicitat. Înveți în continuare până când ceva funcționează și apoi nu mai trebuie să înveți.

ESP-01 face somn profund, precum și orice alt modul ESP8266, atâta timp cât nu aveți nevoie de somn temporizat. Dacă doriți ca modulul să se trezească după o anumită perioadă de timp scurs, ESP-01 nu este modulul de utilizat. Dar nu asta am vrut. Timpul scurs este inutil atunci când se utilizează un PIR. Am vrut ca ESP-01 să se trezească numai atunci când este declanșat de mișcarea detectată de PIR. Dacă nu se simte mișcare ore sau zile, ESP-01 rămâne adormit folosind o baterie minimă.

Veți vedea multe circuite care utilizează GPIO16 conectat la resetarea ESP8266 deoarece GPIO16 este semnalul de trezire. Acest lucru este adevărat, dar este semnalul de trezire din somnul temporizat. Putem ignora acest cod PIN, care este bun deoarece nu este disponibil pe ESP-01.

Practic, tot ce avem nevoie este să obținem semnalul de la PIR pentru a declanșa pinul de resetare ESP-01. Prima dificultate pe care o veți presupune este că Resetarea este declanșată pe un semnal LOW și PIR trimite un semnal HIGH când este declanșat. Resetarea trebuie să fie, de asemenea, HIGH sau plutitoare la boot. Deci, pentru a păstra acest scurt, după ce am încercat câteva circuite diferite, m-am hotărât să folosesc un tranzistor NPN cu un rezistor pull-up pentru a menține pinul RESET HIGH în timpul bootului. Ieșirea din PIR este minimă, dar oferă suficient curent de bază pentru a activa tranzistorul.

După cum veți vedea în schema de circuit de mai jos, ESP-01 a fost trezit din somn profund de fiecare dată când PIR a simțit mișcarea.

Dar a existat o altă problemă. Resetarea ESP-01 s-a întâmplat numai după ce PIR a oprit detectarea mișcării și a revenit la un semnal scăzut oprind tranzistorul și readucând pinul Reset la HIGH din cauza rezistenței de tragere. Acest lucru ar însemna că e-mailul nu ar fi trimis și nici buzzer-ul nu ar fi activat până DUPĂ ce PIR a încetat să mai simtă mișcarea. Am vrut ca declanșatorul să se întâmple de îndată ce mișcarea a fost sesizată.

Ceea ce am stabilit din acest comportament este că ESP-01 se declanșează de fapt pe marginea ascendentă a semnalului. Ținerea pinului Reset la masă nu declanșează efectiv ESP-01 din somn profund, dar în momentul în care tensiunea crește la semnalul HIGH, atunci resetarea are loc.

Răspunsul meu foarte simplu la acest comportament a fost să adaug un condensator la linia dintre ieșirea PIR și baza tranzistorului. Acest lucru a determinat pornirea tranzistorului numai în timp ce condensatorul se încărca. Odată încărcat, nu mai exista curent și tranzistorul s-a oprit. Rezistorul de 5k permite curentului să se scurgă la sol. Am testat acest lucru cu un LED în locul ESP-01 și am putut vedea LED-ul aprins timp de o fracțiune de secundă înainte de oprire. Acest mic impuls a fost suficient pentru a trage știftul Reset la sol momentan și suficient pentru a declanșa Resetarea din somn profund.

Pasul 1: ESP-01 Modul Deep Sleep

ESP-01 Modul Deep Sleep
ESP-01 Modul Deep Sleep
ESP-01 Modul Deep Sleep
ESP-01 Modul Deep Sleep

Modulul de somn profund folosește două tensiuni de lucru. 5v + aleatoriu al acumulatorului pentru PIR și, de asemenea, o placă de regulator de 3,3 volți pentru ESP-01. De asemenea, încorporez o diodă în circuit pentru a preveni piesele deteriorate de la tensiuni inverse. Acest lucru folosește un pic de energie suplimentară și scade tensiunea acumulatorului cu 0,7 volți. Dioda poate fi lăsată în afara circuitului dacă sunteți sigur că nu veți inversa niciodată cablurile acumulatorului. Un comutator este, de asemenea, adăugat din comoditate.

Acest modul este o actualizare minoră a aspectului meu original de somn non-profund. În configurația de somn non-profund, PIR este conectat direct la pinul RX al ESP-01. Folosesc pinul RX al ESP-01 ca pin de intrare pentru PIR din câteva motive. GPIO0 nu a funcționat deoarece la pornire PIN-ul de ieșire PIR ar fi LOW, determinând ESP-01 să intre în modul bliț. Nu am folosit GPIO2 pentru că atunci nu am putut folosi LED-ul încorporat pentru feedback-ul vizual. Pinii RX și TX sunt adesea descriși ca pinii IO suplimentari, dar experiența mea este că RX este un pin INPUT suplimentar și TX este un pin OUTPUT suplimentar.

În configurația de somn profund, conexiunea RX nu este strict necesară. Îl folosesc numai pentru a monitoriza cât timp este declanșat PIR prin aprinderea LED-ului în timp ce intrarea este HIGH. După cum sa menționat anterior, dacă ștergeți funcția de buclă și utilizați doar rutina de configurare, atunci conexiunea RX nu este necesară.

Iată lista pieselor pentru modulul de somn profund ESP-01:

Placă prototip PCB 1 - 5 x 7 cm

Conector 1 - 2 pini

2 - 1 x 3 anteturi feminine

1 - AMS1117 - 3.3 placă de circuit a regulatorului de tensiune

1 - 1 x 3 Unghiul drept Mascul antet

1 - 1 x 3 știft femelă antet

1 - 1 x 4 pin femelă antet

1 - 2 x 4 antet feminin

1 - 1uf condensator

1 - Senzor de mișcare HC-SR501 PIR

1 - 2N2222 Tranzistor

Rezistor 1 - 10k

1 - 4.7k rezistor

Rezistor 1 - 1k

1 - 1N4148 diodă

1 - comutator SS12D00G4 SPDT

1 - ESP-01

1 - Acumulator 4AA

Vă rugăm să rețineți că, în video, placa de circuit folosește un adaptor ESP-01 pentru placa de masă în locul antetului 2 x 4. În timp ce acest adaptor este mai ușor de lipit, antetul 2 x 4 funcționează bine și se potrivește mai bine.

Pasul 2: Codul de somn profund ESP-01

Codul Deep Sleep îndeplinește două funcții. Trimiteți un mesaj de e-mail (prin gmail în mod implicit) și trimiteți o solicitare web http către modulul buzzer ESP-01 asociat pentru a declanșa buzzerul.

Când este declanșat, acest modul oferă două opțiuni de notificare și poate fi util mai ales atunci când nu sunteți atenți la mesajele de e-mail.

Va trebui să actualizați șase linii de cod cu valorile dvs. specifice pentru ca schița să funcționeze:

const char * ssid = "xxxxx"; // WiFi SSIDconst char * password = "xxxxx"; // Expeditorul dvs. de șiruri de parole WiFi_Login = "xxxxx"; // autentificare furnizor de e-mail String Senders_Password = "xxxxx"; // parola furnizorului dvs. de e-mail

To = "xxxxxx"; De la = "xxxxxx"; // Gmail preferă în general ca acesta să fie același cu Senders_Login și poate înlocui

Am găsit modulul de somn profund funcționând imprevizibil atunci când senzorul PIR a fost setat sub 10 secunde pentru durata evenimentului declanșator. Am al meu setat la 20 de secunde. Acest lucru sa dovedit foarte fiabil, dar înseamnă, de asemenea, că evenimentele declanșatoare s-ar putea întâmpla cu această frecvență.

De asemenea, am adăugat cod la funcția de buclă pentru a menține ESP-01 pornit atâta timp cât PIR încă mai detectează mișcare. Tot codul din funcția buclă poate fi eliminat și apelul la somn profund mutat la sfârșitul funcției de configurare.

Folosesc funcția de clipire pentru un indicator vizual de activitate cu modulul ESP-01.

În timp ce am folosit și testat conectivitatea cu Gmail, alți furnizori de e-mail funcționează și ei. Am încercat un cuplu. De fapt, am găsit Gmail mai deranjant. Gmail necesită ca contul dvs. să fie configurat pentru accesul de către aplicații mai puțin sigure. Această setare a contului este OPRIT în mod prestabilit, deci asigurați-vă că o găsiți și schimbați-o în mai puțin sigură. Gmail NU va funcționa altfel.

Dacă alegeți să aveți mai multe module buzzer, adăugați doar apeluri suplimentare ale clientului http (repetați cele trei linii de cod, dar modificați adresa IP utilizată și definiți variabila httpCode doar ca o dată!

Rețineți că adresa IP a buzzer-ului este codificată în acest modul. Nu trebuie să utilizați adresa IP pe care am ales-o, dar trebuie să potriviți adresa IP a apelului web din acest modul cu adresa IP a configurării serverului web din modulul următor.

Pasul 3: Modul Buzzer ESP-01

Modul Buzzer ESP-01
Modul Buzzer ESP-01
Modul Buzzer ESP-01
Modul Buzzer ESP-01
Modul Buzzer ESP-01
Modul Buzzer ESP-01

Modulul buzzer are o configurare destul de simplă. Folosește un conector USB în locul unui acumulator, deoarece nu cred că acest modul este potrivit pentru un acumulator. Trebuie să rămână pornit și să fie conectat în permanență la nework / wifi, deoarece nu știe niciodată când se va face o solicitare web. Acest lucru necesită mai multă energie continuă decât bateriile pentru care sunt utile.

Modulele buzzer pot fi amplasate convenabil în mai multe locații, oferind notificarea unui eveniment de declanșare a senzorului de mișcare, indiferent unde vă aflați!

Buzzer-ul este conectat la 5v al conectorului USB și există o altă placă de regulator de 3,3v care furnizează alimentare ESP-01.

Modulul buzzer va funcționa folosind TX, GPIO0 sau GPIO2 pentru ieșire. În configurația mea folosesc GPIO0. (În imaginea modulului firul este conectat la GPIO2, dar de atunci l-am mutat.) În timp ce GPIO0 nu a funcționat pentru modulul de somn profund (ca INPUT) funcționează bine cu acest aspect ca OUTPUT. Nu este tras la sol pe portbagaj, ceea ce va cauza probleme. Am folosit GPIO2, dar nu am putut folosi LED-ul de la bord pentru niciun feedback, dar folosind GPIO0 pentru OUTPUT pot folosi LED-ul de la bord.

Am încercat să folosesc un tranzistor NPN pentru a alimenta buzzerul din circuit când ESP-01 a pus un semnal HIGH pe pinul GPIO0, dar rezultatele au fost teribil de inconsistente. Buzzerul părea să vrea să sune în orice moment, chiar și cu foarte puțină putere. Deci, în schimb, am folosit un MOSFET cu canal N (2n7000) și rezultatul a fost grozav. PIN-ul IO conduce Poarta după cum este necesar.

În timp ce avem nevoie doar de doi pini de la conectorul USB Vcc (+) și Gnd (-), folosesc un antet cu 5 pini pentru a mă conecta la placa PCB pentru o stabilitate suplimentară și pentru lipire înainte de a conecta USB-ul la regulator. Placa mea de reglare de 3.3v a venit cu pinii preinstalați și în mintea mea, cu capul în jos. Deci, pentru a pune regulatorul în pinii antetului, puteți vedea că placa de circuit este ascunsă, dar mai rău de atât, vcc și gnd pe regulator sunt inversate de la vcc și gnd pe conectorul USB. Deci firele se încrucișează.

Rețineți, de asemenea, că + puterea pentru buzzerul activ provine de la 5v ale USB-ului. De asemenea, un antet cu mufă cu 4 pini funcționează frumos cu amplasarea pinului buzzerului.

Lista pieselor modulului buzzer ESP-01:

Placă PCB 1 - 5 x 7

1 - mini conector USB cu anteturi pin (7 pini)

2 - 1 x 3 anteturi feminine

1 - placa regulator de tensiune AMS1117-3.3 v

1 - 2 x 4 antet feminin

2 - 1 x 4 anteturi femele

1 - 2N7000 MOSFET cu canal N

Rezistor de 1-10 ohmi

1 - 5v buzzer activ

Pasul 4: Codul modulului buzzer ESP-01

Modulul buzzer acționează ca un simplu server web ESP-01. Răspunde cu un mesaj simplu la o cerere root și, atunci când primește cererea buzz, va declanșa buzzer-ul. GPIO0 este utilizat pentru pinul GPIO pentru semnalul sonor.

Rețineți că ESP-01 este configurat cu o adresă ip codificată. Acest lucru este necesar pentru ca modulul de somn profund să fie cuplat la adresa sonorului.

La fel ca modulul anterior, va trebui să actualizați două linii de cod cu valorile dvs. specifice:

// SSID și Parola routerului WiFi constonst char * ssid = "xxxxxxx";

const char * password = "xxxxxxxx";

Dacă aveți mai multe module buzzer create, fiecare trebuie încărcat cu propria adresă IP unică.

De asemenea, puteți adăuga diferite metode de buzz care produc melodii de buzzer diferite. De exemplu, dacă aveți un senzor PIR la ușa din față și unul la ușa din spate, fiecare poate face o solicitare web către fiecare dintre modulele dvs. de sonerie, dar un senzor poate avea o schiță care apelează buzz, iar cealaltă schiță poate apela buzz2 astfel încât să puteți spune din sunet ce senzor a fost declanșat. Și tot așa și așa mai departe! Funcția buzz2 nu există, ci doar copiați funcția buzz și modificați valorile de întârziere.

Pentru serverul web ar trebui doar să adăugați o linie de cod de genul acesta:

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

Pasul 5: Gânduri finale

Acesta este primul meu instructable, așa că este posibil să fi ratat câteva lucruri practice pe care ar fi trebuit să le includ. Placa de reglare AMS1117-3.3 pe care am folosit-o include un led mic care se aprinde când este pornit. Pentru modulul de somn profund nu am dorit ca acest led să pornească și să scurgă puterea inutil. Așa că am dezvândut ce puteam pe o parte a ledului de pe tablă și apoi am folosit un cuțit utilitar pentru a tăia linia de urmărire. Acest lucru a fost mai ușor decât credeam și împiedică aprinderea LED-ului. Nu am reușit să stabilesc care este puterea atunci când ESP-01 este în somn profund, dar aș putea avea un răspuns în câteva săptămâni. Un coleg de-al meu rulează senzorul (nu în somn profund) și a găsit bateriile descărcate (5AA) în aproximativ o săptămână. Cred că această configurație ar trebui să ofere o lună sau chiar mai mult. Vom vedea.

Modulul de somn profund costă aproximativ 8 USD CDN în piese (bateriile nu sunt incluse!), Iar modulul buzzer 5 USD.

Recomandat: