Bonjour,
J'essaie d'utiliser mon arduino pour récupérer les informations de teleinformation de mon compteur EDF (la teleinformation est activée car utilisée par ailleurs)
Pour le montage electronique de la teleinfo vers l'arduino, j'ai fait celui correspondant au montage décrit par Yadnet (
http://www.yadnet.com/index.php?page=compteur-edf)
Pour les branchements :
entrée : teleinfo (1 et 2) en entrée de l'optocoupleur 6N138
sortie : Tx - RS232-1 (pin14 du MAX232) sur le digital pin 2 de l'arduino
GND - RS232-2 (pin6 du MAX232 avec un condensateur) sur la masse de l'arduino (GND)
Code Arduino 1 :
unsigned long time;
int Rx = 2;
void setup() {
Serial.begin(1200);
pinMode(Rx, INPUT);
}
void loop() {
int oneBit = digitalRead(Rx);
time = micros();
Serial.println(oneBit);
// on attend jusqu'à ce qu'un nouveau bit puisse être lu.
// téléinfo à 1200 bauds, donc 1200 bits / second soit 1000000 microsecondes / 1200 = 833,33
while(time + 833 > micros()) {
}
}
Je démarre l'arduino avec le code ci-dessus et la teleinfo non-branchée, l'arduino me renvoi uniquement des 0.
Je branche la teleinfo et l'arduino m'envoie des 0 et des 1 (sans doute les bits d'une trame de teleinfo)
Code Arduino 2 :
#include <SoftwareSerial.h>
SoftwareSerial cptSerial(2, 3);
void setup() {
Serial.begin(1200);
cptSerial.begin(1200);
Serial.println("[START]");
}
void loop() {
Serial.println("[WAIT]");
if (cptSerial.available())
Serial.write(cptSerial.read() & 0x7F);
}
Je démarre l'arduino avec le code ci-dessus et la teleinfo branchée, l'arduino me renvoi [START] puis des [WAIT] en infini mais jamais aucun octet lu sur le pin 2. Donc j'en déduis que cptSerial.available() est toujours faux.
Quelqu'un aurait une explication concernant mon problème lorsque j'essaie de lire des octets sur mon pin 2 ? A priori, j'ai bien les bits qui composent ma trame, mais lorsque je souhaite transformer mes paquets de bits en octets via SoftwareSerial, on dirait qu'il n'y a plus rien