Mobile Station
Wie das funktioniert wird dir in diesem Kapitel an einem Beispiel erläutert.
Materialien
- senseBoxMCU
- GPS-Modul
- senseBox JST-Adapterkabel
Grundlagen
Eine mobile senseBox hat vielerlei Anwendungsfälle. Möchtest du zum Beispiel die Konzentration von Feinstaub entlang, deiner täglichen Route zur Arbeit oder Schule messen. Das GPS-Modul empfängt die Position (Längengrad/Breitengrad/Höhe) der senseBox. Dieser Sensor ist kompatibel mit den gängingen GNS Systemen (GPS, QZSS, GLONASS, BeiDou, Galileo) und basiert auf dem u-blox CAM-M8Q Multi GNSS Modul.
Aufbau
Damit das GPS-Modul die ganze Messperiode über ein Signal hat und somit den Standort anfragen kann, musst du sicherstellen, dass das Modul durch nichts verdeckt wird. Idealerweise bringst du es für die Messperiode außerhalb des Gehäuses an.
Für die Stromversorgung während der Messperiode kannst du zum Beispiel eine Powerbank benutzen. Manche Powerbanks schalten sich ab, wird zu wenig Strom gezogen (z.B. dann wenn ein Handy voll geladen ist), dadurch kann es vorkommen, dass die Powerbank die senseBoxMCU nicht dauerhaft mit Strom versorgt. Gehe vor der Messung sicher, dass dies nicht der Fall sein wird.
Programmierung
Wie das GPS-Modul programmiert wird, wird hier Beispielhaft anhand einer Temperaturmessung veranschaulicht. Jeder Messwert einer mobilen Station wird zusammen mit den dazugehörigen Werten für Breiten- und Längengrad hochgeladen.
Als erstes muss eine Instanz der Sensoren angelegt werden. Zusätzlich definieren wir noch 2 zwei Variablen für Breiten- und Längengrad
#include "SenseBoxMCU.h"
HDC1080 hdc;
GPS gps;
float lat; // Geografische Breite
float lon; // Geografische Länge
In der setup
-Funktion starten wir nun die beiden Sensoren.
setup() Funktion
void setup(){
hdc.begin();
gps.begin();
}
Die loop
-Funktion fragt nun den Standort der Station ab und lädt diesem gemeinsam mit dem Wert für Temperatur auf die openSenseMap hoch.
loop() Funktion
void loop(){
lat = gps.getLatitude();
lon = gps.getLongitude();
temp = hdc.getTemperature();
osem.uploadMobileMeasurement(temp,"SensorID",lat,lon)
}