Za pomocą MCP2515 z Raspberry Pi

Using the MCP2515 with the Raspberry Pi

MCP2515 to popularny moduł kontrolera Can (Controller Area Network), który umożliwia komunikację urządzeń Raspberry Pi z systemami obsługującymi Can. To sprawia, że ​​idealnie nadaje się do projektów motoryzacyjnych, automatyzacji przemysłowej i aplikacji IoT. Ten przewodnik wyjaśnia, jak skonfigurować i korzystać z MCP2515 z Raspberry Pi.


Czego będziesz potrzebować

  1. Raspberry Pi (Każdy model z obsługą GPIO, np. PI 3, PI 4)
  2. MCP2515 może moduł
  3. Druty chleba i skoczków
  4. Komputer z dostępem do SSH do Raspberry Pi lub podłączonej klawiatury i monitorowania
  5. Python zainstalowany na Raspberry Pi
  6. Czy moduł transceiverów (jeśli nie jest dołączony do MCP2515)

Krok 1: Okablowanie MCP2515 do Raspberry Pi

MCP2515 komunikuje się z Raspberry Pi za pomocą protokołu SPI.

Połączenia (tryb SPI)

Pin MCP2515 Pin Raspberry Pi
VCC 3,3 V (pin 1)
GND Uziemienie (pin 6)
Cs GPIO8 (pin 24, SPI0_CE0)
WIĘC GPIO9 (pin 21, SPI0_MISO)
SI GPIO10 (pin 19, SPI0_MOSI)
SCK GPIO11 (pin 23, SPI0_SCLK)
Int GPIO25 (PIN 22)

Krok 2: Włącz interfejs SPI na Raspberry Pi

  1. Otwórz narzędzie konfiguracyjne Raspberry Pi:
    sudo raspi-config
    
  2. Przejść do Opcje interfejsu> SPI i włącz to.
  3. Uruchom ponownie Raspberry Pi:
    sudo reboot
    

Krok 3: Zainstaluj wymagane biblioteki i narzędzia

  1. Zaktualizuj swoje Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. Zainstaluj can-utils pakiet komunikacji puszki:
    sudo apt install -y can-utils
    

Krok 4: Skonfiguruj interfejs puszki

  1. Otwórz /boot/config.txt file:

    sudo nano /boot/config.txt
    
  2. Dodaj następujące wiersze, aby włączyć nakładkę MCP2515:

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

    Zapisz i wyjdź.

  3. Uruchom ponownie Raspberry Pi:

    sudo reboot
    
  4. Wywołaj interfejs puszki:

    sudo ip link set can0 up type can bitrate 500000
    
  5. Sprawdź interfejs puszki:

    ifconfig can0
    

Krok 5: Testowanie MCP2515

  1. Wyślij wiadomość Can: Użyj cansend Polecenie, aby wysłać wiadomość testową:

    cansend can0 123#DEADBEEF
    
  2. Otrzymaj wiadomość puszki: Użyj candump polecenie monitorowania przychodzących wiadomości:

    candump can0
    

Krok 6: Używanie Pythona do komunikowania się z MCP2515

Zainstaluj python-can Biblioteka do wysyłania i odbierania wiadomości CAN za pośrednictwem Python.

Instalacja

pip install python-can

Przykład skryptu Pythona

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)

Rozwiązywanie problemów

  1. Może nie znaleźć interfejsu:

    • Sprawdź, czy interfejs SPI jest włączony.
    • Sprawdź okablowanie między Raspberry Pi a MCP2515.
    • Upewnij się /boot/config.txt Plik jest poprawnie skonfigurowany.
  2. Nie wiadomości może:

    • Sprawdź, czy magistrala CAN jest prawidłowo zakończona rezystorami 120 OHM.
    • Upewnij się, że dopasowanie transmisji transmisji we wszystkich urządzeniach w magistrali CAN.
  3. Błędy Pythona:

    • Upewnij się python-can Biblioteka jest zainstalowana.
    • Sprawdź skrypt Python dla literówek lub błędów konfiguracji.

Zastosowania MCP2515

  1. Diagnostyka i monitorowanie samochodowe
  2. Systemy automatyzacji przemysłowej
  3. Sieci komunikacyjne robotyki
  4. Projekty IoT wymagające wiarygodnych protokołów komunikacyjnych

Wniosek

Moduł kontrolera puszki MCP2515 dodaje solidne możliwości komunikacyjne do Twojego Raspberry Pi, dzięki czemu jest idealny do aplikacji motoryzacyjnych, przemysłowych i IoT. Postępując zgodnie z tym przewodnikiem, możesz skonfigurować i przetestować MCP2515 i rozpocząć budowanie potężnych projektów, które wykorzystują protokół puszki.

Zostaw komentarz

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.