Geocache Transposed - Teil 6

Die Software, noch mehr Details

Dies ist Teil 6 über den Bau eines Geocache Transposed (GCT), einer verschlossenen Box, die nur an einem geheimen Ort geöffnet wird. Der folgende Beitrag beschreibt noch weitere Details wie den Testmodus bei der Implementierung der Software. Teil 1 der Serie ist hier zu finden: GCT Teil 1

Displayanzeige Suche GPS-Signal
Suche GPS-Signal...

Für die Freigabe der Software auf Github habe ich mich entschieden, alle Nachrichten, die über lcdSerial auf dem LCD-Bildschirm gedruckt wurden, auf Deutsch zu lassen. Der Grund dafür ist: Ich hatte wirklich Probleme damit, Umlaute (ä, ü, ö) korrekt anzuzeigen. Es hat mich einige Zeit gekostet, zu bemerken, dass der Treiberchip für das LCD in zwei Versionen existiert: Europäisch und asiatisch. Während der asiatische Chip zumindest einige Zeichen zur Verfügung stellt, die wie deutsche Kleinbuchstaben aussehen, konnte ich keinen Weg finden, die Software mit der richtigen Kodierung zu speichern, um sie auch richtig anzuzeigen. Am Ende sende ich das korrekte Byte Brute Force an die LCD, z.B. über lcdSerial.print(225, BYTE);

Um das Testen des gesamten Setups zu erleichtern, z.B. um das Ver- und Entriegeln zu ermöglichen, habe ich der Software einen GPS-Testmodus hinzugefügt. Dies überspringt das Lesen von realen Koordinaten aus dem GPS, sondern liest vielmehr Koordinaten aus dem test_latlons-Array. Wird die Definition GPS_Testing zu Beginn der Software einkommentiert, wird dieser Testmodus aktiviert. Ein Koordinatenpaar wird zufällig aus der Testliste ausgewählt und für die Entfernungsberechnung genutzt. Ich empfehle, dafür nicht mehr als drei Ziele im Zielarray zu verwenden, da es bei höheren Werten unwahrscheinlich ist, die aktuelle Zielposition zufällig aus dem Testarray auszuwählen. Natürlich sollten die Koordinaten des Zielarrays in das test_latlons-Array aufgenommen werden, da ansonsten niemals ein Ziel erreicht wird.

Bei jeder Aktivierung speichert die Box die Koordinaten der aktuellen Position im EEPROM. Die Idee war, dass man später die Koordinaten abrufen und die Reise auf einer Karte nachvollziehen kann. Aus Datenschutzgründen sollte der Beschenkte darüber allerdings informiert sein. Die erfassten Koordinaten werden über den internen seriellen Anschluss an einen PC in der Phase SEND_COORDS gesendet. Diese Phase wird nach dem Abschalten aktiviert und somit nur erreicht, wenn das Arduino-Board ohne Netzschalter direkt an eine Stromquelle angeschlossen ist, z.B. beim Anschluss an den PC über USB. Damit lassen sich die Koordinaten in der Konsole der Arduino-Entwicklungsumgebung ansehen.

Schließlich ermöglicht die Box das Zurücksetzen aller Zähler über einen speziellen Reset-Befehl. Nachdem die gespeicherten Koordinaten an den PC gesendet wurden, hört die Box auf eingehende Zeichen auf dem seriellen Gerät. Wenn die Zeichenkette reset gefunden wurde, werden alle Zähler auf 0 gesetzt. Um diesen Befehl an die Box zu senden, muss die Konsole in der Arduino IDE geöffnet sein und reset gefolgt von der Entertaste eingegeben werden.