Codes sources pour Arduino, ESP8266, ESP32, bibliothèque NewPing : Dépôt de projet Github
Essayez le projet de mesure de niveau gratuitement avec votre matériel en ligne : ICI - Protocole HTTP uniquement (l'hébergement gratuit Endora.cz ne prend pas en charge les connexions HTTPS).
Essayez gratuitement l'indicateur de niveau de projet avec votre matériel: ICI - HTTPS (disponible pour ESP8266 et ESP32, Arduino + Ethernet ne prend pas en charge HTTPS)
Implémentation pour ESP32 disponible dans le framework ESP-IDF v4.2 (compatible 4.0) disponible à partir du 4 juin 2021 en utilisant FreeRTOS et des tâches avec le mécanisme de blocage de tampon FIFO de file d'attente.
Si vous êtes intéressé par les codes sources de l'application web, contactez l'auteur du projet en ANGLAIS à l'adresse: martinius96@gmail.com
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ultrason HC-SR04 JSN-SR04T Sigfox IoT WiFi OTA ULP

Matériel de contrôle - microcontrôleurs AVR / ESP compatibles



Modules de technologie de transmission - Ethernet / Sigfox IoT



Capteurs de distance à ultrasons compatibles



Indicateur de niveau - moniteur de niveau d'eau dans le puits


Le projet de compteur de niveau (moniteur de niveau d'eau) se compose d'une interface Web centrale qui sert à collecter les données des nœuds de capteurs et à les visualiser pour l'utilisateur. Les données de niveau d'eau actuelles sont représentées dans le tableau de bord avec la conversion en volume du puits, les données de niveau d'eau historiques sont également disponibles pour l'utilisateur sous forme de visualisation tabulaire ou graphique avec des graphiques linéaires. L'interface web est responsive, elle peut s'adapter à n'importe quelle résolution d'écran et d'appareil. L'interface Web du projet utilise un backend écrit en PHP qui peut traiter les données entrantes de la requête à l'aide de la méthode HTTP POST. Le backend corrige le niveau mesuré par rapport au niveau réel en fonction de la profondeur connue du puits, calcule le volume d'eau dans le puits à partir de ce paramètre et du diamètre du puits. La profondeur et le diamètre du puits sont entrés dans le système par l'utilisateur en fonction des proportions de son puits. Les données sont envoyées au serveur Web par un microcontrôleur, qui effectue des mesures toutes les 300 secondes - i. 5 minutes, ou dans le cas d'une transmission via le réseau IoT Sigfox, les données sont envoyées toutes les 11 minutes, car elles sont limitées par le réseau à transmettre un maximum de 140 messages par jour. La mesure du niveau d'eau est effectuée à l'aide de capteurs à ultrasons - HC-SR04, ou sa variante étanche JSN-SR04T, d'autres capteurs avec signaux de déclenchement / écho de la série RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

Water Level Monitor webapp dashboard in OS Android with automatic data update via jQuery

Le principe de mesure des capteurs à ultrasons est d'envoyer un signal de déclenchement d'une durée de 10 s (microsecondes), qui rebondit sur le niveau de l'eau et revient au récepteur - Echo. La méthode Time-of-Flight est utilisée pour convertir le temps entre l'envoi et la réception du signal au niveau d'eau différentiel du capteur. Un paramètre important pour les deux capteurs à ultrasons est la largeur du faisceau, c'est-à-dire la caractéristique de détection. Le capteur HC-SR04 a une caractéristique de détection de 15°. Le faisceau est relativement étroit et le capteur convient également aux puits et réservoirs plus étroits, mais il n'est pas étanche et présente un risque élevé de corrosion (oxydation) en raison de la présence d'humidité dans le puits. Pour cette raison, il est conseillé de placer ce capteur à ultrasons au-dessus du puits. Le capteur étanche JSN-SR04T a une caractéristique de détection de 45 à 60°, ce qui ne permet pas de l'utiliser dans des puits étroits, car le faisceau s'élargit avec la distance et un puits d'un diamètre de plusieurs unités (6 mètres de diamètre à 4,5 puits profondeur) est requis. Les capteurs à ultrasons ne nécessitent aucun entretien. Dans le cas d'un puits carré, le diamètre du cercle inscrit est entré dans la moyenne, qui formera la valeur de référence du cylindre d'eau et le volume du puits. La hauteur de niveau maximale mesurable (niveau) par les capteurs est d'environ 400 à 450 cm (connue d'après la fiche technique).

Autres types de capteurs de niveau d'eau pouvant être intégrés (vous devez créer votre propre firmware):
  • Laser (LiDAR)
  • Hydrostatique (submersible)
  • Électrostatique (capacitif / inductif)
  • Pression (différentielle / avec capteur de pression atmosphérique de compensation)
  • Optique
  • Mécanique (flotteur)
  • Magnétique (Hall)
  • Micro-ondes (radar)
  • Ultrasons - autre type de sortie (UART, RS-232, boucle de courant, Modbus TCP / RTU, M-bus, RS-485, PROFINET, CAN)
  • Remarque : Si le niveau d'eau est recalculé depuis le bas côté microcontrôleur, vous devez définir la profondeur du puits à 0 cm dans l'interface Web.

  • Démonstration vidéo de l'interface Web - Indicateur de niveau :



    Les capteurs à ultrasons conviennent pour:


  • Puits creusés
  • Septiques et puisards
  • Ruisseaux et lacs
  • Réservoirs d'eau de pluie en plastique
  • Force (mesure du remplissage en vrac)
  • Conteneurs (suivi des déchets, remplissage des conteneurs de collecte)
  • Chaudières (contrôle de bois, pellets, charbon, copeaux de bois)
  • Puits et caves (surveillance des inondations / des eaux souterraines)
  • Production (détection des produits, leur hauteur et quantité, hauteur du matériau enroulé)
  • Parkings (détection des places libres et occupées)

  • Les capteurs à ultrasons ne conviennent pas pour:


  • Puits forés (en raison des caractéristiques de détection - faisceau large)
  • Tuyaux et tubes (en raison des caractéristiques de détection - faisceau large)
  • Aux puits avec un affluent (la surface ondulée atténue les ultrasons, la mesure est impossible / pas à pas)
  • Dans des endroits avec un changement soudain de température (la température affecte le temps de propagation du son, de sorte que même le niveau stationnaire semble fluctuer)
  • Réservoirs à vide (mesure impossible)
  • Caractéristiques de détection des capteurs de distance à ultrasons - Scripts MATLAB:
  • HC-SR04
  • JSN-SR04T

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


    Micrologiciel compilé disponible pour téléchargement immédiat sur le microcontrôleur!
    Nom du micrologiciel Fonction micrologiciel ESP8266 ESP32
    Ultra Low Power

    Firmware pour applications ULP à faible consommation de courant (voir schéma de câblage). Le firmware est chargé automatiquement via l'outil ESPTOOL fourni, qui est exécuté avec un script .bat (dans le script, il est nécessaire de changer le port COM de votre carte ESP). Après avoir téléchargé le micrologiciel et en supposant qu'ESP n'a pas stocké le SSID et le mot de passe du projet précédent, WiFiManager démarrera, qui est utilisé pour configurer le réseau WiFi existant. ESP commencera à diffuser un réseau WiFi ouvert avec SSID en mode AP --> Hladinomer_AP. Après avoir connecté le client (Windows / Android / iOS) le portail captif démarrera sur 192.168.4.1 (le client doit être redirigé automatiquement). WiFiManager vous permet de sélectionner un réseau WiFi à portée dans l'interface Web, de définir un mot de passe. Après avoir connecté avec succès ESP au réseau WiFi spécifié et attribué IPv4 à partir de la plage donnée, le portail captif sera désactivé, ESP reste en mode STA-Station. Par la suite, le nœud de capteur commencera à transmettre des données à l'interface Web Jauges de niveau . Au prochain démarrage du nœud de capteur, Captive Portal et WiFiManager ne démarreront plus, car la configuration du réseau WiFi est conservée en permanence. Après avoir envoyé les données, le microcontrôleur passe en mode veille profonde. Le processeur principal Xtens est éteint en mode veille. L'ESP8266 est réveillé via la minuterie WAKE (cavalier entre GPIO16 et RST requis), ESP32 via la minuterie RTC.

    ESP8266 firmware ESP32 firmware
    StandBy

    Firmware pour le mode StandBy du microcontrôleur, qui envoie à intervalles réguliers (5 min) des mesures du niveau d'eau au serveur Web et maintient en même temps la connectivité avec l'AP dans le réseau LAN. Le firmware est chargé automatiquement via l'outil ESPTOOL fourni, qui est exécuté avec un script .bat (dans le script, il est nécessaire de changer le port COM de votre carte ESP). Après avoir téléchargé le micrologiciel et en supposant qu'ESP n'a pas stocké le SSID et le mot de passe du projet précédent, WiFiManager démarrera, qui est utilisé pour configurer le réseau WiFi existant. ESP commencera à diffuser un réseau WiFi ouvert avec SSID en mode AP --> Hladinomer_AP. Après avoir connecté le client (Windows / Android / iOS) le portail captif démarrera sur 192.168.4.1 (le client doit être redirigé automatiquement). WiFiManager vous permet de sélectionner un réseau WiFi à portée dans l'interface Web, de définir un mot de passe. Après avoir connecté avec succès ESP au réseau WiFi spécifié et attribué IPv4 à partir de la plage donnée, le portail captif sera désactivé, ESP reste en mode STA-Station. Par la suite, le nœud de capteur commence à transmettre des données à l'interface Web Indicateur de niveau. Au prochain démarrage du nœud de capteur, Captive Portal et WiFiManager ne démarreront plus, car la configuration du réseau WiFi est stockée de manière permanente.

    ESP8266 firmware ESP32 firmware

    Configuration du réseau WiFi via WiFiManager - Plug n' play firmware


    Réseau WiFi Hladinomer_AP, Portail captif et interface web WiFiManager sur Android

    Principe de fonctionnement du mesureur de niveau - Schéma fonctionnel


    Indicateur de niveau pour puisard, fosse septique, puits, principe de mesure - capteur de distance à ultrasons

    L'interface Web utilise la trigonométrie pour estimer la profondeur maximale mesurable d'un puits à un diamètre de puits connu (un autre paramètre pour calculer le volume du puits). L'interface Web permet à l'utilisateur de calculer à quelle profondeur maximale du puits chacun des capteurs est adapté en fonction de ses caractéristiques. Le projet est si facile à utiliser même pour les profanes qui ne savent pas quel capteur est le plus approprié pour une application dans leur puits. Le microcontrôleur utilisé joue également un rôle important dans le système. Pour le projet, il est possible d'utiliser la plateforme Arduino (Uno/Mega) en révision R3 avec un brochage identique, qui peut être connecté à un shield Ethernet qui communique via l'interface ICSP. Il est également possible d'utiliser des modules Ethernet et de les connecter directement aux broches SPI matérielles du microcontrôleur. Les modules Ethernet de Wiznet W5100, W5500, USR-ES1 sont pris en charge. Le module Ethernet ENC28J60 est pris en charge par MicroChip. Tous les modules Ethernet fournissent une connectivité HTTP avec le serveur Web. Les microcontrôleurs WiFi d'Espressif Systems - ESP8266 et ESP32 sont également pris en charge. Les microcontrôleurs ont plusieurs modes de fonctionnement : StandBy, StandBy + OTA avec possibilité de téléchargement à distance du firmware via le réseau LAN et mode veille profonde pour les applications ULP - Deep Sleep. En mode veille pour ESP8266, il est nécessaire d'ajouter un cavalier physique entre GPIO16 (WAKE) et RST - voir Schéma de câblage. Les microcontrôleurs ESP permettent également la mise en œuvre d'une connectivité HTTPS (cryptée) avec le serveur Web. Les plates-formes ESP8266 et ESP32 utilisent toutes deux l'autorité de certification racine, qui a émis un certificat (émetteur) pour le domaine du serveur Web. Le certificat est intégré dans le code source des microcontrôleurs au format .pem. Afin que le certificat ne prenne pas de place dans la mémoire RAM du microcontrôleur, il est inséré dans la mémoire flash du microcontrôleur - PROGMEM. Le certificat de l'autorité de certification est valable 10 à 20 ans, il ne nécessite donc pas de renouvellement fréquent du certificat. Les données sur le niveau d'eau actuel et le volume d'eau dans le puits sont disponibles au format JSON à partir de l'interface Web. Le projet peut intégrer le projet Level meter via MQTT dans la domotique (Hassio, Domoticz, Loxone) pour afficher le niveau d'eau dans son propre tableau de bord, par ex. Grafana.

    Implémentations de programmes pour Arduino, ESP8266, ESP32 (nécessite l'installation de la bibliothèque): Disponible ici

    Bibliothèques disponibles pour les microcontrôleurs (Arduino / ESP)


    Archive de la bibliothèque (.zip) étendre à C:/Users/[User]/Documents/Arduino/libraries
    Le nom de la bibliothèque Fonction bibliothèque Télécharger
    NewPing

    Bibliothèque pour microcontrôleurs AVR (ATmega) Arduino Uno / Nano / Mega. Il permet d'effectuer des mesures avec des capteurs de distance à ultrasons RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

    Télécharger
    NewPingESP8266

    Bibliothèque pour microcontrôleurs ESP8266 et ESP32. Il permet d'effectuer des mesures avec des capteurs de distance à ultrasons RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

    Télécharger
    Ethernet2

    Bibliothèque pour microcontrôleurs AVR (ATmega) Arduino Uno / Nano / Mega. Il permet la communication avec le module Ethernet Wiznet W5200 à W5500 via l'interface SPI.

    Télécharger
    Ethernet3

    Bibliothèque pour microcontrôleurs AVR (ATmega) Arduino Uno / Nano / Mega. Il permet la communication avec le module Ethernet Wiznet W5500 V2 - USR-ES1 via l'interface SPI.

    Télécharger
    UIPEthernet

    Bibliothèque pour microcontrôleurs AVR (ATmega) Arduino Uno / Nano / Mega. Il permet la communication avec le module Ethernet ENC28J60 de Microchip via l'interface SPI.

    Télécharger

    Pour les sites où il n'y a pas de couverture internet fixe, il est également possible d'utiliser le réseau LPWAN IoT Sigfox, qui couvre la quasi-totalité de la zone géographique de la France et des pays limitrophes. La technologie Sigfox vous permet de transmettre de petits volumes de messages jusqu'à 12B de taille. Dans le cas du projet Level meter, la valeur de niveau d'eau 4B (UINT_32) est envoyée. Pour un projet prolongé par un pluviomètre, la valeur 8B est envoyée, qui est formée par la hauteur du niveau d'eau et l'incrément des précipitations. Comme Sigfox permet de transmettre un maximum de 140 messages par jour, l'intervalle de transmission des données est étendu à 11 minutes. Dans les deux cas, le message ne contient pas toute la longueur utilisable de la charge utile. Les messages de charge utile peuvent également être complétés par diverses informations système, par exemple : données GEO (longitude / latitude) basées sur les données du service GPS Sigfox Atlas, RSSI (Force du signal reçu), numéro de message et autres. Le module de communication qui a été utilisé pour le projet est un modem Sigfox WISOL 868MHz UART LPWAN. Ce modem communique via des commandes AT via l'interface UART, qui est émulée par logiciel sur des microcontrôleurs. La communication prendra le relais à une vitesse de 9600 bauds/s. Le modem WISOL est équipé d'un connecteur u.FL intégré sur le module PCB pour la connexion de l'antenne, ce qui réduit considérablement la couverture même à l'intérieur / à l'extérieur à l'ombre. Pour une transmission de données réussie, une couverture par deux, de préférence trois stations BTS ou plus est requise pour une transmission de données réussie. Le BTS envoie les informations transmises au backend Sigfox, où il est nécessaire d'effectuer un rappel, qui démarrera après réception des données. Le rappel envoie une requête HTTP ou HTTPS au domaine où l'application Web s'exécute avec la méthode POST et une charge utile correctement codée que le backend de l'application Web attend.


    Couverture IoT LPWAN par Sigfox dans les pays francophones:


    Couverture de la France, Belgique, Luxembourg, Suisse par le réseau LPWAN IoT Sigfox - Indicateur de niveau pour un puits creusé Couverture de la Guyane Française par le réseau LPWAN IoT Sigfox - Indicateur de niveau pour un puits creusé Couverture de la Polynésie Française par le réseau LPWAN IoT Sigfox - Indicateur de niveau pour un puits creusé

    Configuration du rappel du backend Sigfox pour les tests d'applications Web

    Indicateur de niveau:
  • Callbacks --> Custom --> New
  • Nous écrirons dans "Custom payload config": cislo1::uint:16
  • Nous URL pattern: http://arduino.clanweb.eu/studna_s_prekladom/data.php (ou une autre URL de votre serveur web où le projet s'exécutera), la possibilité d'utiliser HTTPS
  • Dans la méthode HTTP, sélectionnez: POST
  • Ajouter "Body" (corps du message):
  • hodnota={customData#cislo1}&token=123456789
  • Nous Content-Type: application/x-www-form-urlencoded

  • Captures d'écran de l'interface Web du projet de mesure de niveau


    WaterWell Level monitor - webapp - main page - Last measured values with automatic refresh - AJAX WaterWell Level monitor - webapp - Historical measured datas with timestamp WaterWell Level monitor - Record, minimal, maximal value per day, week, month WaterWell Level monitor - graph of water level in time - week / year ESP32 - FreeRTOS - ESP-IDF - ultrasonic sensor measurement and data transfer to webserver via HTTP, POST transfer method ESP32 - FreeRTOS - ESP-IDF - ultrasonic sensor measurement and data transfer to webserver via HTTPS, POST transfer method Supported hardware for well level project - Arduino - Ethernet and WiFi connectivity - ESP8266 - ESP32