Fabrication d’un pluviomètre haute précision

Je savais depuis le début que mon pluviomètre sur le toit n’était pas 100% juste. J’ai donc entrepris d’en faire un nouveau et d’augmenter sa précision. Explications.

Principe

La mesure de la pluie tombée en mm est directement proportionnelle à la surface de captage. Et plus la surface est grande, plus on est précis.

Sur le pluviomètre lextronic, de base, la surface est de 55cm2 (11x5cm). Le constructeur annonce 0,2794mm à chaque basculement.

Fabrication

Me voilà donc à chercher une solution pour augmenter la surface de captage, sur un pluviomètre rectangulaire. Pas facile … Et en fouillant mon sous sol, j’ai retrouvé une vieille carafe filtrante Brita avec l’intérieur plastique filtrant. En le démontant, je m’aperçois que sa base est presque raccord avec le pluviomètre.

Pour obtenir un raccord au plus juste, j’ai coupé le bas du module à la scie à métaux pour ne garder que le cône.

Comme le cône ne rentrait pas parfaitement,je l’ai chauffé au chalumeau pour le rendre souple et ainsi l’enficher.

Mais vous remarquez que l’eau pourrait s’infiltrer dans les angles. Pas de problème, on va régler ca à la colle chaude …

Préparation du support

Ca y est, on a enfin un pluvio au top !

Calcul de la surface

Et là tout de suite, c’est moins drôle. Pour connaitre le ratio par rapport à la surface d’origine, il faut mesurer celle de la brita. J’ai donc retourné le pluvio pour tracer le contour sur une feuille de papier.

Puis, en l’important dans Google Sketchup (Madame qui gère, je touche pas à ca), on en arrive à une surface de 154,61cm2.

Du coup, 154,61cm2/55cm2 = ratio de 2,81

Au final, pour connaitre la résolution du pluviomètre : 0,2794mm/2,81 = 0,099mm par basculement (0,1mm). Cette valeur sera étalonnée avec un pluviomètre manuel.

Electronique

Pour la partie électronique, comme le premier pluviomètre, on lui remet un système anti rebond (1 résistance, 1 condo) avant de le connecter sur une pin digitale.

J’ai voulu tester un ESP8266, car je voulais mettre le pluvio au sol dans un endroit où je n’ai pas de réseau. Après plusieurs soirées de prises de tête, je n’ai jamais réussi à faire une interruption correcte sur l’ESP8266 (un Wemos D1 Mini Pro). Il m’en oubliait 1 sur 2 en gros, quand dès fois il en comptait 4 pour une … J’ai pété un cable …

Puis j’ai ressorti un Arduino Uno, mis le code, fait le cablage et miracle, les interruptions fonctionnent nickel ! Donc j’ai pris un uno pour ce projet, c’est luxueux mais tampis, je veux de la fiabilité.

Mais problème : comment le faire causer en wifi ? il n’y a pas vraiment de module wifi pour Uno, j’ai donc pris un shield ethernet (comme dans l’article du serveur de température). Et pour le faire communiquer avec le wifi de la maison, je l’ai connecté à un TP Link Nano Routeur (TL-WR802N) en mode client.

Je l’ai configuré en mode client, c’est à dire qu’il se connecte au wifi de la maison et propose le LAN de sa maison sur le port RJ45. L’arduino st donc branché au RJ45 et se retrouve sur le LAN de la maison.

J’ai connecté les 2 alimentations (TP link et arduino), tous deux en 5v sur le même câble pour n’en sortir qu’un de la boite.

Webservice

Comme sur mes autres projets, l’Arduino appelle une URL sur mon synology qui fait la passerelle avec le site météo. La donnée est loggée horodatée sur mon synology dans un fichier journalier texte, puis envoyé en base sur le site.

Installation finale dans le jardin

J’ai assez galéré pour la mise en place. Je l’ai d’abord mis à côté de la piscine.

Mais le problème c’est que j’avais un comptage de basculements bizarres, à 3h du matin et 13h. En y regardant de plus près, ce sont les heures de déclenchement de la pompe. Et à priori ca perturbait l’ensemble … J’ai donc déplacé le pluvio vers la station météo devant la maison, mais après avoir tout cablé, le module TP link ne captait pas le wifi de la maison (alors que les ESP8266 de la température et de l’humidité oui … 🙁 … )

J’ai donc déplacé finalement le pluvio à l’arrière de la maison, dans un endroit dégagé, où j’ai une alimentation 220V avec la pompe du puit perdu.

La première boite correspond à l’arduino, la 2ème au transfo de téléphone portable et d’une prise 220V femelle raccordée sur l’alimentation du puit.

Premiers tests

Les premiers tests sont très concluants. Je reçois bien les basculements d’augets et les interruptions, tout est nickel.

Après comparaison et étalonnage avec le pluvio manuel, il s’avère que les basculements sont de 0,135mm plutôt que 0,1mm. Les relevés manuel m’indiquaient 9mm pour 6,7mm mesuré par le pluvio et 12mm pour 8,8. La ratio est identique : 1,35.

Je poste-traite donc la donnée dans le webservice pour multiplier par 1,35 les 0,1mm de chaque basculement.

Code source

Rien de particulier pour ce projet, si ce n’est que j’utilise la librairie ArduinoHttpClient.h pour faire les appels https. Ca permet de faire les appels plus facilement et surtout de traiter le code retour http. Je reset le compteur que si j’ai obtenu une 200, preuve que le webservice a bien tourné.

Le code est disponible ici : https://github.com/doddyfab/Arduino_Pluviometre/blob/master/Arduino_Pluviometre.ino

Edit 13/10/2023

Après avoir refait des tests, j’ai enfin trouvé comment gérer des interruptions sur le wemos D1 mini. On utilise toujours le système anti-rebond bien sûr. On utilisera la pin D5.

Voici le code « qui va bien », déclaré comme un bouton qu’on appuie :

const int   PIN_PLUVIO =          D5;
...
Button button1 = {PIN_PLUVIO, 0, false};

void ICACHE_RAM_ATTR isr() {
  button1.numberKeyPresses++;
  button1.pressed = true;
}
...
void loop() {
  if (button1.pressed) {
     //mon traitement
  }
}

Aucun faux positif avec ca, ca marche comme une horloge.

Conclusion

Je me suis rendu compte en faisant ce projet que mon pluviomètre d’origine sur le toit :

  • était faux
  • pas assez précis

Ce projet me permet donc d’améliorer la précision de la station de manière considérable, car j’ai doublé la résolution (0,2794 -> 0,135) et surtout amélioré grandement sa précision.

10 Comments

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.