Was macht man mit einem alten Raspberry Pi und einem DVB-T-Stick, die einfach ungenutzt herumliegen? Richtig - man baut einen ADS-B-Empfaenger damit.
Dies ist ein ziemlich langer Beitrag, der erklaert, wie man einen Raspberry Pi von Grund auf mit allem Notwendigen einrichtet, um ADS-B-Daten zu empfangen und an FlightAware zu senden. Wir werden folgende Themen behandeln:
- Was ist ADS-B?
- Lass uns einkaufen gehen
- Den Raspberry Pi einrichten
- Die Flight Tracking Software installieren
- Alles hochfahren
- Ein bisschen Feintuning
Was ist ADS-B
Die meisten Flugzeuge senden Funksignale aus, um ihre Position, Hoehe, Geschwindigkeit und andere Daten zu melden. Wir koennen diese Signale empfangen, dekodieren und die Flugzeuge zusammen mit ihren Informationen auf einer Karte anzeigen.
Schau dir diesen Wikipedia-Eintrag fuer eine detaillierte Erklaerung an.
Lass uns einkaufen gehen
Wir brauchen ein paar guenstige Artikel, damit das funktioniert. Wenn du bereits einen laufenden Raspberry Pi hast, brauchst du im Grunde nur einen DVB-T-Stick, um loszulegen.
- Raspberry Pi
- DVB-T-Stick mit Antenne
- SD-Karte
- Netzteil
- Optional: Bandfilter
- Optional: ADS-B-Antenne
Einen Raspberry Pi einrichten
Zuerst lade das Betriebssystem-Image herunter. Fuer diese Anleitung waehlte ich die Lite-Version von Raspbian Jessie.
Folge diesen Anweisungen, um das Image zu installieren. Bei mir sah es so aus:
diskutil list
diskutil umountDisk /dev/disk2
sudo dd bs=1m if=~/Downloads/2016-03-18-raspbian-jessie-lite.img of=/dev/rdisk2
sudo diskutil eject /dev/rdisk2
Ich startete den Raspberry Pi mit angeschlossener Tastatur und Bildschirm, und ich steckte auch den DVB-T-Stick ein.
Aendere auch das Standardpasswort des Benutzers pi mit passwd.
Danach wurde die mit Raspbian Jessie gelieferte Software auf die neuesten Versionen aktualisiert:
sudo apt-get update
sudo apt-get upgrade
Da ich eine deutsche Tastatur habe, aenderte ich das Layout mit sudo raspi-config.
Pruefe, ob der DVB-T-Stick erkannt wird mit lsusb. Suche nach “wireless” oder “802.11”.
Dann richtete ich meinen WLAN-Adapter ein. Der Befehl ifconfig zeigte den Adapter als wlan0, also wurde er erkannt und musste nur noch konfiguriert werden.
Bearbeite die Konfigurationsdatei: sudo vi /etc/network/interfaces und fuege folgende Zeilen unter iface wlan0 hinzu:
wpa-ssid "thessid"
wpa-psk "thepasswd"
Starte das Netzwerk danach neu mit sudo service networking restart.
Die Flight Tracking Software installieren
Wir haben unseren Raspberry Pi am Laufen; jetzt ist es Zeit, die Flight Tracking Software namens PiAware einzurichten. Diese Software sendet die empfangenen Funksignale an FlightAware, damit sie jeder sehen kann. Vor der Installation der Software registriere dich zuerst und notiere deinen Benutzernamen und dein Passwort.
wget http://flightaware.com/adsb/piaware/files/dump1090_1.2-3_armhf.deb
sudo dpkg -i dump1090_1.2-3_armhf.deb
wget http://flightaware.com/adsb/piaware/files/piaware_2.1-5_armhf.deb
sudo dpkg -i piaware_2.1-5_armhf.deb
sudo apt-get install -fy
sudo piaware-config -autoUpdate 1 -manualUpdate 1
sudo piaware-config -user <yourusername> -password
sudo /etc/init.d/piaware restart
Nachdem ich das alles gemacht hatte, pruefte ich, ob alles in Ordnung war:
piaware-status
Anscheinend war nichts in Ordnung:
dump1090 is not running.
faup1090 is not running.
piaware is running.
no program appears to be listening for connections on port 30005.
faup1090 is NOT connected to port 30005.
piaware is connected to FlightAware.
got 'couldn't open socket: connection refused'
maybe dump1090 is NOT producing data on port 30005.
Dieser Beitrag hier zeigt den Grund, warum das passiert und wie man es loest.
Das Geraet wird bereits vom DVB-T-Treiber verwendet. Eine schnelle Loesung ist, den Treiber zu entladen:
sudo rmmod dvb_usb_rtl28xxu rtl2832
Das ist nicht permanent - nach dem Neustart des Raspberry Pi wird der Treiber wieder geladen. Um es permanent zu machen, fuege Folgendes zu einer Blacklist-Datei hinzu (zum Beispiel /etc/modprobe.d/blacklist-rtl.conf):
blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
Alles hochfahren
Lass uns loslegen und alle Softwarekomponenten starten:
dump1090 --quiet --net &
sudo /etc/init.d/piaware restart
Schliesslich zeigt alles OK an:
dump1090 is running.
faup1090 is running.
piaware is running.
dump1090 is listening for connections on port 30005.
faup1090 is connected to port 30005.
piaware is connected to FlightAware.
dump1090 is producing data on port 30005.
Du kannst die Logdatei pruefen, um die aktuelle Aktivitaet zu sehen:
tailf /tmp/piaware.out
Pruefe auch deine Netzwerkports:
sudo netstat -tulpen
Es laeuft ein Webserver auf Port 8080. Oeffne deinen Browser zu http://<yourip>:8080 und geniesse!
Du kannst auch meine FlightAware Statistiken ansehen.
Ein bisschen Feintuning
Das Setup kann sicherlich verbessert werden durch:
- Automatisches Starten von dump1090 und PiAware nach einem Raspberry Pi Neustart
- Verwendung eines Bandpassfilters
- Verwendung einer besseren ADS-B-Antenne und Platzierung auf dem Dach
Nach einer Weile wurden der Raspberry Pi und der DVB-T-Stick ziemlich warm. Ich ueberwache jetzt die Raspberry Pi Temperatur und sende sie an ThingSpeak. Dafuer habe ich einen Cron-Job wie folgt eingerichtet:
*/10 * * * * echo "field1=`vcgencmd measure_temp | grep -o '[0-9]*\.[0-9]*'`" | curl -d "api_key=<your-api-key>" -d @- https://api.thingspeak.com/update.json
Ich werde auch eine SMS erhalten, wenn die Temperatur einen bestimmten Schwellenwert erreicht.
Fertig fuer heute!