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
- Module de bus MCP2515
- Board Arduino (par exemple, Uno, Mega, Nano)
- Appareil compatible CAN-BUS ou un autre module MCP2515
- Fils de cavalier
- Planche à pain (en option)
- 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:
- Ouvrez l'ide Arduino.
- Aller à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques.
- Recherchez "MCP_CAN" dans le gestionnaire de bibliothèque.
- 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
- Connectez le module MCP2515 à votre Arduino comme décrit à l'étape 2.
- Téléchargez le code de l'émetteur sur un arduino et le code du récepteur sur un autre arduino.
- Connectez les broches Can_H et Can_L des deux modules MCP2515 pour établir le bus CAN.
- Ouvrez le moniteur en série sur les deux arduinos et définissez le taux de bauds sur
115200
. - 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
- Diagnostics de véhicules (OBD-II)
- Systèmes d'automatisation industrielle
- Communication robotique
- 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!