Le bus CAN est le réseau à deux fils (CAN_H et CAN_L) qui relie les calculateurs d’une voiture, d’un camion ou d’une machine ; J1939 est la « langue » utilisée sur ce bus par les camions, bus, tracteurs et engins de chantier. Pour lire ces données, il suffit d’un module CAN branché sur une carte comme Arduino, ESP32 ou STM32, réglé à la bonne vitesse (souvent 250 ou 500 kbit/s), en mode écoute seule.
Régime moteur, température d’eau, vitesse, codes défaut : tout ce qu’affiche le tableau de bord circule sur un bus CAN. Pouvoir lire ces messages est très utile pour un atelier, un banc de test, un projet de suivi de flotte ou simplement pour comprendre comment marche un véhicule moderne. Dans ce guide, on explique simplement le bus CAN, la norme J1939, le câblage et le matériel pour commencer, avec les bons réflexes de sécurité.
Le bus CAN en deux minutes
CAN veut dire Controller Area Network. Au lieu de tirer un fil pour chaque information, tous les calculateurs (moteur, freins, boîte, tableau de bord…) partagent la même paire de fils. Chacun envoie de courts messages, et tous les autres les entendent.
- Deux fils torsadés : CAN_H et CAN_L. Le message est codé par la différence de tension entre les deux, ce qui le rend très résistant aux parasites d’un moteur.
- Un identifiant par message : il dit ce que contient le message, et aussi sa priorité. Plus l’identifiant est petit, plus le message est prioritaire.
- Peu de données à la fois : 8 octets maximum en CAN classique, 64 octets en CAN FD, la version plus récente et plus rapide.
- Une seule vitesse pour tout le réseau : 125, 250, 500 kbit/s ou 1 Mbit/s. Si votre module n’est pas réglé à la même vitesse que le véhicule, vous ne lirez rien.
Il existe deux formats d’identifiant : 11 bits (CAN 2.0A, très courant sur les voitures) et 29 bits (CAN 2.0B, dit « étendu »), utilisé par J1939.
J1939 : la langue des camions, bus et engins
Le bus CAN transporte des messages, mais il ne dit pas ce qu’ils veulent dire. C’est le rôle d’un protocole comme SAE J1939, adopté par la plupart des constructeurs de poids lourds, d’autocars, de machines agricoles et d’engins de chantier. Grâce à lui, un même outil peut lire le régime moteur d’un camion de deux marques différentes.
Comment est construit un identifiant J1939
J1939 utilise des identifiants de 29 bits, découpés en trois parties :
| Partie | Taille | Rôle |
|---|---|---|
| Priorité | 3 bits | 0 = le plus urgent, 7 = le moins urgent |
| PGN (Parameter Group Number) | 18 bits | Le « numéro de page » : quel groupe de données le message contient |
| Adresse source | 8 bits | Qui envoie le message (par exemple 0x00 = moteur) |
Exemple : l’identifiant 0x0CF00400 se lit priorité 3, PGN 0xF004 (61444, appelé EEC1) et adresse source 0x00, le calculateur moteur. Le convertisseur binaire / hexadécimal aide à faire ce découpage à la main.
PGN et SPN : trouver la bonne valeur
À l’intérieur de chaque PGN, chaque grandeur a un numéro appelé SPN (Suspect Parameter Number), avec sa position dans les 8 octets, sa résolution et son décalage. Quelques exemples très utilisés :
| Grandeur | PGN | SPN | Comment la calculer |
|---|---|---|---|
| Régime moteur | 61444 (EEC1) | 190 | octets 4 et 5, × 0,125 tr/min |
| Température liquide de refroidissement | 65262 (ET1) | 110 | octet 1, en °C, moins 40 |
| Vitesse du véhicule (roues) | 65265 (CCVS) | 84 | octets 2 et 3, ÷ 256 en km/h |
Dans J1939, les valeurs sur deux octets sont envoyées octet de poids faible en premier. Par exemple, si les octets 4 et 5 du PGN 61444 valent 0x40 puis 0x1F, la valeur brute est 0x1F40 = 8000, soit 8000 × 0,125 = 1000 tr/min.
Et sur une voiture ?
Les voitures utilisent surtout le diagnostic OBD-II sur CAN (ISO 15765-4), avec des identifiants 11 bits et une vitesse de 500 kbit/s le plus souvent. Ici, on ne se contente pas d’écouter : l’outil envoie une question (par exemple « régime moteur ? ») sur l’identifiant 0x7DF et le calculateur répond, en général sur 0x7E8. Le principe matériel reste le même : un module CAN, la bonne vitesse et le bon branchement.
Où se brancher : prise OBD ou connecteur de diagnostic
- Voiture : la prise OBD-II 16 broches, sous le volant. Le CAN est sur les broches 6 (CAN_H) et 14 (CAN_L) ; la broche 16 donne le + batterie et les broches 4 et 5 la masse.
- Camion, bus, engin : souvent un connecteur de diagnostic Deutsch 9 broches (J1939-13), où CAN_H est sur la broche C et CAN_L sur la broche D. Certains véhicules ont aussi une prise de type OBD.
- Banc de test ou machine : on se branche directement sur le faisceau, souvent via un connecteur DB9 (CAN_L sur la broche 2, CAN_H sur la broche 7, masse sur la broche 3, selon le câblage le plus répandu).
Pour réaliser vos propres câbles ou un boîtier d’interface, Djenni propose des connecteurs de diagnostic OBD, comme le connecteur OBD II 24 V (SET 7471) ou sa version femelle (SET 8140), ainsi que des connecteurs DB9. Pour choisir la section des fils de votre faisceau, le convertisseur AWG / mm² vous fait gagner du temps.
Câblage et terminaison : les règles qui évitent les pannes
- Une résistance de 120 Ω à chaque bout du bus, pas plus. Hors tension, on doit mesurer environ 60 Ω entre CAN_H et CAN_L (deux 120 Ω en parallèle). Si vous lisez 120 Ω, il manque une terminaison ; si vous lisez 40 Ω, il y en a une de trop.
- Une paire torsadée pour CAN_H et CAN_L, sans « étoile » : le bus est une ligne, avec des dérivations les plus courtes possibles.
- Une masse commune entre votre montage et le véhicule ou le banc.
- Pas de terminaison sur votre module quand vous vous branchez sur un véhicule : ses deux résistances sont déjà en place. Sur un banc de test que vous montez vous-même, c’est à vous de les ajouter.
Sur un banc avec connecteurs DB9, l’adaptateur DB9 mâle/femelle avec résistance 120 Ω se place en bout de ligne et règle la question de la terminaison proprement. Les mêmes principes de câblage valent pour d’autres bus industriels : voyez notre guide Modbus RTU sur RS485.
Le matériel pour lire le bus CAN
Un microcontrôleur ne se branche jamais directement sur les fils CAN. Il faut deux éléments : un contrôleur CAN (qui fabrique et décode les messages) et un transceiver (qui convertit les signaux vers les deux fils). Trois solutions simples :
Module MCP2515 : le plus simple pour débuter
Le module BUS CAN MCP2515 gère le CAN 2.0B jusqu’à 1 Mbit/s et se pilote en SPI, avec de nombreuses bibliothèques Arduino. Il est alimenté en 5 V : avec un ESP32, qui fonctionne en 3,3 V, vérifiez les niveaux des broches SPI. Dans le code, réglez la fréquence du quartz selon celle inscrite sur votre module.
MCP2518FD Click : CAN FD et connecteur DB9 intégré
Pour un usage plus sérieux, le module CAN FD MCP2518FD Click associe le contrôleur MCP2518FD (CAN 2.0B et CAN FD, en SPI) au transceiver ATA6563, jusqu’à 5 Mbit/s, avec un connecteur DB9 déjà monté. Il fonctionne en 3,3 V ou 5 V, donc aussi bien avec un ESP32 qu’avec un Arduino.
STM32 : le CAN intégré dans le microcontrôleur
Beaucoup de STM32 ont un contrôleur CAN interne, comme le STM32F303CBT6. On ajoute simplement un transceiver CAN sur la carte. C’est la solution idéale pour concevoir sa propre carte d’interface ou un calculateur de banc. Les cartes STM32 permettent de faire les premiers essais.
Premier essai : lire le bus sans rien casser
- Montez sur table d’abord : deux modules CAN, deux résistances de 120 Ω, et un module envoie des messages que l’autre lit. Vous validez ainsi câblage et code.
- Réglez la vitesse : 250 kbit/s est la valeur la plus courante en J1939 (500 kbit/s sur certains véhicules récents), 500 kbit/s sur la plupart des voitures.
- Passez en mode écoute seule (listen-only) : votre module lit les messages sans jamais émettre ni acquitter. C’est la règle numéro un sur un véhicule.
- Enregistrez tout avec l’heure : identifiant, longueur, 8 octets. Vous décoderez ensuite au calme avec les tableaux PGN/SPN.
- Repérez une valeur connue : faites varier le régime moteur et cherchez quels octets changent en même temps.
Sécurité : n’envoyez jamais de messages sur le bus d’un véhicule qui roule. Un message mal formé peut perturber les freins, la direction ou le moteur. Les essais d’émission se font sur un banc, moteur arrêté, ou sur un réseau de test.
Applications concrètes
- Banc de test de calculateur : simuler les messages des autres calculateurs et vérifier les réponses de la carte testée.
- Suivi de flotte : relever régime, température et consommation de camions ou d’engins, puis envoyer les données par 4G ou LoRa.
- Atelier et formation : comprendre les codes défaut et l’architecture électronique d’un véhicule.
- Machines industrielles : beaucoup d’engins et de groupes électrogènes utilisent J1939 ou CANopen, une autre « langue » du bus CAN.
Vous hésitez entre un automate et une carte maison pour ce type de projet ? Lisez PLC ou Arduino en milieu industriel. Pour une entreprise, une école ou un atelier qui a besoin de plusieurs modules ou de connecteurs en quantité, faites une demande de devis ou découvrez l’Espace Pro.
Les produits cités, prix chez Djenni
Prix affichés sur djenni.ma au 29 octobre 2026 (ils peuvent évoluer, la fiche produit fait foi) :
| Produit | Usage | Prix |
|---|---|---|
| Module BUS CAN MCP2515 | Débuter avec Arduino | 65 Dhs |
| STM32F303CBT6 | Carte d’interface sur mesure | 151 Dhs |
| Connecteur DB9 femelle à souder | Câbles de banc | 159 Dhs |
| Adaptateur DB9 avec résistance 120 Ω | Terminaison du bus | 230 Dhs |
| Connecteur OBD II 24 V (SET 7471) | Câble de diagnostic | 545 Dhs |
| Module CAN FD MCP2518FD Click | CAN FD, DB9 intégré | 1 051 Dhs |
Questions fréquentes
Quelle est la différence entre CAN et J1939 ?
Le CAN est le réseau physique à deux fils et la façon d’envoyer des messages. J1939 est un protocole qui fonctionne sur ce réseau et qui définit ce que veulent dire les messages (régime, température, vitesse…), surtout pour les camions, bus et engins.
Quelle est la vitesse du bus J1939 ?
Le plus souvent 250 kbit/s. Certains véhicules récents utilisent 500 kbit/s. Tous les appareils du bus doivent être réglés à la même vitesse.
Faut-il une résistance de 120 Ω pour lire le CAN d’un véhicule ?
Non. Le véhicule a déjà ses deux résistances de 120 Ω aux extrémités du bus. On ajoute des terminaisons seulement sur un banc ou un réseau que l’on monte soi-même.
Peut-on lire le bus CAN avec un Arduino ou un ESP32 ?
Oui, avec un module CAN comme le MCP2515 ou le MCP2518FD, piloté en SPI. Il faut régler la bonne vitesse et, de préférence, utiliser le mode écoute seule sur un véhicule.
Sur quelles broches de la prise OBD-II se trouve le CAN ?
Sur la broche 6 pour CAN_H et la broche 14 pour CAN_L. La broche 16 fournit le + batterie et les broches 4 et 5 la masse.

