Usando o MCP2515 com o Raspberry Pi

Using the MCP2515 with the Raspberry Pi

O MCP2515 é um módulo de controlador Popular CAN (Rede de Área do Controlador) que permite que os dispositivos Raspberry Pi se comuniquem com sistemas habilitados para CAN. Isso o torna ideal para projetos automotivos, automação industrial e aplicações de IoT. Este guia explica como configurar e usar o MCP2515 com um Raspberry Pi.


O que você precisará

  1. Raspberry Pi (Qualquer modelo com suporte GPIO, por exemplo, PI 3, PI 4)
  2. MCP2515 Módulo Can
  3. Fios de pão e jumper
  4. Um computador com acesso SSH ao Raspberry Pi ou um teclado conectado e monitor
  5. Python instalado no Raspberry Pi
  6. Pode transcepter o módulo (se não for incluído no MCP2515)

Etapa 1: Fiação do MCP2515 para o Raspberry Pi

O MCP2515 se comunica com o Raspberry Pi usando o protocolo SPI.

Conexões (modo SPI)

MCP2515 PIN Pino de framboesa pi
VCC 3.3V (pino 1)
Gnd Terra (pino 6)
Cs Gpio8 (pino 24, spi0_ce0)
ENTÃO Gpio9 (pino 21, spi0_miso)
SI Gpio10 (pino 19, spi0_mosi)
Sck Gpio11 (pino 23, spi0_sclk)
Int Gpio25 (pino 22)

Etapa 2: Ative a interface SPI no Raspberry Pi

  1. Abra a ferramenta de configuração do Raspberry Pi:
    sudo raspi-config
    
  2. Navegar para Opções de interface> SPI e ativá -lo.
  3. Reinicie o Raspberry Pi:
    sudo reboot
    

Etapa 3: Instale as bibliotecas e ferramentas necessárias

  1. Atualize seu Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. Instale o can-utils Pacote para a comunicação CAN:
    sudo apt install -y can-utils
    

Etapa 4: configure a interface de lata

  1. Abra o /boot/config.txt file:

    sudo nano /boot/config.txt
    
  2. Adicione as seguintes linhas para ativar a sobreposição do MCP2515:

    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
    dtoverlay=spi-bcm2835
    

    Salvar e sair.

  3. Reinicie o Raspberry Pi:

    sudo reboot
    
  4. Traga a interface da lata:

    sudo ip link set can0 up type can bitrate 500000
    
  5. Verifique a interface de lata:

    ifconfig can0
    

Etapa 5: testando o MCP2515

  1. Envie uma mensagem de lata: Use o cansend comando para enviar uma mensagem de teste:

    cansend can0 123#DEADBEEF
    
  2. Receba uma mensagem de lata: Use o candump comando para monitorar mensagens de entrada:

    candump can0
    

Etapa 6: Usando o Python para se comunicar com o MCP2515

Instale o python-can Biblioteca para enviar e receber mensagens de lata via Python.

Instalação

pip install python-can

Exemplo de script python

import can

# Create a CAN bus instance
bus = can.interface.Bus(channel='can0', bustype='socketcan')

# Send a CAN message
msg = can.Message(arbitration_id=0x123, data=[0xDE, 0xAD, 0xBE, 0xEF], is_extended_id=False)
bus.send(msg)
print("Message sent: ", msg)

# Receive a CAN message
print("Waiting for a message...")
message = bus.recv()
print("Received message: ", message)

Solução de problemas

  1. Pode interface não encontrada:

    • Verifique se a interface SPI está ativada.
    • Verifique a fiação entre o Raspberry Pi e o MCP2515.
    • Garanta o /boot/config.txt O arquivo está configurado corretamente.
  2. Não, as mensagens podem:

    • Verifique se o barramento CAN é terminado corretamente com resistores de 120 ohm.
    • Verifique se a taxa de bits corresponde a todos os dispositivos no barramento CAN.
  3. Erros de Python:

    • Garanta o python-can A biblioteca está instalada.
    • Verifique o script Python quanto a erros de digitação ou erros de configuração.

Aplicações do MCP2515

  1. Diagnóstico e monitoramento automotivos
  2. Sistemas de automação industrial
  3. Redes de comunicação de robótica
  4. Projetos de IoT que exigem protocolos de comunicação confiáveis

Conclusão

O módulo MCP2515 CAN Controller adiciona recursos de comunicação robustos ao seu Raspberry Pi, tornando -o ideal para aplicações automotivas, industriais e de IoT. Seguindo este guia, você pode configurar e testar o MCP2515 e começar a criar projetos poderosos que aproveitem o protocolo CAN.

Deixe um comentário

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.