fbpixel
Etiquetas:

É possível trabalhar com o protocolo CAN utilizado nos automóveis no Raspberry Pi utilizando um HAT CAN. Isto permite-lhe ligar e descodificar mensagens do computador de bordo e obter informações como o consumo de combustível, a velocidade oua rotação do motor.

Instalação de bibliotecas

Para usar o chapéu CAN com o Raspberry Pi, é necessário apenas um pacote python can-utils

sudo apt-get install can-utils

Este pacote gere o protocolo de comunicação CAN normalmente utilizado na indústria automóvel.

  • ler e descodificar mensagens CAN
  • guardar mensagens num ficheiro CANlog
  • reproduzir o ficheiro CANlog num bus CAN real ouvirtual para simular um dispositivo

N.B.: pode também instalar o pandas e o matplotlib para processar e rastrear os dados recebidos.

Configuração do bus CAN

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

Para um barramento de latas virtual, é possível introduzir os seguintes comandos

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

Para verificar se o barramento de latas está no lugar, introduza o comando

ifconfig can

ou

ip addr | grep can

Envio e receção de mensagens CAN

Introduzir o comando de transmissão num terminal

cansend can0 001#1122334455667788

Em seguida, noutro terminal, introduza o comando de receção

candump -tz can0

o sinalizador -tz é opcional e é utilizado para mostrar a 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

Gravação e reprodução de um ficheiro CANlog

Para guardar um ficheiro de registo das mensagens CAN, introduzir o comando:

candump -l can0

este comando cria um ficheiro candump–.log

O ficheiro pode ser reproduzido no mesmo barramento de latas ou num barramento 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

Descodificação das mensagens do bus CAN

Para descodificar as mensagens num bus CAN, é necessário ter a definição das mensagens no bus CAN. Esta definição está descrita num ficheiro .dbc, que é a base de dados do bus CAN. Este documento contém o identificador da mensagem e o nome dos sinais que ela contém.

Aplicações

Depois de dominar o protocolo, pode utilizar a placa CAN hat com o Raspberry Pi para desenvolver dispositivos incorporados para a indústria automóvel.

Fontes