IoTA


Internet of Things Automation und das lernende Smart Home

Geocache Transposed - Teil 4

Die Software

Dies ist Teil 4 über den Bau eines Geocache Transposed (GCT), einer verschlossenen Box, die nur an einem geheimen Ort geöffnet wird. Der folgende Beitrag zeigt, wie die Software, die das Arduino-Mikrocontroller-Board steuert, konfiguriert wird. Teil 1 der Serie ist hier zu finden: GCT Teil 1

Die Software ist unter der CC BY-NC-SA 3.0 Lizenz auf Github veröffentlicht: https://github.com/stmichaelis/geocachet

Zusätzliche Bibliotheken

Der Quellcode benötigt mehrere Bibliotheken, die in der Arduino-Entwicklungsumgebung installiert werden müssen, die alle vom ursprünglichen Erfinder der Idee des umgedrehten Geocaches bereitgestellt werden:

Konfiguration

Die Software ist komplett lauffähig1, dennoch müssen natürlich mindestens die Standorte konfiguriert und überprüft werden, ob die Pin-Einstellungen zur Verkabelung passen.

Einstellungen, die angepasst werden müssen, sind im Quellcode mit TODO gekennzeichnet. Das Float-Array target_latlon nimmt Koordinatenpaare für die Reihenfolge der Ziele, die erreicht werden müssen, um die Box zu öffnen. Die ursprüngliche Box verwendete nur ein einziges Ziel; die Verwendung von mehr als einem erinnert aber eher an die klassische Schnitzeljagd.

Das Array target_dev liefert eine maximale Abweichung in Metern um jede Zielposition herum. Wenn die Box innerhalb des Kreises um das Ziel mit diesem Wert als maximale Abweichung aktiviert ist, gilt die Position als erreicht. Ich habe mich dazu entschieden, verschiedene Abweichungen für jedes Ziel konfigurieren zu können, da einige Ziele eine punktgenaue Landung erfordern sollen, während andere durch eine entspannte Positionierung leichter erreichbar sind. Die Größe dieses Arrays muss natürlich der Anzahl der Ziele entsprechen. Ist die nicht der Fall wird beim Einschalten der Box eine Warnung ausgegeben.

Zu beachten ist, dass das GPS an sich eine gewisse Ungenauigkeit aufweist und die hier eingestellte Abweichung 10m nicht unterschreiten sollte. Die Konstante MAX_TRIES begrenzt die Anzahl der Aktivierungen. Wenn diese Zahl erreicht wird, bleibt die Box gesperrt. Die Begrenzung erhöht die Spannung (künstliche Verknappung erhöht den Wert) und verhindert übermäßige Versuche, die auch noch die Batterie entladen.

Die nächsten Konstanten definieren die Pins für Verbindungen zu den Geräten, die Adressen zum Speichern der Anzahl der verwendeten Versuche und einige Geokonstanten. HOME_LAT und HOME_LON markieren schließlich eine geheime Rückstellposition. Wenn an dieser Stelle aktiviert, öffnet sich die Box für einige Sekunden, so dass genügend Zeit bleibt, den Schlüssel hineinzulegen. Dann schließt diese sich wieder und setzt alle Zähler auf Null zurück. Diese Koordinaten sollten auf eine Stelle gesetzt werden, an der die Box durch den Beschenkten sehr unwahrscheinlich aktiviert wird.


  1. Das war sie zumindest einmal. Mit den neuen Versionen der genutzten Bibliotheken anscheinend nicht mehr. Aber ein Arbeitskollege hat eine aktualisierte Version der Software erstellt: http://www.thomas-liebig.eu/wordpress/building-a-geo-cache-transposed-gct/

Geocache Transposed - Teil 3

Der Zusammenbau

Dies ist Teil 3 über den Bau eines Geocache Transposed (GCT), einer verschlossenen Box, die nur an einem geheimen Ort geöffnet wird. Der folgende Beitrag zeigt, wie die Hardwareteile zusammengefügt werden.

Der GCT benötigt mehrere Ausschnitte für das Display, den Netzschalter, den Backup-Stromanschluss und eine Abdeckung für den Schlüssel zum Öffnen der Box. Alle elektronischen Teile sollten im oberen Deckel aufbewahrt werden, daher ist eine Box mit ausreichend Platz im Deckel erforderlich. Die Box, die ich benutzt habe, hat 3 cm im Inneren des Deckels, was ausreicht, um alles hineinzustellen. Der Rest der Box steht dann zur Verfügung, um die versteckten Überraschungen zu lagern.

Box mit allen Ausschnitten
Box mit allen Ausschnitten für Schlüsselfach, Einschalter, LCD und Notstrom

Die originale Puzzlebox benutzte einen von einem Servo angetriebenen Verschluss, um den Deckel geschlossen zu halten. Für meine Version habe ich mich entschieden, dieses Konzept ein wenig zu ändern: Die Sicherung der Box von innen macht Sie anfällig für Batterie- oder Programmierfehler. Im Original ermöglicht ein Backup-Stecker die Programmierung zu Umgehen und so das Öffnen der Box an beliebiger Stelle. Stattdessen habe ich die Box mit einem Vorhängeschloss verschlossen (je größer desto eindrucksvoller) und den Schlüssel in der oberen Abdeckung verstaut. So kann ich einen Ersatzschlüssel behalten, falls etwas schief geht. Der Servo entriegelt dann die Abdeckung im Inneren des Deckels und gibt den Schlüssel frei.

Nachdem die Öffnungen in die Abdeckung geschnitten wurden, werden die elektronischen Teile auf einer Platte montiert, die später die Abdeckung abdichtet und das LCD von oben sichtbar macht. Das folgende Bild zeigt das Layout auf der Platte.

Hardware Innendeckel
Aufbau der Hardware im Innendeckel

Das Verbinden der Teile ist nicht weiter schwierig. Als Stromquelle wurde eine 9V Blockbatterie verwendet. Die Batterie ist mit der Eingangsseite des Pololu-Leistungsschalters verlötet, die Ausgangsseite des Schalters mit dem Arduino verbunden. Zusätzlich ist der Druckknopf mit dem Netzschalter verbunden. Optional habe ich dem Netzschalter eine Steckdose parallel zur Stromversorgung hinzugefügt. Die Steckdose ist von außen zugänglich. Falls die interne Batterie leer ist, lässt sich eine neue einstecken und die Box ist wieder betriebsbereit. Dies ist besonders hilfreich, wenn die Box für eine neue Tour wiederverwendet wird, ohne die Batterie gegen eine neue zu tauschen.

Alle anderen Teile (LCD, Servo, GPS) sind mit den Datenleitungen an einen Ein-/Ausgangspin des Arduino angeschlossen, während die Stromversorgung über den 5V-Ausgang des Arduino-Boards erfolgt. Die Umwandlung von 9V-Eingang in 5V-Ausgang wird vom Arduino übernommen. In den meisten Fällen sollte es möglich sein, die Kabel direkt in das Entwicklungsboard einzustecken. Ausnahmen, bei denen gelötet werden muss, sind der Anschluss an den Netzschalter, der Anschluss an 5V oder die Verlängerung von Kabeln, z.B. des GPS-Gerätes. Welche Ausgangspins an die Geräte angeschlossen werden, spielt dabei keine Rolle. Diese müssen später in der Software konfiguriert werden.

Etwas schwieriger war die Gestaltung des Schlossmechanismus für den Schlüssel. Er sollte robust sein, um den Belastungen standzuhalten, aber dennoch nicht zu schwer für den Servo. Schließlich habe ich zwei Haken aus gebogenen Metallstreifen an der Schlüssellochabdeckung befestigt. Der Servo dreht einen zu einem Bogen gebogenen Metallstreifen, der in verriegelter Position in die Haken passt. Das obige Bild zeigt den Bogen in geöffneter Position, das folgende Bild die Haken an der Unterseite der Schlüssellochabdeckung.

Befestigungsklammern Innendeckel
Befestigungsklammern im Innendeckel zur Verriegelung

Das Scharnier der Schlüssellochabdeckung wird mit Nieten befestigt, um Schrauben zu vermeiden. Während die Box natürlich nicht sehr sicher sein muss, vermeide ich gerne den offensichtlichen Eindruck, dass die Box mit einem Schraubendreher geöffnet werden könnte. Wenn alles auf dem Board befestigt ist, kann es am Deckel der Box befestigt werden und wir sind bereit. Ich habe dem Board ein USB-Kabel hinzugefügt, um den Arduino neu programmieren zu können, ohne den Deckel erneut öffnen zu müssen.


Geocache Transposed - Teil 2

Die Hardware

Dies ist Teil 2 über den Bau eines Geocache Transposed (GCT), einer verschlossenen Box, die nur an einem geheimen Ort geöffnet wird. Der folgende Beitrag listet die für den Bau benötigten Teile auf.

Arduino: https://arduino.cc/ Das berühmte Arduino Open-Source-Mikrocontroller-Board bildet das Herzstück des Caches. Die Kosten für ein Standard-Entwicklungsboard liegen unter 25,-€. Geschäfte, die das Board zur Verfügung stellen, sind hier zu finden: https://store.arduino.cc/distributors

Die meisten Firmen bieten auch die anderen elektronischen Bauteile an, die für den Geocache benötigt werden. Die Website des Arduino-Projekts bietet viele Tutorials zum Anschließen von Geräten an den Controller. Der Arduino besteht aus einem ATMega328 mit 32KByte Flash für Ihr Programm und 1KByte EEPROM zur Speicherung von Werten, was viel Platz für dieses Projekt bietet. Ich habe die vorherige Version namens Duemilanove verwendet, während das aktuelle Board1 Uno heißt, aber beide sollten gut funktionieren. Der Controller selbst wird in C++ programmiert, kompiliert und auf das Board über die IDE per USB hochgeladen. Das Board verfügt über mehrere Ein-/Ausgangspins und über Buchsen zum einfachen Einstecken der Kabel. Für die meisten Teile dieses Projekts ist kein Löten erforderlich.

GPS-Empfänger: Die Koordinaten der aktuellen Position der Box werden von einem GPS-Empfänger geliefert. Jeder Empfänger, der die Daten über eine serielle Verbindung sendet, sollte funktionieren. Für diese Box habe ich den GPS-Empfänger EM-406 SiRF III von USGlobalSat verwendet. Die Kosten liegen bei ca. 40,-€. Der Empfänger verfügt über eine integrierte Antenne und kann im Inneren der Box montiert werden, sofern die Wände nicht zu dick und nicht aus Metall sind.

LCD: Das LCD zeigt Statusinformationen und - was am wichtigsten ist - die Entfernung zum Zielort an. Ich benutzte ein serielles Display mit 16x2 Zeichen, weiß auf schwarz. Die Kosten betragen ca. 22,-€, verfügbar z.B. hier: http://www.watterott.com/index.php?page=product&info=1336 Ein Display mit parallelen Anschlüssen sollte ebenfalls verwendbar sein, da wir nicht so viele Anschlüsse des Arduino für die anderen Teile benötigen. Oft sind diese Displays billiger und es gibt Bibliotheken zur bequemen Ansteuerung.

Netzschalter: Die Box sollte so viel Strom wie möglich sparen, insbesondere da die Lösung und das Öffnen Monate dauern kann. Mit einem Pololu Power Switch2, siehe http://www.pololu.com/catalog/product/750, 6,-€, kann der Arduino mit einem Druckknopf eingeschaltet werden und der Arduino kann sich selbst wieder ausschalten. Zu beachten ist, dass es zwei Versionen dieses Netzschalters gibt, Standard-Spannung (SV) von 4,5V-20V und Kleinspannung (LV) von 2,5-7,0V. Da ich eine 9V-Batterie zur Stromversorgung der Box benutzte, kam die SV-Version zum Einsatz.

Servo: Ein Servomotor wird benötigt, um die Box schließlich an der richtigen Stelle zu öffnen. Jeder Servo sollte es tun, da wir keine schweren Hebearbeiten durchführen müssen. Genutzt wurde ein Hitec HS-311 Servo, der bei einem lokalen Modellbauer für 8,-€ gefunden wurde.

Power-Taste: Zum Einschalten der Box kann fast jeder billige Druckknopf verwendet werden. Hier sollte es etwas Ausgefalleneres sein und so entschied ich mich schließlich für einen beleuchteten Edelstahlknopf. Mit 10,-€ leider nicht auf der billigen Seite: https://www.conrad.de/de/p/tru-components-gq16f-10e-j-b-12v-vandalismusgeschuetzter-drucktaster-48-v-dc-2-a-1-x-aus-ein-ip65-tastend-1-st-701855.html

Verschiedene elektronische Teile: Für den Zusammenbau sind noch diverse andere Komponente wie Kabel nötig. Ich habe auch eine Buchse für den Anschluss einer externen Batterie installiert (Man weiß nie, wie lange die integrierte hält. Und ich will nicht in der Nähe sein, falls du Hunderte von Kilometern gefahren bist, nur um die Batterie leer vorzufinden). Diese Teile summierten sich auf ca. 15,-€.

Weiterer Kleinkram: Neben den elektronischen Teilen kommt dann noch anderes Material, wie z.B. ein Vorhängeschloss, Scharniere oder Nieten hinzu. Für die Kalkulation berücksichtigen wir diese Dinge mit zusätzlichen 15,-€.

Die Box: Zu guter Letzt wird die Box benötigt, in der alles aufbewahrt wird. Das war auch der Gegenstand, der mir die größten Kopfschmerzen bereitete. Die Box sollte groß genug sein, um viele Dinge zu verstauen, aber dennoch klein genug, um bequem mitgenommen zu werden. Bevorzugt wurde Holz, da es für die Ausschnitte einfach zu handhaben ist und auch ein dezentes Aussehen haben sollte. Es dauerte Stunden, bis ich viele Geschäfte nach einer passenden Box durchsucht hatte. Ich war fast kurz davor aufzugeben, als ich eine perfekte Schachtel auf meinem Schrank sah. Etwas staubig, aber perfekt. Abgeschätzt 30,-€ falls doch eine Kiste gekauft werden muss.

Summe der Kosten: Insgesamt belaufen sich die Kosten auf mehr als 170,-€3. Nicht wirklich ein Schnäppchen, aber die Erfahrung war jeden Euro wert.


  1. Anmerkung: Wie im ersten Post beschrieben basiert diese Artikelserie auf älteren Postings noch ursprünglich bei Google+.
  2. Nicht mehr verfügbar, Alternativen sind aber verlinkt.
  3. Inzwischen sollten 10%-20% mehr veranschlagt werden.

Geocache Transposed - Teil 1

Die Schatztruhe für unterwegs

Vor langer Zeit sagte mir einmal jemand, dass der Computeringenieur ein schlechter Beruf ist - um Geschenke für Familie und Freunde zu erschaffen. Maler, sicher, diese können leicht ein Bild zeichnen und es verschenken. Musiker, ja, sie können zu einem Geburtstag eine schöne kleine Melodie spielen oder sogar eine ganze Hymne einem Freund widmen. Aber wer mag schon Überraschungen mit Computern und Software? Ich würde das auch so sehen, dass einige Optionen ein wenig geekig sein können, aber andere können für jeden geeignet sein. Einer davon ist ein Geocache Transposed (GCT, Geocachet).

Dieser Post (und die folgenden) sind die Neuauflage einer alten Serie von Mini-Postings. Ursprünglich auf Google+ und in Englisch gepostet sind diese jetzt nach dem Ende von G+ zu schade um für immer verschwunden zu sein. Die Umsetzung der Box liegt inzwischen viele Jahre zurück, die Idee dahinter ist aber zeitlos. Soweit möglich wurden Links auf ihre Gültigkeit geprüft und ggf. angepasst oder gelöscht.

Geocaching ist inzwischen ein bekanntes Hobby, das von billigeren und in Smartphones integrierten GPS-Geräten angetrieben wurde. Beim Geocaching werden die so genannten Caches an entfernten Orten ausgeblendet, während die Koordinaten öffentlich sind. Bei Verwendung eines GPS-Geräts muss der Cache gefunden und in den meisten Fällen Elemente im Cache ausgetauscht werden. Eine GCT-Box dreht dieses Konzept auf den Kopf.

Der transponierte Geocache ist der sich bewegende Cache. Wer denkt nicht gerne an die eigene Kindheit zurück, das Spiel als Piraten und die Jagd nach geheimen Schätzen. Diesmal trägst jeder die Schatzkiste mit sich herum und muss das Rätsel lösen um den richtigen Ort zu finden. Die Box selbst ist verschlossen, darin befindet sich ein GPS-Empfänger und die Box öffnet sich nur, wenn sie an einem bestimmten Ort der Welt aktiviert wird. An der falschen Stelle zeigt das Feld einfach die Entfernung zum Ziel an, so dass erraten werden muss wohin die Reise gehen soll. Der Begriff Reverse Geocache dafür und das ursprüngliche Konzept wurde 2009 von Mikal Hart geprägt: http://arduiniana.org/projects/the-reverse-geo-cache-puzzle/ Er entwarf die Box als Geschenk für die Hochzeit seines Freundes und hat damit eine Lawine verschiedener Varianten davon ausgelöst.

Der Geocachet ist ein großartiges persönliches Geschenk, für Hochzeiten, Geburtstage oder Jubiläen. Der Prozess der Erstellung einer eigenen Box, der Auswahl des geheimen Ortes und der Beobachtung der Versuche, das Rätsel zu lösen, ist an sich schon ein wunderbare Sache. Und die Box ist wiederverwendbar, wenn ein neuer geheimer Ort programmiert wird. Nachdem ich die ursprünglichen Beiträge über die Geschichte des umgekehrten Geocache gelesen hatte, musste ich meine eigene Box erstellen. Die folgenden Beiträge beschreiben meinen Prozess; vielleicht werden sie auch als Inspiration für noch weitere Puzzleboxen dienen.