CanBus mit dem Raspberry Pi

  • Hallo Leute,
    hier ein kleines Tutorial wie ihr euren Raspberry Pi Can Bus fähig macht.


    Benötigtes Material
    - EIn RPI Can Bus Board:
    -CanBus Board
    - Can Bus Board für B+ PI2 und PI3
    -RPI Can Bus Board isoliert mit RTC
    -Can Bus Board Zweifach mit RTC im HAT Format
    -Can Bus Board Zweifach im HAT Format
    - Oder man baut sich das ganze selbst auf einem Steckbrett auf, ein Beispielschaltplan ist hier zu finden.
    (Diese Liste kann natürlich gerne erweitert werden. ;) )
    -Ihr benötigt ein aktuelles Raspbian oder ein anderes OS mit Devicetree.


    Schritt 1
    Jetzt müsst ihr SPI aktivieren und Infos über den MCP2515 eingeben:
    Dazu ruft ihr die Datei config.txt im /boot Verzeichnis auf.


    Code
    sudo nano /boot/config.txt


    Dort fügt ihr am Ende der Datei diesen Code Schnipsel ein:
    Beachtet dabei den Interrupt und auch das verbaute Quarz auf eurer Platine!

    Code
    dtparam=spi=on 
    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25


    Speichert die Datei und führt einen Reboot durch:

    Code
    sudo reboot


    Schritt 2
    Scheinbar wurde etwas an der Software verändert so das man zuerst das Can Bus Board aktivieren muss bevor es als Schnittstelle mit "ifconfig" auftaucht.
    Dafür müsst ihr folgenden Befehl ausführen:


    Code
    sudo /sbin/ip link set can0 up type can bitrate 500000

    aktivieren.


    Die Bitrate könnt ihr am Ende des Befehls anpassen, in unserem Fall handelt es sich 500 kbps.
    Sollte keine Fehlermeldung auftauchen könnt ihr mit


    Code
    ifconfig


    überprüfen ob das Can Bus Board erfolgreich als Schnittstelle initialisiert wurde.


    Schritt 3
    Um das CAN Bus board zu benutzen braucht ihr noch ein Paket, dies ladet ihr mit diesem Befehl herunter und entpackt es danach.


    Code
    wget http://www.skpang.co.uk/dl/can-test_pi2.zip &&  unzip can-test_pi2.zip


    Schritt 4
    Mit dem Befehl ./candump könnt ihr den ganzen Datenverkehr auf dem CAN Bus auslesen.


    Code
    cd can-test_pi2/ && sudo ./candump can0


    Mit dem Befehl ./cansniffer werden die Daten gefiltert und es werden nur Frames angezeigt die sich ständig wiederholen z.B: Seriennummern Laufzeit....


    Code
    cd can-test_pi2/ && sudo cansniffer can0


    Gutes Gelingen :thumbs1:


    Nachtrag:
    Wenn ihr Probleme mit eurem Wlan Stick und dem CAN Bus Board habt liegt dies an dieser Datei:


    Code
    /etc/ifplugd/action.d/action_wpa


    Diese Datei ist dafür verantwortlich das euer Wlan Stick beim initialisieren des CAN Bus Board deaktiviert wird.
    Um dieses Problem zu beheben müsst ihr einfach diese Datei löschen.


    2 MCP2515 IC am PI


    wenn ihr 2 CAN Bus Chips am PI anschließen wollt müsst ihr das zusätzlich in eure /boot/config.txt eintragen:


    Code
    dtoverlay=mcp2515-can1,oscillator=16000000,interrupt=26


    Bitte denkt daran den Interrupt anzupassen!

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

    Edited once, last by petit_miner ().

  • Hallo,
    Weist du ev. wo ich das Board in der Schweiz oder in Deutschland bestellen kann?
    Wie lange hast du auf das Produkt warten müssen?



    Danke für die Auskunft :)

    Ready when you are :bravo2:

  • Mir ist nur bekannt das man es bei SKPang bestellen kann.
    Der Preis ist aber auch happig für 2 Chips die bei Reichelt 2 € kosten.
    Es besteht die Möglichkeit das Board nachzubauen den Schaltplan findest du auf deren Seite.
    Für ein Päckchen aus GB wartest du so 1-2 Wochen.

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

  • Hallo,
    Ich habe mir nun dieses board gekauft


    Hast du dir schon mal gedanken gemacht das in Python zu importieren?
    Ich würde gerne z.b. mit python einen Befehl senden, ist dies möglich? :)

    Ready when you are :bravo2:

    Edited once, last by schnibli ().

  • Es gibt schon ein fertiges Programm dafür, das Programm kannst du auf SKpang herunterladen.
    Was mich an dieser Sofware Lösung stört ist das man einen neuen Kernel braucht, der Chip wird über SPI angesprochen also sollte es eigentlich kein Problem sein das mit Python zu realisieren.

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

    Edited once, last by petit_miner ().

  • Hallo,
    wo finde ich das python Programm um mit der PICAN Karte die CAN Bus Daten einzulesen? Danke für die Hilfe
    Gruß

  • Hallo,
    der Teilnehmer schrieb:
    "Es gibt schon ein fertiges Programm dafür, das Programm kannst du auf SKpang herunterladen"
    auf der SKpang Seite finde ich aber kein Download
    Gruß

  • Klar, nur muss ich die Anleitung erstmal umschreiben.
    Mit dem 3.18 Kernel sind die Module für die Chips schon drin und dann wird das ganze viel einfacher. :thumbs1:
    Edit: Das ganze Tutorial habe ich jetzt überarbeitet und auch getestet, läuft soweit.

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

    Edited once, last by petit_miner ().

  • Nachtrag vom 28 Juli:
    Von nun an werden 2 MCP2515 am PI unterstützt, im /boot/overlays Ordner gibt es jetzt 2 Overlay Dateien.
    Es gibt eine kostengünstige Alternative zu den (teuren) CAN Bus Boards:
    CAN Board
    http://www.ebay.de/itm/Arduino…ain_0&hash=item487fa9d745 ~4€
    Step down Converter:
    http://www.ebay.de/itm/8-Chann…ain_0&hash=item5d5af5f13c ~2,30€
    Ich bestelle diese Boards in China und werde mal berichten was sie taugen.

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

  • Hallo,


    vielen Dank für die super Anleitung zum konfigurieren das CAN-Boards.


    Gibt es die Möglichkeit den Befehl "sudo /sbin/ip link set can0 up type can bitrate 500000" in die config.txt einzubinden, so dass die CAN0 Schnittstelle beim starten des Pi direkt aktiviert ist?


    Grüße Andy


  • trag doch einfach

    Code
    /sbin/ip link set can0 up type can bitrate 500000

    in die /etc/rc.local ein.


    Vielen dank für die schnelle Antwort, auf die Idee bin ich nicht gekommen :wallbash:


    Eine Frage habe ich aber noch:
    Wie kann ich die Physikalische Adresse der Schnittstelle "can0" ändern?
    Mit dem Befehl "ifconfig" sehe ich immer die Hardware Adresse "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00" für den can0 Port.


    In der Datei "/etc/network/interfaces" ist die "can0" Schnittstelle nicht vorhanden.



    Grüße und danke nochmal
    Andy

  • Wieso willst du die Hardware Adresse ändern?
    Diese hängt mit der CAN Bus Kommunikation nicht zusammen!
    Das ist nur ein Überbleibsel vom Treiber und oder Ifconfig.

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?


  • Wieso willst du die Hardware Adresse ändern?
    Diese hängt mit der CAN Bus Kommunikation nicht zusammen!
    Das ist nur ein Überbleibsel vom Treiber und oder Ifconfig.


    Danke dafür, diese Tatsache war mir anfangs leider nicht bewusst.


    Grüße Andy

  • Ich habe gerade folgende Schaltung aufgebaut:
    RPi --- MCP2515
    3.3V --- VDD
    0V --- VSS
    SPI_CE0 --- CS
    SPI_SCLK --- SCK
    SPI_MOSI --- SI
    SPI_MISO --- SO
    GPIO25 --- INT
    Und OSC1 und 2 an ein Quarz und Kondensatoren.
    Verkabelung habe ich mehrfach kontrolliert, aber ich sehe beim ausführen von ifconfig nur drei einträge: eth0, dung und lo. Nichts von wegen can0.
    Ich weiß, das eigentlich noch ein CAN-Transiever dazu gehört, aber ich wollte die Schaltung Schritt für Schritt aufbauen und testen. Aber ich kann mich mit dem MCP2515 einfach nicht verbinden. Ist was an meiner Schaltung falsch? Wie könnte ich denn so eine Schaltung debuggen?


    Viele Grüße
    Tobias