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.