Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - JeeLet

Pages: [1] 2
1
Bibliothèques / Re : Bibliothèque Wire I2C
« le: février 15, 2023, 10:56:45 am »
.. oui un post poussiéreux mais toujours d'actualité.
 
Bonjour
un retour sur un problème rencontré avec la librairie Wire ( peut être utile pour Locoduino)
sur un module DS3231 en cas de rupture de l'alimentation 5volt  l'Arduino freez .

un problème ancien, résulta de l’enquête.

  2018 - Un défaut connu dans le code Arduino I2C provoque des problèmes de raccrochage
https://www.fpaynter.com/2018/08/known-defect-in-arduino-i2c-code-causes-hangup-problems/

2019 - Bibliothèque I2C / Wire: modifications
https://github.com/arduino/ArduinoCore-avr/pull/107

2020 - Document Wire timeout API
https://github.com/arduino/reference-en/issues/895

les mots de la fin
"...Ces changements permettent aux communications I2C de fonctionner sans risque de verrouiller tout votre firmware lorsque quelque chose d'inattendu se produit dans le bus et résout des dizaines de ( centaines? ) d'étranges insectes signalés au cours de la dernière décennie.
La nouvelle bibliothèque Wire a vu son API étendue pour inclure les nouvelles fonctions suivantes pour gérer la fonction de délai d'expiration
."

void setWireTimeout(uint32_t timeout = 25000, bool reset_with_timeout = false);
    bool getWireTimeoutFlag(void);
    void clearWireTimeoutFlag(void);

https://reference.arduino.cc/reference/en/language/functions/communication/wire/setwiretimeout/

post peut être inutile  , déplacer ou supprimer ? 
A+

la version longue sur https://forum.arduino.cc/t/librairie-makuna-freez/1081415

info sympa : http://www.gammon.com.au/i2c

2
Bus CAN / Re : Bus CAN et Décimal
« le: avril 22, 2022, 02:10:35 pm »
Dominique merci pour le début de piste.

Mais je pensais que la librairie ACAN avait déjà une instruction, une fonction, pour ce genre de défaut?

 je vais fouiller encore sur les exemples de pierre Molinaro, voir comment.

  sinon "Un Time-out (Pas de réponse après un certain temps)." comment l’appliqué :(

“Modifier”  .. c'est bon :)

3
Bus CAN / Re : Bus CAN et Décimal
« le: avril 22, 2022, 12:34:08 pm »

Bonjour

un demande d'aide sur comment signaler a la partie réception que l"émetteur est hors service?
ou que les données coter réception ne sont plus actualisé.

Lorsqu'une perte de com. intervient entre l'émetteur et récepteur CAN,  les valeurs coté récepteur sont fausses , le récepteur garde la dernière valeur.

comment mettre c'est valeur à Zéro ??

les deux croquis

Emission ACAN2515_Test_Tx.ino

/*
*     
*   DESCRIPTION : Test bus CAN de valeur décimal sur Arduino UNO avec pseudo sonde DHT22 
*                 avec 2 croquis,
*                 ACAN2515_Test_Tx.ino et ACAN2515_Test_Rx.ino

*   BASES : sur une base https://www.locoduino.org/spip.php?article268
*         : Sujet: Bus CAN et Décimal
*         
*  * Libraries:
 * - ACAN2515 ver.2.1.0 de pierre Molinaro
 * - https://github.com/pierremolinaro/acan2515
*
* Modif/Afaire:
* -o- a revoir filtrage non fonctionnelle
* -o- sur perte CAN émission les valeurs ne sont pas mises à zéro
* -o- 
* -o-
*   (3%) de l'espace de stockage de programmes               
*               
*/
        //----------- 2022 ---------------- Fonctionnelle -----------------//

 // ----- inclusion des bibliothèques -------------
   #include <ACAN2515_Buffer16.h>
   #include <ACANBuffer.h>
   #include <ACAN2515Settings.h>      // les reglages
   #include <ACAN2515.h>              // le controleur
   #include <CANMessage.h>            // les messages
 
  /*  Module CAN MCP2515 */
   static const uint8_t MCP2515_CS  = 10;  /* pin SPI_CS */
   static const uint8_t MCP2515_INT = 2;   /* pin interruption */
   
    /* objet de type ACAN2515 est instancié pour gérer le MCP2515  */
    ACAN2515 CAN(MCP2515_CS, SPI, MCP2515_INT); /* pin CS,SPI ,pin INT */
   static const uint32_t FREQUENCE_DU_QUARTZ = 8ul * 1000ul * 1000ul; /*quartz du MCP2515*/
   static const uint32_t FREQUENCE_DU_BUS_CAN = 125ul * 1000ul;  /*fréquence du bus*/

   CANMessage messageCANdht;    /* objets CAN pour les messages en emission */
 
  /*  CAN : numero des capteurs pour les messages  */
      const uint16_t ID_1 = 10;
      const uint16_t ID_2 = 11;

//----------Virtuel DHT22 ---------------
    /* capteur1  */
    float t1 = 21.5;     // température
    float h1 = 51.5;     // humidité
    /*  capteur2   */
    float t2 = 22.6;     // température
    float h2 = 52.6;     // humidité
       
    static uint32_t milliEnvoi = 0;         // Tempo d’envoi des messages CAN
   

  void setup()  {     // -------------- Setup --------------
  Serial.begin(115200);   /* com série */
  SPI.begin();          /* bus SPI */
 
  Serial.println("Configuration du MCP2515");
  /* création de l'objet ACAN2515Settings */
  ACAN2515Settings reglages(FREQUENCE_DU_QUARTZ, FREQUENCE_DU_BUS_CAN);
 
  /* objet nommer "reglages" dans l'exemple */
  reglages.mReceiveBufferSize = 0;  // nbr d'emplacement buffer
  reglages.mTransmitBuffer0Size = 3;  // file d'attente d'emission
 
    /* Demarrage et control d'erreur du CAN */
  const uint16_t codeErreur = CAN.begin(reglages, [] { CAN.isr(); });
    if (codeErreur == 0)   
      {
      Serial.println("Configuration ok");
      }
    else
      {
      Serial.println("Probleme de connexion");
      while (1);
      }
     
    /* longeur des messages CAN */
  messageCANdht.len = 8;  // 8 octets pour les 2 float (temp-humid)
 }

  void loop() //------------------ Loop --------------
 {

// --------------- envoie des messages CAN ----------------------------   
  uint16_t milliEncour = millis();          /* Tempo d'envoi ..*/
    if (milliEncour - milliEnvoi >= 4000)   {  /*..toutes les 4 secondes */

//capteur1 ----------------------- 
   messageCANdht.id = ID_1;     /*Numéro d'intentifiant*/
   messageCANdht.dataFloat[0] = t1;
   messageCANdht.dataFloat[1] = h1;
    if (CAN.tryToSend(messageCANdht)) {
    Serial.println("message 1 envoyer");
  Serial.print(" : t=");
  Serial.print(messageCANdht.dataFloat[0]);
  Serial.print(" , h=");
  Serial.println(messageCANdht.dataFloat[1]);
  Serial.println("       -----------------");
    }

//capteur2 -----------------------   
   messageCANdht.id = ID_2;
   messageCANdht.dataFloat[0] = t2;
   messageCANdht.dataFloat[1] = h2;
    if (CAN.tryToSend(messageCANdht)) {
    Serial.println("message 2 envoyer");
  Serial.print(" : t=");
  Serial.print(messageCANdht.dataFloat[0]);
  Serial.print(" , h=");
  Serial.println(messageCANdht.dataFloat[1]);
  Serial.println("       -----------------"); 
    }
    milliEnvoi = milliEncour;     /* reset de la tempo */
    }
  }

 // ----------- Fin du pgm ------------------


réception ACAN2515_Test_Rx.ino

/*
*     
*   DESCRIPTION : Test bus CAN de valeur décimal sur Arduino UNO avec pseudo sonde DHT22 
*                 avec 2 croquis,
*                 ACAN2515_Test_Tx.ino et ACAN2515_Test_Rx.ino

*   BASES : sur une base https://www.locoduino.org/spip.php?article268
*         : Sujet: Bus CAN et Décimal
*         
*  * Libraries:
 * - ACAN2515 ver.2.1.0 de pierre Molinaro
 * - https://github.com/pierremolinaro/acan2515
*
* Modif/Afaire:
* -o- a revoir filtrage non fonctionnelle
* -o- sur perte CAN émission les valeurs ne sont pas mises à zéro
* -o- 
* -o-
*   (3%) de l'espace de stockage de programmes               
*               
*/
        //----------- 2022 ---------------- Fonctionnelle -----------------//

 /* ----- inclusion des bibliothèques -------------*/
   #include <ACAN2515_Buffer16.h>           /* les buffers */
   #include <ACANBuffer.h>
   #include <ACAN2515Settings.h>       /* les reglages */
   #include <ACAN2515.h>               /* le controleur*/
   #include <CANMessage.h>             /* les messages */
 
/* ----- capteurs virtuelle  -------------*/ 
  float  T1;  float   H1;  /*capteur 1 */
  float  T2;  float   H2;  /*capteur 2 */
 
/*  Module CAN MCP2515 */
   static const uint8_t MCP2515_CS  = 53;  /* pin SPI_CS */
   static const uint8_t MCP2515_INT = 2;   /* pin interruption */

/* objet de type ACAN2515 est instancié pour gérer le MCP2515  */
   ACAN2515 CAN(MCP2515_CS, SPI, MCP2515_INT); /* pin CS,SPI ,pin INT */
   static const uint32_t FREQUENCE_DU_QUARTZ = 8ul * 1000ul * 1000ul; /*quartz du MCP2515*/
   static const uint32_t FREQUENCE_DU_BUS_CAN = 125ul * 1000ul;  /*fréquence du bus*/

   CANMessage message;     // objets CAN pour les messages en réception

// -------------- Reception msg CAN    --------------------------

  void receive1 (const CANMessage & message)  {   
  const uint16_t capteurs = message.id & 0x1F;
 
 switch (capteurs) {            /* ---- classement des messages CAN ----*/
  case 10:
    T1 = message.dataFloat[0];      /* ---- capteur A ----*/
    H1 = message.dataFloat[1];
    break;
  case 11:
    T2 = message.dataFloat[0];       /* ---- capteur B ----*/
    H2 = message.dataFloat[1];
    break;
     }
   }

/* ----- défini masques et filtres pour les messages  ------*/
  const ACAN2515Mask masque = standard2515Mask( 0, 0, 0);
  const ACAN2515AcceptanceFilter filtres[] =  { 
   { standard2515Filter( 0, 0, 0), receive1 }
    };

// --- defilement pour Debug --------------------------
  unsigned long previousMillis = 0;  /*reset du compteur des millisecondes*/
  const long interval = 10000; /*Fréquence affichage debug (1000millisecondes=1mn) */

//-------------------------- SETUP ------------------------//                 
  void setup()   {
   
  Serial.begin(115200);           /* com série */
  SPI.begin();                  /* bus SPI */
   
  Serial.println("Configuration du MCP2515");
  ACAN2515Settings reglages(FREQUENCE_DU_QUARTZ, FREQUENCE_DU_BUS_CAN);

  reglages.mReceiveBufferSize = 4;      /* nbr d'emplacement buffer*/
  reglages.mTransmitBuffer0Size = 0;    /* file d'attente d'emission*/
 
  /* Demarrage et control d'erreur du CAN */
  const uint16_t codeErreur = CAN.begin(reglages,[] {CAN.isr(); }, masque, filtres, 1 );
//   const uint16_t codeErreur = CAN.begin(reglages, [] { CAN.isr(); });
     
  if (codeErreur == 0) {
    Serial.println("configuration ok"); }
    else {
    Serial.println("Probleme de connexion");
    while (1);
    }
 }

//------------------------------LOOP------------------------//
  void loop()    { 
 
  CAN.dispatchReceivedMessage();

// ------- tempo affichage print ---------------------
 unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    Serial.println( "--- test valeur CAN ----");
    Serial.print(T1);
    Serial.print( " deg : capteur A: % ");
    Serial.println(H1);
    Serial.println( " ------------------- ");
    Serial.print(T2);
    Serial.print( " deg : capteur B: % ");
    Serial.println(H2);
    }
  }
   
// -------------- fin Pgm -------------------


4
Bus CAN / Re : Bus CAN et Décimal
« le: mai 14, 2020, 12:09:54 pm »
...... "faire des test !"

bonjour Jean-Luc

mais les Test c Ok

un exemple de recopie du terminal

la c'est modifiant les Numéro des Groupes :
pour Nbits Msg :6 / Nbits Capt:5
           Msg Groupe:
  0   0                  0
 20   100000         1
 40   1000000         2
 60   1100000         3
 80   10000000         4
 A0   10100000         5   
 C0   11000000         6   
 E0   11100000         7
100   100000000      8

la c les numéro des capteurs:
B5  :Msg1 envoye:  10110101   21
B6  :Msg2 envoye:  10110110   22
B7  :Msg3 envoye:  10110111   23

et des valeurs mis en Hexa coter réception

Rein ni fait, je cale et il me manque une cale 

 :-X





5
Bus CAN / Re : Bus CAN et Décimal
« le: mai 14, 2020, 11:29:09 am »
Bonjour

Modif des croquis du dessus, alléger pour plus de clarté
  (valeurs des capteurs température virtuel )
il me reste la partie masque et filtre ou toujours rien ne fonctionnent

le détail :

Partie Émission :
/*  CAN : numero des (éléments) capteurs pour les messages  */
  const uint16_t CAPTEUR1 = 10; /* le Capteur */
  .....

    /*  Nbr de Bits pour les poids fort et faible  */
  const uint16_t NBBITS_TYPE_MESSAGE = 6;   /* Groupe */
  const uint16_t NBBITS_ID_CAPTEUR = 5;     /* Element */

  const uint16_t MESSAGE_GROUPE = 4;  /*type de message (le Groupe 7,la clim)*/
  const uint16_t MASK = MESSAGE_GROUPE << NBBITS_ID_CAPTEUR;

  const uint16_t ID_1 = (MESSAGE_GROUPE << NBBITS_ID_CAPTEUR) | CAPTEUR1;
  ....

                 --------------------------
me donne sur le terminal
---------------------------
80   10000000  le masque  "MASK"
 ---------------------------
8A  :Msg1 envoye:  10001010  et les capteurs
8B  :Msg2 envoye:  10001011
8C  :Msg3 envoye:  10001100
                    -----------------------------

Pour la partie Réception:
...
const uint16_t capteurs = message.id & 0x8A;   le   capteur 1
const uint16_t capteurs = message.id & 0x8B;    2
const uint16_t capteurs = message.id & 0x8C;   3
...
et
..
  const ACAN2515Mask masque = standard2515Mask( 0, 0, 0);
  const ACAN2515AcceptanceFilter filtres[] =  { 
   { standard2515Filter( 0, 0, 0), receive1 }
.../
(masque mis à Zéro)

         ------------------------------
Visu sur le terminal des valeurs:
numero capteurs: 138 : 138 : 136
11.11 <--T1 --A-- H1--> 51.11
11.11 <--T2 --B-- H2--> 51.11
11.11 <--T3 --C-- H3--> 51.11
numero capteurs: 138 : 139 : 136
22.22 <--T1 --A-- H1--> 52.22
22.22 <--T2 --B-- H2--> 52.22
22.22 <--T3 --C-- H3--> 52.22
               ----------------------
c'est le fouillis  8)  :'(

Question:  quelles valeur Hexa a Changer / Ajouter ?????

j'ai tester toutes les combinaison possible depuis 3 jours, et rien de rien de valable
même crée un pdf sur la question  ;)

Voili Voila

merci

6
Bus CAN / Re : Bibliothèque ACAN et détecteurs RFID en mode SPI
« le: mai 12, 2020, 06:28:32 pm »
Bonsoir

Sympa, je découvre , merci  :)

info pour les curieux https://static.cinay.xyz/2019/07/Lecteur-USB-RFID(NFC)-SCL3711.html

7
Bus CAN / Re : Bus CAN et Décimal
« le: avril 28, 2020, 03:29:02 pm »
Jean-Luc Bonjour

...release (version 2.0.4) , mis a jour biblio de l'IDE et modification comme dit.

Impeccable, les croquis on encore Rétréci, cela devient inquiétant  :P  :)

donc je passe les codes Arduino en version 2, avec la modif du float et ajout d'un capteur DHT22 (temp/humidité)
( les version 1 reste pour les nouveaux arrivant ??)

Emi_dht_ACAN2515_v2.ino

/*
 * Locoduino: 1er mai 2020
 * https://www.locoduino.org/spip.php?article268
 *
 * Envoi et Réception de valeur numerique a deux digit apres la virgule
 * (valeur positif ou négatif)
 *
 * sur une base de Locoduino (JL) et bricol par JeeLet
 *
 * - librarie ACAN2515 ver.2.0.4  de pierre Molinaro https://github.com/pierremolinaro/acan2517
 * - librarie "dhtnew.h" Ver:0.1.5 de Rob Tillaart's
 *
 * -X- compil des exemples 1 et 2 (partie eraser)
 * -X- Ajout partie float "virgule" et valeur négatif
 * -X- ajout capteur DHT22 (température-humidité)
 * -X- ver. 2.0.4 de ACAN2515 (ajout float) et croquis V1 en V2
 * -o- gestion des ID can pour multi capteurs (quatres ?)
 * -o-
 */
// ------------- Debut Pgm Emission ----------------

 // ----- inclusion des bibliothèques -------------
   #include <ACAN2515Settings.h>      // les reglages
   #include <ACAN2515.h>              // le controleur
   #include <CANMessage.h>            // les messages
   #include <dhtnew.h>                // Capteur temp/humi

// ------ config des E/S -----------
   static const uint8_t MCP2515_CS  = 10;  // pin SPI_CS
   static const uint8_t MCP2515_INT = 2;   // pin interruption

   DHTNEW dht1  (5);      // pin capteur DHT22   

// ------- les déclarations ----------
// objet de type ACAN2515 est instancié pour gérer le MCP2515
 
   ACAN2515 CAN(MCP2515_CS, SPI, MCP2515_INT); //pin CS,SPI ,pin INT.
   static const uint32_t FREQUENCE_DU_QUARTZ = 8000000; // quartz du MCP2515 en hertz
   static const uint32_t FRENQUENCE_DU_BUS_CAN = 125000;  // fréquence du bus CAN

   CANMessage message;    // objets pour les messages CAN en emission.

//  ----------------- capteur1 DHT22 -----------
    float t1 = 0.0;     // température
    float h1 = 0.0;     // humidité
       
    static uint32_t milliEnvoi = 0;         // Tempo d’envoi CAN
       
// -------------- Setup --------------
  void setup()  {
  Serial.begin(9600);           // com série
  SPI.begin();                  // bus SPI
  dht1.read();            // lecture capteurs 
 
  Serial.println("Configuration du MCP2515");
  ACAN2515Settings configuration(FREQUENCE_DU_QUARTZ, FRENQUENCE_DU_BUS_CAN);
 
// ----  Demarrage et control d'erreur du CAN ----
  const uint32_t codeErreur = CAN.begin(configuration, [] { CAN.isr(); });
   
    if (codeErreur == 0)   
      {
      Serial.println("Configuration ok");
      }
    else
      {
      Serial.println("Probleme de connexion");
      while (1);
      }
     
    message.len = 4;      //message avec 4 octets de donnee
 }
 
//------------ Loop --------------
  void loop()
 {
  uint16_t milliEncour = millis();
    if (milliEncour - milliEnvoi >= 6000)  //envoi toutes les 2 secondes
    {
// ------------- partie capteur ----------------     
  capteur();              //apl sous pgm du capteur
  h1 = dht1.humidity ;    //humidite 1
  t1 = dht1.temperature;  //Temperature 1
           
// ------------- partie CAN ----------------   

    message.dataFloat[0] = t1;    // valeur float du capteur
    CAN.tryToSend(message);       // envoi CAN
   
      Serial.print(t1);
      Serial.print(" Temp --Emi--> ");
      Serial.println(message.data32[0]);

      Serial.print(h1);
      Serial.print(" hum --Emi--> ");
      Serial.println(message.data32[0]);
   
      milliEnvoi = milliEncour;     // reset tempo
     }
  }

              // ------ control Capteurs ------
 void capteur()
  {
   int chk = dht1.read();
    switch (chk)
    {
    case DHTLIB_OK:
      Serial.println("DHT22 OK,\t");
      break;
    case DHTLIB_ERROR_CHECKSUM:
      Serial.println("Checksum error,\t");
      break;
    case DHTLIB_ERROR_TIMEOUT:
      Serial.println("Time out error,\t");
      break;
    default:
      Serial.println("Unknown error,\t");
      break;
    }
        // ----- fin sous pgm ------------   
 }
 
// ----------- Fin du pgm ------------------


Rec_dht_ACAN2515_v2.ino

/*
 * Locoduino: 1er mai 2020
 * https://www.locoduino.org/spip.php?article268
 *
 * Envoi et Réception de valeur numerique a deux digit apres la virgule
 * (valeur positif ou négatif)
 *
 * sur une base de Locoduino (JL) et bricol par JeeLet
 *
 * - librarie  ACAN2515 ver.2.0.4  de pierre Molinaro https://github.com/pierremolinaro/acan2517
 * - librarie "dhtnew.h" Ver:0.1.5 de Rob Tillaart's
 *
 * -X- compil des exemples 1 et 2 (partie eraser)
 * -X- Ajout partie float "virgule" et valeur négatif
 * -X- ajout DHT22 (température-humidité) en Emission
 * -X- ver. 2.0.4 de ACAN2515 ( ajout float) et croquis V1 en V2
 * -o- gestion des ID can pour multi capteurs (quatres ?)
 * -o-
 */
// ------------- Debut Pgm Reception ----------------

 // ----- inclusion des bibliothèques -------------
   #include <ACAN2515Settings.h>       // les reglages
   #include <ACAN2515.h>               // le controleur
   #include <CANMessage.h>             // les messages

// ------ config des E/S -----------
   static const uint8_t MCP2515_CS  = 10;  // pin SPI_CS
   static const uint8_t MCP2515_INT = 2;   // pin interruption

// ------- les déclarations ----------
// objet de type ACAN2515 est instancié pour gérer le MCP2515
 
   ACAN2515 CAN(MCP2515_CS, SPI, MCP2515_INT); //pin CS,SPI ,pin INT.
   static const uint32_t FREQUENCE_DU_QUARTZ = 8000000; // quartz du MCP2515 en hertz
   static const uint32_t FRENQUENCE_DU_BUS_CAN = 125000;  // fréquence du bus CAN

    CANMessage message;     // objets pour les messages CAN
   
// -------------- Setup --------------
  void setup()  {
  Serial.begin(9600);           // com série
  SPI.begin();                  // bus SPI
 
  Serial.println("Configuration du MCP2515");
  ACAN2515Settings configuration(FREQUENCE_DU_QUARTZ, FRENQUENCE_DU_BUS_CAN);
 
// ----  Demarrage et control d'erreur du CAN ----
  const uint32_t codeErreur = CAN.begin(configuration, [] { CAN.isr(); });
   
  if (codeErreur == 0) 
    {
    Serial.println("configuration ok");
    }
  else
    {
    Serial.println("Probleme de connexion");
    while (1);
    }
 }

//------------ Loop --------------
  void loop()
 {
   if (CAN.receive(message))  // signal arrive message CAN
    {
    float val1 = message.dataFloat[0];
    Serial.print(" --Rec--> ");
    Serial.println(val1); 
    }
 }
// -------------- fin Pgm -------------------

Jean-Luc Merci

8
Présentez vous ! / Re : Politesse Bonjour
« le: avril 27, 2020, 07:59:25 pm »
...

@msport
... "peut-être croisés, rue du Petit Pont"  pourquoi pas !  :)

@ Dominique
... "et un adapte du Can" oui un bus de Com vraiment sympa.

le support : 2 fil de cuivre torsadé, insensible au CEM
l'interface : 2 ptit CI avec conso a minima
et la Biblio ACAN : de l'ultra Light a programmé , alors la c'est la cerise sur le gâteux que je suis 

Messieurs de LocoDuino  BRAVO  8)

(p'tain si après ça cela le CAN se démocratise pas, c a désespéré de l'évolution de l’espèce  :'(





9
Présentez vous ! / Politesse Bonjour
« le: avril 27, 2020, 05:22:13 pm »
... zut quoi, j'me suis même pas présenti  :o

LocoDuino Bonjour

Passion pour le modélisme et l’électronique  a mon jeune age, ancien client de Baby-Trains a Paris pour la partie Nautique ou Routière dans les années 70.
 jeune marié, enfants, boulot, puis il a fallu  faire des choix ..... bye bye maquettes Télcommandante et doc.

Après une vie parisienne (métier du tertiaire, automatisme du batiment "gtb")
la retraite en montagne Sud Ardèche.

64  année sidérale et plus toute mes dents, mais la "bidouille" et toujours mon moteur.

..... Vroum vroummmm A+

marc


10
Bus CAN / Re : Bus CAN et Décimal
« le: avril 27, 2020, 02:24:29 pm »
Re
oui j'ai papy j'ai pas pu attendre ce soir  :o


c'est impeccable, magnifique, du 1er coup, j'en revient pas  ::)   


une recopie d'écran des 2 IDE en service



les 2 croquis

Emi_dht_ACAN2515_v1.ino

/*
 * Locoduino: 1er mai 2020
 * https://www.locoduino.org/spip.php?article268
 *
 * Envoi et Réception de valeur numerique a deux digit apres la virgule
 * ( valeur positif ou négatif)
 *
 * sur une base de Locoduino (JL)
 * avec Biblio ACAN de pierre Molinaro https://github.com/pierremolinaro/acan2517
 * bricolage par : JeeLet
 * -X- compil des exemples 1 et 2 (partie eraser)
 * -X- Ajout partie float "virgule" et valeur négatif
 * -o- reste ajout les capteurs (tres simple avec dhtNEW de Rob Tillaart)
 * -o-
 */
// ------------- Debut Pgm Emission ----------------

 // ----- inclusion des bibliothèques -------------
   #include <ACAN2515Settings.h>       // les reglages
   #include <ACAN2515.h>               // le controleur
   #include <CANMessage.h>             // les messages

// ------ config des E/S -----------
   static const uint8_t MCP2515_CS  = 10;  // pin SPI_CS
   static const uint8_t MCP2515_INT = 2;   // pin interruption

// ------- les déclarations ----------
// objet de type ACAN2515 est instancié pour gérer le MCP2515
 
   ACAN2515 CAN(MCP2515_CS, SPI, MCP2515_INT); //pin CS,SPI ,pin INT.
   static const uint32_t FREQUENCE_DU_QUARTZ = 8000000; // quartz du MCP2515 en hertz
   static const uint32_t FRENQUENCE_DU_BUS_CAN = 125000;  // fréquence du bus CAN

   CANMessage message;    // objets pour les messages CAN en emission.

// ------ début du defini union ----
  typedef union     
    {
    float    f;   // valeur f  ?
    uint32_t i;   // valeur i ?
    }
    floatOr32bitsInt; // ..
// ---------------fin  ------------------

  float vala = 32.45;   // simulation Valeur en virgule flottante
       
  static uint32_t milliEnvoi = 0;         // Tempo d’envoi
     
// -------------- Setup --------------
  void setup()  {
  Serial.begin(9600);           // com série
  SPI.begin();                  // bus SPI
 
  Serial.println("Configuration du MCP2515");
  ACAN2515Settings configuration(FREQUENCE_DU_QUARTZ, FRENQUENCE_DU_BUS_CAN);
 
// ----  Demarrage et control d'erreur du CAN ----
  const uint32_t codeErreur = CAN.begin(configuration, [] { CAN.isr(); });
   
    if (codeErreur == 0)   
      {
      Serial.println("Configuration ok");
      }
    else
      {
      Serial.println("Probleme de connexion");
      while (1);
      }
    message.len = 4;      //message avec 4 octets de donnee
 }
 
//------------ Loop --------------
  void loop()
 {
  uint16_t milliEncour = millis();
    if (milliEncour - milliEnvoi >= 2000)  //envoi toutes les 2 secondes
    {
    floatOr32bitsInt tmp;
    tmp.f = vala; /* val c'est ton flottant */
    message.data32[0] = tmp.i; 
    CAN.tryToSend(message); // envoi du message

      Serial.print(tmp.f);
      Serial.print(" --Emi--> ");
      Serial.println(message.data32[0]);
   
      milliEnvoi = milliEncour;     // reset tempo
     }
 }
// ----------- Fin du pgm ------------------



Rec_dht_ACAN2515_v1.ino

/*
 * Locoduino: 1er mai 2020
 * https://www.locoduino.org/spip.php?article268
 *
 * Envoi et Réception de valeur numerique a deux digit apres la virgule
 * ( valeur positif ou négatif)
 *
 * sur une base de Locoduino (JL)
 * avec Biblio ACAN de pierre Molinaro https://github.com/pierremolinaro/acan2517
 * bricolage par : JeeLet
 * -X- compil des exemples 1 et 2 (partie eraser)
 * -X- Ajout partie float "virgule" et valeur négatif
 * -o- reste ajout les capteurs (tres simple avec dhtNEW de Rob Tillaart)
 * -o-
 */
// ------------- Debut Pgm Reception ----------------

 // ----- inclusion des bibliothèques -------------
   #include <ACAN2515Settings.h>       // les reglages
   #include <ACAN2515.h>               // le controleur
   #include <CANMessage.h>             // les messages

// ------ config des E/S -----------
   static const uint8_t MCP2515_CS  = 10;  // pin SPI_CS
   static const uint8_t MCP2515_INT = 2;   // pin interruption

// ------- les déclarations ----------
// objet de type ACAN2515 est instancié pour gérer le MCP2515
 
   ACAN2515 CAN(MCP2515_CS, SPI, MCP2515_INT); //pin CS,SPI ,pin INT.
   static const uint32_t FREQUENCE_DU_QUARTZ = 8000000; // quartz du MCP2515 en hertz
   static const uint32_t FRENQUENCE_DU_BUS_CAN = 125000;  // fréquence du bus CAN

    CANMessage message;     // objets pour les messages CAN

// ------ début du defini union ----   
    typedef union     
    {
    float    f;
    uint32_t i;
    }
    floatOr32bitsInt; // ..
// ---------------fin  ------------------
   
// -------------- Setup --------------
  void setup()  {
  Serial.begin(9600);           // com série
  SPI.begin();                  // bus SPI
 
  Serial.println("Configuration du MCP2515");
  ACAN2515Settings configuration(FREQUENCE_DU_QUARTZ, FRENQUENCE_DU_BUS_CAN);
 
// ----  Demarrage et control d'erreur du CAN ----
  const uint32_t codeErreur = CAN.begin(configuration, [] { CAN.isr(); });
   
  if (codeErreur == 0) 
    {
    Serial.println("configuration ok");
    }
  else
    {
    Serial.println("Probleme de connexion");
    while (1);
    }
 }

//------------ Loop --------------
  void loop()
 {
   if (CAN.receive(message))  // signal arrive message CAN
    {
    floatOr32bitsInt tmp;
    tmp.i = message.data32[0];
    float val = tmp.f;
 
    Serial.print(tmp.i);
    Serial.print(" --Rec--> ");
    Serial.println(tmp.f); 
    }
 }
// -------------- fin Pgm -------------------


valeur décimal, négatif ou positif a 2digit après la virgule passe bien sur le Bus CAN ( un grand pas pour l'humabinaire)

Jean-Luc T génial ( merci a toi Antoine d'avoir amorcer la pompe  à connaissance)

Ah oui, une question :
comment pour ajouter plusieurs mesures de capteur, plusieurs sondes ???

 8)




11
Bus CAN / Re : Bus CAN et Décimal
« le: avril 27, 2020, 11:49:48 am »
Jean-Luc Bonjour

oui  Pierre Molinaro a fait un super boulot avec ACAN, j'ai même faillie le contacter (toi aussi   ;)

mais après une semaine a essayer de comprendre la mis en pratique de la biblio de pierre, j'ai jeter l'éponge hier :)
( le fichier pdf fournie avec la lib est super pour les anglophone )

je suis repartir sur mcp.can de SeeedStudio, les exemples son super nombreux sur le web ....... mais avec ton message, demi-tour   :)


et pour "suggérer à Pierre Molinaro d'ajouter un accès en float aux CANMessage)" ..... oui il ya une vrais demande sur un bus CAN Domotique filaire.

mais beaucoup abandonne faute d'exemple mis en pratique  :(

un big merci pour ton aide, je regarde bien ta réponse.

à ce soir  (sur le forum)

MERCI

12
Bus CAN / Re : Bus CAN et Décimal
« le: avril 22, 2020, 07:34:05 pm »
bonsoir Antoine

... mais non " tu cherches et trouves des réponses sur d'autres forums" ... j'ai fais aucune demande sur les autres Forum.
seulement du copier coller de bout de code de  Si de Là.

et j'ai pas voulue encore te déranger par mail, tu a un big projet a géré ( le peut de compris)

bon c pas grave

A+

13
Bus CAN / Re : Bus CAN et Décimal
« le: avril 22, 2020, 06:54:15 pm »
Bonsoir

Recu hier mes 5 "Module Bus-CAN SBC-CAN01"  de chez JOY-hic, refait le câblage en plus propre.

avec la biblio ACAN / ACAN2515
 j'ai Tester les croquis (2BP et 2 Led) donner sur le super Tuto ACAN number ON ,  c'est implacable .. heu ... impeccable.

Donc me revoilà avec ma virgule   :o   

j'ai mis en application une "recette"  donnée par  skywodd sur le forum Arduino.

"Tu multiplies ton float par le nombre de dizaines après la virgule,
 tu le convertis en int(),
tu l'envoies à l'Arduino.

Coté Arduino, tu réceptionnes ce int en le recomposant,
tu le divises par le nombre de dizaine que tu avais derrière la virgule,
tu le convertis en float()."



Et c'est impeccable, enfin presque  ;D

pour le croquis émission rien a dire,  le problème c'est pour la réception.

comprend pas comment diviser quoi ou ??!!

int ival = ????
et
float val = ival / 100.0;


voila mes super Croquis.

RE-Edit du samedi 25
j'ai supprimé les croquis, c'est une horreur  :D
mais je continue a avancer.

info du jour https://www.hackster.io/monkbroc/poor-man-s-can-bus-602636
du super light  :)








14
Bus CAN / Re : Bus CAN + bus PJON
« le: avril 18, 2020, 07:10:48 pm »
bonsoir

... "surtout pas vouloir le comparer avec le CAN"   +1 d'accord

fouillé le web pour trouvé des retours, et il y a deux monde, certain trouve génial et d'autre crie a l'hérésie.

Des Arduino  en grappe  sur un bus avec des signaux TTL sans protection .... pourquoi pas !!

il y a une vidéo qui dit tout sur  youtube.com/watch?v=0EUNtM_dAFU
(lien direct supprimé, pollution inutile)

https://github.com/gioblu/PJON/wiki/Mitigate-interference

merci Antoine pour la découverte d'un autre monde.

15
Bus CAN / Re : Bus CAN + bus PJON
« le: avril 18, 2020, 11:46:28 am »
Antoine Bonjour

en attente d'une arriver lointaine pour mes cartes CAN  :P

je cherche  pour arduino Uno, le type de câblage/adaptateur  pour relier  du PJSON rien vue sur leur sites.

un p'ti schéma

merci

Pages: [1] 2