COMEÇANDO COM O CAN INTERFACE COM O ARDUINO

COMEÇANDO COM O CAN INTERFACE COM O ARDUINO

Este artigo tem como objetivo fazer com que os leitores explorem como fazer a interface do CAN Bus com o Arduino, que é usado na comunicação de sensores, atuadores e controladores em um carro.

Este projeto ajuda a compreender os insights da interface do protocolo CAN com o Arduino. Controller Area Network ou protocolo CAN é uma metodologia de comunicação entre diversos dispositivos eletrônicos como sistemas de gerenciamento de motor, controle de marcha, suspensão ativa, ABS, controle de iluminação, ar condicionado, airbags, travamento central etc. Para mais aprendizados, consulte este artigo.

Aqui você terá uma ideia sobre a programação do Arduino para fazer interface com o Controlador CAN (MCP2515) para atuar como um transceptor.

DESCRIÇÃO:

Pré-requisitos e equipamentos:

Você precisará do seguinte:

  1. Duas placas Arduino ou clone do Arduino (aqui está um guia se você precisar)

  2. Um módulo Bluetooth 5v TTL-UART.

  3. Arduino IDE para a programação.

  4. Dois MCP2515 PODEm Tranciever.

Características MCP2515 PODE Transiever:

  1. Implementa CAN V2.0B em até 1 Mb/s

  2. Interface SPI de até 10 MHz

  3. Dados padrão (11 bits) e estendidos (29 bits) e quadros remotos

  4. Dois buffers de recebimento com armazenamento de mensagens priorizado

  5. Dois indicadores LED

Demonstração:

Protótipo de circuitos transmissores e receptores baseados em Arduino para comunicação através de interface CAN

Fig. 1: Protótipo de circuitos transmissores e receptores baseados em Arduino para comunicação pela interface CAN

1. Baixe o arquivo de código da biblioteca CAN-BUS para Arduino 1.0 e descompacte-o no diretório de bibliotecas da pasta Arduino IDE. Para a configuração do meu computador, está neste diretório

Bibliotecas XXXarduino-1.0.1

Depois de copiar os arquivos, o diretório

XXXarduino-1.0.1bibliotecasDHT

2. Abra o Arduino-1.0 e navegue até Exemplos onde você encontrará exemplos: recebe_blink, recebe_check, recebe_interrupção, Enviar, Send_blink. Aqui usaremos send e receiver_check para verificar nosso barramento CAN.

Captura de tela da navegação para o código de amostra do receptor CAN no Arduino IDE

Fig. 2: Captura de tela da navegação para o código de exemplo do receptor CAN no Arduino IDE

3. Carregar Envie exemplos para uma placa Arduino. Escolha a placa navegando até: Ferramentas -> Porta serial -> COMX.

Nota: Lembre-se de qual placa você selecionou como nó de “envio” e qual placa você selecionou como nó de “recebimento”.

4. Abra o “Serial Monitor” selecionando a porta Com que você selecionou para o receptor, você receberá a mensagem predefinida “0 1 2 3 4 5 6 7” que é enviada do nó “send”. Isso pode ser visto na imagem a seguir.

Captura de tela da porta serial do Arduino recebendo mensagens predefinidas pela interface CAN

Fig. 3: Captura de tela da porta serial do Arduino recebendo mensagens predefinidas pela interface CAN

Funções na biblioteca CAN:

1. Defina a taxa de transmissão

Para inicializar a taxa de transmissão do sistema CAN Bus, use as seguintes funções.

As taxas de transmissão disponíveis são:

CAN_5KBPS, CAN_10KBPS, CAN_20KBPS, CAN_40KBPS, CAN_50KBPS, CAN_80KBPS, CAN_100KBPS, CAN_125KBPS, CAN_200KBPS, CAN_250KBPS, CAN_500KBPS e CAN_1000KBPS

2. Verifique Receber

O MCP2515 possui dois modos de verificação de recebimento, um é Polling, onde o código verifica o quadro recebido e o outro modo é o modo de interrupção, onde o pino de interrupção separado é usado para notificar o quadro recebido.

A seguir está o método Polling para obter o quadro recebido.

INT8U MCP_CAN::checkReceive(void);

A função retornará 1 se um quadro for recebido e 0 se nada for recebido.

3. Obtenha o CAN ID

Se você quiser saber o CAN ID do nó remetente quando uma mensagem for recebida, você pode usar a seguinte função.

INT32U MCP_CAN::getCanId(void)

4. Enviar dados

A função abaixo é enviar dados para o barramento:

CAN.sendMsgBuf (ID INT8U, ramal INT8U, len INT8U, data_buf);

Onde,

“eu ia” fornece CAN ID dos nós emissores.

“ext” '0' significa quadro padrão. '1' significa quadro estendido.

“len” fornece o comprimento deste quadro.

“dados_buf” é o conteúdo principal desta mensagem.

Por exemplo, no exemplo 'enviar', temos:

caractere não assinado stmp(8) = {0, 1, 2, 3, 4, 5, 6, 7};

CAN.sendMsgBuf(0x00, 0, 8, stmp); //envia a mensagem 'stmp' para o barramento e informa aos outros dispositivos que este é um quadro padrão de 0x00.

5. Receba dados

A seguinte função é usada para receber dados do barramento:

CAN.readMsgBuf (unsigned char len, unsigned char buf);

“len” fornece o comprimento dos dados.

“bom” é o conteúdo principal desta mensagem.

Protótipo de circuito transmissor CAN baseado em Arduino projetado em uma placa de ensaio

Fig. 4: Protótipo de circuito transmissor CAN baseado em Arduino projetado em uma placa de ensaio

Protótipo de circuito receptor CAN baseado em Arduino projetado em uma placa de ensaio

Fig. 5: Protótipo de circuito receptor CAN baseado em Arduino projetado em uma placa de ensaio

Diagramas de circuito

circuito_30

Vídeo do projeto

Conteúdo Relacionado

O Papel Transformador da IA nas Redes de Telecomunicações do Futuro
Em 2025, a inteligência artificial (IA) desempenhará um papel fundamental...
TypeScript vs. Dart: Quam melhor para Desenvolvimento de Aplicativos Web e Móveis?
A escolha entre TypeScript e Dart é uma decisão importante...
Como a Inteligência Artificial está Revolucionando a Pesquisa Empresarial
A inteligência artificial (IA) está revolucionando o campo da pesquisa...
Agentes Autônomos de IA: A Próxima Fronteira da Tecnologia
Em 2025, a promessa de agentes autônomos de IA baseados...
Dylan vs. Common Lisp: Explorando a Programação Dinâmica e Funcional
A escolha da linguagem de programação certa pode fazer toda...
Gerentes de Produto vs. Gerentes de Projeto: Entendendo as diferenças
Gerentes de produto e gerentes de projeto são funções essenciais...
Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.