Récupérer la téléinformation avec un Arduino
Depuis longtemps j’avais envie de pouvoir suivre ma consommation électrique, sans jamais avoir vraiment franchi le pas. Il existe bien des solutions toutes faites qui permettent de suivre cette consommation via par exemple une pince ampèremétrique, mais j’avais envie de le faire moi même. Cela pour plusieurs raison :
- Envie de monter en compétence sur ce formidable Arduino
- Que cela ne me coute pas trop cher (moins d’un euro l’opto-coupleur + l’arduino qui va servir à autre chose)
- On est tellement fier quand on a réussi quelque chose fait maison
Pour ceux qui ne connaissent pas encore l’Arduino, je vous conseille d’aller faire un petit tour sur le site du projet
Il s’agit d’un petit circuit imprimé complètement open-source disposant d’un microcontrôleur facilement programmable.
La téléinformation
Les compteurs EDF de type électronique possèdent deux bornes (I1 et I2) qui émettent un signal modulé sur 50Hz. Il existe de nombreux schema de circuit imprimé disponible sur internet afin de démoduler ce signal et obtenir par exemple votre consommation en temps réel.
Pour ceux qui désirent avoir un peu plus de détail, je vous conseille de lire l’article plutôt complet sur le sujet rédigé par Planète-domotique.
Et pour ceux qui aiment aller directement à la source, voici la documentation officielle d’ERDF.fournie par bernard lefrancois.
Le schéma et l’arduino
Une recherche sur internet, m’a amené sur un schéma simple sur chaleurterre : http://www.chaleurterre.com/forum/viewtopic.php?p=51607#51607
Par contre, il est prévu pour une connexion RS232 (port Série) d’un ordinateur. Cela ne correspondait pas tout à fait à mon besoin, j’ai pour objectif de collecter la téléinformation via le microcontrôleur arduino (qui va faire plus de chose par la suite), mon pc étant très éloigné du compteur.
Heureusement je suis tombé sur quelqu’un qui avait fait le même type de montage pour une interface série TTL. Voici donc le schéma utilisé :
Et avec ce petit bout de code :
#include <SoftwareSerial.h> SoftwareSerial cptSerial(2, 3); void setup() { Serial.begin(1200); // opens serial port, sets data rate to 1200 bps cptSerial.begin(1200); } void loop() { if (cptSerial.available()) Serial.write(cptSerial.read() & 0x7F); }
J’ai effectivement la chance d’avoir en sortie des données qui ressemblent bien à celles de la téléinformation :
ADCO 02092xxxxxx @ OPTARIF HC.. < ISOUSC 45 ? HCHC 010956910 % HCHP 016779643 > PTEC HP.. IINST 021 Z IMAX 047 J PAPP 04860 3 HHPHC A , MOTDETAT 000000 B
Maintenant que j’ai validé que le montage est ok, il me reste à investir dans un shield ethernet afin de pouvoir me passer de la connexion usb.
L’objectif c’est de connecter ce module à domogik via xpl, mais ce sera l’objet d’un autre article.
Logiciels utilisés :
- Fritzing pour le schéma
- Arduino pour le développement
- cutecom pour la liaison série
PS : Partout sur internet on parle de l’opto-coupleur SFH6206, j’ai fait l’erreur de l’acheter, il s’agit d’un opto-coupleur qui n’est pas au format DIP et qui n’est donc pas utilisable sur une plaque d’essai. Je vous conseille donc de prendre plutot le SFH620A qui lui est au format DIP (C’est le même).