Cuprins:

Alarmă de apă IoT: 5 pași (cu imagini)
Alarmă de apă IoT: 5 pași (cu imagini)

Video: Alarmă de apă IoT: 5 pași (cu imagini)

Video: Alarmă de apă IoT: 5 pași (cu imagini)
Video: Пошаговое подключение и настройка поворотной Wi-Fi IP-камеры видеонаблюдения 2024, Iulie
Anonim
Alarmă de apă IoT
Alarmă de apă IoT

Recent am experimentat rezerva de scurgere a bucătăriei. Dacă nu aș fi fost acasă la acea vreme, ar fi provocat daune în pardoseală și gips-carton în apartamentul meu. Din fericire, eram conștient de problemă și eram gata să scot apa cu o găleată. Acest lucru m-a făcut să mă gândesc să cumpăr o alarmă de inundație. Am descoperit o mulțime de produse accesibile pe Amazon, dar cele cu conectivitate la internet au avut un procent semnificativ de recenzii negative, în principal din cauza problemelor legate de serviciile de notificare proprietare. De aceea am decis să fac propria mea alarmă de apă IoT care să folosească mijloace de notificare de încredere la alegerea mea.

Pasul 1: Principiul de funcționare

Principiul de funcționare
Principiul de funcționare

Alarma are un microcontroler AVR ATtiny85 ca creier. Este nevoie de citiri de tensiune de la baterie și de la senzorul de apă și le compară cu o valoare predefinită pentru a detecta prezența apei sau starea bateriei slabe.

Senzorul de apă este pur și simplu două fire amplasate la aproximativ 1 mm unul de altul. Unul dintre fire este conectat la 3,3 V, iar celălalt este conectat la un pin de detectare de pe microcontroler, care este conectat și la masă printr-un rezistor de 0,5 MOhm. În mod normal, rezistența dintre firele senzorului este foarte mare (mult peste 10 MOhm), astfel încât știftul de detectare este tras până la 0 V. Cu toate acestea, când există apă între fire, rezistența scade la mai puțin de 1 MOhm, iar pinul de detectare vede o anumită tensiune (în cazul meu aproximativ 1,5 V). Când ATtiny85 detectează această tensiune pe pinul de detectare, activează un MOSFET pentru a porni un buzzer și trimite semnalul de trezire la modulul ESP8266 care este responsabil pentru trimiterea alertelor (notificări prin e-mail și push). După un zumzet de un minut, alarma este dezarmată și poate fi resetată numai prin ciclul de alimentare.

Această unitate curge din două celule alcaline sau NiMH. Microcontrolerul este adormit de cele mai multe ori pentru a conserva bateriile, trezindu-se intermitent pentru a verifica senzorul de apă, precum și tensiunea bateriilor. Dacă bateriile sunt descărcate, microcontrolerul trezește modulul ESP8266 pentru a trimite un avertisment de baterie descărcată. După avertizare, alarma este dezarmată pentru a preveni supra-descărcarea bateriei.

Deoarece modulul ESP8266 este responsabil pentru trimiterea atât avertismentelor privind bateria descărcată, cât și a alertelor de inundații, necesită un semnal de control de la ATiny85. Datorită numărului limitat de pini disponibili, acest semnal de control este generat de același pin responsabil pentru indicarea LED-ului bateriei. În timpul funcționării normale (alarma este activată și bateriile sunt încărcate), LED-ul clipește intermitent. Când se detectează starea bateriei slabe, LED-ul se aprinde pentru a oferi un semnal ridicat pinului RX al modulului ESP. Dacă este detectată apă, LED-ul bateriei se va stinge în timp ce ESP8266 este treaz..

Pasul 2: Proiectare și asamblare

Proiectare și asamblare
Proiectare și asamblare
Proiectare și asamblare
Proiectare și asamblare
Proiectare și asamblare
Proiectare și asamblare

Am proiectat circuitul pentru a fi construit pe un protoboard pe două fețe de 4x6 cm folosind în mare parte 0805 piese SMD. Schemele prezentate se bazează pe această construcție, dar pot fi adaptate cu ușurință pentru componentele orificiului traversant (sfat: pentru a minimiza spațiul, lipiți vertical rezistențele prin orificiu).

Sunt necesare următoarele părți:

- Rezistoare: 330 Ω x 1; 470 Ω x 1; 680 Ω x 1; 1 kΩ x 1; 10 kΩ x 3; 470 kΩ x 3; - Un condensator ceramic de 10 µF - Un MOSFET cu canal N la nivel logic (de ex. RFP30N06LE sau AO3400) - Un LED roșu și unul galben (sau alte culori dacă doriți). absolut necesar, dar facilitează conectarea și deconectarea periferiei în timpul testării) - Un buzzer piezo-sonor care este bun pentru 3,3 V - Un microcontroler ATtiny85 (versiunea PDIP) - O priză PDIP cu 8 pini pentru microcontroler - Un modul ESP-01 (poate fi înlocuit cu un alt modul bazat pe ESP8266, dar în acest caz vor exista o mulțime de modificări în aspect) - Un convertor de impuls de 3,3 V DC-DC capabil să furnizeze curenți de 200 mA (500 mA rafală) la 2,2 V intrare. (Recomand https://www.canton-electronics.com/power-converter… datorită curentului său de repaus ultra-scăzut) - Un antet femelă cu 3 pini- Două anteturi mamă cu 4 pini sau un antet 2x4- 22 fire AWG solide pentru senzorul de apă - sârmă torsadată de 22 AWG (sau un alt tip de fir subțire expus pentru a crea urme)

Recomand valorile rezistenței enumerate mai sus, dar ați putea să le înlocuiți cu valori similare. În funcție de tipul de LED-uri pe care doriți să le utilizați, poate fi necesar să reglați valorile rezistenței care limitează curentul pentru a obține luminozitatea dorită. MOSFET-ul poate fi orificiu de trecere sau SMT (SOT23). Numai orientarea rezistorului de 330 Ohm este afectată de tipul MOSFET-ului. O siguranță PTC (de exemplu, nominală pentru 1 A) este recomandată dacă intenționați să utilizați acest circuit cu baterii NiMH. Cu toate acestea, nu este necesar cu bateriile alcaline. Sfat: piesele necesare pentru această alarmă pot fi achiziționate ieftin de pe eBay sau AliExpress.

În plus, pentru a programa modulul ESP-01, veți avea nevoie de o placă de rezistență, mai multe rezistențe 10k prin găuri, mai multe fire jumper masculin și feminin masculin ("dupont") și un adaptor USB-UART.

Senzorul de apă poate fi realizat într-o varietate de moduri, dar cel mai simplu este două fire de 22 AWG cu capete expuse (1 cm lungime) distanțate la aproximativ 1 mm distanță. Scopul este de a avea o rezistență mai mică de 5 MΩ între contactele senzorului atunci când este prezentă apă.

Circuitul este proiectat pentru o economie maximă a bateriei. Acesta atrage doar 40-60 µA în regimul de monitorizare (cu LED-ul de alimentare scos pe modulul ESP-01). Odată ce alarma este declanșată, circuitul va trage 300-500 mA (la intrare de 2,4 V) pentru o secundă sau mai puțin, iar după aceea curentul va scădea sub 180 mA. Odată ce modulul ESP este terminat de trimis notificări, consumul curent va scădea sub 70 mA până când buzzerul se oprește. Atunci alarma se va dezarma singură, iar consumul curent va fi sub 30 µA. Astfel, un set de baterii AA va putea alimenta circuitul timp de mai multe luni (probabil peste un an). Dacă utilizați un convertor de impuls diferit, să spunem cu un curent de repaus de 500 µA, bateriile vor trebui schimbate mult mai des.

Sfaturi de asamblare:

Utilizați un marker permanent pentru a eticheta toate urmele și componentele de pe protoard pentru o lipire mai ușoară. Vă recomand să continuați în următoarea ordine:

- LED-uri SMT laterale superioare și punți de sârmă izolate

- MOSFET partea superioară (notă: dacă aveți un MOSFET SOT-23, așezați-l în diagonală ca în fotografie. Dacă utilizați un MOSFET cu orificiu traversant, plasați-l orizontal cu știftul de poartă în poziția I3.)

- partea superioară prin piesele orificiului (notă: soneria nu este lipită și nici măcar nu trebuie montată pe PCB)

- piese și urme SMT pe partea din spate (de ex. fire individuale din fir AWG22)

Pasul 3: Firmware

Cod C pentru ATtiny85

Main.c conține codul care trebuie compilat și încărcat pe microcontroler. Dacă aveți de gând să utilizați o placă Arduino ca programator, puteți găsi schema de cablare în acest tutorial. Trebuie să urmați doar următoarele secțiuni (ignorați restul):

- Configurarea Arduino Uno ca ISP (programare în sistem)

- Conectarea ATtiny85 cu Arduino Uno.

Pentru a compila și încărca firmware-ul, veți avea nevoie fie de CrossPack (pentru Mac OS), fie de lanțul de instrumente AVR (pentru Windows). Următoarea comandă trebuie executată pentru a compila codul:

avr-gcc -Os -mmcu = attiny85 -c main.c; avr-gcc -mmcu = attiny85 -o main.elf main.o; avr-objcopy -j.text -j.data -O ihex main.elf main.hex

Pentru a încărca firmware-ul, executați următoarele:

avrdude -c arduino -p attiny85 -P /dev/cu.usbmodem1411 -b 19200 -e -U flash: w: main.hex

În loc de „/dev/cu.usbmodem1411” va trebui probabil să introduceți portul serial la care este conectat Arduino (îl puteți găsi în ID-ul Arduino: Portul de instrumente).

Codul conține mai multe funcții. deep_sleep () face ca microcontrolerul să intre într-o stare de putere foarte mică timp de aproximativ 8 secunde. read_volt () este utilizat pentru a măsura tensiunea bateriei și a senzorului. Tensiunea bateriei este măsurată în raport cu tensiunea de referință internă (2,56 V plus sau minus câteva procente), în timp ce tensiunea senzorului este măsurată în funcție de Vcc = 3,3 V. Citirile sunt comparate cu BATT_THRESHOLD și SENSOR_THRESHOLD definite ca 932 și respectiv 102, care corespund ~ 2,3 și 0,3 V. Este posibil să puteți reduce valoarea pragului bateriei pentru o durată de viață îmbunătățită a bateriei, dar nu este recomandată (consultați Considerațiile privind bateria pentru informații detaliate).

activate_alarm () notifică modulul ESP despre detectarea apei și sună soneria. low_batt_notification () anunță modulul ESP că bateria este descărcată și sună și buzzerul. Dacă nu doriți să fiți treziți în mijlocul nopții pentru a schimba bateria, eliminați „| 1 <” în low_batt_notification ().

Schiță Arduino pentru ESP-01

Am ales să programez modulul ESP folosind Arduino HAL (urmați linkul pentru instrucțiuni de configurare). În plus, am folosit următoarele două biblioteci:

ESP8266 Trimite e-mail de Górász Péter

ESP8266 Pushover de către echipa Arduino Hannover

Prima bibliotecă se conectează la un server SMTP și trimite o alertă la adresa dvs. de e-mail. Doar creați un cont Gmail pentru ESP-ul dvs. și adăugați acreditările la cod. A doua bibliotecă trimite notificări push prin intermediul serviciului Pushover (notificările sunt gratuite, dar trebuie să plătiți o dată pentru a instala aplicația pe telefon / tabletă). Descărcați ambele biblioteci. Puneți conținutul bibliotecii Trimiteți e-mail în dosarul dvs. de schițe (arduino îl va crea când deschideți schița arduino pentru prima dată). Instalați biblioteca Pushover prin IDE (Sketch -> Include Library -> Add. ZIP library).

Pentru a programa modulul ESP-01 puteți urma următorul tutorial: https://www.allaboutcircuits.com/projects/breadbo… Nu este nevoie să vă deranjați să revindeți un rând de pini așa cum se arată în ghid - utilizați doar dupont femeie-bărbat fire pentru a conecta pinii modulului la panoul de control. Nu uitați că convertorul boost și adaptorul USB-UART trebuie să împartă la sol (notă: este posibil să puteți utiliza ieșirea de 3,3 V a adaptorului USB-UART în locul convertorului boost, dar cel mai probabil nu va fi să fie capabil să producă suficient curent).

Pasul 4: Considerații privind bateria

Codul de firmware furnizat este preconfigurat pentru a trimite o avertizare a bateriei descărcate și a se opri la ~ 2,3 V. Acest prag se bazează pe presupunerea că două baterii NiMH sunt utilizate în serie. Nu este recomandat să descărcați nicio celulă NiMH individuală sub 1 V. Presupunând că ambele celule au capacități și caracteristici egale de descărcare, ambele vor fi tăiate la ~ 1,15 V - bine în intervalul de siguranță. Cu toate acestea, celulele NiMH care au fost utilizate de multe cicluri de descărcare tind să difere în ceea ce privește capacitatea. Până la 30% diferență de capacitate poate fi tolerată, deoarece ar duce în continuare la cel mai mic punct de întrerupere a celulei de tensiune în jurul valorii de 1 V.

Deși este posibil să reduceți pragul scăzut al bateriei în firmware, acest lucru ar elimina marja de siguranță și ar putea duce la supra-descărcare și deteriorare a bateriei, în timp ce este de așteptat doar o creștere marginală a duratei de viață a bateriei (o celulă NiMH este> 85% descărcat la 1,15 V).

Un alt factor care trebuie luat în considerare este capacitatea convertorului de creștere de a furniza cel puțin 3,0 V (2,5 V conform dovezilor anecdotice) la 300-500 mA curent de vârf la baterii slabe. Rezistența internă scăzută a bateriilor NiMH provoacă doar o scădere neglijabilă de 0,1 V la curenții de vârf, astfel încât o pereche de celule NiMH descărcate la 2,3 V (circuit deschis) vor putea furniza cel puțin 2,2 V convertorului de impuls. Cu toate acestea, este mai complicat cu bateriile alcaline. Cu o pereche de baterii AA așezate la 2,2-2,3 V (circuit deschis) este de așteptat o cădere de tensiune de 0,2-0,4 V la curenții de vârf. Deși am verificat că circuitul funcționează cu convertorul de impuls recomandat cu doar 1,8 V furnizați la curenții de vârf, acest lucru face probabil ca tensiunea de ieșire să scadă momentan sub valoarea sugerată de Espressiff. Astfel, pragul de întrerupere de 2,3 V lasă puțină marjă de siguranță cu bateriile alcaline (rețineți că o măsurare a tensiunii efectuată de microcontroler este precisă doar în plus sau în minus câteva procente). Pentru a vă asigura că modulul ESP nu se blochează când bateriile alcaline sunt descărcate, vă recomand să măriți tensiunea de întrerupere la 2,4 V (#define BATT_THRESHOLD 973). La 1,2 V (circuit deschis) o celulă alcalină este descărcată cu aproximativ 70%, ceea ce este cu doar 5-10 puncte procentuale mai mic decât gradul de descărcare la 1,15 V pe celulă.

Atât celulele NiMH, cât și celulele alcaline au avantaje și dezavantaje pentru această aplicație. Bateriile alcaline sunt mai sigure (nu iau foc dacă sunt scurtcircuitate) și au o rată de auto-descărcare mult mai mică. Cu toate acestea, bateriile NiMH garantează funcționarea fiabilă a ESP8266 la un punct de întrerupere mai scăzut datorită rezistenței interne scăzute. Dar, în cele din urmă, oricare dintre tipuri poate fi utilizat cu unele precauții, deci este doar o chestiune de preferință personală.

Pasul 5: Declinare legală

Acest circuit a fost proiectat de un pasionat non-profesionist numai pentru aplicații hobby. Acest design este împărtășit cu bună-credință, dar fără nicio garanție. Folosiți-l și împărtășiți cu alții pe propria răspundere. Recreând circuitul, sunteți de acord că inventatorul nu va fi tras la răspundere pentru niciun fel de daune (inclusiv, dar fără a se limita la deteriorarea activelor și vătămări corporale) care ar putea apărea direct sau indirect prin defecțiuni sau utilizarea normală a acestui circuit. Dacă legile țării dvs. anulează sau interzic această renunțare la răspundere, nu puteți utiliza acest design. Dacă împărtășiți acest design sau un circuit modificat bazat pe acest design, trebuie să creditați inventatorul original indicând adresa URL a acestui instructiv.

Recomandat: