Fahrzeugdaten übertragen mit dem Raspberry Pi

Hardware

Für so eine Aufgabe möchte man einen leistungsfähigen Server verbauen. Im Renneinsatz relevant sind aber in erster Linie die Größe, das Gewicht, der Stromverbrauch und nicht zuletzt der Preis. Da bietet sich fast zwangsläufig ein Raspberry Pi an. Auch im neuesten Rennfahrzeug von joanneum racing graz [1] sammelt ein solcher die Messdaten, wertet sie aus und stellt sie dem Boxenteam bereits während des Rennens zur Verfügung.

Daneben kommen ein aktiver USB-Hub, ein WLAN-Stick, eine WLAN-fähige Kamera, ein CAN-USB-Adapter sowie ein UMTS-Stick zur Datenübertragung an die Box zum Einsatz – und unvermeidlicherweise ein paar Kabel (Abbildung 4).

Abbildung 4: Die Hardware-Komponenten im Testaufbau.

CAN unter Linux

Der Linux-Kernel bringt bereits etliche Treiber für den CAN-Bus mit, als einheitliche Abstraktionschicht lassen sich diese als Netzwerk-Devices ansprechen (Abbildung 5). Die Treiber beweisen übrigens, dass nicht nur private Kernel-Hacker und IT-Firmen am freien Betriebssystemkern mitprogrammieren – der Code wurde von Volkswagen Group Electronic Research beigetragen.

Abbildung 5: SocketCAN im Linux Kernel. (Bild: Wikimedia Commons)

Auch der verwendete Treiber für den USB-CAN Adapter der Firma Peak ist eigentlich in dem Linux-Kernel enthalten – allerdings nicht beim Standard-Raspbian. Man muss daher das Modul selbst kompilieren, aber auch das erweist sich als nicht ganz einfach: Im Standard-Raspbian-Image [2] versieht ein von der Raspberry Pi Foundation modifizierter, speziell optimierter Kernel (3.6.11+) den Dienst, der im Repository weder die passenden Kernel-Sourcen noch die zugehörigen Header führt.

Es gilt also, erst einmal auf den Standard-Kernel von Raspbian zu wechseln (Listing 2, Zeile 1) und anschließend in der Datei /boot/config.txt den neuen Kernel einzutragen (kernel=vmlinuz-3.6-trunk-rpi). Nach einem anschließenden Neustart fehlt zwar noch der Peak-Treiber [3] (Listing 2, Zeile 2), aber es liegen zumindest die passenden Header-Files vor, sodass man den Treiber nun übersetzen und installieren kann (Listing 3).

Listing 2

 

$ sudo apt-get install linux-image-3.6-trunk-rpi linux-headers-3.6-trunk-rpi libpopt-dev
$ grep CAN_PEAK /boot/config-3.6-trunk-rpi
# CONFIG_CAN_PEAK_USB is not set

Listing 3

 

$ wget http://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-7.9.tar.gz
$ tar xvzf peak-linux-driver-7.9.tar.gz
$ cd peak-linux-driver-7.9
$ make PCI=NO_PCI_SUPPORT USB=USB_SUPPORT
$ sudo make install
$ sudo depmod -a

Damit liegt das Modul nun einsatzbereit vor. Man lädt es entweder selbst mit sudo modprobe pcan oder steckt den CAN-Adapter ein – das Modul wird dann automatisch geladen. Im Fall eines Kernel-Updates darf man allerdings nicht vergessen, den CAN-Treiber wieder zu kompilieren und neu zu installieren.

Der PCAN-Treiber legt bei der Installation automatisch die Datei /etc/modprobe.d/pcan.conf an. Um die Bitrate des CAN-Busses auf 1 Mbit/s zu erhöhen, muss man bei diesem Modul die Geschwindigkeit beim Laden des Moduls angeben – automatisiert klappt das beispielsweise mit options pcan bitrate=0x0014 in dieser Datei. Werte für andere Geschwindigkeiten finden Sie in der Tabelle "PCAN-Modul: Geschwindigkeiten" (entnommen aus dem PCAN-Quellcode). Bei anderen CAN-Modulen erreichen Sie dasselbe mit folgendem Befehl:

# ip link set can0 type can bitrate 1000000

PCAN-Modul: Geschwindigkeiten

Bitrate

Moduloption

1000 kbit/s

0x0014

500 kbit/s

0x001C

250 kbit/s

0x011C

125 kbit/s

0x031C

100 kbit/s

0x432F

50 kbit/s

0x472F

20 kbit/s

0x532F

10 kbit/s

0x672F

5 kbit/s

0x7F7F

Zum Zugriff auf das CAN-Netzwerk-Device gibt es im Userspace die Can-Utilities [4], die man nach dem Herunterladen des Quellcodes mit make; sudo make install installiert. Zum Auslesen des CAN-Busses dient das Tool candump (siehe Listing 1). Ein Datenpaket auf dem CAN-Bus besteht aus einer 11 Bit langen CAN-ID, es folgen eine Längenangabe (1 bis 8 Byte) sowie die Daten. Bei Bedarf ließen sich mit cansend sogar eigene Nachrichten in den CAN-Bus schreiben.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 8 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • PiXtend: Leichter Einstieg in die industrielle Steuerungstechnik (SPS)

    Der Raspberry Pi eignet sich dank des GPIO-Ports auch für den Einsatz in der Industrie. Dort stößt er aber schnell an seine Grenzen. Mit dem PiXtend-Board lassen sich bei Bedarf leicht analoge Ein- und Ausgänge oder PWM-Anschlüsse aufrüsten.

  • Nautische Navigation mit dem RasPi und OpenCPN

    Im zweiten Teil der Serie über den Raspberry Pi auf Sportbooten zeigt der Mini-Computer, dass er sich als ideale Basis für ein Low-Cost-Navigationssystem eignet: OpenCPN und ein GPS-Empfänger genügen.

  • Raspberry Pi via Funk aufwecken

    Möchten Sie Ihren RasPi nur mit Batteriestrom speisen, ist es sinnvoll, ihn nur dann zu aktivieren, wenn Sie ihn auch brauchen. Quasi auf Zuruf bootet der Mini-Rechner per Funknachricht, gesendet im europäischen 868-MHz-Band.

  • Die AnonyMeBox von Pi3g im Test

    Mithilfe der AnonyMeBox surfen Sie von allen Ihren Rechnern und mobilen Geräten aus anonym im Internet, ohne dazu die Tor-Software auf den Clients installieren und einrichten zu müssen.

  • Der Raspberry Pi 3 Model B im Detail

    Viele Raspberry-Fans wünschten sich für die nächste Generation des Mini-Computers USB 3.0, SATA-Schnittstelle und Gigabit-Ethernet. Dies alles bietet der Raspberry Pi 3 nicht, dafür aber WLAN, Bluetooth und eine schnelle 64-Bit-CPU.

Aktuelle Ausgabe

10/2018
Weltweiter Empfang

Diese Ausgabe als PDF kaufen

Preis € 7,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Physiklabor

    Der Java-Dialekt Processing zielt auf interaktive Animationen ab und eignet sich auch für Programmiernovizen.

  • Abstand halten

    Der VL53L0X misst präzise Entfernungen bis zu zwei Metern. Das macht ihn zum passenden Kandidaten für RasPi-Projekte.

  • Tux-Funk

    Der SDR-Empfänger RSP2pro von SDRplay bringt Amateurfunk auf den Raspberry Pi.

  • Himbeersieb

    Die aus Österreich stammende Upribox auf Basis des Raspberry Pi schützt wirkungsvoll vor Gefahren aus dem Internet. Jetzt ist das System in der zweiten Version erschienen.

  • Unter Kontrolle

    Das programmierbare Steuermodul Controllino bietet mit seinen zahlreichen Ein- und Ausgängen vielfältige Möglichkeiten.

  • Dehnübungen

    Ein RasPi eignet sich bestens zum Steuern eines Fischertechnik-Roboters. Damit dabei kein Chaos entsteht, gilt es, die Steuerung genau zu programmieren.

  • Klangmaschine

    Der RasPi bringt genügend Performance mit, um als kleine DAW zu dienen. Mit Waveform 9 haben Sie die passende Software zur Hand.

  • Fremdgehen

    Nicht jedes Programm gibt es auch für die ARM-Architektur. Der kommerzielle Emulator Exagear Desktop fungiert als Übersetzer zwischen der ARM- und x86-Welt.

  • Ausfallsicher

    Eine selbst gebaute USV für den RasPi verschafft Ihnen die entscheidenden Sekunden, um bei unerwarteten Stromausfällen einem Datenverlust vorzubeugen.

  • Am laufenden Band

    Die Kombination aus einem Fischertechnik-Bausatz und dem Controllino-Modul bietet eine ideale Basis, um ein funktionierendes Industriemodell zu gestalten.