fbpixel
Etiquetas:
0
(0)

É 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

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?