Proiectul contorului de nivel (monitor al nivelului apei) cuprinde o interfață web centrală dedicată colectării datelor de la nodurile senzorilor și prezentării acestora utilizatorului. Nivelul curent al apei este afișat în tabloul de bord, inclusiv conversia în volumul puțului. De asemenea, utilizatorul are acces la date istorice ale nivelului apei, prezentate în mod tabelar sau sub formă grafică, utilizând diagrame liniare. Interfața web este receptivă, adaptându-se la orice rezoluție de ecran și dispozitiv. Backend-ul proiectului este implementat în PHP și procesează datele primite de la cerere prin metoda HTTP POST. Backend-ul ajustează nivelul măsurat la nivelul real, bazându-se pe adâncimea cunoscută a puțului, calculează volumul de apă din puț în funcție de acest parametru și diametrul puțului. Utilizatorul introduce adâncimea și diametrul puțului în sistem, bazându-se pe caracteristicile proprii ale puțului său. Datele sunt transmise către serverul web de către un microcontroler susținut de tehnologii precum Ethernet, WiFi sau LPWAN IoT Sigfox. Măsurătorile sunt efectuate la fiecare 300 de secunde (adică la fiecare 5 minute), sau în cazul transmiterii prin rețeaua LPWAN IoT Sigfox, datele sunt trimise la fiecare 11 minute, deoarece modemul este limitat să transmită maxim 140 de mesaje pe zi. Măsurarea nivelului apei se realizează cu ajutorul senzorilor ultrasonici HC-SR04 sau varianta lor impermeabilă JSN-SR04T. Alternativ, pot fi utilizați și alți senzori cu semnale Trigger/Echo din serii precum RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX sau Parallax PING)))™.
Principiul de măsurare al senzorilor cu ultrasunete constă în trimiterea unui semnal de declanșare cu o lungime de 10 μs (microsecunde), care se reflectă de nivelul apei și revine la receptor, denumit Echo. Se utilizează metoda Time-of-Flight pentru a calcula timpul dintre trimiterea și primirea semnalului, determinând astfel distanța dintre nivelul apei și senzor, plasat în partea superioară a puțului. Formula de conversie ține cont de viteza sunetului de 343 m/s la o temperatură de 20 °C. Un aspect crucial pentru ambii senzori ultrasonici este lățimea fasciculului, adică caracteristica de detecție. Senzorul HC-SR04 are o caracteristică de detecție de 15°, fiind potrivit pentru puțuri și rezervoare mai înguste. Cu toate acestea, nu este impermeabil și prezintă un risc crescut de coroziune datorită umidității din puț, motiv pentru care se recomandă plasarea sa deasupra puțului. Senzorul impermeabil JSN-SR04T are o caracteristică de detecție de 60°, limitându-l în utilizarea în puțuri înguste, din cauza lărgirii fasciculului odată cu distanța și necesității unei sonde cu diametrul de câțiva metri. Senzorii cu ultrasunete nu necesită întreținere. JSN-SR04T dispune de o placă electronică de control protejată împotriva umezelii și a apei. Cablul standard de comunicație ecranat are 2,5 metri lungime, permitând conectarea altor cabluri similare pentru a extinde linia. În cazul unui puț pătrat, se folosește diametrul cercului înscris pentru a stabili valoarea de referință a cilindrului de apă pentru calculul volumului puțului. Eroarea volumului total al sondei în acest caz se situează la aproximativ ~12,5%. Înălțimea (nivelul) maxim măsurabil de către senzori este de aproximativ 400 până la 450 cm, conform specificațiilor din fișa tehnică.
Nume de firmware | Funcția de firmware | ESP8266 | ESP32 |
---|---|---|---|
Ultra Low Power |
Firmware pentru aplicații ULP cu consum redus de curent (vezi schema de conexiuni). Firmware-ul este încărcat automat prin instrumentul ESPTOOL inclus, care este rulat cu un script .bat (în script este necesar să schimbați portul COM al plăcii dumneavoastră ESP). După încărcarea firmware-ului și presupunând că ESP nu are stocate SSID-ul și parola din proiectul anterior, WiFiManager va porni, care este folosit pentru a configura rețeaua WiFi existentă. ESP va începe să transmită o rețea WiFi deschisă cu SSID în modul AP --> Hladinomer_AP. După conectarea clientului (Windows / Android / iOS) portalul Captive va începe pe 192.168.4.1 (clientul trebuie redirecționat automat). WiFiManager vă permite să selectați o rețea WiFi în raza de acțiune în interfața web, să setați o parolă. După conectarea cu succes a ESP la rețeaua WiFi specificată și atribuirea IPv4 din intervalul dat, Captive Portal va fi oprit, ESP rămâne în modul STA-Station. Ulterior, nodul senzor va începe să transmită date către interfața web contorul de nivel . Data viitoare când se pornește nodul senzor, Captive Portal și WiFiManager nu vor mai porni, deoarece configurația rețelei WiFi este păstrată permanent. După trimiterea datelor, microcontrolerul intră în modul de repaus profund. Procesorul principal Xtens este oprit în modul de repaus. ESP8266 este trezit prin temporizator WAKE (este necesar un jumper între GPIO16 și RST), ESP32 prin temporizator RTC. |
ESP8266 firmware | ESP32 firmware |
StandBy |
Firmware pentru modul StandBy al microcontrolerului, care trimite la intervale regulate (5 min) măsurători ale nivelului apei către serverul web și în același timp menține conectivitatea cu AP-ul în rețeaua LAN. Firmware-ul este încărcat automat prin intermediul instrumentului ESPTOOL inclus, care este rulat cu un script .bat (este necesar să schimbați portul COM al plăcii dumneavoastră ESP în script). După încărcarea firmware-ului și presupunând că ESP nu are stocate SSID-ul și parola din proiectul anterior, WiFiManager va porni, care este folosit pentru a configura rețeaua WiFi existentă. ESP va începe să transmită o rețea WiFi deschisă cu SSID în modul AP --> Hladinomer_AP.După conectarea clientului (Windows / Android / iOS) portalul Captive va începe pe 192.168.4.1 (clientul trebuie redirecționat automat). WiFiManager vă permite să selectați o rețea WiFi în raza de acțiune în interfața web, să setați o parolă. După conectarea cu succes a ESP la rețeaua WiFi specificată și atribuirea IPv4 din intervalul dat, Captive Portal va fi oprit, ESP rămâne în modul STA-Station. Ulterior, nodul senzor va începe să transmită date către interfața web contorul de nivel . Data viitoare când se pornește nodul senzor, Captive Portal și WiFiManager nu vor mai porni, deoarece configurația rețelei WiFi este păstrată permanent. |
ESP8266 firmware | ESP32 firmware |
Interfața web utilizează trigonometria pentru a estima adâncimea maximă măsurabilă a unei sonde la un diametru cunoscut al sondei, furnizând astfel un alt parametru esențial pentru calculul volumului sondei. Utilizatorul are posibilitatea să calculeze adâncimea maximă a puțului potrivită pentru fiecare senzor în funcție de caracteristicile sale, făcând proiectul ușor de utilizat chiar și pentru cei care nu au cunoștințe avansate despre senzori. Microcontrolerul joacă un rol crucial în sistem, permitând utilizarea platformei Arduino (Uno / Mega) în versiunea R3 cu un pinout identic. Acesta poate fi conectat la un scut Ethernet care comunică prin interfața ICSP sau prin utilizarea directă a modulelor Ethernet conectate la pinii SPI hardware ai microcontrolerului. Modulele Ethernet acceptate includ cele de la Wiznet (W5100, W5500, USR-ES1) și MicroChip (ENC28J60). Sunt acceptate și microcontrolere WiFi de la Espressif Systems, cum ar fi ESP8266 și ESP32. Acestea oferă moduri de operare variate, inclusiv StandBy, StandBy + OTA cu încărcare de firmware de la distanță prin rețeaua LAN și mod deep sleep pentru aplicații ULP - Deep Sleep. Pentru ESP8266, în modul de repaus, este necesar să se adauge un jumper fizic între GPIO16 (WAKE) și RST, conform diagramei de cablare. Ambele platforme ESP8266 și ESP32 permit implementarea comunicării criptate cu serverul web prin protocolul HTTPS. ESP32 poate fi utilizat și cu modulul PHY Ethernet LAN8720 prin interfața RMII, acceptând conexiunea HTTP și HTTPS. Certificatul rădăcină și certificatul emitent al serverului web sunt încorporate în codul sursă al microcontrolerelor în format .pem, fiind stocate în memoria flash a microcontrolerului - PROGMEM. Datele despre nivelul curent al apei și volumul apei din puț sunt disponibile în format JSON din interfața web, iar proiectul contorului de nivel poate fi integrat prin MQTT în sistemele de automatizare a locuinței precum Hassio, Domoticz sau Loxone. Aceasta permite afișarea nivelului apei în tablourile de bord, cum ar fi Grafana, și controlul periferic în subsistem (irigare, udare, activare a rețelei de apă menajeră) bazat pe datele privind nivelul apei din puțul monitorizat prin interfața web.
Numele bibliotecii | Funcția de bibliotecă | Descarca |
---|---|---|
NewPing |
Bibliotecă pentru microcontrolere AVR (ATmega) Arduino Uno / Nano / Mega. Permite efectuarea de măsurători cu senzori ultrasonici de distanță RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™. |
Descarca |
NewPingESP8266 |
Bibliotecă pentru microcontrolere ESP8266 și ESP32. Permite efectuarea de măsurători cu senzori ultrasonici de distanță RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™. |
Descarca |
Ethernet2 |
Bibliotecă pentru microcontrolere AVR (ATmega) Arduino Uno / Nano / Mega. Permite comunicarea cu modulul Ethernet Wiznet W5200 la W5500 prin interfața SPI. |
Descarca |
Ethernet3 |
Bibliotecă pentru microcontrolere AVR (ATmega) Arduino Uno / Nano / Mega. Permite comunicarea cu modulul Ethernet Wiznet W5500 V2 - USR-ES1 prin interfața SPI. |
Descarca |
UIPEthernet |
Bibliotecă pentru microcontrolere AVR (ATmega) Arduino Uno / Nano / Mega. Permite comunicarea cu modulul Ethernet ENC28J60 de la Microchip prin interfața SPI. |
Descarca |
Pentru regiunile unde nu există o acoperire stabilă de internet fix, se poate utiliza rețeaua LPWAN IoT Sigfox RC1, care acoperă anumite părți ale ariei geografice a României, inclusiv orașele mai mari și zonele limitrofe, precum și zonele de frontieră cu Ungaria. Tehnologia Sigfox permite transmiterea unor volume mici de mesaje, până la 12B în dimensiune. În proiectul Level Meter, este transmisă valoarea de 4B a nivelului apei (UINT_32). Într-un proiect extins cu un pluviometru, se transmite o valoare de 8B, formată din înălțimea nivelului apei și creșterea precipitațiilor. Datorită limitării la maximum 140 de mesaje pe zi în rețeaua Sigfox, intervalul de transmitere a datelor este extins la 11 minute. Mesajele nu utilizează întreaga lungime a încărcăturii utile și pot include diverse informații de sistem, cum ar fi datele GEO (longitudine/latitudine) bazate pe serviciul GPS Sigfox Atlas, RSSI (Received Signal Strength), numărul mesajului și altele. Pentru acest proiect, s-a utilizat un modem Sigfox WISOL 868MHz (RC1) UART LPWAN, care comunica prin comenzi AT prin interfața UART, emulată software pe microcontrolere, cu o viteză de 9600 baud/s. Modemul WISOL dispune de un conector u.FL integrat pe modulul PCB pentru conectarea antenei, totuși, acoperirea poate fi afectată în interior sau în zone umbrite. Pentru a asigura o transmisie de date reușită, este necesară acoperirea cu două, preferabil trei sau mai multe stații BTS (Base Transceiver Station). Aceste stații BTS transmit datele către backend-ul Sigfox, unde se efectuează un callback după primirea datelor. Callback-ul inițiază o solicitare HTTP sau HTTPS către domeniul în care rulează aplicația web, folosind metoda POST și o sarcină utilă codificată corespunzător, la care backend-ul aplicației web se așteaptă.