POPE hat Sendungsbewusstsein
Um mit POPE etwas Sinnvolles in Python anfangen zu können, reicht import serial
aus. POPE ist von Haus aus so eingestellt,
dass er ungefragt und am laufenden Band Statusmeldungen sendet. Diese Statusmeldungen erfolgen im NMEA 0183-Protokoll. NMEA ist ein Datenprotokoll,
das eigentlich zur Übertragung von Navigationsdaten zwischen nautischen Geräten konzipiert wurde. Die meisten Satellitennavigationssysteme beherrschen NMEA.
Für uns hat NMEA zwei Nachteile:
- Einige, eigentlich die meisten, Informationen benötigen wir nicht - z.B. einen ausführlichen Satellitenstatus
- Es gibt mehrere Arten der Positionsmeldung, von denen keine alle von uns benötigten Informationen enthält.
Ein NMEA-Statement hat eine feste Struktur. Ansfangs steht ein $-Zeichen, dann folgt eine Art Bezeichner, aus dem man ersehen kann,
von welchem Navigationssystellitensystem (GPS, GLONASS, etc.) die folgenden Informationen stammen sowie welche Art von Informationen folgen.
Die Struktur (Reihenfolge und Länge) der daran anschließenden eigentlichen Daten wird durch den Bezeichner festgelegt.
Am Ende eines NMEA-Statements steht eine Checksumme und ein Zeilenrücklaufkommando. Kein einzelnes dieser NMEA-Statements enthält alle Informationen, die wir benötigen.
Zum Glück verfügt POPE über ein weiteres, herstellerspezifisches, Datenformat, das UBX-Protokoll. Das UBX-Protokoll enthält eine Statusmeldung,
die alle von uns benötigten Informationen enthält. Wir müssen also, sobald die Kommunikation zwischen CHICK und POPE möglich ist,
alle NMEA-Outputs aus- und von den UBX-Meldungen, die eine für uns interessante einschalten. Der Aufbau der UBX-Statements ähnelt sehr den NMEA-Outputs.
Die von uns benötigte UBX-Message hat folgenden Aufbau:
$PUBX,00,hhmmss.ss,Latitude,N,Longitude,E,AltRef,NavStat,Hacc,Vacc,SOG,COG,
Vvel,ageC,HDOP,VDOP,TDOP,GU,RU,DR,*cs
Eine weitere wichtige Funktion, die POPE zukommt, ist das Festlegen der Systemzeit. CHICK verfügt über keine gepufferte Uhr.
Wenn CHICK ausgeschaltet wird, vergisst es Datum und Uhrzeit und holt sich nach dem Einschalten und dem Login ins Internet
die Systemzeit via ntp
. Dort, wo unser Ballon starten soll, gibt es aber kein Internet und CHICK wüsste daher nicht,
wie spät es ist. Und damit könnten wir allen Messwerten keine genaue Uhrzeit zuweisen. Zum Glück liefert POPE mit jeder Positionsmeldung atomuhrgenau Datum und
Uhrzeit, so dass einmalig vor dem Start mit POPEs Hilfe CHICKs Uhr gestellt wird.
Vor alle dem dürfen wir auf keinen Fall vergessen, POPE in den Flugmodus zu versetzen, damit er uns auch oberhalb 18.000m Positionsdaten liefert.
All das geschieht in CHICKs Selbsttest- und Startroutine, in der alle angeshlossenen Module auf ihre Funktionsfähigkeit abgeklopft werden.