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 |
Best view: use a W3C compatible HTML-browser.
Curious view: use an Editor!