Das Funk-Außenthermometer in der Küche zeigt 29.0°C Außentemperatur. Das Mistding lügt: draussen sind es grade mal 12°C! Ich habe mehrer dieser Schätzeisen. Blöderweise funktionieren die alle mur mäßig. Ganz oft bekommt der Empfänger kein Signal und ich sehe nur Striche. Oder die angezeigte Temperatur hat nix mit der Wirklichkeit zu tun. Und dann muss ich auch alle paar Wochen die Batterien wechseln.
Viel zuverlässiger als Funk ist ein Stück Kabel. Da ich von einer anderen Bastellei noch ein paar digitale Temperaturfühler DS18b20 rumliegen hatte, kam so einer draußen unter das Fensterbrett.
Mit dünnem Flachbandkabel ging es durch das Fenster und so konnte ich den Fühler an einen Arduino-pro-Mini anschließen.
Als Anzeige diente eine 8-stellige Siebensegmentanzeige mit Max7219 Chip drauf.
Für den Temperatursensor und die Anzeige gibt es fertige Libraries für den Arduino,
so dass die Software nur wenige Zeilen lang war. Da ich nur 1 Display habe, habe
ich mir die LED-Library für den Max7219 so umgeschrieben, dass man keine DisplayNr
braucht (Quellcode im
Download). Als Stromversorgung
dient ein unter Dauerbestromung stehendes Radio mit 1,4A Netzteil. Da konnte ich locker etwas
Saft abzweigen. Eine Step-Down-Wandler Platine macht aus dem 9V Radiosaft saubere 5V.
Außer
dem Arduino, der LED-Anzeige und dem Step-Down Wandler braucht man nur noch einen 4,7KOhm Widerstand
als Pull-Up für den Temperatursensor. Den habe ich direkt auf den Arduino gelötet.
Für die Elektronik habe ich dann ein 3-teiliges
Gehäuse mit leicht angeschrägter
Front entworfen und in schwarz ausgedruckt.
Die Elektronik passt genau rein:
Das Gehäuse ist hinten an das Radio gespaxt.
So sieht das von vorne aus
Da ich maximal 4 Stellen für die Temperatur brauche, ist ja nur das halbe Display benutzt. Daher habe ich noch eine Historie eingebaut, die mir die niedrigste Temperatur der letzten 24h anzeigt. Damit weiß ich also, wie kalt es nachts draussen ist.
Womit ich nicht gerechnet hatte war die
Reaktion meiner Frau:
Statt Begeisterung war sie entsetzt.
Das
schöne Radio so zu verunstalten!
Das ein eckiger Kasten am Radio
mit so schönen Rundungen hängt war wohl eine Beleidigung für das ästhetische
Empfinden.
Und was soll der Blödsinn mit der tiefsten Temperatur?
Sie meinte, die Nachttemperatur wäre doch völlig unwichtig. Sie
würde viel lieber wissen, wie warm es wird, damit sie sich
entsprechend kleiden kann.
Umpf. Kopfkratz.
Gut, das
ist mal eine Herausforderung!
Ich muss also irgendwie an die Wettervorhersage kommen. Da bietet sich das Internet an. Unter Wetter.de kann man seinen Ort angeben und dann müsste ich nur noch die Höchsttemperatur aus der Website fischen. Die erste Idee war, eine Raspberry-Pi mit WLAN-Stick mit der Aufgabe zu betrauen. Bei der Wetter-Recherche bin ich drauf gestoßen, dass openweathermap.org die Möglichkeit bietet, die Wettervorhersage der nächsten 5 Tage im 3 Stunden Raster für jeden Ort abzurufen. Und das in prima maschinenlesbarer Form (JSON, XML). Per default kommen die Temperaturen in Kelvin und das Ergebnis in JSON. Das kann man aber auf Celsius und XML umstellen. So liefert eine Anfrage an api.openweathermap.org/data/2.5/forecast?q=Aachen&units=metric&mode=xml
Ich brauche also nur nach dem richtigen Zeitpunkt suchen und mir die Temperatur auslesen:
Das schafft auch der bereits verbaute kleine Arduino. Um den ans Internet zu bekommen dient eine geniale Platine: ESP-8266-01. Das Teil wird zur Zeit bei eBay haufenweise ab 2,56€ aus China angeboten und bietet WLAN mit serieller Schnittstelle. Recht simpel zu bedienen und mit nur 4 Drähten angeschlossen. Leider läuft die Anzeige mit 5V und das WLAN-Modul mit 3,3V. Also habe ich ein kleines Low-Drop-Spannungsregler-Modul (AMS1117) zwischen gehängt.
Hier mal der Gesamtaufbau:
Von links nach rechts im Uhrzeigersinn: 7-Segmentanzeige mit Max7219, Arduino-pro-Mini, darunter im weißen Schrumpfschlauch der 3.3V Spannungsregler, dann der Step-Down-Wandler und unten rechts der ESP-8266-01
Die ESP8266 Platine hat einen eigenen Prozessor drauf. In meine Version hat
der Chinese eine etwas merkwürdige Firmware gepackt. Sie meldet sich nicht mit READY wenn
der Chip bereit ist, sondern mit INVALID. Daher habe ich Anfangs gedacht ich hätte irgendwas
falsch gemacht. Aber da das Ding ansonsten genau das macht was es soll ist das wohl nur ein Witz
des Programmierers.
Wenn man
meine Software benutzt muss
man diesen String also eventuell anpassen.
Meine Software holt sich nun den Max-Vorhersagewert für den Zeitraum 12-15Uhr und zeigt ihn in der linken Displayhälfte an.
Blieb das Gehäuse: Mit SCAD habe ich ein Gehäuse mit gleichem Rundungsradius wie das Radio konstruiert und ausgedruckt.
So sieht das jetzt aus:
Innen ist schön viel Platz:
Das WLAN-Modul hängt links an der Wand:
Hier der Schaltplan (größer im Download-Archiv):
Nun steht das Thermometer als kleiner Bruder neben dem Radio.
Und meine Frauen finde es super, das
das Ding schon am Abend vorher anzeigt, wie warm es Mittags wird. Und ich freue mich
über die geänderte Bewertung:
Schaltplan, Quellcode und 3D-Drucker Dateien
des Thermometers: 155wlanthermometer.zip
Kommentieren | Startseite |
Diese Seiten sind darauf optimiert mit möglichst jedem Browser zu funktionieren.
Aber der Seitenquelltext (strg-U) sieht auch interessant aus, zumindest wenn man ihn mit einem Monospace Font in sehr kleiner Schriftgröße betrachtet.