Après avoir réalisé un capteur inductif pour compteur d’eau qui réagit bien avec les compteurs d’eau disposant d’une « cyble » métallique, je vais adapter le prototype afin de pouvoir faire un relevé sur un compteur d’eau qui dispose d’un disque effet miroir sur fond noir et qui n’interagit que très peu avec le capteur inductif. J’utiliserai cette fois-ci un capteur optique qui se reflétera bien sur le disque.
Comme pour le précédent, le capteur devra pouvoir survivre sur un accu pendant au moins un an ou deux et transmettre les relevés à une distance raisonnable, c’est à dire atteindre l’endroit des parties communes de mon immeuble là où se situe mon compteur d’eau… et accessoirement, ne pas être trop onéreux.
A la fin de la partie 2, j’avais un prototype sur breadboard plutôt fonctionnel. Mais il restait encore plein d’améliorations pour avoir un circuit propre et fonctionnel.
Quel mode de transmission des données (quel module radio ?)
Quelle alimentation (quel type d’accu ?)
Améliorer le code pour économiser au maximum l’accu.
Quand j’ai voulu domotiser mon compteur électrique (d’abord le modèle Actaris, puis le Linky), ça a été relativement simple, puisqu’on trouve des informations sur le site d’enedis et pas mal de tuto sur le net. Pour le compteur de gaz (Gazpar), malgré la simplicité de récupération des impulsions, trouver de la doc a été un peu moins simple.
Pour ma prochaine victime, le compteur d’eau, ça semble encore plus compliqué. On ne voit pas de sortie impulsion, lisible par exemple avec un interrupteur reed. Il n’ y a pas non plus de connecteur à collecteur ouvert ou de simili port série… Les seuls éléments visibles sont l’index avec les chiffres qui tournent et une sorte de demi rondelle métallique qui tourne au gré de l’eau qui passe. Elle n’est pas magnétique.
Au fil de mes recherche, je suis tombé sur un projet très aboutit qui utilise un capteur optique en jouant sur l’effet miroir du disque pour capter les rotations : https://www.openhardware.io/view/15/Itron-Aquadis-watermeter-sensor#google_vignette
Étant donné que je n’ai pas l’électricité au niveau du compteur d’eau, j’ai continué à cherche une autre solution car la led IR du TCRT5000 tire un peu trop de courant pour pouvoir utiliser un accu lithium avec une autonomie d’au moins un an.
Une version avec des capteurs optiques plus adaptées à certains compteur avec une cyble « miroir » est disponible dans un autre article : Capteur optique sans fil pour compteur d’eau
La Cyble
D’après une documentation trouvée sur le site du fabriquant du compteur d’eau, ils appellent cette roue « cyble ». Dans les explications du principe de fonctionnement, il est dit :
Par effet de “courants de Foucault”, il y a variation du signal envoyé dans la bobine en regard de la cible et donc détection du passage de celle-ci.
La forme de la courbe me rappelle de lointains cours où on parlait de circuit RLC en régime libre et de signaux pseudo périodiques amortis. Elle m’a aussi rappelé un circuit réalisé il y a quelques années pour mesurer la valeur soit d’une inductance, soit d’un condensateur avec un arduino (en connaissant la valeur de l’autre) puis en mesurant la fréquence du signal résultant. La fréquence de résonance est donnée par la formule suivante, avec L en Henry et C en Farad :
Connaissant la fréquence, L ou C, on peut retrouver la valeur inconnue.
Pour un projet, j’ai eu besoin d’un module buck basé sur un LM2596 dans le but d’abaisser une tension en provenance d’une batterie/panneau solaire pour alimenter une pompe d’une fontaine décorative afin d’ajuster le débit à l’effet visuel voulu. Ça marchait très bien, mais pour ajuster la tension de sortie, il fallait actionner le potentiomètre multi-tours au tournevis.
J’aurais voulu pouvoir l’ajuster via une interface facilement entre 8 et 12V environ.
Beaucoup des projets présentés sur ce blog utilisent un module nrf24l01+ pour la transmission des données sans fil… c’est bien, encore faut-il avoir quelque chose à l’autre bout pour les recevoir. Le but du billet d’aujourd’hui est de construire une passerelle faisant la liaison dans les deux sens entre un réseau Ethernet et des modules nrf24l01+. Le paquet transmis par un capteur pourra ainsi être envoyé vers une API hébergée sur un NAS ou sur un serveur internet via une box connectée au réseau. A l’inverse, une page web pourra appeler l’API de la passerelle pour envoyer un paquet à un capteur.
Gazpar est le nom du nouveau compteur de gaz communiquant déployé en France par GRDF depuis maintenant quelques années. Ils émettent deux fois par jour la consommation vers un concentrateur situé à quelques km maximum sur une fréquence de 169MHz, puis les données du quartier sont transférées chez GRDF via le réseau 2G/3G. En tant que particulier nous n’avons pas accès à ces données directement, on ne peut que récupérer sa conso et son historique via le site de GRDF.
Néanmoins, ce compteur dispose d’une sortie impulsion que nous allons utiliser pour récupérer et transmettre en temps réel la consommation.
Dans la partie 1, nous avons vu que pour remplir les registres à décalage, il y avait 6 broches de données (R1, G1, B1 et R2, G2, B2) synchronisée par une broche d’horloge… un peu comme un port SPI avec 6 MOSI. D’où l’idée d’utiliser le port SPI hardware de l’Arduino pour envoyer les données. Oui mais… il n’y a qu’un seul MOSI. Mais dans la matrice c’est un registre à décalage… et on peut mettre plusieurs matrices de LED en série pour les chaîner. Et si on chaînait une matrice avec elle même ? Ça pourrait faire une seule broche de donnée + l’horloge… donc MOSI et SCK.
Bon, c’est pas très net cette histoire. Avec un schéma ça sera plus simple.
À gauche, le schéma simplifié de la partie 1. On envoie en 64 fois en série (pour les 64 LED de large) R1, G1, B1 et R2, G2, B2 en parallèle.
À droite, le schéma de cette partie. On a chaîné les registres à décalage entre eux. On envoie cette fois 384 données en série sur le premier registre, quand il sera plein il commencera à pousser au suivant et ainsi de suite jusqu’à remplir le dernier registre bleu. Vu que tout est décalé à chaque coup d’horloge, on transmet le dernier pixel bleu B2 en premier pour finir par le premier rouge R1.
Les matrices de LED RGB, on en a tous vu un jour ou l’autre : elles composent les écrans géants dans les concerts, sur les plateaux TV ou dans les transports en commun sur les bornes d’information voyageur ou sur les girouettes des bus.
Pour poursuivre la conception d’une station météo sans fil, on s’attaque cette fois ci à un capteur de particules fines PM10 et PM2,5. PM signifie Particulate Matter, suivi de la taille des particules en µm, donc en millièmes de millimètre.
Ce sont des particules en suspension dans l’atmosphère de taille microscopique : leur diamètre est inférieur à 10µm pour les PM10 et inférieur à 2.5µm pour les PM2,5. Pour référence, un cheveux a un diamètre compris entre 50 et 100µm.
La mesure des particules est assurée par le SDS011 et un module radio nrf24l01+ gère la transmission sans fil. Le cœur est un atmega328p qui peut être programmé avec arduino.