Przykładowe kody źródłowe dla Arduino, ESP8266, ESP32 (Ethernet / WiFi / LoRaWAN): Repozytorium projektu Github
Pulpit nawigacyjny IoT ze sprzętem można wypróbować tutaj: Arduino + Ethernet / ESP8266 / ESP32
Jeśli interesują Cię kody źródłowe aplikacji internetowej, skontaktuj się z autorem projektu w języku angielskim pod adresem: martinius96@gmail.com

Sprzęt sterujący - kompatybilne mikrokontrolery AVR / ESP



Moduły technologii transmisji — Ethernet / Sigfox IoT



Kompatybilne ultradźwiękowe czujniki odległości



Miernik poziomu - monitor poziomu wody w studni


IoT Dashboard dla Miernika Poziomu z Interfejsem Sieciowym i Czujnikami Ultradźwiękowymi. Nasz IoT Dashboard to zaawansowane narzędzie umożliwiające odbiór danych z miernika poziomu, działającego na węzłach sensorowych opartych na ESP32, ESP8266 i Arduino. Nasza aplikacja internetowa umożliwia rejestrację danych o wysokości poziomu wody w studni kopanej przy użyciu czujników ultradźwiękowych, takich jak HC-SR04 lub jego wodoodpornej wersji JSN-SR04T. W trakcie pomiarów, węzeł czujnikowy rutynowo wykonuje 10 uśrednionych pomiarów za pomocą czujnika ultradźwiękowego co 5 minut. Wyniki są następnie przesyłane do serwera poprzez interfejs sieciowy, obsługujący sieć WiFi, Ethernet, IoT LoRaWAN lub NB-IoT. Nasze rozwiązanie oferuje pełną transparentność danych, prezentując aktualne informacje dotyczące wysokości poziomu wody na responsywnym interfejsie sieciowym. Interfejs ten dostosowuje się do różnych urządzeń, w tym smartfonów, komputerów, tabletów i Smart TV. Dodatkowo, nasz backend koryguje zmierzone poziomy wody do rzeczywistych wartości na podstawie znanej głębokości studni, a także prezentuje dane historyczne w formie czytelnych tabel i wykresów liniowych. Warto również zaznaczyć, że nasza aplikacja umożliwia precyzyjne określenie objętości studni w litrach na podstawie rzeczywistej wysokości poziomu wody i średnicy studni. Dzięki temu użytkownik zyskuje kompleksowe narzędzie do monitorowania i zarządzania poziomem wody w studni.

Miernik poziomu - dashboard - automatyczne odzyskiwanie aktualnie mierzonych danych przez jQuery

Zasada działania czujników ultradźwiękowych w pomiarze poziomu wody. Pomiar czujników ultradźwiękowych opiera się na przesłaniu sygnału wyzwalającego o długości 10 μs (mikrosekund), który odbija się od powierzchni wody, a następnie wraca do odbiornika jako Echo. Metoda Time-of-Flight jest używana do obliczenia czasu pomiędzy wysłaniem a odebraniem sygnału, co pozwala określić odległość poziomu wody od czujnika umieszczonego na szczycie studni. Prędkość dźwięku, kluczowy parametr tej metody, wynosi 343 m/s w temperaturze 20°C. Szerokość wiązki, określająca charakterystykę detekcji, jest istotnym parametrem czujników ultradźwiękowych. Czujnik HC-SR04 posiada wąską wiązkę o kącie detekcji 15°, co sprawia, że jest odpowiedni do węższych studni, choć nie jest wodoodporny i może ulegać korozji w wilgotnych warunkach. Zaleca się jego umieszczenie nad studnią, aby zminimalizować wpływ wilgoci na działanie. Wodoodporny czujnik JSN-SR04T charakteryzuje się szerszą wiązką detekcji wynoszącą 60°. Ogranicza to jego zastosowanie w wąskich studniach, gdzie średnica studni musi być większa, aby zapewnić dokładne pomiary bez odbić. Czujniki ultradźwiękowe, w tym JSN-SR04T, są całkowicie bezobsługowe i posiadają płytkę elektroniki sterującej, odporne na wilgoć i wodę. Maksymalna mierzalna wysokość powierzchni (poziomu) przez te czujniki wynosi około 400 do 450 cm.

Inne typy czujników rejestrujących poziom wody, które można zintegrować (niezbędne do stworzenia własnego oprogramowania sprzętowego):
  • Laser (LiDAR) - (DFRobot DTOF LD19 LIDAR, DFRobot ToF Laser...)
  • Hydrostatyczny (zanurzalny) - (LMK307, DPT200, PT20eco, HDL300 ...)
  • Elektrostatyczny (pojemnościowy / indukcyjny) - XKC-Y25-NPN
  • Ciśnienie (różnica / z czujnikiem kompensacji ciśnienia atmosferycznego)
  • Optyczny — (GP2Y0A02YK0F, YD-02F, FS-IR02 ...)
  • Mechaniczny (pływak)
  • Magnetyczne (sala) - (VCL9, Sen-Hz41wa ...)
  • Kuchenka mikrofalowa (radar) - (CS476, CS475A-L, SP69, WLR 8/15/30 ...)
  • Ultradźwiękowy - (A01NYUB, URM37) lub inny, opcja magistrali przemysłowej na wyjściu (RS-485, pętla prądowa 4-20 mA, Modbus RTU, M-bus, PROFINET)
  • Uwaga: Jeżeli przeliczenie wysokości poziomu wody od dna odbywa się po stronie mikrokontrolera, konieczne jest ustawienie głębokości studni na 0 cm w interfejsie WWW.

  • Prezentacja wideo interfejsu internetowego - Miernik poziomu:



    Czujniki ultradźwiękowe nadają się do:


  • Wykopane studnie
  • Szambo i szambo
  • Strumienie i jeziora
  • Plastikowe zbiorniki na wodę deszczową
  • Wytrzymałość (pomiar wypełnienia luzem)
  • Kontenery (monitorowanie odpadów, napełnianie pojemników zbiorczych)
  • Kotły (monitorowanie drewna, pelet, węgla, zrębków)
  • Szyby i piwnice (monitoring powodzi / wód gruntowych)
  • Produkcja (wykrywanie produktów, ich wysokość i ilość, wysokość nawijanego materiału)
  • Parkingi (wykrywanie wolnych i zajętych miejsc parkingowych)

  • Czujniki ultradźwiękowe nie nadają się do:


  • Studnie wiercone (ze względu na charakterystykę wykrywania - szeroka wiązka)
  • Rury i rurki (ze względu na charakterystykę wykrywania - szeroka wiązka)
  • Do studni z dopływem (turbulentna powierzchnia tłumi ultradźwięki, pomiar jest niemożliwy / krokowy)
  • W miejscach o nagłej zmianie temperatury (temperatura wpływa na czas rozchodzenia się dźwięku, więc nawet poziom stacjonarny wydaje się wahać)
  • Zbiorniki próżniowe (pomiar niemożliwy)
  • Charakterystyka detekcji ultradźwiękowych czujników odległości - skrypty MATLAB do wizualizacji:
  • HC-SR04.m Ściągnij
  • JSN-SR04T.m Ściągnij

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


    Skompilowany firmware dostępny do natychmiastowego wgrania do mikrokontrolera (nie wymaga instalacji biblioteki).
    Tytuł Funkcja oprogramowania ESP8266 ESP32
    Ultra Low Power

    Firmware dla aplikacji ULP o niskim poborze prądu (patrz schemat połączeń). Oprogramowanie układowe jest ładowane automatycznie za pomocą dołączonego narzędzia ESPTOOL, które jest uruchamiane za pomocą skryptu .bat (w skrypcie konieczna jest zmiana portu COM płyty ESP). Po wgraniu oprogramowania układowego i założeniu, że ESP nie ma zapisanego identyfikatora SSID i hasła z poprzedniego projektu, uruchomi się WiFiManager, który służy do konfiguracji istniejącej sieci WiFi. ESP rozpocznie nadawanie otwartej sieci WiFi z SSID w trybie AP --> Hladinomer_AP. Po podłączeniu klienta (Windows / Android / iOS) portal Captive uruchomi się na 192.168.4.1 (klient powinien zostać przekierowany automatycznie). WiFiManager umożliwia wybór sieci WiFi w zasięgu w interfejsie internetowym, ustawienie hasła. Po udanym podłączeniu ESP do określonej sieci WiFi i przypisaniu IPv4 z podanego zakresu, Captive Portal zostanie wyłączony, ESP pozostanie w trybie STA-Station. Następnie węzeł czujnika rozpocznie transmisję danych do interfejsu sieciowego miernika poziomu . Następnym razem, gdy węzeł czujnika zostanie uruchomiony, Captive Portal i WiFiManager przestaną się uruchamiać, ponieważ konfiguracja sieci WiFi zostanie zachowana na stałe. Po przesłaniu danych mikrokontroler przechodzi w tryb głębokiego uśpienia - Deep Sleep. Główny procesor Xtens jest wyłączony w trybie uśpienia. ESP8266 jest wybudzany przez zegar WAKE (wymagana zworka między GPIO16 a RST), ESP32 przez zegar RTC.

    ESP8266 firmware ESP32 firmware
    StandBy

    Firmware dla trybu StandBy mikrokontrolera, który w regularnych odstępach (5 min) wysyła pomiary poziomu wody do serwera WWW i jednocześnie utrzymuje łączność z AP w sieci LAN. Oprogramowanie układowe jest ładowane automatycznie za pomocą dołączonego narzędzia ESPTOOL, które jest uruchamiane za pomocą skryptu .bat (w skrypcie konieczna jest zmiana portu COM płyty ESP). Po wgraniu oprogramowania układowego i założeniu, że ESP nie ma zapisanego identyfikatora SSID i hasła z poprzedniego projektu, uruchomi się WiFiManager, który służy do konfiguracji istniejącej sieci WiFi. ESP rozpocznie nadawanie otwartej sieci WiFi z SSID w trybie AP --> Hladinomer_AP. Po podłączeniu klienta (Windows / Android / iOS) portal Captive uruchomi się na 192.168.4.1 (klient powinien zostać przekierowany automatycznie). WiFiManager umożliwia wybór sieci WiFi w zasięgu w interfejsie internetowym, ustawienie hasła. Po udanym podłączeniu ESP do określonej sieci WiFi i przypisaniu IPv4 z podanego zakresu, Captive Portal zostanie wyłączony, ESP pozostanie w trybie STA-Station. Następnie węzeł czujnika rozpocznie transmisję danych do interfejsu sieciowego miernika poziomu . Przy następnym uruchomieniu węzła czujnika, Captive Portal i WiFiManager przestaną się uruchamiać, ponieważ konfiguracja sieci WiFi jest zachowana na stałe.

    ESP8266 firmware ESP32 firmware

    Zasada działania miernika poziomu - Schemat blokowy


    Miernik poziomu do szamba, szamba, studni, zasada pomiaru - ultradźwiękowy czujnik odległości

    Zaawansowany System Pomiaru Poziomu Wody z Inteligentnym Interfejsem Sieciowym. Nasz system pomiaru poziomu wody wykorzystuje zaawansowany interfejs sieciowy, który opiera się na zastosowaniu trygonometrii do oszacowania mierzalnej maksymalnej głębokości odwiertu przy znanej średnicy. Ten innowacyjny projekt umożliwia użytkownikowi łatwe obliczenie, do jakiej głębokości każdy z czujników jest odpowiedni na podstawie ich charakterystyk. Interfejs sieciowy obsługuje różne mikrokontrolery, w tym platformy Arduino (Uno/Mega), ESP8266 i ESP32. Dzięki temu użytkownicy mają szeroki wybór rozwiązań, a projekt jest prosty w obsłudze nawet dla osób nieobeznanych z technologią. Mikrokontrolery ESP8266 i ESP32 oferują dodatkowe funkcje, takie jak tryb głębokiego uśpienia, zdalne wgrywanie firmware przez sieć LAN oraz szyfrowana komunikacja HTTPS z serwerem WWW. System umożliwia integrację z automatyką domową za pośrednictwem protokołu MQTT, co pozwala na monitorowanie poziomu wody na pulpicie czy platformach takich jak Hassio, Domoticz czy Loxone. Dodatkowo, projekt zapewnia bezpieczne połączenie z serwerem WWW poprzez certyfikat osadzony w pamięci flash mikrokontrolera, eliminując konieczność częstego odnawiania certyfikatu. Dane o stanie wody są dostępne w formie JSON z interfejsu WWW, umożliwiając integrację z różnymi systemami i sterowanie peryferiami na podstawie danych o stanie wody w studni. To kompleksowe rozwiązanie, które łączy precyzyjny pomiar poziomu wody z zaawansowanymi funkcjami interfejsu sieciowego, dostosowanymi do różnych potrzeb użytkowników.

    Implementacje oprogramowania dla Arduino, ESP8266, ESP32 (wymaga instalacji biblioteki): Dostępny tutaj

    Dostępne biblioteki dla mikrokontrolerów (Arduino / ESP)


    Archiwum biblioteki (.zip) rozwiń do C:/Users/[User]/Documents/Arduino/libraries
    Tytuł Funkcja biblioteki Ściągnij
    NewPing

    Biblioteka dla mikrokontrolerów AVR (ATmega) Arduino Uno / Nano / Mega. Umożliwia wykonywanie pomiarów ultradźwiękowymi czujnikami odległości RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

    Ściągnij
    NewPingESP8266

    Biblioteka dla mikrokontrolerów ESP8266 i ESP32. Umożliwia wykonywanie pomiarów ultradźwiękowymi czujnikami odległości RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

    Ściągnij
    Ethernet2

    Biblioteka dla mikrokontrolerów AVR (ATmega) Arduino Uno / Nano / Mega. Umożliwia komunikację z modułem Ethernet Wiznet W5200 do W5500 poprzez interfejs SPI.

    Ściągnij
    Ethernet3

    Biblioteka dla mikrokontrolerów AVR (ATmega) Arduino Uno / Nano / Mega. Umożliwia komunikację z modułem Ethernet Wiznet W5500 V2 - USR-ES1 poprzez interfejs SPI.

    Ściągnij
    UIPEthernet

    Biblioteka dla mikrokontrolerów AVR (ATmega) Arduino Uno / Nano / Mega. Umożliwia komunikację z modułem Ethernet ENC28J60 firmy Microchip poprzez interfejs SPI.

    Ściągnij

    Bezprzewodowa Transmisja Danych w Projektach Sigfox IoT. W obszarach, gdzie stały dostęp do Internetu jest niedostępny, nasz projekt Miernika Poziomu oferuje alternatywę dzięki technologii LPWAN IoT Sigfox. Obejmując różne regiony Polski, w tym miasta takie jak Łódź, Warszawa, Olsztyn, Poznań, Zielona Góra, Szczecin, Gdańsk, Gliwice, oraz obszary przygraniczne z Republiką Czeską i Słowacją, Sigfox umożliwia przesyłanie niewielkich ilości danych o rozmiarze do 12B. W przypadku Miernika Poziomu, wartość poziomu wody (4B - UINT_32) jest przesyłana, natomiast w projekcie rozszerzonym o deszczomierz, przesyłana jest wartość 8B, zawierająca informacje o wysokości lustra wody i przyroście opadów. Z uwagi na limit 140 wiadomości dziennie, interwał transmisji danych został dostosowany do 11 minut. Wiadomości Payload mogą być rozszerzane o dodatkowe informacje systemowe, takie jak dane GEO (długość/szerokość geograficzna) z usługi GPS Sigfox Atlas, RSSI (Received Signal Strength), numer wiadomości i inne. Projekt wykorzystuje modem Sigfox WISOL 868MHz UART LPWAN, komunikujący się za pomocą poleceń AT poprzez interfejs UART. Prędkość komunikacji wynosi 9600 bodów/s. Modem WISOL posiada zintegrowane złącze u.FL na module PCB do podłączenia anteny, co poprawia zasięg, nawet w trudnych warunkach środowiskowych. Dla sukcesywnej transmisji danych, wymagane jest pokrycie przez dwie, najlepiej trzy lub więcej stacji BTS (Base Transceiver Station). Informacje przesyłane są do backendu Sigfox, a następnie wywoływane jest HTTP lub HTTPS callback, inicjujący przekazanie danych do aplikacji internetowej za pomocą metody POST z odpowiednio zakodowanym ładunkiem. Dzięki temu rozwiązaniu, nasz projekt Sigfox IoT umożliwia efektywną bezprzewodową komunikację danych nawet w obszarach pozbawionych stałego dostępu do Internetu.


    Zasięg Polski przez sieć LPWAN IoT Sigfox:


    Pokrytie Poľska IoT LPWAN sieťou Sigfox - hladinomer do studne

    Konfiguracja wywołania zwrotnego Sigfox do testowania aplikacji internetowych

    Miernik poziomu:
  • Callbacks --> Custom --> New
  • Do Custom payload config będziemy pisać: cislo1::uint:16
  • Do URL pattern będziemy pisać: http://arduino.clanweb.eu/studna_s_prekladom/data.php (lub inny adres URL Twojego serwera WWW, na którym będzie działał projekt), możliwość korzystania z HTTPS
  • V HTTP metodę wybieramy: POST
  • Do Body (treść wiadomości) będziemy pisać:
  • hodnota={customData#cislo1}&token=123456789
  • Do Content-Type: application/x-www-form-urlencoded

  • Zrzuty ekranu interfejsu internetowego dla projektu miernika poziomu


    Monitor poziomu wody w studni - webapp - strona główna - Ostatnie zmierzone wartości z automatycznym odświeżaniem - AJAX Monitor poziomu wody w studni - webapp - Historyczne dane pomiarowe ze znacznikiem czasu Monitor poziomu wody w studni - Zapis, minimalna, maksymalna wartość na dzień, tydzień, miesiąc Monitor poziomu wody w studni - wykres poziomu wody w czasie - tydzień / rok ESP32 - FreeRTOS - ESP-IDF - pomiar za pomocą czujnika ultradźwiękowego i transfer danych do serwera WWW metodą HTTP, POST ESP32 - FreeRTOS - ESP-IDF - pomiar za pomocą czujnika ultradźwiękowego i transfer danych do serwera WWW metodą HTTPS, POST Obsługiwany sprzęt dla projektu well level - Arduino - Łączność Ethernet i WiFi - ESP8266 - ESP32 Węzeł czujnikowy ESP32 z modułem PHY Ethernet LAN7820 i czujnikiem ultradźwiękowym JSN-SR04T Czujniki ultradźwiękowe z możliwością zasilania energią słoneczną, obsługą LoRaWAN, WiFi