Bonjour,
Je souhaite faire un système d'arrosage automatique pour des plantes. Je dispose d'un capteur d'humidité capacitif de ce type connecté à un Wemos D1 mini qui transmet les valeurs à un brocker MQTT avec le code donné en fin de message.
Tout fonctionne bien au début : le pourcentage d'humidité augmente lorsque j'arrose, mais après cela, il monte lentement jours après jours et je ne comprend pas pourquoi. J'ai essayé avec un second capteur acheté sur un autre site et j'ai le même problème.
Si quelqu'un avait une solution ou à défaut une explication, ce serait super ...
Voici donc le code
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// Définition des variables :
#define PIN_Capteur A0 // Arduino pin that connects to AOUT pin of moisture sensor
#define airValue 1023 // Valeur lue dans l'air
#define waterValue 653 // Valeur lue dans l'eau
long tps = 0;
float intervalle_mesures = 1 ; //Durée entre 2 mesures en minutes
int pourcentage, valeurLue;
//WIFI
#define ssid "********"
#define password "********"
//MQTT
#define mqtt_server "192.168.0.***" //Adresse IP du Broker Mqtt
#define mqttPort 1883 //port utilisé par le Broker
#define MQTT_USER "********"
#define MQTT_PASSWORD "********"
WiFiClient testNewMoistureSensor;
PubSubClient client(testNewMoistureSensor);
void setup_wifi() {
//connexion au wifi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
}
void setup_mqtt() {
client.setServer(mqtt_server, mqttPort);
reconnect();
}
//Fonction pour publier un float sur un topic
void mqtt_publish(String topic, float t) {
char top[topic.length() + 1];
topic.toCharArray(top, topic.length() + 1);
char t_char[50];
String t_str = String(t);
t_str.toCharArray(t_char, t_str.length() + 1);
client.publish(top, t_char);
}
void reconnect() {
while (!client.connected()) {
Serial.println("Connection au serveur MQTT ...");
if (client.connect("testNewMoistureSensor", MQTT_USER, MQTT_PASSWORD)) {
Serial.println("MQTT connecté");
}
else {
Serial.print("echec, code erreur= ");
Serial.println(client.state());
Serial.println("nouvel essai dans 2s");
delay(2000);
}
}
}
void setup() {
intervalle_mesures = intervalle_mesures * 60 * 1e3; //Durée entre 2 mesures en millisecondes
Serial.begin(9600);
setup_wifi();
setup_mqtt();
}
void loop() {
reconnect();
client.loop();
if (millis() - tps > intervalle_mesures) {
tps = millis();
valeurLue = analogRead(PIN_Capteur); // Valeur mesurée par le capteur
pourcentage = map(valeurLue, airValue, waterValue, 0, 100); //Valeur concertie en pourcentage
Serial.println(pourcentage);
delay(500);
mqtt_publish("testNewMoistureSensor", pourcentage);
}
}
Là, je suis un peu intrigué, et j'ai tenté d'appeler google à mon secours avec les mots clés suivants
drift soil humidity sensor capacitive
Je suis tombé sur https://arias.berkeley.edu/assets/files/emma2021humidity.pdf qui indique (mais pour des capteurs assez exotiques) une dérive de capteurs capacitifs en fonction de la température, maximale pour des humidités élevées. Ceci semble confirmé par des résumés d'autres articles...
Savoir si les anomalies d'humidité que vous constatez ont lieu (si c'est à l'exterieur) plutôt l'après midi ou plutôt la nuit permettrait de renforcer/infirmer ce semblant de piste...
Effectivement, le pourcentage mesuré semble monter la journée et redescendre un peu la nuit pour remonter à nouveau le lendemain matin.
J'ai placé tu thermomètre à coté du capteur et la température varie très peu entre le jour et la nuit : pas plus de 1 ou 2 °C (le capteur est dans la maison). Cela m'étonnerai que la température extérieure puisse avoir une telle influence.
Bonjour fdufnews,
Je ne connaissais pas les vernis de tropicalisation, mais j'ai protégé l’extrémité de la sonde avec un vernis acrylique en bombe aérosol. J'ai aussi réalisé un boîtier en PLA avec une imprimante 3D pour protéger le circuit électronique que j'ai "noyé" dans un gel isolant pour circuits électriques.
Le vernis acrylique n'est peut-être pas l'idéal, ...
Je reste toujours sec, mais je me pose quelques questions:
combien de temps dure la dérive?
se stabilise-t-elle?
y a-t-il des valeurs exploitables après dérive?
(ces questions semblent absurdes; en fait, certains circuits -capteurs de COV- ne fonctionnent de façon à peu près satisfaisante qu'après un ou deux jours de rodage (comme une bagnole) / vieillissement. Peut être -je suis optimiste- est on dans un cas analogue et le fabricant a oublié de le dire )
@coloneldeguerlasse , la dérive est lente est est sensible au bout de 24h. La valeur monte environ de 1% par jour ...
J'ai jeté un œil à la sonde que recouverte de vernis acrylique. Le vernis est devenu blanchâtre sur la partie basse. Je pense que ce vernis en bombe doit petit à petit s'hydrater, ce qui doit modifier la mesure de capacité effectuée par le capteur.
Je vais regarder du coté des vernis polyuréthanes.
@fdufnews , je regarde ça ce soir, en espérant que ce soit la solution.
En étudiant mes capteurs, il leur manque le régulateur. Cela ne me pose pas de problème pour l'instant, mais je en pourrai pas les utiliser sans alimentation 5V.
Je devrais recevoir un nouveau capteur prochainement. Je le testerai dès que possible.
Est ce que vous / votre plante pouvez vivre avec ? (il y a 37 ans, mon boss de l'époque a eu des lots de capteurs très faux... on avait réussi à faire avec (filtrage par médiane, entre autres supplices logiciels) ... mais on a changé de fournisseur le plus vite (5 ans) possible....
BTW: faites attention si vous mettez un regulateur 5v (recommandé dans la video) ; vous devrez mettre un diviseur de tension pour ne pas griller le (convertisseur du ) Wemos D1, qui est en 3v, souder tout ça augmente le risque de pannes pour -tenter de - soigner un circuit douteux...
En fait c'est plutôt le contraire.
Le régulateur fournit un 3V régulé, que tu alimentes la carte en 5V ou en 3,3V.
Cela dit, le 555 s'en moque il fonctionne sur une plage d'alimentation plus grande mais suivant qu'il reçoit du 5V ou du 3V je pense que sa fonction de transfert doit être modifiée.
En théorie, si tu lui délivres une tension stable et si tu fais une calibration, tu devrais avoir un résultat stable.
Dans la vidéo donnée plus haut, 3 problèmes différents sont présentés:
le 555 utilisé n'est pas la bonne variante et il ne fonctionne pas, ou il fonctionne mal, sous 3V
le module n'a pas de régulateur, dans ce cas il faut alimenter le module avec la même tension que celle du CPU.
la résistance de 1M est mal routée sur le circuit imprimé et en fait elle n'est pas raccordée à la masse, du coup elle ne décharge pas le condensateur de filtrage ce qui entraîne une réaction très lente du capteur. Pour corriger ce problème il faut souder un fil pour ramener une masse sur le condensateur.
Le problème de l'absence de régulateur est quand on l'utilise avec une pile qui voit sa tension varier avec sa décharge. Pas avec les 5V ou les 3,3V de la carte.
Je vais tenter quelque chose suite au post de @coloneldeguerlasse : placer un capteur dans l'eau et suivre l'évolution sur quelques jours pour voir si la dérive peut être modélisée. Si elle suit une fonction assez simple, je devrai pouvoir corriger cette dérive.
Je testerai cela dès que j'aurai reçu (et protégé par un vernis) le dernier capteur commandé.
Il y a peut être une solution moyenâgeuse à votre problème (qui peut déboucher sur un contrôle de vraisemblance):
les irrigants, l'été, pouvaient irriguer à dose fixe et cadence fixe (pas de feed back sur l'état des plantes/ l'humidité en zone racinaire; l'eau était achetée/négociée avant l'été).
Si vous avez une horloge sauvegardée par piles, vous pouvez décider de balancer beaucoup d'eau dans votre pot -mais pas trop, pour ne pas déborder ...), d'attendre x jours, de recommencer. Ca nécessite de connaitre la date du dernier arrosage, de conserver cette date dans le SPIFFS de l'ESP8266 ... et c'est tout, comme logiciel..
Je ne sais pas si c'est pire qu'un capteur douteux.
PS: j'ai évoqué comme traitement, si on a plusieurs capteurs douteux, la médiane. Un autre traitement (moyenne; c'est celui qui est employé par https://tutorials-raspberrypi.com/build-your-own-automatic-raspberry-pi-greenhouse/ -ils ont les mêmes capteurs- ) peut être meilleur / moins mauvais et se prête à un "calcul "analogique simple si on n'a qu'une voie analogique -cas du ESP8266 - mais contourner des capteurs douteux est parfois un peu tordu... et abominable, tant qu'on n'a pas compris
Avant de vernir le nouveau capteur que j'ai reçu, j'ai tout de même voulu le tester.
Voici les résultats des mesures faites sur plusieurs jours avec deux capteurs : le premier recouvert d'un vernis acrylique, avec un boîtier imprimé en 3G avec un gel d'étanchéité (celui-ci). Le second, avec seulement le boîtier et le gel, et donc pas de vernis ...
Le résultat est très surprenant et sans appel : le capteur avec vernis répond beaucoup plus lentement et a une légère dérive ...
Soit mon premier capteur était défectueux dès l'origine ou soit le vernis acrylique utilisé n'est pas adapté.
Le vernis changeant de couleur, il est possible qu'il s'hydrate petit à petit ce qui pourrait faire varier la permittivité ε du vernis et modifier petit à petit la capacité mesurée. Pensez-vous que ce soit envisageable ?
En tout cas, je vais essayer de continuer avec le nouveau capteur sans vernis.
Salut.
Je possède un de ces capteurs, en place depuis mai 2021. J'avais simplement protégé l'électronique à l'aide d'un morceau de chambre à air de vélo :
[quote="lep70, post:17, topic:1135647"]
En tout cas, je vais essayer de continuer avec le nouveau capteur sans vernis.
[/quote]Si vous
Cela me semble une sage décision: le capteur avec vernis semble avoir besoin de 6h pour se stabiliser -ou avoir l'air stable- ...
si vous arrosez en exterieur, vous pouvez avoir des comportements bizarres encas de pluie (continuerait d'arroser alors qu'il pleut: ça fait du gaspillage et ça a l'air ridicule, mais ça ne doit pas faire de dégâts -expérience pluriséculaire- ).
En interieur, comme vous l'avez dit en post 4 ça peut être pire dans le cas de petits pots de fleurs : risque de noyage des racines et de dégât des eaux si c'est dans un appartement...si vous pilotez un systeme d'arrosage avec des données décalées dans le temps... Multiple capacitive soil moisture sensors trouble avait l'air de trouver (à un faux contact près... mais ça peut arriver dans un appartement : coup d'aspirateur, de plumeau...) une très bonne concordance entre trois (puis 4) valeurs d'humidité du sol mesurées avec votre choix...