Vor vielen Jahren habe ich mal eine Stand-Alone Wetterstation mit Außensensor geschenkt bekommen und diese hat eigentlich auch immer gut ihren Dienst getan. Jetzt ist vor ein paar Wochen leider der Außensensor an einem Wasserschaden gestorben. Natürlich funktioniert die Wettervorhersage immer noch, aber ohne Außentemperatur ist das Gerät für mich nicht mehr “vollständig” 😉 – und schon war das nächste Projekt geboren.
Folgende Anforderungen habe ich festgelegt:
- Möglichst größer Bildschirm (mindestens 7.5″)
- Batteriebetrieb
- Anbindung meiner KNX Wetterstation
- Anzeige von Temperaturen im Haus (zur Kontrolle der Fußbodenheizung)
- Verlässliche Wettervorhersage
- Schönes Gehäuse, so dass man es außerhalb des Bastelzimmers aufstellen kann
Nach etwas Recherche viel meine Wahl auf ein 7.5″ E-Ink Display von Waveshare (mit weiß, schwarz und roter Farbe). Passenderweise hat Waveshare auch gleich ein ESP32 Board mit entsprechenden Connector/Treiber im Angebot. Der ESP32 hat auch genug RAM, so dass Grafiken und auch die Videobuffer im RAM Platz finden können.
Scheinbar ist schon vor mir jemand auf eine ähnliche Idee gekommen, denn bei Thingiverse gibt es ein schönes und vor allem exakt für meinen Bildschirm passendes Gehäuse. Es hat auch hinten genug Platz für Elektronik und Batterie. Ich habe es allerdings in weiß gedruckt.
Bzgl. Elektronik ist dieses Projekt schnell zusammengesteckt: ESP32 Board mit Display verbinden (Flachbandkabel ist dabei) und eine 3V Lithium Batterie, die ich noch rumliegen hatte, mit dem ESP32 verbinden. Das Display begnügt sich auch mit den 3V, so dass die ganze Installation nun über die Batterie funktioniert.
Lithium Batterien
Egal ob zwei 1,5V Lithium-Batterien in Reihe oder wie in meinem Fall eine CR123(A) 3V Lithium-Batterie: mit Lithium-Batterien läuft die Station super (mit normalen Batterien nicht) und ich nutze sie für µC Anwendungen fast immer. Lithium Batterien halten nämlich ziemlich konstant eine Spannung von 3V. Ab ca. 2,7 V sind dann auch schon über 90% der Kapazität verbraucht und bei ca. 2,55 V ist sie praktisch leer. Auch kurzfristigen großen Strombedarf, wie z.B. bei WLAN oder Bluetooth Betrieb, liefern Lithium-Batterien ohne Probleme. Zusätzlich haben Lithium-Batterien auch noch eine sehr geringe Selbstentladung.
Stromverbrauch
An meinem Labornetzteil habe ich den Stromverbrauch beim Refresh gemessen:
Ingesamt dauert der Vorgang ca. 55 Sekunden.
Maximal werden 137mA gezogen, im Mittel über die 55 Sekunden sind es 41mA.
Im Deepsleep sind es aber immer noch 0,36mA, obwohl der ESP32 eigentlich nur ca. 7µA ziehen sollte. Das liegt wohl an dem Entwicklungsboard. Obwohl ich den ESP32 in Tiefschlaf versetze, scheint auf der Platine noch immer etwas Strom zu ziehen. Vermutlich werde ich die Schaltung nochmal ohne Entwicklungsboard aufbauen müssen.
Bei 0,36mA Standby-Strom komme ich mit den 2500mAh Batterien ungefähr auf 2500mAh/0,36mA=6944h = 289 Tage
Einmal pro Stunde zieht er für eine Minute im Mittel 41mA. Das heißt ich sollte mit einer Batterie ca. 3/4 Jahr hinkommen.
Das reicht für den Anfang, aber ich werde auf jeden Fall noch eine alternative Platine bauen.
Die Software
Elektrik wäre damit (erstmal) erledigt und auch ein Gehäuse musste nicht designed werden. Aber die Software hatte es in sich. Zwar programmiere ich recht oft Microcontroller, jedoch haben die meisten Projekte keine 100 Zeilen. Dieses hier ist eines der umfangreicheren Programme auf Arduino-Basis.
Der Programmablauf ist wie folgt:
- WLAN Verbindung herstellen
- Wetterbericht von https://openweathermap.org/ holen (REST-API, Ergebnis kommt als JSON, Dienst ist für wenige Abfragen kostenlos)
- KNX Daten von Homeserver lesen (ab Firmware 4.7 spricht dieser auch (simples) REST)
- Aktuelle Uhrzeit von http://worldtimeapi.org/ holen (wird nur zur Info mit ausgegeben)
- Schöne, mit Informationen vollgepackte Oberfläche zeichnen
- ESP32 einschlafen lassen
Das Ergebnis sieht dann wie folgt aus.
Wie immer gibt es das Programm hier: Arduino Wetterstation Code