Arduino, Tutoriels

Comment utiliser Module BUS CAN MCP2515 avec Arduino

Guide Complet D'Utiliser Module Bus Can Mcp2515 Avec Arduino.

Introduction

Module BUS CAN MCP2515 est un composant électronique permettant de connecter des périphériques Arduino à un réseau CAN (Controller Area Network) pour la communication série de données. Le protocole CAN est un protocole de communication utilisé dans les industries et l’automobile pour permettre la transmission de données entre différents composants. Ce protocole est particulièrement adapté pour les systèmes de véhicules modernes, qui peuvent nécessiter la transmission simultanée de milliers d’informations à haute vitesse.

Le module MCP2515 permet une communication CAN fiable et rapide, avec une vitesse de communication allant de 50 Kbps à 1 Mbps, et une distance de communication allant de 40 mètres à 1000 mètres selon la vitesse de communication. Il est donc idéal pour les applications de communication en réseau où la fiabilité et la vitesse sont des facteurs clés.

Comprendre le protocole de CAN

Le Contrôleur d’Accès au Réseau (CAN) est un protocole de communication série largement utilisé dans les systèmes embarqués pour la communication entre différents composants tels que les capteurs, les actionneurs, les microcontrôleurs, les calculateurs moteur, etc. Il est particulièrement adapté aux environnements industriels et automobiles en raison de sa capacité à transmettre des données sur de longues distances tout en étant très résistant aux interférences électromagnétiques. Le CAN est un protocole asynchrone, ce qui signifie qu’il n’a pas besoin d’une horloge commune pour la synchronisation des données. Il est également unidirectionnel, ce qui signifie que les données sont transmises dans une seule direction à la fois.

Le CAN utilise un bus de communication pour transmettre des messages entre les nœuds du réseau. Chaque nœud du réseau est équipé d’un contrôleur CAN qui gère la communication avec le bus. Les messages transmis sur le bus sont identifiés par une adresse unique, appelée Identifiant du Message (ID). Cette ID est utilisée pour déterminer la priorité de chaque message et pour garantir que les messages les plus importants sont transmis en premier. Le CAN utilise également une méthode de détection d’erreur pour garantir la fiabilité des données transmises.

Lorsque le bus CAN est en mode veille, les deux lignes transportent 2,5V. Lorsque les bits de données sont transmis, la ligne haute du CAN passe à 3,75V et la ligne basse du CAN tombe à 1,25V, créant ainsi une différence de 2,5V entre les lignes.

L’alimentation CAN peut être fournie par le biais du bus CAN. Ou une alimentation pour les modules du bus CAN peut être arrangée séparément. Le câblage de l’alimentation peut être totalement séparé des lignes du bus CAN, ce qui résulte en l’utilisation de deux câbles à 2 fils pour le réseau, ou il peut être intégré dans le même câble que les lignes du bus CAN, ce qui résulte en un seul câble à 4 fils.

Description du module MCP2515

Le MCP2515 est un contrôleur CAN qui fournit une interface SPI (Serial Périphérique Interface) à un microcontrôleur. Il prend en charge les trames CAN standard et étendues et dispose d’une mémoire tampon intégrée pour stocker les messages reçus.

Le module MCP2515 dispose également d’une broche INT (interruption) qui peut être utilisée pour informer le microcontrôleur lorsqu’un nouveau message est reçu. Cela permet au microcontrôleur de lire les messages CAN dès qu’ils sont disponibles, plutôt que de devoir constamment vérifier s’il y a de nouveaux messages disponibles.

Mcp2515 Est Un Contrôleur Can Qui Fournit Une Interface Spi (Serial Périphérique Interface) À Un Microcontrôleur. Il Prend En Charge Les Trames Can Standard Et Étendues Et Dispose D'Une Mémoire Tampon Intégrée Pour Stocker Les Messages Reçus.
Module BUS CAN MCP2515

Les applications de Module MCP2515

Le module BUS CAN MCP2515 est largement utilisé dans de nombreuses applications industrielles et automobiles en raison de sa grande efficacité et de sa fiabilité. Voici quelques exemples d’applications courantes de ce module :

  1. Systèmes embarqués : Les systèmes embarqués dans les voitures, les avions, les trains, les bateaux, etc. utilisent souvent des modules BUS CAN pour communiquer avec différents composants électroniques. Le MCP2515 est utilisé pour gérer la communication entre ces composants.
  2. Automobile : Dans l’industrie automobile, le BUS CAN est utilisé pour connecter différents sous-systèmes tels que le système de freinage, le système de climatisation, le système de sécurité, le système de navigation, etc. Le MCP2515 est souvent utilisé comme contrôleur pour gérer la communication entre ces différents sous-systèmes.
  3. Équipements industriels : Le BUS CAN est également largement utilisé dans les équipements industriels pour connecter différents composants tels que les capteurs, les actionneurs, les contrôleurs, etc. Le MCP2515 est utilisé comme interface de communication pour ces équipements.
  4. Systèmes de surveillance : Le module BUS CAN MCP2515 est également utilisé dans les systèmes de surveillance pour surveiller les données telles que la température, la pression, la vitesse, etc. Les données sont collectées à partir de différents capteurs et envoyées à un système central de surveillance via le BUS CAN.
  5. Robotique : Les robots industriels utilisent souvent le BUS CAN pour connecter différents moteurs, actionneurs, capteurs, etc. Le MCP2515 est utilisé pour gérer la communication entre ces différents composants.
  6. Contrôle de processus : Le BUS CAN est utilisé dans les systèmes de contrôle de processus pour connecter différents équipements de contrôle tels que les régulateurs de température, les régulateurs de pression, les vannes de contrôle, etc. Le MCP2515 est utilisé comme interface de communication pour ces équipements.

Brochage du module MCP2515

Module Bus Can Mcp2515 Est Équipé D'Une Prise Femelle De 8 Broches Qui Permet De Le Brancher Directement Sur Une Breadboard Ou Sur Un Microcontrôleur.
les broches de Module BUS CAN MCP2515

Le module MCP2515 est équipé d’une prise femelle de 8 broches qui permet de le brancher directement sur une breadboard ou sur un microcontrôleur. Voici le brochage de ce module :

  • Broche 1 (VDD) : Alimentation +5V
  • Broche 2 (VSS) : Masse (GND)
  • Broche 3 (RESET) : Broche de réinitialisation
  • Broche 4 (CS) : Chip Select (sélection de l’esclave)
  • Broche 5 (SI) : Signal d’entrée pour les données du SPI
  • Broche 6 (SO) : Signal de sortie pour les données du SPI
  • Broche 7 (SCK) : Horloge SPI
  • Broche 8 (INT) : Signal d’interruption

Il est important de noter que la plupart des broches de ce module sont compatibles avec la norme SPI. La broche CS (Chip Select) est utilisée pour sélectionner le module MCP2515 lors de la communication SPI, et la broche RESET est utilisée pour réinitialiser le module. La broche INT (Interruption) peut être configurée pour générer une interruption lorsqu’un message est reçu.

Il est recommandé de connecter la broche VDD à l’alimentation +5V et la broche VSS à la masse (GND) du système. La broche CS doit être reliée à une broche de sortie du microcontrôleur. Les broches SI, SO et SCK sont les broches de communication SPI standard qui sont utilisées pour communiquer avec le module MCP2515. Enfin, la broche INT peut être connectée à une broche d’entrée du microcontrôleur pour détecter les interruptions.

Composants nécessaires pour connecter module MCP2515 à l’Arduino

Connexion du module MCP2515 à l’Arduino

Pour connecter le module MCP2515 à l’Arduino, il est nécessaire de relier les broches du module aux broches correspondantes de l’Arduino.

Tout d’abord, il est important de noter que le module MCP2515 fonctionne en utilisant le protocole SPI (Serial Peripheral Interface), qui est une interface série synchrone utilisée pour la communication de données entre des dispositifs électroniques. L’Arduino dispose de broches dédiées pour la communication SPI, qui sont les broches 10 (SS), 11 (MOSI), 12 (MISO) et 13 (SCK).

La broche SS (Slave Select) est utilisée pour sélectionner le module MCP2515, ce qui permet à l’Arduino de communiquer avec le module. La broche MOSI (Master Output Slave Input) est utilisée pour envoyer des données de l’Arduino vers le module MCP2515, tandis que la broche MISO (Master Input Slave Output) est utilisée pour recevoir des données du module vers l’Arduino. La broche SCK (Serial Clock) est utilisée pour synchroniser la transmission des données entre l’Arduino et le module MCP2515.

Pour connecter le module MCP2515 à l’Arduino, les broches correspondantes doivent être reliées comme suit :

  • La broche VCC du module doit être connectée à la broche 5V de l’Arduino.
  • La broche GND du module doit être connectée à la broche GND de l’Arduino.
  • La broche CS du module doit être connectée à la broche 10 (SS) de l’Arduino.
  • La broche SO du module doit être connectée à la broche 12 (MISO) de l’Arduino.
  • La broche SI du module doit être connectée à la broche 11 (MOSI) de l’Arduino.
  • La broche SCK du module doit être connectée à la broche 13 (SCK) de l’Arduino.

Il est important de noter que les broches CS, SO, SI et SCK peuvent également être connectées à d’autres broches de l’Arduino, à condition de modifier le code en conséquence.

Câblage De Module Bus Can Mcp2515 Avec Arduino
Câblage de Module BUS CAN MCP2515 avec Arduino

Programmation du module MCP2515 avec l’Arduino

La programmation du module MCP2515 avec l’Arduino implique l’utilisation d’une bibliothèque CAN pour Arduino. Il existe plusieurs bibliothèques CAN disponibles pour Arduino, mais la plus populaire est la bibliothèque “MCP_CAN_lib.h”. Cette bibliothèque prend en charge le module MCP2515 et facilite l’envoi et la réception de messages CAN.

Avant de commencer à utiliser la bibliothèque, vous devez inclure la bibliothèque “MCP_CAN_lib.h” dans votre code. Pour cela, vous devez d’abord télécharger la bibliothèque et l’installer dans l’IDE Arduino. Pour cela, ouvrez l’IDE Arduino, sélectionnez “Sketch” dans la barre de menu, puis sélectionnez “Include Library” et “Manage Libraries”. Dans la fenêtre “Library Manager”, recherchez “MCP_CAN_lib” et installez la bibliothèque.

Une fois que la bibliothèque est installée, vous pouvez commencer à utiliser les fonctions de la bibliothèque pour envoyer et recevoir des messages CAN.

Voici quelques exemples de code pour envoyer et recevoir des messages CAN:

Exemple 1: Envoi d’un message CAN

#include <MCP_CAN_lib.h>

MCP_CAN CAN(10); // initialisation du module CAN sur le pin 10

void setup()
{
  CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ); // initialisation de la communication CAN
}

void loop()
{
  unsigned char msg[8] = {1, 2, 3, 4, 5, 6, 7, 8}; // message à envoyer
  CAN.sendMsgBuf(0x100, 0, 8, msg); // envoi du message à l'adresse 0x100
  delay(1000); // attente de 1 seconde
}

Dans cet exemple, nous avons initialisé le module CAN sur le pin 10, puis initialisé la communication CAN avec une vitesse de 500 kbps et une fréquence de 8 MHz. Nous avons ensuite défini un message à envoyer, puis envoyé le message à l’adresse 0x100. Le code attend ensuite 1 seconde avant d’envoyer le message suivant.

Exemple 2: Réception d’un message CAN

#include <MCP_CAN_lib.h>

MCP_CAN CAN(10); // initialisation du module CAN sur le pin 10

void setup()
{
  Serial.begin(9600); // initialisation de la communication série
  CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ); // initialisation de la communication CAN
  CAN.setMode(MCP_NORMAL); // passage en mode NORMAL
}

void loop()
{
  unsigned char len = 0;
  unsigned char buf[8];
  if(CAN.checkReceive()) // vérification de la réception d'un message
  {
    CAN.readMsgBuf(&len, buf); // lecture du message
    Serial.print("ID: ");
    Serial.print(CAN.getCanId(), HEX);
    Serial.print("  DLC: ");
    Serial.print(len);
    Serial.print("  Data: ");
    for(int i = 0; i<len; i++)
    {
      Serial.print(buf[i], HEX);
      Serial.print(" ");
    }
    Serial.println();
  }
}

Dans cet exemple, nous avons initialisé le module CAN sur le pin 10, puis initialisé la communication.

Vidéo descriptif

Lien outilles

  1. Téléchargement de Arduino logiciel ” Arduino IDE ” : https://www.arduino.cc/en/software
  2. Pour plus d’articles : https://www.moussasoft.com/tutoriels-electroniques
  3. TwitterMoussa Lhoussaine (@Moussasoft_com) / Twitter

Arduino – Home