Verbesserungen an meinem GPS-Logger

Diesen Sommer habe ich die Firmware für meinen GPS-Logger so stark verbessert, wie noch nie. Eine der wichtigsten Neuerungen ist, dass sowohl die Firmware als auch das RawRead-Tool komplett auf GitHub verfügbar ist. Dadurch kann man sehr leicht mitarbeiten und helfen, die Projekte noch besser zu machen. In diesem Artikel möchte ich beschreiben, was sich alles geändert hat.

Firmware

Im Grunde genommen habe ich nahezu den gesamten Quellcode überarbeitet. Dank des tollen Feedbacks, welches ich bekommen habe, ist der Code nun deutlich schneller und dazu in der Lage, mehr Daten zu verarbeiten. Die wichtigsten Änderungen betreffen die GPS- und NoFS-Bibliotheken.

Beginnend mit Version 1.4 ist man nun dazu in der Lage auszuwählen, welche NMEA-Kommandos man aufzeichnen möchte (im Gegensatz zu vorher, wo nur $GPGGA Kommandos aufgezeichnet wurden). Das Einzige, was man ändern muss, sind die Parameter beim gps_init() Befehl. Sie können einfach eine OR-verknüpfte Liste von Kommandos angeben, die Sie erhalten möchten. Außerdem können Sie die Frequenz spezifizieren, mit der die Kommandos aufgezeichnet werden sollen. Momentan werden jedoch nur Frequenzen von bis zu 4 Hz unterstützt. In Zukunft wird man aber auch in der Lage sein, mit 10 Hz (der maximalen Ausgaberate des GPS-Moduls) aufzuzeichnen. Abgesehen davon werden NMEA-Kommandos nun intern auf Gültigkeit überprüft und es wurden einige kleinere Fehler behoben.

Wie bereits erwähnt, habe ich auch die NoFS-Bibliothek verbessert. Bislang war das Hauptproblem: je mehr Daten auf der Karte waren, desto länger braucht der Logger zur Initialisierung, da der gesamte Datenbereich nach einem bestimmten Symbol abgesucht werden muss. Beispielsweise benötigte das Durchsuchen von 1.4 MB Daten (dem Äquivalent von 5 Stunden Aufzeichnen von $GPGGA-Meldungen bei 1 Hz) bislang etwa 20 Sekunden. Nun geschieht das Durchsuchen der gleichen Datenmenge in nicht einmal einer Sekunde. Weiterhin merkt sich das Gerät nun, bis zu welcher Stelle es beim letzten Start gesucht hat, wodurch bei jedem Start deutlich weniger Daten abgesucht werden müssen (denn das neue Ende der Daten kann nur hinter dem alten Ende liegen). Dadurch muss das Gerät nur noch höchstens 10 Stunden an Daten durchsuchen (da eine Akkuladung nicht länger hält). Das führt dazu, dass von nun an die Initialisierung des Geräts in höchstens 2 Sekunden abgeschlossen ist.

RawRead

Parallel zur Mikrocontroller Firmware habe ich auch das Programm zum Auslesen der Speicherkarte komplett enugeschrieben. Das Hauptproblem bei RawRead war, dass das Programm nur unter Windows funktionierte. Nun, da ich das Programm in Python neugeschrieben habe, ist es Plattformunabhängig und läuft auf Windows, Mac und Linux Betriebssystemen. Das Ṕrogramm wird komplett per Kommandozeilenparameter gesteuert, daher empfehle ich beim ersten Start python rawread.py -h aufzrufen, um eine Übersicht über alle Kommandos zu erhalten. Aufgrund des direkten Laufwerkszugriffes muss das Programm mit Administrationsrechten ausgeführt werden!

Eine wichtige Neuerung hinsichtlich Sicherheit ist die Implementation einer Prüfung, ob das gegebene Gerät eun NoFS bestitz, oder nicht. Dadurch kann es nicht passieren, dass versehentlich die Hauptfestplatte überschrieben wird.

Momentan gibt es allerdings ein kleines Problem auf Macs. Aufgrund von sehr restriktiven Zugriffsrechten kann man mit dem Programm momentan keine komplett neues NoFS auf einer Speicherkarte anlegen, wenn Sie bereits ein Dateisystem besitzt. Da ich momentan (noch?) kein Apple Produkt besitze, kann ich diesem Problem auch nicht wirklich nachgehen. Das Projekt ist allerdings Open Source, sollten Sie also wissen, wie man das Problem beheben kann, wäre ich über eine Teilnahme am Projekt sehr erfreut!

Fazit

Ich habe es geschafft, etliche Dinge bei der Firmware und beim Programm zu verbessern. Beides ist auch definitiv besser geworden, aber es ist noch lange nicht fertig. Für beide Projekte habe ich noch einige Ideen und offene Probleme, an denen ich in der Zukunft arbeiten möchte. Da nächsten Montag das nächste Semester meines Studiums beginnt, werde ich leider nicht allzu viel Zeit haben, um an den Projekten weiterzuarbeiten. Trotzdem denke ich, dass bis spätestens Ende des Jahres die offenen Probleme behoben sein werden. Wenn Sie sich an den Projekten beteiligen möchten, nur zu! Wenn Sie Vorschläge oder Anmerkungen haben, benutzen Sie bitte die neue Kommentarfunktion oder schreiben Sie mir eine E-Mail. Ich werde dann schnellstmöglich antworten.