✅Piézomètre V2
Une sonde piézométrique immergée couplée à un microcontrôleur ESP32 permettant une communication in situ avec un smartphone ou une tablette.
Dernière mise à jour
Une sonde piézométrique immergée couplée à un microcontrôleur ESP32 permettant une communication in situ avec un smartphone ou une tablette.
Dernière mise à jour
La conception de ce datalogger initialement prévu pour enregistrer les données d'une sonde piézométrique permet d’envisager un déploiement conséquent pour l’instrumentation des milieux naturels. Le logger peut très simplement accepter d’autre capteurs analogiques et numériques (I2C, SPI, UART…) pour des mesures variées de l’environnement : ultra-son pour hauteur d’eau des rivières, qualité de l’air (CO2, PM, COV…), qualité de l’eau (T°, conductivité, turbidité…), station météo… Il est également performant pour la communication sans fil et pourrait s’intégrer dans une architecture réseau de type LoRaWAN pour un suivi à distance.
Ce modèle présente l'avantage de ne pas nécessiter la présence d'une sonde barométrique à proximité des piézomètres d'un site et ne nécessite pas une interface propriétaire, ni une application particulière pour enregistrer les données.
Le dispositif d’enregistrement piézométrique développé est composé deux parties indépendantes :
· Un enregistreur de données « data logger » (fig. 2), autonome en énergie pourvu d’une connexion wifi et d’une interface web. C’est son développement qui est au cœur du projet. Un boitier imprimé en 3D (PETG) permet sa protection et sa mise en place dans le tube du piézomètre (fig 1)
· Une sonde piézométrique immersible (fig. 3). Celle-ci est connectée au data logger par un câble et une broche. Elle est également pourvue d’un tuyau afin de compenser mécaniquement la pression atmosphérique au moyen d’un capteur différentiel. Nous l’avons sélectionnée et achetée chez un constructeur spécialisé en chine (WNK sensors).
Le raccordement des deux se fait au moyen d’un connecteur « aviation » trois broches. (fig. 7)
La mise en place sur le terrain dans des sols hydromorphes est comparable aux sondes « classiques » type SDEC, dans un tube PVC entouré de géotextile (fig. 1).
Le dispositif est conçu autour de la carte DFRobot Firebeetle équipée du microcontrôleur ESP32. Nous exploitons au maximum les fonctions et les composants embarqués afin de minimiser l’ajout de composants externes. Cette conception permet de réduire les coûts, la consommation électrique, le temps de conception et la taille du data logger. Le circuit (fig. 4) est finalement très simple.
Le but du data logger est d’exploiter la sonde piézométrique pour acquérir les données de hauteur d’eau. La fréquence de mesure est paramétrable dans le fichier config.json (en minutes). Moins de 3 secondes sont nécessaires pour réaliser une acquisition de données Entre deux mesures le dispositif est donc mis en veille (consommation en phase de mesure env. 80mA , en veille < 20µA). Équipé d’une batterie lithium d’une charge moyenne de 3200mAh le calcul d’autonomie du data logger dépasserait les 8 ans sans considérer la décharge spontanée de celle-ci.
C’est un capteur de pression différentiel au silicium fonctionnant sur l’effet piézométrique. La réponse électrique est proportionnelle à la contrainte mécanique exercé par la pression de la colonne d’eau. La mesure est analogique : elle varie sur l’intervalle 0.1-3.2V. La sonde contenant le capteur est construite en acier inoxydable, elle assure un indice d’étanchéité IP68. Un câble permet l’alimentation et la communication avec le data logger ainsi qu’une prise d’air atmosphérique pour le capteur différentiel (fig. 6). Il n’est donc pas nécessaire de compenser la pression atmosphérique a posteriori avec la pression barométrique pour déterminer la hauteur d’eau.
Ces sondes sont commandées personnalisées chez le constructeur chinois WNK (référence : 8010TT). Nous avons ainsi choisi une gamme de pression de 0-1mH2O, une tension d’alimentation de 3.3V, une sortie analogique 0.1-3.2V, une longueur de câble de 2m (recoupé a 1.15m ensuite). La justesse de mesure annoncée est de ±5mm et la stabilité de ±2.5mm/an. Elles supportent des environnements corrosifs (tel que les eaux acides d’une tourbière) et fonctionnent entre -20 et 85°C.
Le choix du mode de communication avec le dispositif s’est porté vers un serveur web. Les ESP32 sont destinés aux utilisations IoT et sont donc performant pour toutes les applications Wifi et web. Le serveur web permet une interface dynamique et ergonomique, nous avons donc conservé cette option et opté pour la bibliothèque déjà implémenté par Expressif dans l’API arduino-esp32 : WebServer.h. Plusieurs pages ont ensuite été éditées en langage html.
Deux types de connexion WiFi sont possible :
· STA (mode Station fig. 4): Le data logger se connecte à un réseau WiFi fournit par un Router (ex : box internet du bureau). Le client (ordinateur, smartphone) est également connecté à ce même réseau local et accède au serveur hébergé par le datalogger au moyen d’une adresse IP fixe. Si le Router dispose d’une connexion internet alors la date et l’heure du data logger sont mis à jour via un server NTP. Ces paramètres wifi sont enregistrés dans le fichier config.json
· AP (mode Acces Point, fig. 5) : Le data logger crée lui-même un réseau WiFi local. Le client vient se connecter à ce réseau et peut également accéder au serveur du data logger. Ce mode permet de se connecter directement au datalogger sur le terrain sans passer par un router. Il ne permet cependant pas de mettre à jour l’heure et la date, puisque le réseau n’est pas connecté à internet.
ESP32 DFRobot FireBeetle ESP32 Digikey
Résistance 50 kΩ
interrupteurs à bouton-poussoir normalement ouverts (NO) - 6mm
connecteur 3 broches aviation GX12 12mm mâle/femelle Amazon
Li-on 18650 3.7V 3200 mAh
Connecteur JST 2 broches
fil électrique 26/28AWG
gaine thermorétractable
filament PETG
sonde WNK8010 de WNK sensor
Réaliser le montage (fig. 6). La broche GPIO36 (ADC1_CHANNEL_0) de l’ESP32 sur la carte FireBeetle est reliée à un pont de résistance (1MΩ + 1MΩ) (cf fig. 7) connecté aux bornes de la batterie. Une lecture analogique de cette entrée permet ensuite de connaitre la tension de batterie en multipliant par un facteur 2 (loi de Kirchhoff). Il faudra néanmoins fermer le circuit en court-circuitant les résistances R10 et R11 de 0Ω en réalisant deux soudures délicates (fig. 8).
Placer le montage dans le boitier. Attention au connecteur 3 broches qui s’assemble par l’extérieur (fig. 9) . La carte Firebeetle s’emboite dans son emplacement, aucune vis ou colle n’est à prévoir pour le montage.
Ouvrir le fichier data/config.json avec un éditeur de texte classique (bloc-notes windows par exemple) et configurer l’ensemble des paramètres voulus. Ceux-ci sont stockés indépendamment du code compilé, il est donc possible de les modifier par la suite.
SSID : nom du réseau (connexion STA)
pass : mot de passe (connexion STA)
Piezo_name : le nom de la sonde (et pas du logger !)
Zero_lvl : la tension d’initialisation. Ne pas modifier sans raison particulière
Sleep_time : le temps de mise en veille entre deux mesures (en minutes)
Sauvegarder
Ouvrir le code ESP32dataloggerINO.ino avec ArduinoIDE 1.8 et connecter le logger en USB.
Renommer le datalogger ligne 28 (#define PiezoRef "nom_piezo")
Modifier éventuellement les paramètres de connexion AP (voir document descriptif pour connexion AP et STA)
Nom du réseau ligne 49 : *ap_ssid
Mot de passe ligne 50 : *ap_password
La TimeZone si le fuseau horaire est différent de la France métropolitaine. (Ligne 82)
La fonction de calibration signal analogique ~ grandeur physique mesurée si l’utilisation est différente de la sonde piézométrique WNK8010TT (log_data ligne 387 & HomePage ligne 575)
Sélectionner dans le menu « outils » la carte DFRobotESP32Arduino/ESP32 FireBeetle ESP32 (fig.10 jaune). Choisir ensuite PartitionScheme/No OTA (1Mb APP/3MB SPIFFS). (fig.10 violet)
Toujours dans le menu « outils », transférer le fichier de configuration avec la fonction « ESP32 sketch Data Upload ». (fig.6 rouge) En cas de difficultés se reporter au tutoriel en ligne.
Téléverser le code.
Ouvrir le moniteur Serial (baudrate 115200) puis appuyer sur le bouton pour réveiller le data-logger. Vérifier qu’aucune erreur n’apparait:
SPIFFS et JSON fonctionnels (dans le cas inverse, le logger ne fonctionne pas et n’affichera pas la suite)
L’initialisation et la calibration du cristal 32KHz (fig. 11 rouge)
La connexion WiFi AP et STA (connexion WiFi au réseau local est bien établie « connected to SSID», « STA status = 3 » ; (fig. 11 bleu).
L’initialisation NTP de l’horloge (fig.11 jaune), connexion internet nécessaire.
Se connecter au serveur web à l’adresse IP du logger (ici http://192.168.0.32) en mode STA
En cas de difficultés pour le datalogger de se connecter à internet (horloge non mise à jour) ou si le serveur est inaccessible en STA alors que la connexion est valide, le problème est probablement imputable à l’adressage IP statique. Dans ce cas:
Commenter les lignes suivantes pour désactiver l’adressage IP statique (ligne 913)
Téléverser à nouveau le code, ouvrir le port Serial et réveiller le logger
Récupérer les informations sur le réseau (fig. 11 bleu) et mettre à jours les paramètre d’IP statique ligne 56
Gateway (Gateway IP)
Subnet (Subnet Mask)
Local_IP (ESP32 IP)
Décommenter les lignes 913 pour réactiver l’adresse IP statique. C’est sur celle-ci (ici http://192.168.0.32) que sera maintenant accessible le serveur du data logger sur le réseau actuel.
Téléverser à nouveau le code et vérifier le bon fonctionnement.
Dans le cas d’un réseau créé via un point d’accès smartphone (utilisation sur le terrain), les paramètres réseaux sont habituellement de la forme:
Sur le terrain, il est plus simple d’établir une connexion directe avec le data-logger plutôt que de passer par un router. Dans ce cas la procédure est la suivante
Réveiller le data-logger en appuyant sur le bouton
Sur le smartphone ou la tablette, rechercher le réseau WiFi « ESP32 » et s’y connecter (mot de passe par default scopsagne) (fig. 12)
Ce réseau n’a pas internet. Certains smartphones vont alors proposer d’utiliser les données mobiles ou simplement se déconnecter. Il faut refuser.
Accéder à la page http://192.168.4.1 (essayer différents navigateurs en cas de difficultés)
Cette page d’accueil affiche (fig. 13):
o Le nom du logger (piezo test 1)
o Le nom de la sonde (test)
o L’heure et la date
o Le niveau d’eau lu (autour de 1cm une fois initialisé, et non 0 car la linéarité du convertisseur ADC n’est pas très bonne dans les 5 premiers et derniers centimètres.)
o Le niveau de batterie (env. 4.2V si chargé)
o Les liens vers les autres pages (initialisation, directory…)
Une fois le datalogger configuré au bureau ou en mode STA avec connexion internet il est important de ne pas réinitialiser le logger par un appui sur le bouton Reset ou en débranchant la batterie, sous peine de remise à zéro de l’horloge (01/01/1970).
Mise en place sur le terrain :
Connecter la sonde configurée dans le fichier config.json au logger.
Réveiller le logger
Se connecter en mode AP puis au serveur http://192.168.4.1
Vérifier les informations de la page d’accueil
Hors du « puit piézométrique », initialiser la sonde (bouton Initialize). Cette étape défini la référence atmosphérique de la sonde et permettra de débuter les mesures le lendemain à 00 :00 afin de synchroniser l’ensemble des instruments sur site.
Déconnecter le logger (bouton disconnect)
Pour récupérer des données enregistrées:
Se connecter au logger (AP ou STA)
Aller sur la page directory
Copier le nom du fichier de données (ex : test_piezo_test1.csv, fig. 14)
Coller dans le champ de la page download et valider (fig. 15)
Le navigateur enregistre le fichier.
Pour reconfigurer le logger via le serveur:
Télécharger le fichier config.json (même procédure que pour les données)
Le modifier avec un éditeur de texte
Le transférer à nouveau sur le logger via la page Upload. Le nouveau fichier de configuration doit avoir un nom identique (config.json) et il remplacera automatiquement l’ancienne version.
Retourner sur la page d’accueil et vérifier le bon fonctionnement.