Exemple de coduri sursă pentru Arduino, ESP8266, ESP32 (Ethernet / WiFi / LoRaWAN): Depozitul de proiect Github
Tabloul de bord IoT cu hardware-ul dvs. poate fi încercat aici: Abloul de bord IoT ONLINE
Dacă sunteți interesat de codurile sursă ale aplicației web, contactați autorul proiectului în limba engleză la adresa: martinius96@gmail.com

Măsurarea nivelului apei într-o fântână prin metoda ultrasonică

Aplicație simplă de vizualizare pentru realitate augmentată (AR) GATA
Realitate augmentată - aplicație web pentru datele din tabloul de bord Android, iOS, IoT

Hardware de control - microcontrolere AVR / ESP compatibile



Module de tehnologie de transmisie - Ethernet / Sigfox IoT



Senzori de distanta cu ultrasunete compatibili



Soluții comerciale IoT - Sigfox / LoRaWAN


Cu apelarea corectă a tehnologiei Sigfox / LoRaWAN, un contor de nivel poate fi integrat în interfața web existentă a proiectului

Contor de nivel - monitor de nivel al apei în puț


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)))™.

Contor de nivel - tablou de bord - recuperare automată a datelor măsurate curent prin jQuery

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ă.

Alte tipuri de senzori de nivel al apei care pot fi integrați (necesită dezvoltarea propriului firmware):
  • Laser (LiDAR)
  • Hidrostatic (submersibil)
  • Electrostatic (capacitiv/inductiv)
  • Presiune (diferențială / cu senzor de presiune atmosferică compensatoare)
  • Optică
  • Mecanic (plutitor)
  • Magnetic (Sală)
  • Cuptor cu microunde (radar)
  • Ultrasunete - alt tip de ieșire (UART, RS-232, buclă curentă, Modbus TCP / RTU, M-bus, RS-485, PROFINET, CAN)
  • Notă: Dacă nivelul apei este recalculat din partea de jos către microcontroler, trebuie să setați adâncimea puțului la 0 cm în interfața web.

Demonstrație video a interfeței web - Contor de nivel:



Senzorii cu ultrasunete sunt potriviți pentru:


  • Fântâni săpate
  • Septice și gropi
  • Pârâuri și lacuri
  • Rezervoare de plastic pentru apă de ploaie
  • Rezistență (măsurarea umplerii în vrac)
  • Containere (monitorizarea deșeurilor, umplerea containerelor de colectare)
  • Cazane (monitorizarea lemnului, peleților, cărbunelui, așchiilor de lemn)
  • Puțuri și pivnițe (monitorizarea apelor subterane)
  • Producție (detecția produselor, înălțimea și numărul acestora, înălțimea materialului plăgii)
  • Parcări (detecția locurilor de parcare libere și ocupate)

Senzorii cu ultrasunete nu sunt potriviți pentru:


  • Sonde forate (datorită caracteristicilor de detectare - fascicul larg)
  • Țevi și conducte (datorită caracteristicilor de detectare - fascicul larg)
  • La sondele cu afluent (suprafața turbulentă atenuează ultrasunetele, măsurarea este imposibilă/în trepte)
  • În locurile cu o schimbare bruscă a temperaturii (temperatura afectează timpul de propagare a sunetului, astfel încât chiar și nivelul staționar pare să fluctueze)
  • Rezervoare de vid (măsurarea nu este posibilă)
Caracteristicile de detectare ale senzorilor ultrasonici de distanță - scripturi MATLAB pentru vizualizare:
  • HC-SR04.m Descarca
  • JSN-SR04T.m Descarca

  • Plug n' play firmware - Ultra Low Power / StandBy


    Firmware compilat disponibil pentru încărcare imediată pe microcontroler (nu necesită instalarea bibliotecii).
    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

    Principiul funcționării contorului de nivel - Schema bloc


    Contor de nivel pentru fosă, fosă septică, puț, principiu de măsurare - senzor ultrasonic de distanță

    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.

    Implementări de programe pentru Arduino, ESP8266, ESP32 (necesită să fie instalate biblioteci): Disponibil aici

    Biblioteci disponibile pentru microcontrolere (Arduino / ESP)


    Arhiva bibliotecii (.zip) extinde la C:/Users/[User]/Documents/Arduino/libraries
    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ă.


    Acoperirea României prin rețeaua LPWAN IoT Sigfox:


    Acoperirea României IoT LPWAN de către rețeaua Sigfox - Contor de nivel la puț

    Configurare backend Sigfox pentru testarea aplicațiilor web

    Indicator de nivel:
  • Callbacks --> Custom --> New
  • Vom scrie în Custom payload config: cislo1::uint:16
  • Vom scrie în URL pattern: http://arduino.clanweb.eu/studna_s_prekladom/data.php (sau o altă adresă URL a serverului dvs. web unde va rula proiectul), posibilitatea de a utiliza HTTPS
  • În metoda HTTP, selectați: POST
  • Adăugați „Body” (corpul mesajului):
  • hodnota={customData#cislo1}&token=123456789
  • Vom scrie în Content-Type: application/x-www-form-urlencoded

  • Capturi de ecran ale interfeței web pentru proiectul contorului de nivel


    Monitor nivel puț de apă - aplicație web - pagina principală - Ultimele valori măsurate cu reîmprospătare automată - AJAX Monitor nivel puț de apă - webapp - Date istorice măsurate cu marcaj de timp Monitor nivel puț de apă - Înregistrare, valoare minimă, maximă pe zi, săptămână, lună Monitor nivel puț de apă - grafic al nivelului apei în timp - săptămână/an

    Ieșirea UART a nodurilor senzorului (HTTP și HTTPS) - FreeRTOS - ESP-IDF - ESP32:


    ESP32 - FreeRTOS - ESP-IDF - măsurarea senzorului cu ultrasunete și transferul de date către serverul web prin HTTP, metoda de transfer POST ESP32 - FreeRTOS - ESP-IDF - măsurarea senzorului cu ultrasunete și transferul de date către serverul web prin HTTPS, metoda de transfer POST

    Hardware compatibil pentru proiectul contorului de nivel


    Hardware acceptat pentru proiect la nivel de puț - Arduino - Conectivitate Ethernet și WiFi - ESP8266 - ESP32 Nod senzor ESP32 cu modul Ethernet PHY LAN7820 și senzor ultrasonic JSN-SR04T