Startseite>Daten-Logging am Fahrrad und Motorrad mit dem RasPi
Aus Raspberry Pi Geek 01/2016

Daten-Logging am Fahrrad und Motorrad mit dem RasPi

© Roman Sotola, 123RF

On the road

Wolfgang Dautermann

Studenten der FH Joanneum bringen den RasPi auf die Straße – als Data-Logger am Fahrrad oder Motorrad.

An der FH Joanneum im österreichischen Graz erstellen Studierende der Fachrichtung Fahrzeugtechnik seit Jahren interdisziplinäre Projekte im Rahmen der Informatikausbildung. Dabei bearbeiten Gruppen von bis zu drei Teilnehmern gemeinsam eine Aufgabe. Zwischen den Teams herrscht ein Konkurrenzkampf, da sie die jeweiligen Ansätze am Ende des Semesters vor einem Komitee präsentieren.

In diesem Jahr ging es darum, verschiedene Daten einer Fahrtroute aufzuzeichnen, darunter Lenkwinkel, Geschwindigkeit, Beschleunigung und GPS-Daten. Hier kommt der Raspberry Pi ins Spiel: Er dient bei dem Projekt als Grundlage zum Auswerten der Sensorensignale und das Speichern der Messdaten. Dabei arbeitet jeder im Team eigenständig: Ein Mitglied kümmert sich um die Hardware und das Setup des Mini-Rechners, ein zweites schreibt die Software für den RasPi, und das dritte kümmert sich um die Software zum Auswerten der Daten am PC.

Im Eigenbau

Einen Fahrradcomputer kann man heute fast an jeder Ecke kaufen und im Handumdrehen am Bike montieren. Diese Geräte laufen aber mit Closed-Source-Software und weisen nur eingeschränkte Funktionen auf. Mit OBiCo [1] existierte früher ein freies Projekt, das einen Radcomputer auf Basis von Open-Source-Software ermöglichen wollte. Die Webseite lässt sich nicht mehr erreichen; nur bei Archive.org findet sich noch eine Kopie. Weitere Informationen zu freier Soft- und Hardware rund ums Fahrrad bietet die Tuxmobil-Seite [2] von Werner Heuser.

Ein Teil der Hardware – der Raspberry Pi – war bei der Aufgabe vorgegeben. Alle Teams standen nun vor dem Problem, den Computer so zu montieren, dass er am Fahrrad oder Motorrad stabil untergebracht ist und zusätzlich Raum für eine Stromversorgung bietet. Zwei Gruppen verwendeten für den Prototypen ein Fahrrad. Dabei kam eine auf dem Lenker montierte Platte zum Einsatz, auf der diverse Bauteile Platz fanden (Abbildung 1).

Abbildung 1: Der erste Prototyp mit einem Raspberry Pi auf einer provisorischen Halterung am Fahrrad.

Abbildung 1: Der erste Prototyp mit einem Raspberry Pi auf einer provisorischen Halterung am Fahrrad.

Die dritte Gruppe interpretierte das Wort “Bike” etwas dynamischer und entschied sich, das Projekt auf einer BMW S1000RR zu realisieren (Abbildung 2). Die Herausforderung bestand darin, alle nötigen Sensoren, den Raspberry Pi und eine kompakte Stromversorgung unterzubringen (Abbildung 3).

Abbildung 2: Eine der Gruppen entschied sich dafür, eine BMW S1000RR als Grundlage für das Projekt zu verwenden.

Abbildung 2: Eine der Gruppen entschied sich dafür, eine BMW S1000RR als Grundlage für das Projekt zu verwenden.

Abbildung 3: Es erforderte viel Geschick, den Raspberry Pi samt Stromversorgung und die Sensoren in dem begrenzten Platz unterzubringen.

Abbildung 3: Es erforderte viel Geschick, den Raspberry Pi samt Stromversorgung und die Sensoren in dem begrenzten Platz unterzubringen.

Sensorik

Zum Erfassen der Geschwindigkeit kam ein Hallsensor des Typs Hall IC Infineon Technologies TLE 4945 L 3.5-24 V PSSO 3-2 zum Einsatz. Er liefert ein digitalisiertes Signal, das sich direkt mit dem RasPi auslesen lässt. Der Sensor fand am rechten Teilelement der Federgabel seinen Platz, der Magnet an den Speichen. Dabei passiert der Südpol den Sensor, der darüber hinaus als Taktgeber für die weiteren Sensoren dient. Bei hoher Geschwindigkeit tastet der Raspberry Pi mit der entsprechenden Drehzahl ab.

Um den aktuellen Winkel am Lenker zu messen, kommt ein Drehpotentiometer der Serie PC20BU zum Einsatz. Ein A/D-Wandler erzeugt aus der veränderlichen Spannung ein digitales Signal, das der RasPi verarbeitet. Dabei nimmt eine eigens angefertigte Konsole den Winkel an der Drehachse des Vorderrads ab.

Ein GPS-Sensor zeichnet die gefahrenen Routen auf. Hinsichtlich Kosten und Messgenauigkeit stellte sich als beste Variante der Adafruit Ultimate GPS Breakout heraus. Dieses Modul erfasst neben den Punkten für die Koordinaten noch Höhe über NN und Geschwindigkeit. Um die dauerhafte Verbindung zu den GPS-Satelliten zu ermöglichen, empfiehlt es sich, den Sensor auf den Lenker des jeweiligen Fahrzeugs zu montieren.

Abbildung 4: Richtig verschaltet ermöglichen die Komponenten des Projekts eine Rundum-Überwachung der Bewegungen des jeweiligen Fahrzeugs.

Abbildung 4: Richtig verschaltet ermöglichen die Komponenten des Projekts eine Rundum-Überwachung der Bewegungen des jeweiligen Fahrzeugs.

Das Team mit dem Motorrad verwendete einen Bluetooth-fähigen, batteriebetriebenen GPS-Empfänger (Modell eGPS-397S). Dies erleichterte einerseits die Verkabelung und bot sich andererseits an, um den wenigen Platz besser zu nutzen. Der Sensor hing für einen günstigen Empfang am Lenkkopflager.

Zu den wichtigsten Fragen, die sich im Rahmen des Projekts ergaben, zählte die nach der Stromversorgung. Da bei einem RasPi die Stromversorgung über einen USB-Anschluss erfolgt, bietet sich für das Fahrrad als einfache Lösung eine handelsübliche Powerbank an, die normalerweise dazu dient, mobile Geräte unterwegs zu laden. Am Motorrad sorgte dessen Bordnetz für eine kontinuierliche Stromversorgung.

Programmierung

Das Erfassen der Daten am Raspberry Pi erfolgte bei den Projekten mittels Python. Da die Skriptsprache von Anfang an als Basis für Experimente mit dem Mini-PC gedacht war, stehen heute viele Python-Pakete zum Ansteuern der GPIO-Pins und anderer Komponenten bereit.

Listing 1 zeigt, wie das Auslesen des Potentiometers zum Messen des Lenkwinkeleinschlags klappt, das über einen A/D-Wandler am SPI-Bus hängt. Der Bus ist ab Werk deaktiviert, in den Advanced Options des Tools Raspi-config schalten Sie ihn frei [3].

Listing 1

 

#!/usr/bin/python
# Notwendige Pakete importieren
import spidev
import time
import os
import sys
import RPi.GPIO as GPIO
time.sleep(300)
GPIO.setmode(GPIO.BCM)
# GPIO-Pin 23 = Eingang
GPIO.setup(23, GPIO.IN)
# SPI-Bus öffnen
spi = spidev.SpiDev()
spi.open(0,0)
# Variablen definieren
# Abtastrate
delay = 0.5
# Dateipfad
file = "/boot/daten/messungen/poti.txt"
# Trennung
trennzeichen = ';'
# file loeschen
os.remove(file)
def schreiben(data):
  # in Datei schreiben
  fobj_out = open(file,"a")
  fobj_out.write(str(position))
  fobj_out.write(trennzeichen)
  fobj_out.close()
  print position
while True:
  # Daten auslesen
  data = spi.xfer2([0x00])
  schreiben(data)
  time.sleep(delay)
  if GPIO.input(23):
    sys.exit()

Sensoren programmieren

Um mit den einzelnen Sensoren zu kommunizieren, kam die GPIO-Schnittstelle des Raspberry Pi zum Einsatz. Deren Pins dienen sowohl als Eingänge als auch als Ausgänge. Weitere Informationen zum Programmieren der Anschlüsse finden Sie in einem Artikel in RPG 05/2013 [4].

Um die Sensoren so lange abzufragen, bis der Taster zum Beenden der Aufzeichnung ein Signal gibt, laufen die Programme in via while True: realisierten Endlosschleifen. Um die erfassten Daten in eine Datei zu schreiben, kommt ein einfacher Datenstrom zum Einsatz, der diese öffnet, die Werte der einzelnen Variablen in jedem Durchlauf ablegt, sie zum Schluss speichert und die Datei wieder schließt. Als Trennzeichen dient ein Semikolon.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland