Pages: [1] 2   Go Down
Author Topic: DataLogger Teleinfo EDF avec Arduino  (Read 7187 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Il y a qq mois je me suis intéressé au teleinfo disponible sur mes compteurs electroniques EDF.
J'ai réalisé une interface (trouvée sur le net) et connecté le tout a un PC.
Ca fonctionne bien mais l'inconvénient est de laisser un PC allumé en permanence.
D'ou l'idée d'un DataLogger autonome construit autour d'un micro controleur, module Arduino.
Je n'y connaissais rien en microcontroleur, mais ce module se maitrise assez vite...
Cette réalisation permet de décoder la trame teleinfo, enregistrer les données sur un fichier txt sur une carte SD et accessoirement les afficher à l'écran d'un PC via hyperterminal...
Le tout est prévu pour 2 compteurs : conso domestique et prod PV.

Si cela vous tente, tout est expliqué là : http://dl.free.fr/quOPONMfx
- fonctionnement
- schéma
- code

Si vous avez des questions, utilisez le forum, je vous répondrais avec plaisir.

Bon amusement. smiley-wink
Logged

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

merci orion57 pour le partage de ton travail. Bon boulot.
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci Gromain, un p'tit mot c'est toujours encourageant  ;D

Je continue a travailler sur le sujet :

Aprés un test de plusieurs jours a enregistrer les données des 2 compteurs, je me suis apperçu que le fichier des datas du compteur PV est OK mais que les enregistrements du compteur domestique présentent 40% de données incohérentes !
Y-a un truc !!  :o

Par ailleurs j'ai commandé un shield "bluetooth" et un autre "horloge" sur un site au Canada pour compléter l'ensemble ...
Si tout fonctionne comme je l'espère, il y aura une suite à l'histoire.

A+  smiley-wink
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 1
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bravo orion cette réalisation est trés bien expliquée.
Je me lance dans le montage.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 22
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour, je suis très interressé par le sujet, en revanche j'aimerais récupérer les téléinfo directement sur la porteuse présente sur le réseau  le 220V.

Quelqu'un a t il des infos pour récupérer cette porteuse?

Merci @+

FLY
Logged

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut, alors récupérer la porteuse sur le réseau 220 me semble pas être une bonne idée.

Hormis le risque de se prendre un coup de bourre magistral, le soucis est que la porteuse n'est pas émis en continu, mais seulement à chaque changement d'état, c'est a dire 4 fois par jour si je ne m'abuse, en cas de coupure de courant il faut attendre la prochaine pour ce ré aligner. Il est préférable de prendre sur le port téléinfo, car il mémorise son état en permanence,et a 1 jours d'avance sur la programmation, en gros à 18h il connais déjà les prévisions du lendemain. Avec son système de sauvegarde, en cas de coupure, il repart directement comme si de rien était.

Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon a mon tours,

 [size=20]AU SECOURS JE VAIS Y FOUTRE LE FEU A CET ENGIN[/size]


ça soulage.

bon plus sérieusement, bien qu'aillant écris y a bientôt un an les lignes qui permettre à l'arduino de passer de "1200 B/S avec 7 bit en pair avec le Stop à 1" à 1200 B/S avec les alignement arduino, ba maintenant plus rien pas moyen de le refaire.

Ayant abandonné le projet car quelque soucis de tampon mémoire, je mis remet de nouveau, et tous ce que j'ai fait ne marche plus du tout.

Voilà ou j'en suis

-du port téléinfo au convertisseur électronique ===OK
-du convertisseur électronique au un hypterminal===OK

j'obtient ça:

Code:

ISOUSC 45 ?
BBRHCJB 056694410 @
BBRHPJB 066976558 ^
BBRHCJW 001335059 L
BBRHPJW 002361117 T
BBRHCJR 000746887 U
BBRHPJR 001345418 T
PTEC HPJB P
DEMAIN ---- "
IINST 028 !
IMAX 038 J
PAPP 06200 )
HHPHC Y D
MOTDETAT 000000 B
ADCO 0203220831vpTA^IF BBR) T


-donc du convertisseur au arduino je suppose ===OK

je reçois bien des données mais pas en clair normal.


maintenant ce que je souhaiterai c'est faire ceci

convertisseur électronique=>entré dans arduino pin 3 et 4 en 1200 7 E 1=>arduino prg de travail => sortie arduino usb 9600 alignement arduino=>terminal arduino


dans l'arduino c'est l'anarchie je n'y arrive pas.

J'ai essayer toutes les variantes, la mienne, celle de orion et rien il me sort du n'importe quoi, pour le moment je ne lui demande que de me resortir ce qui rentre.

Si quelqu'un pouvait me tenir la main sinon je vai tirer une balle dans la tête à l'arduino.

merci d'avance

voici le code que j'utilise:
Code:
#include <NewSoftSerial.h>
NewSoftSerial mySerial(2, 3);


void setup() {
  // initialize both serial ports:

  UCSR0C = B00100100;
  
  mySerial.begin(1200);
  Serial.begin(1200);

}

void loop() {
  // read from port 1, send to port 0:
  if (mySerial.available()) {
    int inByte = mySerial.read();
    Serial.print(inByte, BYTE);
  }
}


et ça marche pas à l'aide

j'ai regardé le data sheet et je suis totalement largué.





« Last Edit: November 22, 2010, 05:29:44 pm by FP24V » Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je ne sais pas si j'ai le droit mais tant pis je tente.

un tit up
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

France, Nice
Offline Offline
Full Member
***
Karma: 3
Posts: 194
www.Zartronic.fr
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ton exemple de test est plus que simple,
Essaye de mettre à jour l'IDE arduino 0021 et newSoftSerial 10c
http://arduiniana.org/libraries/newsoftserial/
Tu as peut être un problème de version.
Ta carte de fait rien d'autre pendant ce temps ( pas d'autres captures d'interruption ) ?

A+ Teiva

www.Zartronic.fr : Votre source Arduino en France
Logged


www.Zartronic.fr : Arduino & Robotique

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci de Teiva du coup de main,

le logiciel arduino est bien le 21
le newsoft serial est à jours

pour la réponse à ta derniére question ,je ne l'ai pas comprise, tous ce que je peux te dire c'est que dans l'arduino il n'y a que le code que j'ai fournis ici.
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

France, Nice
Offline Offline
Full Member
***
Karma: 3
Posts: 194
www.Zartronic.fr
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas simple à deviner ce problème ...  smiley-wink

a) ta ligne UCSR0C = B00100100;
ne sert à rien ça "tripote la vitesse de l'uart" et c'est écrasé par Serial.bebin(1200)

b) vérifie bien si tu n'as pas de problème électrique 5V/3V, pullup and co, le soft sérial est très sensible aux variations de la ligne de réception car ça déclenche l'interruption de  réception, vérifie que tes fils sont court et ne gigote pas.

 il te faut un peu de chance pour trouver ce bug, ne menace pas l'Arduino  smiley-grin

Bon courage, A+ Teiva

www.Zartronic.fr : Votre source Arduino en France
Logged


www.Zartronic.fr : Arduino & Robotique

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon pour ce qui est de la réception je ne pense pas que la longueur actuel de ligne soit le probléme. Je dévellope:

Au bout de ma ligne je branche soit l'arduino soit un adaptateur serie/usb, et sur cette adaptateur je n'ai pas le moindre probléme.

Le truc c'est que j'ai essayer de faire émettre l'arduino  sur la pin 3 ou 4 je sais plus en 1200 E 7 1 et je renvoie directement avec un bout de fil de 4cm au max à la pin 0, un signal transit bien mais pas comme je le voudrait.

alors je soulève plusieurs question:
 
-es ce que entre les pins 0 et 1 ont le même signal que sur le port USB??? actuellement pour moi c'est pas le cas.

- je ne sais pas quelle type de signal sort de mon convertisseur TTL ou RS232 et je n'en connais pas la différence. tous ce que je sais c'est que sur un prot série brut le signal est ok à la sortie de mon convertisseur.

- est t'il possible de basculer tous simplement tous les port en 1200 E 7 1, pour le processing ça ne me pause pas de prb.

- Faut t'il que je reconvertisse mon signal en sortie de l'arduino.
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Personne n'a idée d'ou viens mon prb?

Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon vu que personne n'a pu pour le moment m'aider je me suis venger sur processing.

[media]http://www.youtube.com/watch?v=35ykahQv3Sg[/media]
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon et voici  la synthése connexion + filtre processing

c'est créer pour fonctionner en tempo mais les modifs sont simple à faire pour passer à un comptage classique ou EJP.

Code:

String PTEC="HPJW";
int IMAX;
int ISOUSC;
int BBRHCJB;
int BBRHCJW;
int BBRHCJR;
int BBRHPJB;
int BBRHPJW;
int BBRHPJR;
String DEMAIN="BLAN";
int IINST;
int PAPP;

void setup()
 {
  myPort2 = new Serial(this, "COM5", 1200,'E',7,1);      //Sélection du port ainsi que de sa vitesse
  }

void draw()
{
String xString2 = myPort2.readStringUntil('\n');  // lecture série jusqu'au saut de ligne
    if (xString2 != null)  // si la chaîne n'est pas vide
    {
      
      xString2 = trim(xString2);  // on vire les éventuels espace devant et derrière au cas où...

      int in = xString2.indexOf("PTEC");
      if (in==0)
      {PTEC=xString2.substring(in+5,in+9);}
      
      in = xString2.indexOf("DEMAIN");
      if (in==0)
      {DEMAIN=xString2.substring(in+7,in+11);}
      
      in = xString2.indexOf("ISOUSC");
      if (in==0)
      {ISOUSC=int(xString2.substring(in+7,in+9));}
      
      in = xString2.indexOf("IINST");
      if (in==0)
      {IINST=int(xString2.substring(in+6,in+9));}
      
      in = xString2.indexOf("PAPP");
      if (in==0)
      {PAPP=int(xString2.substring(in+5,in+9));}
      
      in = xString2.indexOf("BBRHCJB");
      if (in==0)
      {BBRHCJB=int(xString2.substring(in+8,in+17));}
      
      in = xString2.indexOf("BBRHCJW");
      if (in==0)
      {BBRHCJW=int(xString2.substring(in+8,in+17));}
      
       in = xString2.indexOf("BBRHCJR");
      if (in==0)
      {BBRHCJR=int(xString2.substring(in+8,in+17));}
      
      in = xString2.indexOf("BBRHPJB");
      if (in==0)
      { BBRHPJB=int(xString2.substring(in+8,in+17));}
      
      in = xString2.indexOf("BBRHPJW");
      if (in==0)
      {BBRHPJW=int(xString2.substring(in+8,in+17));}
      
       in = xString2.indexOf("BBRHPJR");
      if (in==0)
      {BBRHPJR=int(xString2.substring(in+8,in+17));}
      
      in = xString2.indexOf("IMAX");
      if (in==0)
      {IMAX=int(xString2.substring(in+5,in+8));}
    }
}

c'est pas ce qu y a de mieux et de plus rapide, mais ça fonctionne très bien
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Pages: [1] 2   Go Up
Jump to: