Aide module BUS CAN 2515

Bonjour à tous,

J'ai pour projet de transmettre des données capteurs via un bus CAN entre deux cartes Arudino. L'une étant une Arduino mega 2560 et l'autre une Uno elego R3.

Le module BUS CAN étant le mcp2515.

Dans un premier temps j'essaie simplement d'envoyer un message puis, lorsque j'arriverai à l'envoyer je changerai ce message par mes données capteurs.

J'ai câblé mes deux cartes et mes deux modules BUS CAN comme le montre la figure-ci :

Les pins sont reliés comme-ci :

Module CAN | Arduino Mega 2560 | Arduino uno
    SCK    |         52        |       13
    SO     |         50        |       12
    SI     |         51        |       11
    CS     |         53        |       10
    INT    |          2        |        2

Voici le code que j'ai réalisé en m'aidant de certains exemples disponibles :

- Partie emission :

#include <SPI.h>          //Library for using SPI Communication 
#include <mcp2515.h>      //Library for using CAN Communication


struct can_frame canMsg1; //pot message
MCP2515 mcp2515(10); // port CLK carte Arduino UNO


void setup() 
{
 
  Serial.begin(9600);
  SPI.begin();               //Begins SPI communication  

  mcp2515.reset();
  mcp2515.setBitrate(CAN_500KBPS,MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
  mcp2515.setNormalMode();

  canMsg1.can_id  = 0xAA;           //Id CAN : 0xAA
  canMsg1.can_dlc = 2;               //longueur données CAN : 2
}

void loop() 
{
  Serial.print(canMsg1.can_id);
 
  canMsg1.data[0] = 12;        //Valeur envoyée sur data[0]
  canMsg1.data[1]= 987;      // Valeur envoyée sur data [1]
  mcp2515.sendMessage(&canMsg1);     //Sends the CAN message
  delay(200);
}

- Partie réception :

#include <SPI.h>              //Library for using SPI Communication 
#include <mcp2515.h>          //Library for using CAN Communication

#include <Wire.h> 

struct can_frame canMsg1; 

MCP2515 mcp2515(53);                 // Port CS Arduino Mega
 
void setup() {

  delay(1000);
    
  SPI.begin();                       //Begins SPI communication
  
  Serial.begin(9600);                //Begins Serial Communication at 9600 baudrate 
  
  mcp2515.reset();      

  mcp2515.setBitrate(CAN_500KBPS,MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz 
  mcp2515.setNormalMode();                  //Sets CAN at normal mode
}

void loop() 
{
  if (mcp2515.readMessage(&canMsg1) == MCP2515::ERROR_OK) // To receive data (Poll Read)
   {
    if(canMsg1.can_id==0xAA)
    {
     int x = canMsg1.data[0];         
     Serial.println(x);
     delay(200);
    }
  }     

   delay(20);
}                    

Lorsque j'analyse mon port série (à l'aide du logiciel MODICOM), je constate que je transmets bien mon message, cependant je ne le reçois pas, la condition if (mcp2515.readMessage(&canMsg1) == MCP2515::ERROR_OK) n'est jamais à '1'.

J'ai essayé d'autres librairies et toujours le même problème. J'ai également essayé de mettre une masse commune mais cela ne m'a pas permis de me debloquer,

Pensez-vous que cela peut venir du fait que ça ne soit pas les mêmes types de carte Arduino ?

Je me demande également si cela ne vient pas de la pin INT, car je n'y touche pas du tout dans mon programme

Je publie donc ce sujet pour savoir si quelqu'un aurait une idée ou une piste pour essayer de résoudre cette issue,

En vous remerciant pour le temps que vous consacrerez à ce topic,

J'ai remis le post en forme.
Merci de lire

Merci pour la remise en forme du post ainsi que le lien,

étant nouveau je n'étais pas au courant,

Tu pourrais préciser quelle librairie tu utilises car j'ai un peu cherché et je vois que certaines d'entre-elles ne fonctionnent pas sur Mega et UNO

Pour ce code-ci, j'utilise la librairie "arduino-mcp2515-master" que j'ai pu télécharger sur github à l'adresse suivante : GitHub - autowp/arduino-mcp2515: Arduino MCP2515 CAN interface library

J'ai également essayé avec la librairie CAN-BUS Shield de Seeed Studio mais j'obtiens toujours la même issue,