**Dies ist eine alte Version des Dokuments!**
Data Processing
Data Collection
Wir wollen die Raketenstarts möglichst detailliert vermessen und dokumentieren. Dazu können externe Sensoren (z.B. statische Kameras) verwendet werden, aber auch Nutzlast-Sensoren mit der Rakete mitfliegen. Werden die Daten nicht erst nach dem Flug ausgewertet, sondern während des Flugs an die Bodenstation übertragen, sprechen wir von Telemetrie.
Damit die Sensorik-Einheit die Landung übersteht und wie die SpaceX-Raketen wiederverwendet werden können, muss eine entsprechende Nutzlastverkleidung, eine Aufpralldämpfung oder ein Fallschirmsystem gebaut werden.
Sensoren
- Bodenkamera
- Stativ, Zeitlupenaufnahme…
- Microbit:
- Beschleunigungsmesser
- Magnetometer (Kompass)
- Interner Speicher zur Aufzeichnung.
- Arduino
- Höhenmesser
Microbit
Einfache Datensammlung könnte wie folgt stattfinden. Achtung, der Microbit sammelt Daten, sobald er eingestellt wird, was blitzschnell den Speicher füllt. Für den Raketenbetrieb sollte die Datensammlung erst loslegen, wenn der Countdown beginnt! Es wäre also gut, den Countdown für Kameras und die Onboard-Sensorik per Bluetooth zu synchronisieren.
- collector.py
from microbit import * import log import time # Logging will be mirrored on console. log.set_mirroring(True) # The standard setting only allows accelerations up to 2g, we want 8g! accelerometer.set_range(8) START_TS = time.ticks_ms() # start timestamp # Set the timer to log data every 20 milliseconds (50 measurements per second) @run_every(ms=20) def log_single_row(): # Timestamp in milliseconds since countdown start. timestamp = time.ticks_ms() - START_TS accel = accelerometer.get_values() log.add(launch_ts=timestamp, ax=accel[0], ay=accel[1], az=accel[2])
Altimeter
Wir haben einige BMP280 Höhenmesser von Adafruit. Diese lassen sich mit dieser Bibliothek einlesen.
Die bmp280.py Datei muss im Projekt im selben Ordner gespeichert werden wie die Hauptdatei. Dabei muss die I2C-Adresse in der Datei noch angepasst werden:
BMP280_I2C_ADDR = 0x77 # statt 0x76
In der Hauptdatei (main.py) kann die Höhe wie folgt ausgelesen werden:
import bmp280 sensor = bmp280.BMP280() while True: sleep(500) print(sensor.Altitude())
Auf der Hardware-Seite müssen die vier Kontakte des Sensors mit 3V, GND sowie Pins 19 (SCL) und 20 (SDA) am Microbit verbunden werden.
Data Processing
Mit der Data-Collection ist es aber noch nicht getan. Rohdaten müssen aggregiert (zusammengefasst), verknüpft und aufbereitet werden. Einschlägige Tools sind Excel, Google Sheets und Pandas.
Tabellenkalkulationen
Tabellenkalulationen wie Excel und Google Sheets sind gute Tools, um moderate Datenmengen zusammenzufassen oder zu visualisieren.
Beispiel: Eine Videoaufzeichnung des Wasserausstosses in Zeitlupe wird in Shotcut mit einer Stoppuhr überlagert. Anschliessend erfolgt das Auslesen des Wasserstands zu den verschiedenen Zeiten.
| Elapsed [s] | Remaining Water [liters] |
|---|---|
| 0 | 1 |
| 0.3 | 0.5 |
| 0.74 | 0.3 |
| 0.87 | 0.2 |
| 1.24 | 0.1 |
| 1.76 | 0 |
In Google Sheets erfolgt die Visualisierung und die Auswertung mit Log-Trendlinie:
Pandas
Pandas eignet sich für grosse Datenmengen und professionelle, automatisierte Verarbeitung von vielen Datensätzen.
Für das Alignment der verschiedenen Sensor-Daten müssen die Zeitstempel synchronisiert werden und mit dem Countdown abgeglichen werden.
Data Visualization
Bragging Rights gibts nur, wenn die Resultate (erreichte Flughöhe, maximale Flugzeit, Beschleunigung) auch ansprechend dargestellt und verständlich visualisiert werden.