Update RP2040-GEEK GPX Datenlogging
Anleitung für die Firmware CircuitPython
Update RP2040-GEEK GPX Datenlogging
Anleitung für die Firmware CircuitPython
Das 'GPS-Gerät' aus der vorigen Anleitung arbeitet sehr gut. Trotzdem hat sich schnell die Notwendigkeit für einige Verbesserungen ergeben. Deshalb gibt es hier die Version 2.0 als Update.
Die wichtigsten Änderungen:
- Es werden jetzt eine Stunde lang Daten in einer Datei aufgezeichnet, statt bisher immer nur 10 Minuten pro Datei.
- Nach jeweils 3 Minuten wird ein Wegpunkt gesetzt, in welchem außer den GPS-Koordinaten auch Datum und Uhrzeit festgehalten sind, die im Editor angezeigt werden können.
- Die Dateien werden jetzt automatisch abgeschlossen und können unmittelbar am PC weiterverarbeitet werden.
Beschreibung
Nachdem Sie die aktuelle Firmware 'CircuitPython' (siehe dazu auch diese Anleitung) auf dem Pico-Geek eingerichtet haben, sollten Sie die SD-Karte am PC einrichten. Wenn diese neu ist, z.B. FAT-32 formatieren. Legen Sie ein Verzeichnis 'gps' an, in welchem sich eine Textdatei 'ziel.txt' mit dem Namen eines (von Ihnen gewünschten) Ziels und dessen gps-Koordinaten Attitude und Longitude befindet.
sd-karte gps ziel.txt
München dahoam 48.142044 11.583694
Dieser Zielpunkt wird dann im gpx-Editor angezeigt. Legen Sie nun die SD-Karte in den Pico-Geek ein und verbinden ihn mit dem PC.
Als nächstes brauchen Sie das Programmupdate:
Nach dem Entpacken kopieren Sie die Datei 'code.py' und den 'lib-Ordner' in das
Stammverzeichnis des Laufwerks
'CIRCUITPY'. Die ggf. vorhandene Datei 'code.py' und den Inhalt des 'lib-Ordners' überschreiben Sie.
Im Stammverzeichnis 'CIRCUITPY' befindet
sich auch ein Ordner 'sd'. Wenn Sie diesen im Thonny oder Datei-Explorer des PC's anklicken, dann wird Ihnen eine
Datei 'placeholder.txt'
angezeigt. Dies soll verhindern, dass die SD-Karte vom PC überschrieben wird. Um auf die SD-Karte zuzugreifen, muss sie
gemounted sein. Im Thonny können Sie dafür das Programm 'sd_card.py', welches
ebenfalls in der zip-Datei enthalten war, nutzen. Dieser Vorgang des 'mountens' ist auch im Programm 'code.py' in den Zeilen 29 bis 49 enthalten.
Gleichzeitig wird die Datei 'gps_logger.txt' neu angelegt, falls sie nicht vorhanden ist. In dieser Datei wird
lediglich eine fortlaufende Zahl abgelegt, nach der die Dateibezeichnung für die gpx-Dateien 'gps_daten1.gpx'
,
'gps_daten2.gpx' usw. gewählt wird. Möchten Sie mit der Nummerierung wieder von vorn beginnen, setzen Sie den Wert in der
Datei 'gps_logger.txt' unter Nutzung von 'sd_card.py' im Thonny einfach 'per Hand' auf Null zurück.
Ich habe oben schon darauf hingewiesen, dass die Aufzeichnung jetzt 1 Stunde (3600 s, Zeile 202) dauert. Wenn die Zeit erreicht ist, wird
die laufende
Datei syntaktisch korrekt abgeschlossen und eine neue 'gps_datenXX.gpx' angelegt. Dabei wird auch in der Datei
'gps_logger.txt' die nächst höhere Zahl geschrieben. Wird der Pico-Geek vor Ablauf der Stunde ausgeschaltet,
wird die Verarbeitung einfach abgebrochen und die Datei mit den Daten ist syntaktisch nicht korrekt. Dadurch könnte ein gpx-Editor sie
später am PC nicht lesen.
Deshalb enthält das Update jetzt einen Programmteil, welcher beim Einschalten immer zuerst die letzte
Datendatei abschließt, dann den Wert zur Nummerierung erhöht und die neue Datei anlegt (siehe unterer Kasten). Dies geschieht in der Zeit, in der das GPS-Modul eh nach
der Satellitenverbindung sucht. D.h. will man die zuletzt aufgezeichnete Datei im Anschluss sofort am PC anzeigen und die Route auswerten, wird
nach dem 'Ausschalten' der Stick einfach noch einmal kurz angeschlossen und wieder ausgeschaltet. Danach kann die SD-Karte entnommen werden
und die Auswertung am PC erfolgen.
120 # Datei vom vorherigen Durchgang abschliessen 121 for i in range(int(string)): 122 filename = "/sd/gps_daten" + str(i+1) + ".gpx" 123 with open(filename, "r") as f: 124 zeile= f.read() 125 print(filename) 126 #print(zeile[-6:]) 127 if zeile[-6:] == "": 128 print("Datei abgeschlossen\n") 129 else: 130 if zeile[-9:] == "\n": 131 print("Datei wird abgeschlossen\n") 132 with open("/sd/gps_daten" + str(i+1) + ".gpx", "a") as g: 133 g.write("\n\n") 134 g.close() 135 f.close() 136 178 zahl = int(string) 138 zahl += 1
Die Route von einer gerade zuvor durchgeführten Fahrt sieht z.B. so aus:
Wenn Sie die gpx-Datei bei sich zum Testen möchten, dann können Sie diese
hier herunterladen.
viel Spass und Erfolg beim Ausprobieren.
viel Spass und Erfolg beim Ausprobieren.