Site icon AranaCorp

Utilisation du CAN HAT avec Raspberry Pi

Il est possible de travailler avec le protocole CAN utilisé dans l’automobile sur Raspberry Pi en utilisant un CAN HAT. Cela permet de se brancher et de décoder les messages provenant de l’ordinateur de bord et permet de récupérer des informations comme la consommation, la vitesse ou le régime moteur.

Installation des librairies

Pour utiliser le CAN Hat avec Raspberry Pi, un seul paquet python est nécessaire can-utils

sudo apt-get install can-utils

Ce paquet permet de gérer le protocole de communication CAN couramment utilisé dans l’automobile.

N.B.: vous pouvez aussi installer pandas et matplotlib pour traiter et tracer les données reçues

Configuration du bus CAN

sudo ip link set can0 up type can bitrate 50000
sudo ip link set can0 down

Pour un bus can virtuel, vous pouvez entrer la commandes suivante

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

Pour vérifier que le bus can est bien en place, entrez la commande

ifconfig can

ou

ip addr | grep can

Envoyer et recevoir des messages CAN

Entrer la commande d’émission dans un terminal

cansend can0 001#1122334455667788

Puis dans une autre terminal, entrez la commande de réception

candump -tz can0

le flag -tz est optionnel et permet d’avoir le temps affiché

(1668600101.854788) can0 0B2#0000000000000000
(1668600101.855011) can0 116#04045CAE092596FF
(1668600101.855285) can0 11E#6B04000000000000
(1668600101.855949) can0 107#0000FE46411404E7
(1668600101.856174) can0 0A7#CDD35F7FFDF5173F
(1668600101.856408) can0 0A8#C1D35FC98C643C0F
(1668600101.856652) can0 32C#0003000098240810
(1668600101.856904) can0 557#0000000000000000
(1668600101.857743) can0 086#1703C82100000000
(1668600101.858067) can0 23D#0000F8FFFFFF3F00
(1668600101.859665) can0 3D0#000000A380008000
(1668600101.859913) can0 33C#0000012080000000
(1668600101.860199) can0 16A954C2#006B000000000000
(1668600101.863567) can0 464#0000000000000000
(1668600101.863814) can0 3DE#FE00000000000000
(1668600101.864582) can0 0B2#0000000000000000
(1668600101.864826) can0 0FD#E5E53F8000000000
(1668600101.865070) can0 101#B4057E0582030000
(1668600101.865308) can0 106#B985B3040000AF20
(1668600101.865631) can0 120#860200020008FF01
(1668600101.865866) can0 121#4602004039627EFE
(1668600101.866109) can0 15A#760E000001E60000
(1668600101.866339) can0 0A8#71D45FC98C643E0F
(1668600101.866574) can0 0A7#F7D45F7FFDF5173F

Enregistrer et rejouer un fichier CANlog

Pour enregistrer un fichier log des messages CAN, entrez la commande:

candump -l can0

cette commande crée un fichier candump-<date>-<time>.log

Il est possible de rejouer le fichier sur le même bus can ou sur un bus différent

canplayer -I candump-2022-11-16_120141.log #play can on same canbus as in the file
canplayer vcan0=can1 -v -I candump-2022-11-16_120141.log #play saved canbus (can1) on vcan0
canplayer -l 2 -I candump-2022-11-16_120141.log #play can data twice
canplayer -l i -I candump-2022-11-16_120141.log #play can data inifinitely

Décoder les messages d’un bus CAN

Pour décoder les messages d’un bus CAN, il est nécessaire d’avoir la définition des messages sur le bus CAN. Cette définition est décrite dans un fichier .dbc qui est la base de données d’un bus CAN. Ce document contient l’identifiant du message ainsi que le nom des signaux qu’il contient.

Utilisations

Une fois le protocole bien maitrisé, vous pourrez utiliser la carte CAN hat avec Raspberry Pi pour développer des appareils embarqués dans l’automobile.

Sources

Quitter la version mobile