Cod sursă de proiect Contor de nivel pentru microcontrolere Arduino, ESP8266, ESP32, biblioteca NewPing, Ethernet2, Ethernet3, UIPEthernet: Depozitul de proiect Github
Încercați gratuit proiectul contorului de nivel cu hardware-ul dvs. - online: TU - Numai protocolul HTTP (Endora.cz freehosting nu acceptă conexiuni HTTPS).
Încercați gratuit proiectul contorului de nivel cu hardware-ul dvs. - online: TU - HTTPS (disponibil pentru ESP8266 și ESP32, Arduino + Ethernet nu acceptă HTTPS)
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ă

Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ecografie HC-SR04 JSN-SR04T Sigfox IoT WiFi OTA ULP

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) constă într-o interfață web centrală care servește la colectarea datelor de la nodurile senzorilor și la vizualizarea acestora către utilizator. Datele curente ale nivelului apei sunt reprezentate în tabloul de bord împreună cu conversia în volumul puțului, datele istorice ale nivelului apei sunt de asemenea disponibile utilizatorului în vizualizare tabelară sau grafică cu grafice liniare. Interfața web este receptivă, se poate adapta la orice rezoluție de ecran și dispozitiv. Interfața web a proiectului folosește un backend scris în PHP care poate procesa datele primite de la cerere folosind metoda HTTP POST. Backend-ul corectează nivelul măsurat la cel real pe baza adâncimii cunoscute a puțului, calculează volumul de apă din puț din acest parametru și diametrul puțului. Adâncimea și diametrul puțului sunt introduse în sistem de către utilizator pe baza proporțiilor puțului său. Datele sunt trimise către serverul web de către un microcontroler suportat de tehnologie (Ethernet / WiFi / LPWAN IoT Sigfox), care efectuează măsurători la fiecare 300 de secunde - i. 5 minute, sau în cazul transmiterii prin rețeaua LPWAN IoT Sigfox, datele sunt trimise la fiecare 11 minute, deoarece modemul este limitat de rețea să transmită maximum 140 de mesaje pe zi. Măsurarea nivelului apei se realizează cu ajutorul senzorilor ultrasonici - HC-SR04 sau varianta sa impermeabilă JSN-SR04T. Pot fi utilizați și alți senzori cu semnale Trigger / Echo din seria RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

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

Principiul măsurării senzorilor cu ultrasunete este de a trimite un semnal de declanșare cu o lungime de 10 μs (microsecunde), care sări de pe nivelul apei și revine la receptor - Echo. Metoda Time-of-Flight este folosită pentru a recalcula timpul dintre trimiterea și primirea semnalului pentru a determina distanța nivelului apei față de senzor, care se află în partea de sus a puțului. Formula de conversie ia în considerare viteza sunetului 343 m/s la o temperatură de 20 °C. Un parametru important pentru ambii senzori ultrasonici este lățimea fasciculului, cu alte cuvinte caracteristica de detecție. Senzorul HC-SR04 are o caracteristică de detecție de 15°. Fasciculul este relativ îngust și senzorul este potrivit și pentru puțuri și rezervoare mai înguste, dar nu este impermeabil și prezintă un risc mare de coroziune (oxidare) datorită prezenței umidității în puț. Din acest motiv, este indicat să plasați acest senzor cu ultrasunete deasupra puțului. Senzorul impermeabil JSN-SR04T are o caracteristică de detecție de 60°, ceea ce îl limitează considerabil și împiedică utilizarea lui în puțuri înguste, deoarece fasciculul se lărgește cu distanța și necesită o sondă cu diametrul de câțiva metri (6 metri diametru la adâncimea sondei). de 4,5 metri). Senzorii cu ultrasunete nu necesită întreținere. Senzorul JSN-SR04T are o placă electronică de control care nu trebuie expusă la umiditate și apă. Cablul standard de comunicație ecranat are 2,5 metri lungime, este posibil să se conecteze omologii aceluiași cablu pentru a extinde linia. În cazul unei puțuri pătrate, în medie se trece diametrul cercului înscris, care va forma valoarea de referință a cilindrului de apă pentru calculul volumului puțului. Eroarea volumului total al sondei în acest caz va fi la nivelul de ~ 12,5%. Înălțimea (nivelul) maximă măsurabilă de către senzori este de aproximativ 400 până la 450 cm (cunoscută din fișa de date).

Alte tipuri de senzori de nivel al apei care pot fi integrați (trebuie să vă creați propriul 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 - un alt tip de ieșire (UART, RS-232, bucla curentă, Modbus TCP / RTU, M-bus, RS-485, PROFINET, CAN)
  • Notă: Dacă nivelul apei este recalculat din partea de jos pe partea microcontrolerului, 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 potriviti 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ția (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 potriviti pentru:


  • Sonde forate (datorită caracteristicilor de detectare - fascicul larg)
  • Țevi și țevi (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

    Configurarea rețelei WiFi prin WiFiManager - Plug n' play firmware


    WiFi sieť Hladinomer_AP, Captive Portal a webové rozhranie WiFiManagera v systéme Android

    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 folosește trigonometria pentru a estima adâncimea maximă măsurabilă a unei sonde la un diametru cunoscut al sondei (un alt parametru pentru calcularea volumului sondei). Interfața web permite utilizatorului să calculeze la ce adâncime maximă a puțului este potrivită fiecare dintre senzori în funcție de caracteristicile sale. Proiectul este atât de ușor de utilizat chiar și pentru profanii care nu știu ce senzor este mai potrivit pentru aplicarea în puțul lor. Microcontrolerul folosit joacă, de asemenea, un rol important în sistem. Pentru proiect, este posibilă utilizarea platformei Arduino (Uno / Mega) în versiunea R3 cu un pinout identic, care poate fi conectat la un scut Ethernet care comunică prin interfața ICSP. De asemenea, este posibil să utilizați module Ethernet și să le conectați direct la pinii SPI hardware ai microcontrolerului. Sunt acceptate modulele Ethernet de la Wiznet W5100, W5500, USR-ES1. Modulul Ethernet ENC28J60 este suportat de MicroChip. Toate modulele Ethernet oferă conectivitate HTTP cu serverul web. Sunt acceptate și microcontrolere WiFi de la Espressif Systems - ESP8266 și ESP32. Microcontrolerele au mai multe moduri de operare: StandBy, StandBy + OTA cu posibilitatea de upload de la distanta a firmware-ului prin reteaua LAN si modul deep sleep pentru aplicatiile ULP - Deep Sleep. În modul de repaus pentru microcontrolerul ESP8266, este necesar să adăugați un jumper fizic între GPIO16 (WAKE) și RST - vezi diagrama de cablare. Microcontrolerele ESP permit, de asemenea, implementarea comunicării criptate cu serverul web prin protocolul HTTPS. Atât platformele ESP8266, cât și ESP32 folosesc CA rădăcină, care a emis un certificat (Emitent) pentru domeniul serverului web. Certificatul este încorporat în codul sursă al microcontrolerelor în format .pem. Pentru ca certificatul să nu ocupe spațiu în memoria RAM a microcontrolerului, acesta este introdus în memoria flash a microcontrolerului - PROGMEM. Certificatul autorității de certificare este valabil între 10 și 20 de ani, deci nu necesită reînnoirea frecventă a certificatului. Datele despre nivelul curent al apei și volumul apei din puț sunt disponibile în format JSON din interfața web. Proiectul contorului de nivel poate fi integrat prin MQTT în automatizarea locuinței (Hassio, Domoticz, Loxone) pentru a afișa nivelul apei în propriul tablou de bord, de ex. Grafana. Ulterior, este posibil să se efectueze controlul periferic în subsistem (irigare, udare, activare a rețelei de apă menajeră) pe baza datelor privind nivelul apei din puț din 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 domenii unde nu există o acoperire de internet fixă, este posibil să se utilizeze și rețeaua LPWAN IoT Sigfox RC1, care acoperă anumite părți ale ariei geografice a României. Acoperirea este disponibilă în orașele mai mari și în împrejurimi, precum și în zonele de graniță cu Ungaria. Această tehnologie vă permite să transmiteți volume mici de mesaje de până la 12B în dimensiune. În cazul proiectului Level meter, este trimisă valoarea 4B a nivelului apei (UINT_32). Pentru un proiect extins cu un pluviometru se trimite valoarea 8B, care este formată din înălțimea nivelului apei și creșterea precipitațiilor. Deoarece Sigfox permite transmiterea a maximum 140 de mesaje pe zi, intervalul de transmisie a datelor este extins la 11 minute. În ambele cazuri, mesajul nu conține întreaga lungime utilizabilă a încărcăturii utile. Mesajele de sarcină utilă pot fi completate și cu diverse informații de sistem, de exemplu: date GEO (longitudine/latitudine) bazate pe date de la serviciul GPS Sigfox Atlas, RSSI (Received Signal Strength), numărul mesajului și altele. Modulul de comunicare care a fost folosit pentru proiect este un modem Sigfox WISOL 868MHz (RC1) UART LPWAN. Acest modem comunică prin comenzi AT prin interfața UART, care este un software emulat pe microcontrolere. Comunicarea va prelua la o viteză de 9600 baud/s. Modemul WISOL este echipat cu un conector u.FL integrat pe modulul PCB pentru conectarea antenei, ceea ce reduce semnificativ acoperirea chiar si in interior/exterior umbrit. Pentru transmisia de date cu succes, este necesară acoperirea cu două, de preferință trei sau mai multe stații BTS pentru transmiterea cu succes a datelor. BTS trimite informațiile transmise către backend-ul Sigfox, unde este necesar să se efectueze un callback, care va începe după primirea datelor. Callback-ul efectuează o solicitare HTTP sau HTTPS către domeniul în care rulează aplicația web cu 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


    Supported hardware for well level project - Arduino - Ethernet and WiFi connectivity - ESP8266 - ESP32