Go Down

Topic: Les insolents, les impolis et les ..... (Read 1 time) previous topic - next topic

Lamusicadomi

Feb 03, 2020, 03:43 pm Last Edit: Feb 08, 2020, 08:06 pm by jfs
Bonjour,

J'envoie cette trame d'un UNO vers un Nano mais le message reçu ne correspond pas au message envoyé :
Trame départ :
15:33:18.221 -> BASE 004097ADCO 811775639733 S
15:33:20.019 -> OPTARIF BASE 0
15:33:20.296 ->
15:33:20.296 -> ISOUSC 30 9
15:33:20.296 -> BASE 004097929 2
15:33:20.537 -> PTEC TH.. $
15:33:20.537 -> IINST 000 W
15:33:20.810 -> IMAX 090 H
15:33:20.810 -> PAPP 00130 %
15:33:20.810 -> HHPHC A ,
15:33:21.053 -> MOTDETAT 000000 B
Trame arrivée:
15:36:35.460 -> BACE   $ )')$  "
15:36:35.733 -> @DEC DH.. $
15:36:35.733 -> IINCD     G
15:36:36.001 -> IMAH  )  H
15:36:36.001 -> @A@@   !#  %
15:36:36.001 -> HH@HC A ,
15:36:36.244 -> MODDEDAD        B

Pouvez vous m'aider ?
A bientôt !

hbachetti

On devine tous seuls le type d'interface utilisée : UART, I2C, SPI ?
Et la vitesse ?
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Lamusicadomi

Ci-sessous les infos de la carte :

BN: Carte inconnue
VID: 1A86
PID: 7523
SN: Envoyez un croquis pour l'obtenir

hbachetti

Ce n'est pas une réponse à la question posée.

Quote
J'envoie cette trame d'un UNO vers un Nano mais le message reçu ne correspond pas au message envoyé :
Cette trame emprunte bien un chemin physique entre les deux cartes ?
- ligne série
- bus I2C
- autre ?
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Lamusicadomi

Il s'agit des trames tele-info EDF...
Elles partent de l'UNO via le Tx et arrive sur le NANO sur le Rx
J'utilise un optocoupleur SFH620A-3X entre l'UNO et le NANO.
Est ce plus clair ?

hbachetti

On devine tous seuls le type d'interface utilisée : UART, I2C, SPI ?
Et la vitesse ?
Si tu répondais à toutes les questions ?

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

#6
Feb 03, 2020, 05:24 pm Last Edit: Feb 03, 2020, 05:41 pm by hbachetti
Autant te dire que tirer les vers du nez des demandeurs qui donnent les infos au compte-goutte ne me passionne pas vraiment.

Tu vas devoir fournir toutes les infos :
- schéma (indispensable)
- code (récepteur surtout).

Tout ceci étant précisé ici :
https://forum.arduino.cc/index.php?topic=546956.0
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Lamusicadomi

Ci-dessous le code sur le recepteur NANO :
// ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
// Linky-TIC.ino

#include <ELECHOUSE_CC1101_RCS_DRV.h>

//#include <SoftwareSerial.h>
//const byte TELEINFO_PIN = 8;   //Connexion TELEINFO
const byte TX_PIN = 6;         //emetteur 433 MHZ
const unsigned long TIME = 488;
const unsigned long TWOTIME = TIME*2;
#define SEND_HIGH() digitalWrite(TX_PIN, HIGH)
#define SEND_LOW() digitalWrite(TX_PIN, LOW)
byte OregonMessageBuffer[13];  //  OWL180
//*********************************************************
char HHPHC;
int ISOUSC;             // intensité souscrite 
int IINST;              // intensité instantanée en A
int IMAX;               // intensité maxi en A
int PAPP;               // puissance apparente en VA
int calt;
int calt2;
unsigned long HCHC;     // compteur Heures Creuses en W
unsigned long HCHP;     // compteur Heures Pleines en W
String PTEC;            // Régime actuel : HPJB, HCJB, HPJW, HCJW, HPJR, HCJR
String ADCO;            // adresse compteur
String OPTARIF;         // option tarifaire
String MOTDETAT;        // status word
String pgmVersion;      // TeleInfo program version
boolean ethernetIsOK;
boolean teleInfoReceived;
char chksum(char *buff, uint8_t len);
char message;
boolean handleBuffer(char *bufferTeleinfo, int sequenceNumnber);
char version[17] = "TeleInfo  V 1.00";
unsigned long PAPP_arrondi;               // PAPP*497/500/16 arrondi
unsigned long chksum_CM180;
unsigned long long HCP;

inline void sendZero(void) {
    SEND_LOW();
    delayMicroseconds(TIME);
    SEND_HIGH();
    delayMicroseconds(TIME);
}

inline void sendOne(void) {
    SEND_HIGH();
    delayMicroseconds(TIME);
    SEND_LOW();
    delayMicroseconds(TIME);
}

void sendData(byte *data, byte size) {
    for(byte i = 0; i < size; ++i) {
      (bitRead(data, 0)) ? sendOne() : sendZero();
      (bitRead(data, 1)) ? sendOne() : sendZero();
      (bitRead(data, 2)) ? sendOne() : sendZero();
      (bitRead(data, 3)) ? sendOne() : sendZero();
      (bitRead(data, 4)) ? sendOne() : sendZero();
      (bitRead(data, 5)) ? sendOne() : sendZero();
      (bitRead(data, 6)) ? sendOne() : sendZero();
      (bitRead(data, 7)) ? sendOne() : sendZero();   
    }
}


inline void sendPreamble(void) {
    for(byte i = 0; i < 10; ++i)   //OWL CM180 
    {
        sendOne();
    }
}

inline void sendPostamble(void) {
  for(byte i = 0; i <4 ; ++i)    //OWL CM180   
  {
       sendZero() ;
    }
    SEND_LOW();
    delayMicroseconds(TIME);
}

void sendOregon(byte *data, byte size) {
      sendPreamble();
      sendData(data,size);   
      sendPostamble();
}

void encodeur_OWL_CM180() {
  OregonMessageBuffer[0] =0x62;
  OregonMessageBuffer[1] =0x80;
  //OregonMessageBuffer[2] =0x7D;
  PAPP=int(PAPP*0.9941);
  calt=PAPP % 256;
  calt=calt-(PAPP % 16);
  OregonMessageBuffer[3] =calt,HEX;
  calt=int(PAPP/256);
  calt=calt % 256;
  OregonMessageBuffer[4] =calt,HEX;
  calt=int(PAPP/256/256);
  OregonMessageBuffer[5] =calt,HEX;
  //HCP=(HCHC*223666LL)/1000LL;
  OregonMessageBuffer[6] =(HCP>>4)&0xFF;
  OregonMessageBuffer[7] =(HCP>>12)&0xFF; // ST sert total conso
  OregonMessageBuffer[8] =(HCP>>20)&0xFF; // UV sert total conso
  OregonMessageBuffer[9] =(HCP>>28)&0xFF;
  OregonMessageBuffer[10] =(HCP>>36)&0xFF;
    chksum_CM180= 0;
    for (byte i=0; i<11; i++)   {
        chksum_CM180 += long(OregonMessageBuffer&0x0F) + long(OregonMessageBuffer>>4);
    }
  chksum_CM180 -=2;
  OregonMessageBuffer[11] =((chksum_CM180&0x0F)<<4) + ((chksum_CM180>>8)&0x0F);
  calt2=int(chksum_CM180 % 16)*16+int((chksum_CM180)/16);
  OregonMessageBuffer[12] =calt2,HEX;
  //OregonMessageBuffer[12] =(int(chksum_CM180>>4)&0x0F);  //C = 0 mais inutilisé
}

//************************************************************************************

void setup() {
  Serial.begin(1200);
  //Serial.begin(1200,SERIAL_7E1);
  ELECHOUSE_cc1101.setMHZ(433.92);
  ELECHOUSE_cc1101.Init(PA10);   
  ELECHOUSE_cc1101.SetRx(); 
  pinMode(TX_PIN, OUTPUT);
  SEND_LOW();
}

String info="";
String libelle;
unsigned long millis();
unsigned long tempo;


void loop() {
      if (Serial.available()>0) {
      message=Serial.read()& 0x6F;
      Serial.print(message);
     
      if (message==0x0A) {
        if (info.substring(1,5)=="PAPP") {
          libelle=info.substring(6,12);
          PAPP=libelle.toInt();
          Serial.print("PAPP="); 
          Serial.println(PAPP); 
        }
        if (info.substring(1,5)=="HCHC") {
          libelle=info.substring(6,16);
          HCHC=libelle.toInt();
          Serial.print("HCHC="); 
          Serial.println(HCHC); 
        }
        if (info.substring(1,5)=="HCHP") {
          libelle=info.substring(6,16);
          HCHP=libelle.toInt();
          Serial.print("HCHP="); 
          Serial.println(HCHP); 
        }
        if (info.substring(1,5)=="BASE") {
          libelle=info.substring(6,16);
          HCHC=libelle.toInt();
          Serial.print("HCHC="); 
          Serial.println(HCHC); 
        }
        info="";
      }
      info=info+message;
      tempo=millis();
      tempo=int(tempo/1000) % 55;
      delay(5);
      if (tempo < 10) {
    OregonMessageBuffer[2] =0x6D;
    HCP=(HCHC*223666LL)/1000LL;
        encodeur_OWL_CM180();
        sendOregon(OregonMessageBuffer, sizeof(OregonMessageBuffer));
    delay(5000);
    OregonMessageBuffer[2] =0x6C;
    HCP=(HCHP*223666LL)/1000LL;
        encodeur_OWL_CM180();
        sendOregon(OregonMessageBuffer, sizeof(OregonMessageBuffer));
    delay(5000);
      }
   }
}
 

J'ai une photo du montage mais je ne sais pas comment l'envoyer....

ludocraft

#8
Feb 03, 2020, 06:44 pm Last Edit: Feb 03, 2020, 06:53 pm by ludocraft
tu peux le métre entre entre balise stp ;(


si tu sais pas comment faire c'est par ici


ou la

aussi lit sa sa aideras pour test post (ou eviter que hbachetti te donne une fesser XD)

Topic: Informations nécessaires
black licorne

fdufnews

Et un petit schéma du montage parce que le couplage avec un optocoupleur peut réserver des surprises comme, par exemple, une inversion du signal. Ce qui rendrait la liaison série incompréhensible.

Lamusicadomi

Je joins une photo du montage.

Je tiens à préciser que le programme normalemùent fonctionne bien mais c'est au niveau de la traduction du message que ça pêche...
Je ne peux pas compiler et transférer ce programme sur l'Arduino Nano si je ne mets pas en ATMega328P et non ATMega328P (Old BootLoader).
J'ai essayé avec la version IDE de 1.8.5 à 1.8.11...
Est ce à ce niveau ?
Je tiens à préciser aussi que la résistance côté Nano est de 1K et côté Uno 220Ohms...
A bientôt !

hbachetti

Quote
aussi lit sa sa aideras pour test post (ou eviter que hbachetti te donne une fesser XD)
Je sens que ça ne va pas tarder ...

Quand un schéma est demandé il s'agit de ça :



Il ne s'agit pas de fournir une photo floue où l'on ne distingue presque rien.

Et les balises code bien sûr : https://forum.arduino.cc/index.php?topic=315372.0
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

fdufnews

#12
Feb 04, 2020, 08:30 am Last Edit: Feb 04, 2020, 08:35 am by fdufnews
C'est pas très clair ta description du (ou des) problème(s).
Au début tu dis:
J'envoie cette trame d'un UNO vers un Nano mais le message reçu ne correspond pas au message envoyé
ce qui fait penser soit à un problème de code, soit à un problème de câblage.

Et maintenant tu dis ça:
Je ne peux pas compiler et transférer ce programme sur l'Arduino Nano si je ne mets pas en ATMega328P et non ATMega328P (Old BootLoader).
C'est peut-être que ton Nano n'a pas un ancien bootloader tout simplement.

fdufnews

Et tu ferais bien de mettre rapidement ton code entre balise comme demandé parce que sinon il va passer à la benne.
En plus cela le rend illisible car certains caractères sont modifiés ou supprimés.

Lamusicadomi

Merci pour tout vos bons conseils moralistes.
Je vais me débrouiller tout seul au regard et à la lecture de vos réflexions un peu trop autoritaires et hautaines...
Tout le monde n'a pas votre science infuse des Arduinos
Messieurs les "professionnels" Aurevoir !

Go Up