Inhaltsverzeichnis:
- Schritt 1: Hardwareliste
- Schritt 2: Werkzeuge
- Schritt 3: Hardware zusammenbauen
- Schritt 4: Optimieren Sie das Timing
- Schritt 5: Die Software
- Schritt 6: Konfigurieren Sie die Software
- Schritt 7: So funktioniert die Software
- Schritt 8: Führen Sie es aus
- Schritt 9: Zukünftige Richtungen
Video: Gezeiten- und Wetteruhr - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
Obwohl Sie analoge Gezeitenuhren kaufen können, die einen einzigen Zeiger haben, der anzeigt, ob Ebbe oder Flut oder irgendwo dazwischen ist, wollte ich etwas, das mir sagt, zu welcher Zeit Ebbe sein wird. Ich wollte etwas, auf das ich schnell einen Blick werfen konnte, ohne es einschalten oder irgendwelche Knöpfe drücken oder warten zu müssen. Und ich wollte etwas mit langer Akkulaufzeit. Also habe ich ein TTGO T5-Board verwendet, das ein ESP32-basiertes Board mit einem 2,13 E-Paper-Display ist, das mit einem TTL5110-Chip verbunden ist. Der TPL5110 schaltet den T5 alle 2,5 Stunden ein und der T5 lädt einmal täglich Gezeitendaten von NOAA- und Wetterdaten von OpenWeatherMap, zeigt die Daten auf dem E-Paper an und weist dann den TPL5110 an, den T5 auszuschalten.
UPDATE (25.02.2020) Die Gezeitenuhr läuft jetzt seit einem Jahr und die Batterie hat 4,00 Volt, also könnte die Uhr noch viele Jahre laufen.
Schritt 1: Hardwareliste
TTGO T5-Board $17
Adafruit TPL5110-Brett $ 5
Adafruit Perma-Proto Quarter-Size-Board (optional) 0,71 USD (Mindestbestellwert 8,50 USD)
Li-Poly-Akku 1200 mAh $ 10 (oder eine andere geeignete Stromquelle)
JST PH 2-Pin-Kabel – Steckerleiste $0.75
220 uF Kondensator
Schritt 2: Werkzeuge
Lötkolben
Abisolierzangen
Li-Po-Ladegerät wie dieses.
Schritt 3: Hardware zusammenbauen
Der Zusammenbau der Hardware ist ziemlich einfach, wie der Schaltplan zeigt. Ich habe ein Adafruit Perma-Protoboard verwendet, das wie ein normales Protoboard ist, außer dass es wie ein Steckbrett ausgelegt ist, mit den gleichen elektrischen Anschlüssen wie ein Steckbrett, was schön ist. Da ich nur wenige Anschlüsse benötigte und die ganze Baugruppe in eine kleine Schachtel passen wollte, viertelte ich eines der Bretter mit einer Dremel Trennscheibe.
Der 220 uF Kondensator ist sehr wichtig. Ohne sie wird der TPL5110 den T5 niemals einschalten. Es ist ein wenig unklar, warum, aber andere Leute, die den TPL5110 verwenden, hatten das gleiche Problem. Vielleicht zieht der ESP32 beim Start mehr Strom als der TTL5110 liefern kann?
Verdrahten Sie die Batterie nicht. Verwenden Sie das JST-PH-Kabel, damit Sie den Akku zum Aufladen trennen können. Es gibt möglicherweise eine Möglichkeit, den Akku vom T5 über den TPL5110 wieder aufzuladen, wenn der TPL5110 "an" ist, aber ich kann für diese Technik nicht bürgen.
Ich habe eine Holzkiste als Gehäuse gemacht, aber alles mit minimalen Innenmaßen von 1,5 "x 2,75" x 1" würde funktionieren.
Schritt 4: Optimieren Sie das Timing
Die TPL5110-Platine verfügt über ein Trimmpotentiometer, das das Zeitintervall festlegt, in dem die TPL5110 aufwacht. Verwenden Sie einen kleinen Schraubendreher, um diesen ganz gegen den Uhrzeigersinn zu drehen. Auf meinem Board wurde das Intervall auf 145 Minuten eingestellt, was tatsächlich mehr als das angegebene Maximum von 120 Minuten ist, aber es funktioniert und war konsistent und spart noch mehr Energie als alle 120 Minuten aufzuwachen, also habe ich es verwendet. Sie müssen das Intervall nicht genau kennen, da das Ziel nur darin besteht, ungefähr einmal am Tag ungefähr gegen 4 Uhr morgens Daten herunterzuladen. Sie können das Intervall (z. B. 145 Minuten) und die Aufwachzeit (z. B. 4 Uhr morgens) in env_config.h angeben.
(Wenn Sie das Timing für ein anderes Projekt besser kontrollieren möchten, hat die TPL5110-Platine auf der Rückseite eine Spur, die Sie abschneiden können, um das Potentiometer zu deaktivieren. Dann schließen Sie einen Widerstand an den Delay-Pin an, und der Widerstand bestimmt das Intervall gemäß dieses Diagramm.)
Schritt 5: Die Software
Sie benötigen die Arduino IDE mit dem ESP32-Paket. Stellen Sie in der IDE Ihr Board auf "ESP32 Dev Module" ein.
Die Skizze ist unter https://github.com/jasonful/Tides verfügbar und erfordert 3 Bibliotheken:
- "ESP8266 Weather Station", erhältlich über den Arduino Library Manager (oder hier). Sie benötigen nur diese 6 Dateien: ESPHTTPClient.h, ESPWiFi.h, OpenWeatherMapCurrent.cpp, OpenWeatherMapCurrent.h, OpenWeatherMapForecast.cpp, OpenWeatherMapForecast.h und können den Rest löschen.
- "Json Streaming Parser" verfügbar im Arduino Library Manager (oder hier)
- https://github.com/LilyGO/TTGO-Epape-T5-V1.8/tree/master/epa2in13-demo Auch wenn der Code nicht als echte Bibliothek verpackt ist, können Sie ihn einfach in Ihr Bibliotheksverzeichnis kopieren und einschließen es.
Schritt 6: Konfigurieren Sie die Software
Es gibt mehrere Parameter, die Sie in der Datei env_config.h festlegen müssen (und einige, die Sie möglicherweise festlegen möchten), darunter:
- WLAN-SSID und Passwort
- NOAA-Stations-ID (mit anderen Worten, wo sind Sie)
- OpenWeatherMap AppID, für die Sie sich registrieren müssen (einfach und kostenlos)
- OpenWeatherMap LocationID (wieder wo bist du)
- CONFIG_USE_TPL5110, mit der Sie einen T5 ohne TPL5110 verwenden können. Stattdessen wechselt die Software in den Tiefschlafmodus. Das T5 Board zieht im Tiefschlaf ca. 8 ma, daher würde ich nur mit einer Akkulaufzeit von ein paar Tagen rechnen.
Schritt 7: So funktioniert die Software
(Sie können diesen Teil überspringen, wenn es Ihnen egal ist.)
Das Ziel ist, einmal am Tag aufzuwachen, aber da das maximale Intervall des TPL5110 nur etwa 2 Stunden beträgt, muss der T5 häufiger aufwachen. Nachdem es Gezeiten- und Wetterdaten heruntergeladen hat, berechnet es also, wie viele dieser 2-Stunden-Intervalle zwischen jetzt und morgen früh um 4:00 Uhr liegen. Dies wird etwas kompliziert durch die Tatsache, dass der TPL5110 den Strom zum T5 vollständig unterbricht, was gut für den Akku ist, aber es bedeutet, dass wir RAM und die Echtzeituhr verlieren. Es ist, als würde man jeden Morgen mit Amnesie aufwachen. Um herauszufinden, wie spät es jetzt ist, extrahiert es sie aus dem HTTP-Header von NOAA. Und um sich daran zu erinnern, wie viele 2-Stunden-Intervalle noch übrig sind, schreibt es diesen Zähler in den nichtflüchtigen Speicher (Flash). Jedes Mal, wenn er aufwacht, überprüft er diesen Zähler, dekrementiert ihn, speichert ihn, und wenn er größer als Null ist, sendet er sofort ein Signal an den TPL51110 ("Fertig"), um ihn in den Ruhezustand zu versetzen. Wenn der Zähler null erreicht, lädt der Code neue Daten herunter, berechnet den Zähler neu und setzt ihn zurück.
Schritt 8: Führen Sie es aus
Stellen Sie sicher, dass sich der Schalter auf der linken Seite des T5 in der oberen (ein) Position befindet, laden Sie die Skizze auf den T5 hoch und innerhalb weniger Sekunden sollte der Bildschirm mit Gezeiten- und Wetterinformationen aktualisiert werden.
Wenn Sie die Software debuggen müssen, ändern Sie "#define DEBUG 0" oben in Tides.ino in "#define DEBUG 1". Dadurch wird die serielle Debug-Ausgabe aktiviert und unten im E-Paper wird auch die Anzahl der verbleibenden Neustarts angezeigt, bevor neue Daten heruntergeladen werden, und die Zeit, zu der die Daten zuletzt heruntergeladen wurden.
Schritt 9: Zukünftige Richtungen
- Die Verwendung des TPL5110 in Kombination mit einem E-Paper-Display ist eine großartige Möglichkeit, Daten, die sich nicht oft ändern, mit hervorragender Akkulaufzeit anzuzeigen.
- Als ich dies entworfen habe, habe ich überlegt, das TrigBoard zu verwenden, das ein ESP8266-Board mit einem TPL5111 an Bord ist. Es hätte ein separates E-Paper-Display und eine E-Paper-Treiberplatine wie dieses oder dieses erfordert. Oder eine Treiber+Board-Kombination wie diese oder diese. Um den Code auf ESP8266 zu portieren, muss der SSL-Code meiner Meinung nach Fingerabdrücke anstelle von Zertifikaten verwenden, und der nichtflüchtige Speichercode muss EEPROM- oder RTC-Speicher verwenden.
- Ich habe kürzlich gehört, dass das Lolin32-Board im Tiefschlafmodus ziemlich anständig ist: etwa 100uA. Nicht so gut wie das TPL51110-Board (20uA laut Adafruit), aber gut genug.
- OpenWeatherMap gibt viel mehr Wetterdaten zurück, als ich zeige. Einschließlich Symbol-IDs, die es erfordern würden, irgendwo monochrome Symbole zu finden.