Teleinfo : Arduino nano vs. Lolin NodeMCU (ESP8266)

Parce que les applications du Raspberry Pi sont illimités...

Modérateur : Francois

Répondre
Korhm
Raspinaute
Messages : 232
Enregistré le : ven. 19 sept. 2014 08:13
Localisation : Toulouse

Teleinfo : Arduino nano vs. Lolin NodeMCU (ESP8266)

Message par Korhm » dim. 17 sept. 2017 15:03

Bonjour à tous,

Je fais appelle à la commuanuté framboise314 en espérant trouver réponses à mes questions, même si ça va parler Arduino :)

Je souhaite récupérer les informations de mon compteurs EDF (Linky) fraîchement posé, grâce à un arduino : c'est plus facile à cacher dans une armoire électrique qu'un Raspberry, et surtout ça coûte moins cher pour ne faire que ça.

J'ai suivi plusieurs tuto sur Internet, pour enfin arriver à faire quelque chose grâce au schéma suivant (à résistance R2 près) (via : http://www.magdiblog.fr/gpio/teleinfo-e ... lectrique/) :
Image
  • Sur un Arduino Nano, j'arrive bien à récupérer les informations.
  • Par contre, avec un module Lolin NodeMCU (https://www.amazon.fr/gp/product/B01MQX ... UTF8&psc=1), je n'ai pas du tout la même chose. Ce qui arrive sur le port RX du softwareSerial est tout bonnement illisible.
Quels sont les différences d'après vous entre les 2 qui expliquerait cela ?

Au cas où, le code utilisé (qui n'utilise même pas la partie WIFI ), qui est code de test:

Code : Tout sélectionner

/*
Usage :
  + This is a simple Teleinfo Test program
  + It's just to test the TeleInfo board and its 
    connexion to the EDF counter
  + It just displays the received teleInfo data on
    the Serial Monitor
  + No Internet connexion, no data transfered

Hardware needed :
  + 1 x Arduino UNO r3
  + 1 x Opto Coupler : SFH620A
  + 1 x LED
  + 1 x 1 k? resistor
  + 1 x 4,7 k? resistor

PIN USED :
  PIN 8  : Software Serial RX
  PIN 9  : Software Serial TX

*/

// Nous utilisons la bibliothèque Software.Serial, ce  
// qui permet de configurer le port série sur d'autres
// pins que les habituelles 0 & 1 déjà utilisées par
// le "moniteur série"
#include <SoftwareSerial.h>

// Caractère de début de trame
#define startFrame 0x02
// Caractère de fin de trame
#define endFrame 0x03

// On crée une instance de SoftwareSerial
SoftwareSerial* cptSerial;

// Fonction d'initialisation de la carte Arduino, appelée
// 1 fois à la mise sous-tension ou après un reset
void setup()
{
  // On initialise le port utilisé par le "moniteur série".
  // Attention de régler la meme vitesse dans sa fenêtre
  Serial.begin(115200);
  
  // On définit les PINs utilisées par SoftwareSerial, 
  // 8 en réception, 9 en émission (en fait nous ne 
  // ferons pas d'émission)
  cptSerial = new SoftwareSerial(12, 9); //RX, TX
  // On initialise le port avec le compteur EDF à 1200 bauds :
  //  vitesse de la Télé-Information d'après la doc EDF
  cptSerial->begin(1200);
  Serial.println(F("setup complete"));
}

// Boucle principale, appelée en permanence une fois le 
// setup() terminé
void loop()
{
  // Variable de stockage des caractères reçus
  char charIn = 0;

  // Boucle d'attente du caractère de début de trame
  while (charIn != startFrame)
  {
    // on "zappe" le 8ème bit, car d'après la doc EDF 
    // la tramission se fait en 7 bits
    charIn = cptSerial->read() & 0x7F;
    Serial.print(".");
  }
  
  // Boucle d'attente d'affichage des caractères reçus, 
  // jusqu'à réception du caractère de fin de trame
  while (charIn != endFrame)
  {
    // S'il y a des caractères disponibles on les traite
    if (cptSerial->available() > 0)
    {
      // on "zappe" le 8ème bit
      charIn = cptSerial->read() & 0x7F;
      // on affiche chaque caractère reçu dans le 
      // "moniteur série"
      Serial.print(charIn);
    }
  }
  
  // après chaque fin de trame, on provoque un retour chariot
  Serial.println("");
}

guillaume9344
Raspinaute
Messages : 629
Enregistré le : mar. 6 janv. 2015 19:44
Localisation : finistere

Re: Teleinfo : Arduino nano vs. Lolin NodeMCU (ESP8266)

Message par guillaume9344 » dim. 17 sept. 2017 20:25

utilisez vous le meme programme sur l 'arduino et sur l' esp8266? attention je croie que sur l'esp8266, la numerotation des pin ne sont pas identique a l'arduino, en gros, digitalWrite(16, LOW) ne correspond pas a la pin D16 , voici la correspondance:

Image
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

Korhm
Raspinaute
Messages : 232
Enregistré le : ven. 19 sept. 2014 08:13
Localisation : Toulouse

Re: Teleinfo : Arduino nano vs. Lolin NodeMCU (ESP8266)

Message par Korhm » lun. 18 sept. 2017 12:54

Bonjour,

oui j'ai bien fait attention au mapping sur l'ESP8266. J'utilise le GPIO12, soit la broche D6.
Le problème est que le données reçu ne sont tout simplement pas lisible, comme on peut le voir sur la pièce jointe.
Alors que le même montage, et même programme, avec un arduino nano (en sachant le PIN bien sur) fonctionne parfaitement bien.
Fichiers joints
teleinfo.png
teleinfo.png (7.88 Kio) Vu 5769 fois

Répondre

Retourner vers « Et tout le reste »