Come utilizzare il modulo Bus Can MCP2515 con Arduino

How to Use the MCP2515 CAN Bus Module with Arduino

L'MCP2515 è un modulo Bus Can (Controller Area Network) ampiamente utilizzato per la comunicazione automobilistica e industriale. Consente ad Arduino di interfacciarsi con i sistemi basati su CAN per inviare e ricevere dati in modo efficiente. Questo tutorial ti guiderà attraverso l'impostazione e l'utilizzo del modulo MCP2515 con Arduino.

Cosa avrai bisogno

  1. MCP2515 MODULO BUS
  2. Arduino Board (ad es. Uno, Mega, Nano)
  3. Dispositivo compatibile con Can-bus o un altro modulo MCP2515
  4. Fili jumper
  5. Breadboard (opzionale)
  6. Un computer con l'IDE Arduino installato

Passaggio 1: Comprensione del modulo MCP2515

Il modulo MCP2515 utilizza il ricetrasmettitore del controller IC MCP2515 IC e TJA1050. Il modulo comunica con l'Arduino tramite l'interfaccia SPI.

Pinout MCP2515

Spillo Funzione
VCC Alimentazione (5V)
GND Terra
Cs CHIP Seleziona
COSÌ Output dei dati SPI
Si Input di dati SPI
SCK COLLO SPI
Int Interrompere l'output

Passaggio 2: cablaggio l'MCP2515 ad Arduino

Di seguito è riportata la guida al cablaggio per la connessione del modulo MCP2515 a un Arduino Uno:

PIN MCP2515 Arduino Pin
VCC 5v
GND GND
Cs Pin 10
COSÌ Pin 12
Si Pin 11
SCK Pin 13
Int Pin 2

Nota: Per altre schede Arduino, assicurarsi che i pin SPI corrisponda al pinout della tua scheda specifica.

Passaggio 3: installare la libreria richiesta

IL MCP_CAN La libreria semplifica l'interazione con il modulo MCP2515.

Passaggi per installare la libreria MCP_CAN:

  1. Apri l'IDE Arduino.
  2. Vai a Schizzo > Includi la libreria > Gestisci le biblioteche.
  3. Cerca "MCP_CAN" nel gestore della biblioteca.
  4. Clic Installare.

Passaggio 4: caricare il codice

Codice del trasmettitore (invio di dati sul bus CAN):

#include <SPI.h>
#include <mcp_can.h>

#define CAN_CS 10
MCP_CAN CAN(CAN_CS); // Set CS pin for MCP2515

void setup() {
  Serial.begin(115200);

  if (CAN.begin(MCP_ANY, 500000, MCP_8MHZ) == CAN_OK) {
    Serial.println("CAN Bus Initialized Successfully");
  } else {
    Serial.println("CAN Bus Initialization Failed");
    while (1);
  }

  CAN.setMode(MCP_NORMAL);
  Serial.println("CAN Bus set to Normal Mode");
}

void loop() {
  unsigned char data[8] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};

  if (CAN.sendMsgBuf(0x100, 0, 8, data) == CAN_OK) {
    Serial.println("Message Sent Successfully");
  } else {
    Serial.println("Error Sending Message");
  }

  delay(1000); // Send data every second
}

Codice del ricevitore (lettura dei dati dal bus CAN):

#include <SPI.h>
#include <mcp_can.h>

#define CAN_CS 10
MCP_CAN CAN(CAN_CS); // Set CS pin for MCP2515

void setup() {
  Serial.begin(115200);

  if (CAN.begin(MCP_ANY, 500000, MCP_8MHZ) == CAN_OK) {
    Serial.println("CAN Bus Initialized Successfully");
  } else {
    Serial.println("CAN Bus Initialization Failed");
    while (1);
  }

  CAN.setMode(MCP_NORMAL);
  Serial.println("CAN Bus set to Normal Mode");
}

void loop() {
  unsigned char len = 0;
  unsigned char buf[8];

  if (CAN.checkReceive() == CAN_MSGAVAIL) {
    CAN.readMsgBuf(&len, buf);
    unsigned long id = CAN.getCanId();

    Serial.print("Message ID: 0x");
    Serial.println(id, HEX);

    Serial.print("Data: ");
    for (int i = 0; i < len; i++) {
      Serial.print(buf[i], HEX);
      Serial.print(" ");
    }
    Serial.println();
  }
}

Passaggio 5: testare l'installazione

  1. Collega il modulo MCP2515 al tuo Arduino come descritto nel passaggio 2.
  2. Carica il codice del trasmettitore su un Arduino e il codice del ricevitore su un altro Arduino.
  3. Collegare i pin CAN_H e CAN_L di entrambi i moduli MCP2515 per stabilire il bus CAN.
  4. Apri il monitor seriale su entrambi gli Arduinos e imposta il tasso di baud 115200.
  5. Sul ricevitore Arduino, dovresti vedere i messaggi inviati dal trasmettitore Arduino.

Risoluzione dei problemi

  • Nessun dato ricevuto: Controlla le connessioni CAN_H e CAN_L tra i moduli.
  • Inizializzazione non riuscita: Assicurati che le connessioni SPI e il pin CS abbiano l'installazione.
  • Comunicazione irregolare: Verificare che entrambi i moduli utilizzino lo stesso tasso di baud (500 kbps in questo esempio).

Applicazioni del modulo Bus MCP2515

  1. Diagnostica dei veicoli (OBD-II)
  2. Sistemi di automazione industriale
  3. Comunicazione robotica
  4. Dispositivi IoT con reti di autobus CAN

Conclusione

Hai impostato correttamente il modulo Bus MCP2515 con Arduino per l'invio e la ricezione di dati. Questo modulo è incredibilmente versatile per le applicazioni che richiedono comunicazioni affidabili rispetto a un bus CAN. Sperimenta con diversi ID dei messaggi e payload di dati per esplorare il suo pieno potenziale!

Lascia un commento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.