Das Bild in diesem Blogbeitrag wurde von Stable Diffusion erstellt.

Was braucht man für eine Geocaching-Box, die nur bei Sonnenuntergang geöffnet werden kann? Eine Box, einen Taster, ein elektronisches Schloss, eine elektronische Uhr und einen Mikrocontroller, der alles miteinander verbindet.

Motivation

Vor einigen Jahren habe ich einen Geocache versteckt, der nur bei Sonnenaufgang gefunden werden konnte. Man musste nach einem Bluetooth-Sender Ausschau halten, der nur bei Sonnenaufgang aktiv war. Der Bluetooth-Gerätename des Senders enthielt die Koordinaten der Finalbox. Im Oktober 2021 stahl dann jemand den solarbetriebenen Bluetooth-Sender, sodass der Cache archiviert werden musste.

Sollte ich mir also eine Fortsetzung einfallen lassen? Da es für Geocacher offensichtlich ziemlich anstrengend war, bei Sonnenaufgang schon unterwegs zu sein, habe ich über einen Geocache nachgedacht, den man nur bei Sonnenuntergang finden kann. Dann wurde ich auf eine Möglichkeit hingewiesen, ein elektronisches Schloss mit einem Servo und einigen 3D-gedruckten Teilen zu realisieren. Hatte ich schon erwähnt, dass ich seit kurzem stolzer Besitzer eines 3D-Druckers bin? Und damit begann das Projekt.

Elektronische Schlösser

Elektromagnetische Schlösser, wie auf dem linken Bild zu sehen, benötigen 12 V und 1-2 A. Das ist nicht das, was man in eine kleine Cachebox stecken will. Eine Alternative ist es, Schlösser zu bauen, die von Servos gesteuert werden. Der Vorteil ist, dass Servos (siehe rechtes Bild) mit 4-6 V arbeiten und normalerweise maximal 200-300 mA benötigen. Allerdings ist ein Servomotor allein noch kein Schloss, und man muss sich einen Schließmechanismus ausdenken. Die meisten solcher Schlösser verwenden einen Riegelmechanismus, wie z.B. den, der in der Reverse-Geocache-Box von Mikal Hart eingesetzt wird.

Servobetätigtes Riegelschloss in der originalen Reverse-Geocache-Box

Während ein solches Schloss gut genug ist, wenn die Box ein einziges Mal geöffnet werden soll, wird es schwierig, wenn die Box ein paar Mal ver- und entriegelt werden soll. Man muss die Position des Deckels kennen, um das Schloss einrasten zu lassen, was die Konstruktion etwas anfällig macht.

Wie bereits erwähnt, hat mich jemand auf einen 3D-gedruckten Verriegelungsmechanismus hingewiesen, der sehr überzeugend aussieht.

Verriegelungsmechanismus (kopiert von https://www.thingiverse.com/thing:4737545)

Das Gute an diesem Mechanismus ist, dass man das Schloss schließen kann, wenn die Schlossfalle in der verriegelten Position ist. Das musste ich natürlich sofort ausprobieren.

Ein paar Stunden später war das Schloss gedruckt und an der Innenseite einer Box angebracht. Zusätzlich öffnet eine Feder den Deckel, wenn die Schlossfalle in der offenen Position ist. Die einzige Anpassung, die notwendig war, bestand darin, den Nocken auf 97% zu verkleinern, damit er auf die Servoachse passt.

Proof of Concept

Elektronische Komponenten

Was braucht man noch, nachdem das Schloss eingebaut ist? Wie bereits erwähnt, brauchen wir zusätzlich eine Uhr und einen Controller. Ich habe mich für den ATtiny1634 als MCU entschieden, weil ich von denen noch einige in meiner Grabbelkiste habe, weil er mehr Flash-Speicher hat als die meisten anderen klassischen ATtinys und weil er energieeffizient ist.

Als Echtzeituhr habe ich die RV8803 von Micro Crystal ausgewählt, die ziemlich beeindruckende Eigenschaften hat. Sie garantiert 3 ppm über den gesamten Temperaturbereich von -40 bis +85 °C, ermöglicht die Einstellung des Alterungs-Offsets und verbraucht nur 240 nA. Von Sparkfun gibt es ein Breakout-Board mit diesem Chip, das viel teurer ist als die billigen DS3231-Boards. Dafür erhält man aber garantierte Qualität anstelle von fragwürdigen Chips, die oft außerhalb ihrer Spezifikationen liegen.

Da ich den Frequenzzähler FA-2 von BG7TBL besitze, konnte ich den Alterungs-Offset der RTCs einstellen.

Messung der (Nicht-)Abweichung vom 1Hz-Signal (siehe Avg. Zeile)

Ich habe jetzt eine Kurzzeit-Genauigkeit für das 1-Hz-Taktsignal der RTC von weniger als 0,1 ppm, wie der Frequenzzähler nach 100 Messungen mit einer Torzeit von 10 Sekunden anzeigt. Fantastisch! Ich gehe dennoch von einer möglichen Abweichung von 3ppm aus, was bedeutet, dass das Akzeptanzintervall der Box um ±2 Sekunden pro Woche wächst.

Zusätzlich zu der MCU und der RTC habe ich noch ein MP3-Modul eingebaut. Ich habe das FN605-M1 verwendet, das nicht mehr hergestellt wird, von dem ich aber noch einige rumliegen habe. Das Modul gibt eine kurze Ablehnungsmeldung aus, wenn jemand versucht, die Box zur unpassenden Zeit zu öffnen, und es gibt einen wortreichen Gruß aus, wenn der Geocacher die Box bei Sonnenuntergang öffnet. Das MP3-Modul und der Servo werden jeweils mit einem P-Kanal-FET (IRML6402) als High-Side-Schalter geschaltet, der nur bei Bedarf Strom liefert – womit die Zutatenliste komplett ist.

Software

Die Software ist ziemlich einfach. Die meiste Zeit befindet sich die MCU im Energiesparmodus und wacht nur auf, wenn die Taste gedrückt wird. In diesem Fall muss die MCU prüfen, ob wir den Sonnenuntergang erreicht haben. Wenn ja, öffnet sich die Box, und das Sprachmodul unterhält den erfolgreichen Geocacher. Andernfalls leuchtet die rote LED auf und eine Stimme sagt dem Geocacher, dass es nicht der richtige Zeitpunkt ist. Wenn der Geocacher die Taste zu oft kurz hintereinander drückt, wird die Box still (um Batteriestrom zu sparen).

Die Berechnung der Sonnenuntergangszeit ist also die wichtigste Aufgabe. Es gibt Arduino-Bibliotheken, die die Sonnenuntergangszeiten berechnen können. Oder man programmiert die Zeitgleichung selbst. Unabhängig davon, für welche der beiden Optionen man sich entscheidet, wird durch diesen Teil des Programms ein beträchtlicher Teil des Flash-Speichers verbraucht, da einige Fließkomma-Bibliotheken importiert werden müssen. Da das Programm bereits eine Reihe von anderen Bibliotheken benötigt und außerdem Code für der Protokollierung, Hardwareüberwachung, Wartungsfunktionen und eine geheime Hintertür vorgesehen war, musste ich den Speicherbedarf reduzieren.

Also habe ich ein C-Programm für meinen Mac geschrieben, das die Sonnenuntergangszeiten für alle Tage des Jahres an der Stelle, an der die Cache-Box versteckt wird, generiert, die ich dann in ein PROGMEM-Array geschrieben habe. Dies führte zu einer Reduzierung des Flash-Speichers um etwa 3 KB.

Alles in allem verbrauchte der Programmcode am Ende fast den gesamten Flash-Speicher von 16 KB.

Strombedarf und Batterielebensdauer

Eine entscheidende Frage ist natürlich, welche Art von Batterie man verwendet. Wie bereits an anderer Stelle erwähnt, sind meine Lieblingsbatterien 3,6-Volt-Li-SOCI2-AA-Zellen. In diesem Fall sind sie jedoch nicht gut genug. Diese Batterien sind zwar sehr langlebig und haben eine hohe Kapazität, aber sie kommen nicht gut mit Impulsströmen von einigen hundert mA zurecht. Aus diesem Grund habe ich mich für drei 1,5-Volt-Lithium-AA-Zellen entschieden, die eine Kapazität von 3000 mAh haben. Die anfängliche Leerlaufspannung ist 1,8 V pro Zelle. Mit anderen Worten, die Anfangsspannung kann 5,4 V betragen, was gerade noch innerhalb der Spezifikationen der MCU und der RTC liegt. Nach einigen Minuten der Nutzung haben die Batterien eine Leerlaufspannung von etwa 1,6 V, die nur dann unter 1,5 V fällt, wenn die Batterie fast leer ist. Bei erheblicher Belastung (etwa 200-300 mA) kann die Spannung um 0,3-0,4 V niedriger sein. 3,6 V reichen jedoch immer noch aus, um den Servo zu betreiben und das MP3-Modul anzusteuern. Das alles bedeutet, dass wir ohne Spannungsregler auskommen und dass der Ruhestrom durch MCU und der RTC im Energiespaprmodus dominiert wird, der in der Summe weniger als 0,5 µA beträgt (siehe Bild unten). Geht man von einer Selbstentladungsrate von 1%/Jahr oder weniger für die Lithium-Batterien aus, ist dies deutlich weniger als der äquivalente durchschnittliche Selbstentladungsstrom von 3,4 µA.

Ruhestrom von MCU und RTC

Auf diese Weise wird die Cache-Box nach 10 Jahren 340 mAh durch Nichtstun verbraucht haben. Wenn wir davon ausgehen, dass wir die Batterien bis zu 2500 mAh verwenden können, bleiben uns 2160 mAh für die Besuche der Geocacher.

Die Berechnung des Stromverbrauchs für einen Besuch gestaltet sich schwieriger, weil der Servo und das MP3-Modul einen stark schwankenden Strombedarf haben. Eine sehr grobe Schätzung für jeden erfolgreichen Besuch könnte wie folgt aussehen. Der Servo ist vielleicht 5 Sekunden lang aktiv und verbraucht wohl ca. 200 mA. Außerdem verbraucht das MP3-Modul 1 Minute lang rund 200 mA, was in der Summe 3,6 mAh entspricht. Es gibt jedoch eine genauere Methode, um die benötigte Ladung zu bestimmen. Man könnte ein Coulomb-Zähler verwenden.

Ich besitze ein LTC4150 Breakout-Board, mit dem man Coulombs zählen kann. An den Prototyp angeschlossen ergab sich, dass ein Besuch 2,0 mAh verbraucht (statt 3,6 mAh wie zuvor geschätzt). Das bedeutet, dass 1080 Besuche möglich sein sollten. Ein erfolgloser Besuch könnte bis zu 0,17 mAh verbrauchen. Wenn man davon ausgeht, dass auch erfolglose Besuche möglich sind, und man auf Nummer sicher gehen will, sollte man die Batterien nach 600 erfolgreichen Besuchen oder nach 10 Jahren austauschen, je nachdem, was früher eintritt.

Cachebox-Prototyp

Nachdem ich die Elektronik auf einem Breadboard entwickelt und die Software geschrieben habe, besteht der letzte Teil darin, alles in eine Box zu packen. Ich habe mit einem Prototyp begonnen, wie auf dem nächsten Bild zu sehen ist.

Dieser Prototyp ist bereits voll funktionsfähig, wie man im folgenden Video sehen kann, das um die Zeit des Sonnenuntergangs herum (simuliert in der RTC) aufgenommen wurde.

Es ist eindeutig noch etwas Feinschliff erforderlich. Es muss noch eine Leiterplatte entworfen werden, und das Gehäuse sollte kleiner und schöner sein. Außerdem habe ich den Verriegelungsmechanismus erneut gedruckt, diesmal aus PETG, das robuster ist als PLA.

Die endgültige Box

Nachdem ich die Leiterplatte entworfen und die Designdaten an eine Leiterplattenfabrik geschickt hatte, kamen die Leiterplatten nur wenige Tage später an. Schnell den Lötkolben gezückt und alle Komponenten auf die Platine gelötet. Ein erster Test der Funktionalität zeigte, dass alles wie erwartet funktionierte. Dieses Mal brauchte ich nicht einmal einen zusätzlichen Draht!

PCB

Jetzt muss die Platine nur noch in ein schönes Schatzkästchen eingebaut werden. Und ich habe auch noch eine Abdeckung für die Elektronik entworfen, die gleichzeitig als Front für den Lautsprecher dient. Dies ist übrigens das erste 3D-gedruckte Teil, das ich entworfen habe. Zur Information: Ich habe dafür Tinkercad verwendet, und es war für jemanden, der sich noch nie mit 3D-Design beschäftigt hat, relativ schmerzfrei.

Die fertige Box

Nun, am Ende gab es ein kleines Problem. Der Rahmen für den Servo, den ich mit dem Verriegelungsmechanismus verklebt hatte, löste sich. Der Kleber, den ich verwendet hatte, E6000 Plus, ist offensichtlich gut genug für PLA, aber nicht für PETG. Nach einigem Googeln habe ich Top2Glue Medium bestellt, das für diese Aufgabe besser geeignet zu sein scheint.

Alles in allem bin ich beeindruckt, was man mit einem 3D-Drucker so alles machen kann. Von der Idee, den Schlossmechanismus einzusetzen, bis zur fertigen Box hat es nur drei Wochen gedauert, einschließlich einiger Tage Wartezeit für die Leiterplatte, fehlende Werkzeuge oder Klebstoff. Und jetzt hoffe ich, dass die Geocacher Freude an der Box haben werden, wenn sie sie finden..

Views: 45