
Uwaga: Ten wpis ma nowszą wersję – nowe wersje programów i znacznie ułatwiona instalacja: https://blog.jokielowie.com/en/2017/01/sledzimy-samoloty-cz-2-ads-b-i-mlat-najtanszy-odbiornik-dla-flightaware-oraz-flightradar-24/.
Poprzednio podzieliłem się z Wami hobbystycznym komputerem Raspberry Pi za przysłowiowe grosze. O ile sami jeszcze nie uczycie się na nim Pythona, albo nie gracie w Minecraft – albo nawet lepiej – już się tym znudziliście, mam dla was połączenie kilku innych hobby, a wszystko to dzięki doposażeniu naszego Pi w odbiornik/dongle DVB-T/DAB. Celem jest uzyskanie bardzo taniej platformy do odbioru i przekazywania informacji o przelatujących samolotach – dla siebie i dla Flight Radar 24, za co dostaniemy darmowy dostęp do wersji premium. Zanim przejdziemy do techniki – o jakie hobby chodzi ?
- spotting – czyli fotografowanie samolotów rejsowych nad naszymi głowami, lecących na RNAV. Aby fotografować należy wiedzieć kiedy nadlecą, oczywiście wiedzieć też KTO leci
- odbiór sygnałów radiowych – analogowych i cyfrowych i odpowiednia ich demodulacja/interpretacja, więcej za chwilę
- wykreślanie na mapie aktualnie przelatujących samolotów i udostępnianie tego w sieci lokalnej lub internecie
- odbieranie zwykłego radia analogowego
- słuchanie transmisji z CB radia, TAXI
- śledzenie projektów stratosferycznych/kosmicznych – a więc nasłuch transmisji z balonów jakie są wypuszczane przez koła naukowe lub hobbystów
- jeśli blisko lotniska – komunikacji z wieżą, kontrolą podchodzenia etc. (LiveATC.net)
- słuchanie dowolnej transmisji z przedziału 50MHz – 2GHz, demodulacja danych cyfrowych
- przesyłanie danych do FlightRadar24 celem poszerzenia zasięgu działania usługi oraz uzyskania dostępu do portalu Premium tegoż
Jak widać ma to wiele wspólnego z HAM Radio, krótkofalarstwem i „modelarstwem”. Przed erą Internetu popularne, potem zapomniane – dziś dzięki łatwemu dostępowi do elektroniki hobbystycznej – przeżywającej często drugą młodość. Niemniej pamiętajmy, że nie NADAJEMY, a więc nie potrzebujemy licencji krótkofalarskiej, nie musimy też stawiać nadajników. Czy potrzebujemy więc specjalistycznego sprzętu ? Nie! Dzięki pracom nad sterownikami do dongle z chipsetem Realtek’a (DVB-T, DAB czy FM) na USB Antti Palosaari, odkrył że pozwalają one przekazać dowolną transmisję radiową, tak aby ją odpowiednio zinterpretować na komputerze – innymi słowy pozwalają na demodulację odebranego z dowolnej częstotliwości sygnału przez oprogramowanie (aplikację).
Lista sprzętu:
- Raspberry Pi – model B z 256 lub 512MB RAM – najlepsza jest wersja z portem Ethernet
- Dongle DVB-T/USB – tuner USB do odbioru DVB-T. Preferujemy te z tunerem Eltronics 4000 (E4000). Można testować dowolne, ale wymagany jest chip RTL2832U na donglu.
- opcjonalnie – kawałek miedzianego drutu, lutownica oraz akcesoria aby uzyskać lepszą odbiór na bardziej dostosowanej do naszych potrzeb antenie
Dongle DVB-T – możemy znaleźć wiele na Allegro, Ebay czy też stacjonarnych sklepach, ważne aby posiadał odpowiedni tuner. Jednym z najlepszych i najtańszych jest ten model ($13 z wliczoną przesyłką): http://dx.com/p/rtl2832u-r820t-mini-dvb-t-dab-fm-usb-digital-tv-dongle-black-170541. W komentarzach znajdziecie aktualne oferty z innych źródeł.
Konfiguracja oprogramowania i sprzętu
- upewniamy się, że nasz Rasbian pracuje z jądrem co najmniej 3.6.11+. Wydajemy komendę:
1root@raspberrypi:~# uname -a
Powinna ona zwrócić:
1Linux raspberrypi 3.6.11+ #385 PREEMPT Fri Mar 1 21:53:22 GMT 2013 armv6l GNU/Linux.
Jeśli mamy starsze jądro systemu – w prosty sposób uaktualniamy je przez komednę:
1root@raspberrypi:~# rpi-update.
Po ponownym uruchomieniu powinniśmy już mieć najnowsze jądro - Włączamy naszego dongla do portu USB. Od
1root@raspberrypi:~# dmesg | grep RTL
powinniśmy otrzymać:
1[ 3.452787] usb 1-1.3: Product: RTL2838UHIDIR.
Oznacza to, że nasz dongle został rozpoznany. Nie zapomnijmy podłączyć owej małej anteny dostarczanej z urządzeniem i umieścić jej w pobliżu okna (jeśli możemy nawet na balkonie, podstawka anteny jest magnetyczna). Na załączonym „patyku” powinniśmy odebrać transmisję w granicach 50 do nawet 80km od naszej lokalizacji. Częstotliwość transponderów ADS-B 1090MHz jest dość mocno tłumiona, przy zachmurzeniu zasięg może zmniejszyć się do 30-40km. Na początek taka antena wystarczy, ale potem warto zagadnąć znajomego krótkofalowca – jak powinna wyglądać antena aby odbierać dane w promieniu do nawet 200km. Przygotujcie się na terminy takie jak impedancja oraz Ohm. - Instalujemy kilka pakietów potrzebnych do skompilowania programów służących do dekodowania wiadomości z ADS-B:
1sudo apt-get install cmake build-essential git libusb-1.0-0-dev pkg-config - Teraz pobieramy dzięki git pakiet rtl-sdr. Podobnie jeśli jest to Gentoo, Ubuntu czy ArchLinux. Dla Rasbian wydajemy kolejno komendy:
123456789sudo su -git clone git://git.osmocom.org/rtl-sdr.gitmkdir rtl-sdr/buildcd rtl-sdr/buildcmake ../makemake installldconfigexit - Ponieważ większość nowych jąder posiada już sterowniki do popularnych dongli DVB-T prawie z pewnością trzeba będzie utworzyć plik, który zapobiegnie wczytaniu sterowników dla trybu odbioru DVB, ponieważ my chcemy użyć trybu bezpośredniej komunikacji z urządzeniem. W tym celu należy stworzyć plik:
1/etc/modprobe.d/rtl_sdr-blacklist.conf
który informuje system o zablokowaniu ładowania następujących modułów przy uruchamianiu systemu:
123sudo echo "blacklist dvb_usb_rtl28xxu" > /etc/modprobe.d/rtl_sdr-blacklist.confsudo echo "blacklist rtl2832" >>/etc/modprobe.d/rtl_sdr-blacklist.confsudo echo "blacklist rtl2830" >>/etc/modprobe.d/rtl_sdr-blacklist.conf - Aby nie komplikować – sugeruję teraz ponowne uruchmienie Raspberry Pi:
1sudo reboot - Kompilacja może, ale nie musi się powieść (użyjcie komentarzy) – jeśli tak testujemy czy rtl_sdr poprawnie potrafi korzystać z naszego dongla: rtl_test:
12345678pi@raspberrypi ~ $ rtl_testFound 1 device(s):0: ezcap USB 2.0 DVB-T/DAB/FM dongleUsing device 0: ezcap USB 2.0 DVB-T/DAB/FM dongleFound Rafael Micro R820T tunerSupported 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.6Reading samples in async mode... - Jeśli wreszcie działa – odkładamy rtl_sdr na półkę i pobieramy następny program służący do interpretowania i wyświetlania danych z przelatujących samolotów, autora Salvatore Sanfilippo – dump1090:
123456sudo su -git clone git://github.com/antirez/dump1090.gitcd dump1090makesudo cp dump1090 /usr/binexit - Teraz wystarczy już tylko wydać
1/usr/bin/dump1090 --interactive --net
które, jeśli antena poprawnie odbiera sygnał, powinno pokazać podobną tabelę:
12345Hex Flight Altitude Speed Lat Lon Track Messages Seen .--------------------------------------------------------------------------------47340d WZZ106 37000 458 50.794 16.537 103 184 0 sec3c56ab CLS203 38025 449 49.975 17.407 274 303 2 sec47340e WZZ52N 36000 446 50.651 17.662 340 1064 0 sec - Tak więc ciągu kilku minut można już uzyskać niezły efekt na dostarczonej do dongla antenie!
Dostęp do Flight Radar Premium.
- Wystarczy pobrać na Raspberry program fr24feed_arm-le_225s. Jeśli nie masz jeszcze klucza, który Cię identyfikuje, to należy się zarejestrować. Po uzyskaniu klucza wstaw go w miejsce TUWPISZKLUCZ:
12export FR24AUTHIP=83.140.247.20fr24feed_arm-le_225s --fr24key=TUWPISZKLUCZ - Prawidłowe działanie programu dla FlightRadar wygląda tak:
123456789101112[i]sent 1 planes in 1 packets[n]pinging the server[i]sent 1 planes in 1 packets[i]sent 1 planes in 1 packets[i]sent 1 planes in 1 packets[i]sent 1 planes in 1 packets[i]sent 1 planes in 1 packets[i]sent 1 planes in 1 packets[i]sent 1 planes in 1 packets[i]sent 1 planes in 1 packets[i]sent 1 planes in 1 packets[i]sent 1 planes in 1 packets - W tej chwili możemy już cieszyć się dostępem do FlightRadar Premium! dump1090 obsługuje jednocześnie zarówno klienta na Raspberry PI jak i naszego Virtual Radar.
Automatyczny start programów
- Pozostaje jeszcze upewnić się, że programy wystartują po ponownym uruchomieniu Rasbperry Pi, oraz będą także nadzorowane. W tym celu należy zainstalować program screen:
1sudo apt-get install screen
Następnie edytujemy plik cron dla użytkownika pi. Crond pozwala na cykliczne uruchamianie poleceń, w tym przypadku co minutę będziemy badać czy nasze programy działają. Do każdego z nich będzie można dostać się poprzez screen:
Wydajemy na konsoli:
1crontab -e
a następnie wpisujemy w edytorze:
123#FR24AUTHIP=83.140.247.20*/1 * * * * if [ `/bin/ps a | /bin/grep dump1090 | /bin/grep -v grep | wc -l` -gt 0 ]; then echo "dump1090 dziala"; else screen -dmS dump1090 dump1090 --interactive --net --interactive-rows 5; fi > /home/pi/dump1090.log 2>&1*/1 * * * * if [ `/bin/ps a | /bin/grep fr24feed_arm-le_233 | /bin/grep -v grep | wc -l` -gt 0 ]; then echo "fr24feed_arm-le_233 dziala"; else screen -dmS fr24feed /usr/local/bin/fr24feed_arm-le_233 --fr24key=WPISZ_SWOJ_KLUCZ ---lattitude=WPISZ --longitude=WPISZ; fi > /home/pi/fr24arm-le.log 2>&1
Wizualizacja danych na własnym komputerze – Virtual Radar
- Co zrobić aby na własnym komputerze zobaczyć na mapie pozycje samolotów na podstawie odebranych danych ? Jest kilka programów, jednym z najlepszych na początek jest VirtualRadar, pracujący w .NET 3.5 w Windows oraz z mono na Linuksie. Pobieramy i instalujemy
- Konfigurujemy protokół na BaseStation, natomiast w opcjach sieciowych wpisując adres naszego Raspberry Pi (tutaj jest to 10.0.0.212), oraz pozostawiają domyślny port 30003.
- VirtualRadar wyniki prezentuje na stronie WWW, a więc uruchamiamy przeglądarkę i wpisujemy http://127.0.0.1:8080/VirtualRadar/GoogleMap.htm


