Icono del sitio AranaCorp

Uso de CAN HAT con Raspberry Pi

Es posible trabajar con el protocolo CAN utilizado en los coches en Raspberry Pi utilizando un CAN HAT. Esto permite conectar y descodificar mensajes del ordenador de a bordo y recuperar información como el consumo de combustible, la velocidad o el régimen del motor.

Instalación de bibliotecas

Para utilizar CAN Hat con Raspberry Pi, sólo se necesita un paquete python can-utils

sudo apt-get install can-utils

Este paquete gestiona el protocolo de comunicación CAN utilizado habitualmente en la industria del automóvil.

N.B.: también puedes instalar pandas y matplotlib para procesar y trazar los datos recibidos.

Configuración del bus CAN

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

Para un can bus virtual, puede introducir los siguientes comandos

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

Para comprobar que el bus de latas está en su sitio, introduzca el comando

ifconfig can

o

ip addr | grep can

Envío y recepción de mensajes CAN

Introduzca el comando de transmisión en un terminal

cansend can0 001#1122334455667788

A continuación, en otro terminal, introduzca el comando de recepción

candump -tz can0

el indicador -tz es opcional y se utiliza para mostrar la hora

(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

Grabación y reproducción de un archivo CANlog

Para guardar un archivo de registro de mensajes CAN, introduzca el comando:

candump -l can0

este comando crea un archivo candump–.log

El archivo puede reproducirse en el mismo bus de lata o en un bus diferente.

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

Descodificación de mensajes de bus CAN

Para descodificar los mensajes de un bus CAN, es necesario disponer de la definición de los mensajes del bus CAN. Esta definición se describe en un archivo .dbc, que es la base de datos del bus CAN. Este documento contiene el identificador del mensaje y el nombre de las señales que contiene.

Aplicaciones

Una vez que domines el protocolo, podrás utilizar la tarjeta CAN hat con Raspberry Pi para desarrollar dispositivos embebidos para la industria de la automoción.

Fuentes

Salir de la versión móvil