Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
U ovom uputstvu pokazat ću vam kako izgraditi WiFi senzor poplave/vode uz minimalne troškove. Cijeli projekt košta me manje od 8 USD za dijelove koje nabavljam na ebayu i moje postojeće rezervne dijelove.
U ovom projektu ćemo koristiti ESP-01 za pružanje Wifi i MQTT klijenta za otkrivanje prisutnosti vode, a opcionalno ćemo koristiti i direktno spojen zvučnik/zujalicu za pružanje lokaliziranog alarma.
Moja specifična primjena za projekt je otkrivanje poplave/vode unutar bunara pumpe u koritu, u slučaju kvara pumpe u koritu. Kada dvije vode otkriju vodu, poslale bi poruku MQTT brokeru. MQTT posrednik bi zatim prenio poruku NodeRED -u. Nakon primanja MQTT poruke, NodeRED bi poslao najavu na više google kućnih uređaja, a opcionalno i poruku na mobitel/preglednik putem pushbulleta
Naravno, ovaj projekt bi funkcionirao samo ako je kućna struja UKLJUČENA. U sljedećim uputama integrirat ću rezervno kolo baterije. Ali ako napajanje napravite na isti način kao i ja, možete jednostavno priključiti USB bateriju za rezervno napajanje baterije. Ako imate banku napajanja koja vam omogućuje istovremeno punjenje i napajanje, sve je spremno.
Koristim RaspberryPi ZeroW za hostiranje Mosquitto MQTT servera i NodeRED -a. Radi već više od godinu dana bez ikakvih problema.
Reference: Raspberry Pi: https://www.switchdoc.com/2016/02/tutorial-installi…Instalirajte NodeRED na Raspberry Pi:
Korak 1: Dijelovi koji će vam trebati
Lista dijelova:
(1) ESP-01
(2) 10K ohm otpornik
(1) generički NPN tranzistor sa malim signalom (koristio sam 2N3904)
(2) duge žice
(1) Općenito napajanje od 5 V (ovo kolo zahtijeva struju manju od 300 mA)
(1) 3.3V regulator modul AMS1117
(1) Micro-USB na DIP adapter ženski konektor PCB pretvarač DIY komplet
(1) Kabel USB-A na MicroUSB.
(1) 8-polna IC utičnica-može se izostaviti ako želite lemiti ESP-01 direktno na ploču. Izrežite plastične mostove koji stvaraju razmak između redova, a zatim zalijepite dva reda zajedno, pogledajte fotografiju.
(1) Malo kućište za projekat
Ispod su opcijski dijelovi ako vam je potreban lokalizirani alarm pomoću zvučnika/zujalice
(1) Opći PNP tranzistor, odaberite prema zahtjevu zvučnika/zujalice/snazi. U mom slučaju koristim 2N2907 budući da je moj zvučnik samo 0,3 W (8 ohma), pružio bi dovoljno snage za pogon zvučnika. Možete odabrati veći tranzistor i zvučnik ako želite jači zvuk.
(1) Zvučnik, pogledajte napomenu o PNP tranzistoru gore
(1) Otpornik 100 - 110 ohma
Korak 2: Dijagram kola
Prvi korak bio bi stvaranje kruga prikazanog na dijagramu.
Napravio sam napajanje od 3.3VDC koristeći stari 5V punjač za mobitele zajedno sa AMS1117 3.3VDC regulatorom. Za utičnicu ESP-01 koristim 8-polnu standardnu IC utičnicu i režem plastične mostove koji stvaraju razmak između redova, a zatim lijepim 2 reda zajedno.
Krug koji sam dizajnirao treba osjetiti prisutnost vode između dvije žice. Kad voda dosegne vrh obje žice, stvorila bi otpor od približno 10K do 20K ohma. Zatim u seriji sa 10K ohm R1, daje malu struju na bazu Q1 uzrokujući zasićenje Q1, pričvršćujući GPIO-2 na masu. R1 je neophodan za zaštitu Q1 u slučaju slučajnog kratkog spoja na osjetljivim žicama.
R2 je pull-up otpornik koji omogućuje ESP-01 pokretanje iz blica.
Sada za opcionalni zvučnik/zujalicu, ako vam je potreban samo ESP-01 da biste govorili MQTT, a ne želite implementirati ovo lokalizirano alarmiranje, možete ukloniti R2, Q2, zvučnik i postaviti 10K pull-up otpornik između GPIO-0 i VCC.
Ako ne osjećate potrebu za korištenjem ženskog Micro-USB na DIP adaptera, možete lemiti žice između 5V PS na modulu regulatora 3.3V. Više volim koristiti ženski MicroUSB adapter tako da mogu koristiti bilo koji generički punjač za mobitel i MicroUSB kabel.
Korak 3: Izgradnja kruga
Lemite sve komponente i dijelove u PCB prema shemi kola na prethodnoj stranici i izrežite PCB prema veličini.
Postavite PCB u kućište koje odgovara PCB -u i opcionalnom zvučniku. U mom slučaju, svi bi dijelovi stali u malu utičnicu za telefon, iako moram malo zagrijati poklopac da bih stvorio izbočinu kako bi ESP-01 modul stao.
Korak 4: Treptanje ESP-01
U ovom koraku blicat ćemo ESP-01 sa arduino skicom. Ako nikada niste bljeskali ESP-01 modul, možete slijediti moja uputstva za početak:
Moju skicu možete pronaći na mojoj github stranici:
Na skici, najmanje morate promijeniti sljedeće podatke koji se odnose na vašu kućnu mrežu/postavljanje:
#define MQTT_SERVER "10.0.0.30" const char* ssid1 = "SSID"; const char* password1 = "MYSSIDpassword"; const char* ssid2 = "SSID1"; const char* password2 = "MYSSIDpassword";
U mojoj kućnoj mreži imam 2 različite pristupne tačke koje emituju 2 različita SSID -a, a ova skica bi omogućila redundanciju povezivanjem na sljedeći SSID ako se izgubi komunikacija sa trenutnom pristupnom tačkom. Ako imate samo jedan SSID, popunite ssid1 i ssid2 istom vrijednošću.
Nakon što izvršite izmjenu, otpremite skicu u ESP-01 i uključite ESP-01 u ploču za sučelje.
Korak 5: Probni rad
Da bismo provjerili funkcionira li naš projekt, najlakše bi bilo nadzirati MQTT poruke u mreži. Da biste to učinili, morate otvoriti SSH sesiju posredniku komaraca i izdati sljedeću naredbu:
mosquitto_sub -v -t '#'
Gornja naredba omogućila bi nam da vidimo sve MQTT poruke koje dolaze u brokera.
Sada uključite naš krug i ako sve funkcionira, za nekoliko sekundi trebali biste barem vidjeti sljedeću MQTT poruku:
stat/SumpWaterSensor/LWT na mreži
Sada testirajte senzor vode tako što ćete umočiti 2 žice za osjet u čašu vode i trebali biste vidjeti ovu poruku:
tele/SumpWaterSensor WET
A ako izvadite žice iz vode, trebali biste vidjeti ovu poruku:
tele/SumpWaterSensor DRY
Ako vidite te poruke, vaš je projekt uspješan.
U skicu sam uključio i nekoliko korisnih tema o MQTT -u koje možete koristiti:
"stat/SumpWaterSensorInfo": ova poruka se šalje svake minute radi pružanja neprekidnog rada i drugih informacija.
"cmnd/SumpWaterSensorInfo": ESP-01 će poslati informacije ako primi ovu temu s vrijednošću '1' (ascii = 49)
"cmnd/SumpWaterSensorCPUrestart": ESP-01 će se ponovno pokrenuti ako primi ovu temu s vrijednošću '1' (ascii = 49)
"cmnd/SumpWaterSensorBeep": ESP-01 će oglasiti zvučnik ako primi ovu temu s vrijednošću '1' (ascii = 49)
"cmnd/SumpWaterSensorBeepFreq": Postavlja frekvenciju alarma zvučnika, zadana vrijednost = 900 (Hz)
"cmnd/SumpWaterSensorDebug": Omogućava i postavlja nivo serijskog otklanjanja grešaka (zadano je 0 - bez otklanjanja grešaka)
Korak 6: Montirajte senzor
U svojoj aplikaciji želim nadzirati nivo vode unutar pumpe u koritu i obavijestiti me ako voda dosegne iznad prekidača pumpe u koritu, što znači da mi pumpa u bazenu ne radi. Prošao sam žice i pomoću žičanih vezica pričvrstio ih duž odvodne cijevi.
Korak 7: Završni dodir
Sada kada je projekt uspješan i u stanju objaviti MQTT poruku posredniku, sljedeći korak je razmišljanje o tome što s tim učiniti.
U svom projektu koristim Node-RED za slušanje/pretplatu na temu "tele/SumpWaterSensor" MQTT i najava nekoliko google kućnih zvučnika ako se otkrije voda. Osim toga, također sam povezao tok s čvorom pushbullet za slanje obavijesti na svoj android telefon.
Takođe sam kreirao web front-end da vidim status senzora (uključeno/van mreže, vreme rada itd.). Ponekad sam vidio da se isključuje nekoliko puta u toku jedne sedmice, prema statistikama, mnogo puta je to zbog isključivanja ESP-01 sa wifi-ja ili MQTT-a. No, ne brinite previše, moja skica uključuje rutinu za ponovno pokretanje ESP-01 ako i dalje ne uspije u pokušaju povezivanja na WIFI i/ili MQTT posrednika.
Slika na ovom koraku prikazuje tok NOD-RED kako bi se to postiglo. Također možete zalijepiti tok s moje github stranice na svoj Node-RED:
Googleova kućna najava samo je jedan primjer za ovaj projekt, ali mislim da je najkorisnija i najpraktičnija. Uvijek se možete povezati s drugim slušateljem MQTT -a ili čak koristiti IFTTT za pogon drugih uređaja nakon otkrivanja vode.
Zabavi se…