Außenthermometer


-----
 

Ausgangssituation

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.  

   

Meine Lösung

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.  

[Bild(36.6k)]

Mit dünnem Flachbandkabel ging es durch das Fenster und so konnte ich den Fühler an einen Arduino-pro-Mini anschließen.  

[Bild(33.2k)]

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.  

[Bild(28.7k)] [Bild(28.0k)]

Die Elektronik passt genau rein:  

[Bild(59.6k)]

Das Gehäuse ist hinten an das Radio gespaxt.  

[Bild(41.9k)]

So sieht das von vorne aus  

[Bild(44.6k)]

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.  

[Bild(34.0k)]

 

  Womit ich nicht gerechnet hatte war die Reaktion meiner Frau:
[Bild WAF-Rot]
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!  

   

Meine bessere Lösung

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  

[Bild(79.8k)]

Ich brauche also nur nach dem richtigen Zeitpunkt suchen und mir die Temperatur auslesen:  

[Bild(38.3k)]

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.  

[Bild(7.3k)]

 

  Hier mal der Gesamtaufbau:  

[Bild(49.2k)]

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.  

[Bild(30.7k)]

So sieht das jetzt aus:  

[Bild(41.2k)]

Innen ist schön viel Platz:  

[Bild(55.0k)] [Bild(73.1k)]

Das WLAN-Modul hängt links an der Wand:  

[Bild(37.0k)]

Hier der Schaltplan (größer im Download-Archiv):  

[Bild(89.6k)]

 

  Nun steht das Thermometer als kleiner Bruder neben dem Radio.  

[Bild(48.8k)]

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:
[Bild WAF-Gruen]
 

Download


-----
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!

Valid HTML 4.01! CSS ist valide!