Comment utiliser le module de bus MCP2515 avec Arduino

How to Use the MCP2515 CAN Bus Module with Arduino

Le MCP2515 est un module de bus Can (Controller Area Network) largement utilisé pour la communication automobile et industrielle. Il permet à Arduino de s'interfacer avec des systèmes basés sur CAN pour envoyer et recevoir efficacement les données. Ce tutoriel vous guidera à travers la configuration et l'utilisation du module MCP2515 avec Arduino.

Ce dont vous aurez besoin

  1. Module de bus MCP2515
  2. Board Arduino (par exemple, Uno, Mega, Nano)
  3. Appareil compatible CAN-BUS ou un autre module MCP2515
  4. Fils de cavalier
  5. Planche à pain (en option)
  6. Un ordinateur avec l'ide Arduino installé

Étape 1: Comprendre le module MCP2515

Le module MCP2515 utilise l'émetteur-récepteur MCP2515 CAN CONTROLER IC et TJA1050. Le module communique avec l'Arduino via l'interface SPI.

Pinout MCP2515

Épingle Fonction
VCC Alimentation (5V)
GND Sol
CS Sélection de puce
DONC Sortie de données SPI
SI Entrée de données SPI
SCK Horloge SPI
Int Interruption de sortie

Étape 2: Câblage du MCP2515 à Arduino

Vous trouverez ci-dessous le guide de câblage pour connecter le module MCP2515 à un arduino uno:

Broche MCP2515 Épingle arduino
VCC 5V
GND GND
CS PIN 10
DONC Broche 12
SI PIN 11
SCK PIN 13
Int PIN 2

Note: Pour d'autres cartes Arduino, assurez-vous que les broches SPI correspondent à la broche de votre carte spécifique.

Étape 3: Installez la bibliothèque requise

Le MCP_CAN La bibliothèque simplifie l'interaction avec le module MCP2515.

Étapes pour installer la bibliothèque MCP_CAN:

  1. Ouvrez l'ide Arduino.
  2. Aller à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques.
  3. Recherchez "MCP_CAN" dans le gestionnaire de bibliothèque.
  4. Faire un clic Installer.

Étape 4: Téléchargez le code

Code de l'émetteur (Envoi de données sur le 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
}

Code du récepteur (données de lecture du 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();
  }
}

Étape 5: tester la configuration

  1. Connectez le module MCP2515 à votre Arduino comme décrit à l'étape 2.
  2. Téléchargez le code de l'émetteur sur un arduino et le code du récepteur sur un autre arduino.
  3. Connectez les broches Can_H et Can_L des deux modules MCP2515 pour établir le bus CAN.
  4. Ouvrez le moniteur en série sur les deux arduinos et définissez le taux de bauds sur 115200.
  5. Sur le récepteur Arduino, vous devriez voir les messages envoyés par l'émetteur Arduino.

Dépannage

  • Aucune donnée reçue: Vérifiez les connexions Can_H et Can_L entre les modules.
  • L'initialisation a échoué: Assurez-vous que les connexions SPI et la broche CS correspondent à votre configuration.
  • Communication erratique: Vérifiez que les deux modules utilisent le même taux de bauds (500 kbps dans cet exemple).

Applications du module de bus MCP2515

  1. Diagnostics de véhicules (OBD-II)
  2. Systèmes d'automatisation industrielle
  3. Communication robotique
  4. Appareils IoT avec les réseaux de bus CAN

Conclusion

Vous avez réussi à configurer le module de bus MCP2515 CAN avec Arduino pour envoyer et recevoir des données. Ce module est incroyablement polyvalent pour les applications nécessitant une communication fiable sur un bus CAN. Expérimentez avec différents identifiants de message et charges utiles de données pour explorer son plein potentiel!

Laissez un commentaire

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.