Exemples de codes sources pour Arduino, ESP8266, ESP32 (Ethernet / WiFi / LoRaWAN): Dépôt de projet Github
Le tableau de bord IoT avec votre matériel peut être essayé ici: HTTP IoT Dashboard HTTPS IoT Dashboard
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

Mesure de la hauteur du niveau d'eau dans le puits par méthode ultrasonique

Prise en charge du scanner QR pour la visualisation des données des capteurs
Réalité augmentée - liste des données actuelles du portail IoT

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 conçue pour collecter des données à partir des nœuds de capteurs et les présenter visuellement aux utilisateurs. Les données actuelles de niveau d'eau sont affichées sur le tableau de bord, converties en volume du puits. Les données historiques de niveau d'eau sont également accessibles aux utilisateurs sous forme de visualisation tabulaire ou graphique avec des graphiques linéaires. L'interface Web responsive s'adapte à différentes résolutions d'écran et à divers appareils. L'interface Web du projet utilise un backend en PHP pour traiter les données entrantes via des requêtes HTTP POST. Le backend ajuste le niveau mesuré par rapport au niveau réel en fonction de la profondeur connue du puits, calcule le volume d'eau du puits en utilisant ce paramètre et le diamètre du puits. Les utilisateurs saisissent la profondeur et le diamètre du puits dans le système en fonction des proportions de leur puits. Les données sont transmises au serveur Web par un microcontrôleur, qui effectue des mesures toutes les 300 secondes (c'est-à-dire toutes les 5 minutes). Dans le cas d'une transmission via le réseau IoT Sigfox, les données sont envoyées toutes les 11 minutes, car le réseau limite les transmissions à un maximum de 140 messages par jour. Les mesures du niveau d'eau sont effectuées à l'aide de capteurs à ultrasons tels que HC-SR04, ou sa variante étanche JSN-SR04T, et d'autres capteurs avec des signaux de déclenchement/écho des séries RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™. L'optimisation de l'interface Web, du backend et de la transmission des données garantit une expérience de surveillance efficace et fluide du niveau d'eau pour les utilisateurs. Cette version vise à améliorer la lisibilité à la fois pour les utilisateurs et les moteurs de recherche, en incorporant des mots-clés pertinents tout en préservant les détails techniques.

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

Le principe de mesure des capteurs à ultrasons repose sur l'envoi d'un signal de déclenchement d'une durée de 10 microsecondes, rebondissant sur le niveau de l'eau avant de retourner au récepteur, également appelé Echo. La méthode Time-of-Flight est utilisée pour convertir le temps entre l'envoi et la réception du signal en une mesure du niveau d'eau différentiel du capteur. Un paramètre crucial pour ces capteurs à ultrasons est la largeur du faisceau, déterminant leur caractéristique de détection. Le capteur HC-SR04 offre une caractéristique de détection de 15°. Son faisceau relativement étroit le rend adapté aux puits et réservoirs plus étroits, bien qu'il ne soit pas étanche et présente un risque élevé de corrosion en raison de l'humidité dans le puits. Par conséquent, il est recommandé de placer ce capteur au-dessus du puits. Quant au capteur étanche JSN-SR04T, sa caractéristique de détection est de 45 à 60°, le rendant inadapté aux puits étroits où le faisceau s'élargit avec la distance. Un puits de diamètre plus important est requis (par exemple, 6 mètres de diamètre à une profondeur de 4,5 mètres). Les capteurs à ultrasons nécessitent peu d'entretien. Dans le cas d'un puits carré, le diamètre du cercle inscrit est utilisé pour établir la valeur de référence du cylindre d'eau et le volume du puits. La hauteur de niveau maximale mesurable par les capteurs est d'environ 400 à 450 cm, comme indiqué dans la fiche technique. Cette version vise à améliorer la clarté et l'optimisation pour les moteurs de recherche en utilisant des termes pertinents.

Autres types de capteurs enregistreurs de niveau d'eau pouvant être intégrés (nécessaires pour créer votre propre firmware) :
  • Laser (LiDAR) - (DFRobot DTOF LD19 LIDAR, DFRobot ToF Laser...)
  • Hydrostatique (submersible) - (LMK307, DPT200, PT20eco, HDL300...)
  • Électrostatique (capacitif/inductif) - XKC-Y25-NPN
  • Pression (différentielle / avec capteur de compensation de pression atmosphérique)
  • Optique - (GP2Y0A02YK0F, YD-02F, FS-IR02 ...)
  • Mécanique (flotteur)
  • Magnétique (Hall) - (VCL9, Sen-Hz41wa ...)
  • Micro-ondes (radar) - (CS476, CS475A-L, SP69, WLR 15/08/30 ...)
  • Ultrasonique - (A01NYUB, URM37), ou autre, option d'un bus industriel pour la sortie (RS-485, boucle de courant 4-20 mA, Modbus RTU, M-bus, PROFINET)
  • Remarque : Si le recalcul de la hauteur du niveau d'eau depuis le fond est effectué côté microcontrôleur, il est nécessaire de régler la profondeur du puits à 0 cm sur 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

    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 des calculs trigonométriques pour estimer la profondeur maximale mesurable d'un puits avec un diamètre connu, un paramètre essentiel pour le calcul du volume du puits. Elle permet à l'utilisateur de déterminer la profondeur maximale adaptée à chaque capteur en fonction de ses caractéristiques. Le projet est conçu pour une facilité d'utilisation, même pour les non-initiés, qui peuvent choisir le capteur adapté sans avoir de connaissances approfondies. Le choix du microcontrôleur est également crucial dans le système. Pour ce projet, la plateforme Arduino (Uno/Mega) en révision R3 peut être utilisée avec un brochage identique, connectée à un shield Ethernet via l'interface ICSP. Les modules Ethernet de Wiznet W5100, W5500, USR-ES1, et le module Ethernet ENC28J60 de MicroChip sont pris en charge, offrant tous une connectivité HTTP avec le serveur Web. Les microcontrôleurs WiFi d'Espressif Systems, tels que ESP8266 et ESP32, sont également compatibles. Ils offrent divers modes de fonctionnement, y compris StandBy, StandBy + OTA avec téléchargement à distance du firmware, et mode veille profonde pour les applications ULP - Deep Sleep. Pour ESP8266 en mode veille, un cavalier physique entre GPIO16 (WAKE) et RST est nécessaire. Les microcontrôleurs ESP permettent la mise en œuvre de la connectivité HTTPS avec le serveur Web. ESP32 peut être utilisé avec le module Ethernet PHY LAN8720 via l'interface RMII, prenant en charge les connexions HTTP et HTTPS. Les certificats racines intégrés dans les microcontrôleurs sont valables 10 à 20 ans, évitant ainsi un renouvellement fréquent. Les données sur le niveau d'eau et le volume du puits sont disponibles au format JSON depuis l'interface Web. Le projet peut être intégré au projet Level meter via MQTT dans des systèmes domotiques tels que Hassio, Domoticz, Loxone, pour afficher le niveau d'eau dans des tableaux de bord personnalisés, par exemple, Grafana. Cette version vise à améliorer la lisibilité tout en incorporant des termes pertinents pour le référencement.

    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 deffectuer 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 deffectuer 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 linterface 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 linterface SPI.

    Télécharger

    Pour les sites sans couverture internet fixe, l'utilisation du réseau LPWAN IoT Sigfox est une option viable, couvrant presque entièrement la zone géographique de la France et des pays voisins. La technologie Sigfox permet la transmission de petits volumes de messages jusqu'à 12 octets de taille. Dans le cadre du projet Level meter, la valeur du niveau d'eau (4 octets - UINT_32) est envoyée. Pour un projet étendu avec un pluviomètre, une valeur de 8 octets est transmise, comprenant la hauteur du niveau d'eau et l'incrément des précipitations. Étant donné que Sigfox permet un maximum de 140 messages par jour, l'intervalle de transmission des données est étendu à 11 minutes. Dans les deux cas, le message n'utilise pas toute la longueur disponible de la charge utile. Les messages de charge utile peuvent également inclure diverses informations système, telles que des données GEO (longitude/latitude) basées sur les informations du service GPS Sigfox Atlas, le RSSI (Force du signal reçu), le numéro de message, et autres. Le module de communication utilisé dans le projet est un modem Sigfox WISOL 868 MHz UART LPWAN. Ce modem communique via des commandes AT sur l'interface UART, émulée par logiciel sur des microcontrôleurs. La communication s'effectue à 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, améliorant considérablement la couverture, même à l'intérieur ou à 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. Le BTS envoie les informations transmises au backend Sigfox, où un rappel est nécessaire, démarrant après la réception des données. Ce rappel envoie une requête HTTP ou HTTPS au domaine où l'application Web s'exécute, utilisant la méthode POST avec une charge utile correctement codée attendue par le backend de l'application Web. Cette version vise à rendre le texte plus accessible tout en optimisant pour les moteurs de recherche.


    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


    Moniteur de niveau WaterWell - webapp - page principale - Dernières valeurs mesurées avec rafraîchissement automatique - AJAX Moniteur de niveau de puits d'eau - application Web - Données mesurées historiques avec horodatage Moniteur de niveau de puits d'eau - Enregistrement, valeur minimale, maximale par jour, semaine, mois Moniteur de niveau de puits d'eau - graphique du niveau d'eau dans le temps - semaine / année ESP32 - FreeRTOS - ESP-IDF - mesure du capteur à ultrasons et transfert de données vers le serveur Web via HTTPS, méthode de transfert POST Matériel pris en charge pour le projet de niveau puits - Arduino - Connectivité Ethernet et WiFi - ESP8266 - ESP32 Nœud de capteur ESP32 avec module Ethernet PHY LAN7820 et capteur à ultrasons JSN-SR04T