Segelschiff auf dem Mittelmeer (Kopfgrafik)/grafiken/tux-md-347-260.png

Wetterstation im Eigenbau

In den letzten Jahren scheint sich der Aufbau und Betrieb einer eigenen Wetterstation zunehmender Beliebtheit zu erfreuen. Während man entsprechendes Equipment vor rund 15 Jahren (damals begann der Autor sich für dieses Thema zu interessieren) nur im Elektronikfachhandel bekam, hat selbst der Discounter um die Ecke inzwischen entsprechende Gerätschaften, die nicht nur Temperatur und Luftfeuchtigkeit messen können, im Angebot. Viele Hobbywetterfrösche verbinden ihre Station auch permanent mit dem Internet und stellen ihre Messwerte öffentlich zur Verfügung; auch das war damals, als Internetflatrates noch nicht inflationär zur Verfügung standen, eher die Ausnahme. Begonnen hat es bei mir mit einer WS-2300, die neben einem Außensensor für Temperatur und Luftfeuchtigkeit auch Windrichtung -geschwindigkeit sowie die Niederschlagsmenge messen konnte. Im Laufe der Zeit verabschiedeten sich einzelne Ersatzteile, interessanterweise konnte man aber die einzelnen Komponenten nachkaufen, so dass diese Station bis heute in Betrieb ist. Nach entsprechender Modifikation des ursprünglich batteriebetriebenen Außensensors auf Netzteilbetrieb läuft das Teil noch recht wartungsarm weiter. Der Windsensor wurde nach seinem letzten Ableben nicht mehr ersetzt, so dass entsprechende Werte nicht mehr erfasst werden.

Wenn man sich intensiver mit dem Thema befasst entdeckt man recht schnell die Unzulänglichkeiten dieser fertig zu erwerbenden Stationen. Viele Sensoren sind einfach nur suboptimal aufgebaut und liefern recht ungenaue Werte; meist werden günstige Bauteile ohne entsprechende Kalibrierung verwendet oder die Beschaffenheit der Sensoren (beispielsweise im Hinblick auf Sonnenexposition) lässt eine genaue Messung gar nicht zu. In meiner Jugend habe ich mich intensiv mit elektronischen Basteleien befasst (das mündete dann auch darin, Funkamateur zu werden :-)). Dabei kommt dann auch recht schnell die Erkenntnis, dass mit ein bischen Selbstbau sehr viel bessere Ergebnisse zu erzielen sind. Zunächst wurde also eine Wetterhütte nach DWD-Standard gebaut und zur Freude der Eltern mitten auf dem heimischen Rasen positioniert. Von Sensirion kam damals ein interessanter Sensor auf den Markt, der über ein I²C-ähnliches Protokoll angesprochen werden konnte und hochgenau Temperatur und Luftfeuchtigkeit misst. Da jeder Sensor einzeln vom Hersteller in einer Klimakammer kalibriert wurde, war der Preis für Schülerverhältnisse recht sportlich. Im Rahmen der Neueinführung konnte man sich aber Evaluationsexemplare gratis bestellen, die dann nach längerer Wartezeit auch tatsächlich mit der Post hier eintrafen. Zusammen mit einem Atmega 8 und ein paar Zeilen Code hatte man hier recht schnell einen adäquaten Außensensor aufgebaut, der die Messwerte in nahezu beliebigem Intervall via serieller Schnittstelle ausgeben konnte.

Vom Kosmos-Verlag gab es "Kachelmanns Wetterstation", ein Experimentierbaukasten, in dem ein Windsensor der Firma Huger beigelegt war, der auch bei den höherpreisigen Wetterstationen dieses Herstellers im Einsatz war. Anstatt nun den ganzen Experimentierkasten zu kaufen, fand ich im Internet heraus, dass man auch die Einzelteile nachbestellen konnte, so dass sich dann für recht schmales Geld mehrere Anemometer auf den Weg zu mir machten. Für den Betrieb mit dem Baukasten war ein einfacher Fahrradtacho vorgesehen, der die Windgeschwindigkeit über die Anzahl der Impulse des Anemometers berechnete. Mit ein bischen Dreisatz kann das auch der Atmega berechnen. Für die Windrichtung würde aber noch ein 360°-Potentiometer benötigt, welches die Stellung der Windfahne liefert. Nach Zerlegen des Sensors kam dann die erfreuliche Erkenntnis, dass ein solches Potentiometer schon verbaut worden war und für die Verwendung in dem Experimentierbaukasten einfach unverdrahtet geblieben war. Zusammen mit dem Analog-Digital-Wandler eines Atmega und dem experimentellen Ermitteln der entsprechenden Messwerte für jede Windrichtung hatte ich jetzt also einen vollständigen Sensor im Eigenbau kreiert. Vorteil war hierbei, dass es sich um ein Schalenanemometer handelte, welches deutlich empfindlicher war als die in der WS-2300 verwendete düsenartige Konstruktion. Zusätzlich wurde dieser Sensor auch mit einer kleinen elektrischen Heizung ergänzt, die das Innenleben und die Mechanik problemlos frostfrei halten kann. Auch dieser Sensor (siehe Bild rechts) ist bis heute störungsfrei im Einsatz. Mit den Jahren haben sich lediglich die Messwerte des Potentiometers dezent verändert, möglicherweise korrodiert da doch irgendetwas vor sich hin.

Eine zeitlang habe ich diese Messwerte kontinuierlich in das APRS-Netzwerk der Funkamateure eingespeist. Leider war dazu ein kontinuierlich laufender PC notwendig; nachdem sparsame Minirechner wie beispielsweise ein ThinClient oder ein Einplatinenrechner wie Arduino, Raspberry Pi und Co nicht zur Verfügung standen, wurde dieses Konstrukt dann zu Gunsten der Stromrechnung wieder aufgegeben. Eine Realisierung ohne PC mit direkter Ansteuerung eines TNC und 2m-Funkgerätes durch den Atmega war mal ein gehegtes Ziel, wurde aber nie verwirklicht.

Mit dem Aufkommen der Einplatinenrechner erlebte der Elektronikbastler meiner Meinung nach ja eine kleine Revolution, da es nun mit geringstem Aufwand möglich ist, beliebige Messwerte zu erheben, weiterzuverarbeiten und auch gleich direkt weiterzukommunizieren. Wer mal versucht hat, einen Atmega-Mikrocontroller über ein Ethernetshield dazu zu bringen, mit einem Webserver zu kommunizieren, kann vermutlich nachempfinden, welche Arbeitserleichterung das Vorhandensein einer 'gewohnten' Linuxumgebung und beliebiger Hochsprachen darstellt. Als langjähriger Linuxanwender und Gelegenheitsscripter findet man sich problemlos in Raspbian & Co zurecht. Zudem sind nun in rauen Mengen interessante Mikrochips auf Breakoutboards verfügbar, die man sich beliebig quasi im Baukastenprinzip zusammenbasteln kann um so jedes gewünschte Messwerkzeug zu erhalten. Also wurden nun die Sensirionchips statt mit einem Atmega mit einem Raspberry Pi verbunden und dieser mittels WLAN ins Heimnetz eingebunden. Damit ist der Weg der Messwerte in eine beliebige Datenbank ein kurzer und für die Auswertung und Visualisierung stehen viele verschiedene OpenSource-Frameworks bereit, die nur noch an die eigenen Bedürfnisse angepasst werden müssen. Das Resultat meiner neuesten Bastelarbeit möchte ich im Folgenden näher vorstellen.

Erster Prototyp mit Raspberry Pi B

Zunächst wurde ein schon bewährter Sensor SHT75 von Sensirion beschafft und in den Deckel eines spritzwassergeschützten Gehäuse (Elektroverteiler aus dem Baumarkt) eingelassen. Zur Messung des Luftdrucks hatte ich früher analoge Sensoren wie bspw. MPX4115A verwendet, heutzutage sind fertige Breakoutboards mit über I²C ansprechbaren Sensoren wie zum Beispiel dem BMP180 verfügbar. Dieser Sensor kann nicht nur den absoluten Luftdruck, sondern auch die Temperatur messen, so dass man auch gleich einen Eindruck über die Verhältnisse im Gehäuse erhält. Es gibt auch eine etwas teurere Variante, die zusätzlich noch einen Luftfeuchtesensor mit an Bord hat. Das Board wird lediglich mit +3,3Volt und der Masse des Raspberry verbunden und SCL und SDA zusammen mit den entsprechenden Pins eventueller weiterer Sensoren mit der GPIO-Leiste des Raspberry Pi verbunden. Nach der Installation von OWFS (dem OneWire File System) finden sich die entsprechenden Sensoren als Blockdevice wieder und können mit Skripten beliebiger Sprachen abgefragt werden.

erster Prototyp

Das Foto rechts zeigt meinen ersten Prototypen mit BMP180 zur Luftdruckmessung, SHT75 zur Messung von Außentemperatur und -feuchtigkeit sowie DS1820 als weitere Temperatursensoren für die spätere Verwendung im Erdreich bzw. über dem Erdboden in definierter Höhe. Der Raspberry ist über WLAN-Stick ins heimische Netzwerk eingebunden. Für den SHT75 gibt es ein in C geschriebenes Abfrageprogramm, für die restlichen Sensoren Pythonskripte, welche über einen minütlichen Cron-Job die Daten abfragen, zusammenstellen und in eine PostgreSQL-Datenbank speichern. Zusätzlich läuft hier ein Munin-Node, welcher alle fünf Minuten die Messwerte in eine RoundRobin-Datenbank speichert und die entsprechenden Diagramme bereitstellt. Für die Verwendung auf den Internetseiten hier habe ich noch separate Skripte erstellt, die auf die Daten der RRD zugreifen und mit rrdgraph individuelle Diagramme generieren. Hier lassen sich dann auch problemlos Werte aus zwei getrennten RRD-Files kombinieren, beispielsweise Daten von SHT75 und den DS1820.

Prototyp Nummer 2

Die Hardware lief so schonmal gut und erste Erfahrungen, was so im Dauerbetrieb alles schief gehen kann, wurden gesammelt. Da es sich ja um ein komplett individualisierbares Eigenbausystem handelt kam schnell der Wunsch nach weiteren Sensoren auf; gerne wolte ich beispielsweise auch die Ortsdosisleistung messen. Nach entsprechendem Literatur- und Netzstudium entschied ich mich dazu, einen auf der SBM-20 Zählröhre basierenden Baustein von 4N-Galaxy zu kaufen. Dieser kann direkt mit den eh schon vorhandenen 5 Volt aus der Schaltung betrieben werden, ein Zählausgang mit schon realisiertem PullUp in 3,3 Volt-Technik steht zur Verfügung und kann direkt mit einem GPIO-Pin verbunden werden. Weil ich einen in der Schaltungsbeschreibung erwähnten Jumper zur Deaktivierung des Lautsprechers auf der Platine nicht finden konnte, wurde kurzerhand einer der herausgeführten Anschlussdrähte des Minilautsprechers durchgeknipst. Ein in Python realisiertes Skript, welches einen Interrupt auf den verwendeten GPIO-Pin legt und darüber Impulse zählt, sorgt für die Erfassung des radioaktiven Zerfalls. 4N-Galaxy liefert noch weitere Informationen zur Weiterverarbeitung der Impulse bzw. zur Umrechnung in die Ortsdosisleistung. Für die Diagramme messe ich jeweils über 5 Minuten (also einen Munin-Zyklus) die Impulse und rechne dann die ODL aus bzw. lasse den Graphen plotten. Jede Minute wird die Anzahl der Impulse der letzten 60 Sekunden die PostgreSQL-Datenbank geschrieben. Für die Internetseite hier wird dann aus allen Messwerten der letzten 30 Minuten die mittlere Ortsdosisleistung berechnet, so dass man hier einen noch robusteren Messwert hat.

Prototyp Nummer 2

Niederschlagssensor

Zur Erfassung des Niederschlags wurde ein handelsüblicher, auf einem Kipplöffel basierender Niederschlagssensor, wie er in vielen kommerziell erhältlichen Wetterstationen verwendet wird, als Ersatzteil beschafft. Nach Auseinanderbauen lässt sich mit einer Einmalspritze und Wasser problemlos ausmmessen, wieviel Wasser im Kipplöffel diesen umkippen lässt und wieviel Niederschlag dementsprechend einem Impuls entspricht (bei mir 1,5 ml). Mit den Abmessungen des Sammeltrichters (5 mal 11 cm, also 0,0055 m²) und ein bischen Dreisatz wissen wir dann also, das ein Impuls einer Niederschlagsmenge von rund 273 ml pro Quadratmeter entspricht. Der Regenmesser wird mit Masse und einem GPIO-Pin des Raspberry verbunden, nach Geschmack können wir noch einen zusätzlichen PullUp-Widerstand (bspw. 10 Kiloohm) in Richtung 3,3 Volt hinzufügen oder aber die intern schon vorhandenen Pullups des Raspberry in unserem Programm aktivieren. Ebenso wie bei der Messung der Radioaktivität wird hier ein Pythonskript genommen, das über einen definierten Interrupt die Anzahl der vom Niederschlagssensor kommenden Impulse zählt. In den Niederschlagsmesser baute ich noch zwei 12 Volt Glühbirnchen ein, welche den Auffangtrichter bei niedrigen Temperaturen beheizen und somit auch Eisregen und Schnee erfassen lassen können.