2214388

Wetter-Daten mit dem Raspberry Pi empfangen

03.09.2016 | 11:00 Uhr |

Mit einem Raspberry PI können Sie die Daten von Wetter-Satelliten empfangen.

Swen Hopfe hat mit Arduino und Raspberry Pi schon einige interessante Projekte realisiert. Hier beschreibt er, wie man mit dem Raspberry Pi Daten von Wetter-Satelliten empfangen kann.

Wir können Daten von NOAA-Wetter-Satelliten abholen, die die Erde in einer Höhe von rund 800 km umkreisen. Damit wir die Daten empfangen können, bauen wir uns einen Kreuzdipol, optimiert auf 137-MHz-Empfang.

Kreuzdipol, optimiert auf 137-MHz-Empfang
Vergrößern Kreuzdipol, optimiert auf 137-MHz-Empfang
© Swen Hopfe

Unsere fertige Antenne steht auf dem Balkon, damit sie auch die Rückseite des Gebäudes erreichen kann. Mit einer Mastlänge von etwa 2 Metern klappt das. Der Dipol ist rechtsdrehend zirkular.

Antenne, auf Balkon aufgestellt
Vergrößern Antenne, auf Balkon aufgestellt
© Swen Hopfe

Wir arbeiten mit einer 50-Ohm-Zuleitung, L/4-Umwegleitung (zur Verbindung der Rohrstücke) und Transformationsleitung (zwei Teilstücke mit 75 Ohm). Die Dipol-Enden zur Befestigung bringen wir in einem Plastikgehäuse in einer gekauften Abzweig-Dose unter. Etwa 80 Zentimeter unterhalb haben wir einen Reflektor angebracht.

Der Antennenausgang geht zu einem Software-Defined-Radio, ein kleiner Stick mit RTL-Chipsatz. Wir benutzen einen von Noo-Elec. Mit dem Stick haben wir eine USB-Verbindung zu einem Empfänger-Raspi, der den Stick steuert und die Dekodierung übernimmt. Dazu soll auf dem Pi rtl_fm zum Einsatz kommen.

Software-Defined-Radio, Stick mit RTL-Chipsatz
Vergrößern Software-Defined-Radio, Stick mit RTL-Chipsatz
© Swen Hopfe

Was muss man also tun, um den Raspi am RTL-Stick vorzubereiten?

Zuerst müssen wir die Installationsbasis auf neuesten Stand bringen:

$ sudo apt-get update $ sudo apt-get upgrade

in /etc/modprobe.d/ blacklisten , Beispielsweise in einer no-rtl.conf , die in das Verzeichnis eingestellt wird, mit folgenden Einträgen:

blacklist dvb_usb_rtl28xxu blacklist rtl2832 blacklist rtl2830

Alternativ kann auch die /etc/modprobe.d/raspi-blacklist.conf mit diesen Einträgen bestückt werden (am Ende anfügen).
Als Editor ist dazu beispielsweise nano vorhanden. Ansonsten kann auch noch der Midnight-Commander installiert werden, der sich zur Navigation und zum anfänglichen Dateitransfer im Netzwerk ganz gut macht:

$ sudo apt-get install mc

Nun git, cmake, libusb und die Build-Essentials installieren:

$ sudo apt-get install git-core $ sudo apt-get install git $ sudo apt-get install cmake $ sudo apt-get install libusb-1.0-0-dev $ sudo apt-get install build-essential

Letztere sind meist schon auf dem neuesten Stand.
Dann die rtl-sdr-Tools von Osmocom holen und bauen (man ist hier am Anfang im Home-Verzeichnis):

$ git clone git://git.osmocom.org/rtl-sdr.git $ cd rtl-sdr/ $ mkdir build $ cd build $ cmake ../ -DINSTALL_UDEV_RULES=ON $ make $ sudo make install $ sudo ldconfig $ cd ~ $ sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/

Neu starten:

$ sudo reboot

Nach neuem Login am Pi die Installation testen:

$ rtl_test

Eine solche oder ähnliche Ausgabe sollte zu sehen sein:

# Found 1 device(s):Found 1 device(s): # 0: Generic, RTL2832U, SN: 77771111153705700 # # Using device 0: Generic RTL2832U # Found Rafael Micro R820T tuner # Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 # 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 # Sampling at 2048000 S/s. # # Reading samples in async mode...

Damit sollte dann auch ein Testempfang um 137 MHz mittels

$ rtl_fm -f 137100000 -s 44100 -g 44 -p 55 -E wav -E deemp -F 9 -r 11025 test.wav

funktionieren und eine Audio-Datei entstehen, die (da adhoc ausgelöst) jetzt noch keine auswertbaren Daten enthält.
Wurde ein Wetter-Satellit in der Nähe erkannt, werden wir aber so einen Aufruf mit entsprechender Empfangsfrequenz ( -f , je nachdem, um welchen NOAA-Satelliten es sich handelt) verwenden, um eine wav-Datei zur weiteren Verarbeitung zu erzeugen.

Kontrolle, ob ein geeignetes Satelliten-Signal hereinkommt
Vergrößern Kontrolle, ob ein geeignetes Satelliten-Signal hereinkommt
© Swen Hopfe

Mit diverser zusätzlicher Software kann man übrigens gut kontrollieren, ob ein geeignetes Signal von einem NOAA-Satelliten hereinkommt, weil die das eigene Gebiet zu ganz unterschiedlichen Tageszeiten überfliegen, da sie nicht im 24-Stunden-Rhythmus wiederkommen. Dazu brauchen wir noch eine Prediction-Software ( predict ).

Wetter-Satelliten-Tracker
Vergrößern Wetter-Satelliten-Tracker
© Swen Hopfe

Genau wie bei der anschließenden Dekodierung (wxtoimg) sind das bei mir Linux-Tools, die tagsüber auf einem Raspberry Pi automatisiert ablaufen. Und am Ende kriegt man dann ein nettes Bild in Normaldarstellung und Infrarot geliefert und auf die Website hochgeladen. Wie die Wetterfrösche...

Zunächst installieren wir also weitere Software auf unserem Empfangs-Pi, damit der auch die Sounddateien dekodieren kann. Dazu nutzen wir das beliebte wxtoimg (wir benötigen die Kommandozeilen-Version). Man bekommt es als Debian-Package für ARM von der Website www.wxtoimg.com/downloads/ und installiert es mit dpkg:

$ sudo dpkg -i wxtoimg-armhf-2.11.2-beta.deb

Danach geht

$ wxtoimg test.wav test.png

und wir haben unser erstes Zwischenziel erreicht!

Empfangen und Konvertieren der Signale ist das eine, die Vorhersage der Satelliten-Überflüge das andere. Unser Empfangs-Raspi soll dazu rechtzeitig ein- und ausgeschaltet werden und nicht ständig in Betrieb bleiben. Wir brauchen also noch eine funktionierende Prädiktion von geeigneten Wetter-Satelliten.

Das Tool predict lässt sich auch gut in eigene Skripte einbinden
Vergrößern Das Tool predict lässt sich auch gut in eigene Skripte einbinden
© Swen Hopfe

Diese könnte unser Hausserver übernehmen, da dieser ohnehin ständig online ist. Aber an der Stelle wollten wir vereinfachen, um nicht mehrmals am Tag einen zweiten Raspi fernzusteuern. Also wird die Empfangsinstallation nur zwischen 18 und 20 Uhr scharf geschaltet (über den FHEM-Hausautomationsserver und eine entsprechende Schaltsteckdose). Unser Skript läuft dann mittels crontab ein paar Minuten verzögert an und greift auf eine Predict-Installation zu.
Das alte Tool predict erscheint als die beste Wahl, da man es auch gut in eigene Skripte einbinden kann.

 sudo apt-get install predict 

Damit sind alle Tools installiert. Falls noch nicht vorhanden, sollte python-paramiko noch geholt werden - bei uns die Grundlage für sftp und Upload auf die eigene Website.

Damit man auch von NOAA-15, 18 und 19 (17 derzeit in der Abschaltung, Sinkflug) empfangen kann, sind noch die Auffrischung des Setups von predict (welche Satelliten berücksichtigt werden) bzw. der zugehörigen Keppler-Files notwendig. Das macht man, indem man sich eine aktuelle tle-Datei vom Server holt...

Überflüge nur dann aufnehmen, wenn sie auch genügend den eigenen Standort decken
Vergrößern Überflüge nur dann aufnehmen, wenn sie auch genügend den eigenen Standort decken
© Swen Hopfe

Wie sieht die Ablaufsteuerung nun aus?

Im Empfangs-Raspi haben wir dazu folgende lokale crontab -Einträge gemacht:

13 18 * * * /home/pi/weather/pre_update.sh 15 18 * * * python /home/pi/weather/noaacapture.py 45 19 * * * rm /home/pi/weather/*.wav 46 19 * * * rm /home/pi/weather/*.png

Wir nutzen das Capture-Skript noaacapture.py von Dr. Paul Brewer und haben im Python-Skript noch divers angepasst: die  bevorzugten Satelliten und einen sftp -Upload (mittels python-paramiko) auf die eigene Website hinzugefügt, nebst einer FIFO-Warteschlange, in der in drei Dateien (sat[1..3].png) immer die drei aktuellsten Aufnahmen bereitstehen.

Außerdem beschränken wir uns auf ein gewisses Zeitfenster (18 bis 20 Uhr), ansonsten werden jeden Tag die Überflugdaten erneuert ( pre_update.sh ) und das Capture-Skript setzt ein. Divers erzeugte wav- und png-Dateien werden nach dem täglichen Bearbeitungslauf gelöscht, damit die SD-Karte des Pi nicht zuläuft.

Bekannte Probleme?

Ja, mittels rtl_fm ist es nicht möglich, während einer Aufnahme die Empfangsfrequenz zu ändern. Die optimale Frequenz schwankt aber, da sie vom Dopplereffekt beeinflusst ist, genau dann, wenn sich der betreffende Satellit über Kopf befindet. Der Kompromiss ist, Überflüge nur dann aufzunehmen, wenn sie auch genügend den eigenen Standort decken und nur das Zeitfenster auszuwerten, was man für eine vollständige Aufnahme (ordentliches Bild mit Telemetriedaten) mindestens braucht.

Swen Hopfe hat bereits etliche andere Projekte auf pcwelt.de vorgestellt:

So steuern Sie mit Raspberry Pi eine Infrarotkamera

Von der Heimautomatisierung zum Smart Home - ein Erfahrungsbericht

Mit Arduino den Füllstand einer Zisterne kontrollieren

Arduino-Roboter fährt allein

Digitalradio mit DAB+


 

0 Kommentare zu diesem Artikel

PC-WELT Hacks - Technik zum Selbermachen?

Raspberry Pi erfreut sich gerade unter Bastlern einer großen Beliebtheit. Kein Wunder, denn mit der 35-Euro-Platine lassen sich viele spannende Projekte realisieren. Vom Mediacenter, Netzwerkspeicher, Fotomaschine bis hin zum Überwachungssystem ist alles möglich. Dieser Bereich ist aber nicht nur dem Raspberry Pi gewidmet, sondern bietet auch viele Tipps, Tricks und Anleitungen für andere spannende Bastelprojekte.

2214388