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