Daten-Logging am Fahrrad und Motorrad mit dem RasPi

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.

Die Verbindung zwischen Raspberry Pi und GPS-Sensor kommt über die TTL-Pins und ein USB-TTL-Adapterkabel zustande. Der Rechner fragt die Daten bei laufender Messung in einer Endlosschleife ab und schreibt sie mit einem Zeitstempel in eine Datei. Weitere Informationen zur Kombination aus einem Raspberry Pi und dem GPS-Sensor von Adafruit finden Sie auf der Homepage des Unternehmens [5].

Beim Messen der Geschwindigkeit haben die Gruppen unterschiedliche Ansätze gewählt: Zwei Teams verwendeten einen Hallsensor, um die Drehzahl zu erfassen. Die Motorrad-Gruppe dagegen hat das ABS-Signal aus dem Motorsteuergerät verwendet. An dieser Stelle der Warnhinweis: Basteln Sie nicht ohne gute Kenntnisse der Fahrzeugtechnik selbst an der Elektronik eines Gefährts herum.

Beim Ansatz mit dem Hallsensor führten schlussendlich unterschiedliche Wege zum Ziel: Der Sensor liefert pro Umdrehung des Rads eine positive Flanke, die wiederum einen Interrupt auslöst, was eine Variable um den Wert 1 erhöht. Anschließend wertet das Programm die Variable alle zwei Sekunden aus und rechnet die Daten in Umdrehungen pro Minute um. Diese schreibt es danach wieder in die Datei. Damit das Auswerten klappt, erfasst die Software zu Beginn und am Ende des Durchlaufs die Systemzeit und bildet die Differenz.

Eine weitere Möglichkeit besteht darin, die Differenz der Zeit (ebenfalls über die interne Systemzeit) zwischen den einzelnen Messpunkten zu erfassen und über den Umfang des Rads auf die Geschwindigkeit zu schließen. Die Drehzahl liefert dann die Taktfrequenz für die restliche Sensorik. Das spart Speicher und erfasst im Stillstand keine Parameter. Die Testperson beendet die Messung über einen Taster, der mit sys.exit() das Python-Programm abbricht.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 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

Aktuelle Ausgabe

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Verschlungene Pfade

    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.