Pewnie każdy, kto kiedykolwiek odprowadzał bliskich na samolot, korzystał z bezpłatnej usługi Flightradar24. To bardzo wygodny sposób śledzenia pozycji samolotu w czasie rzeczywistym.

Jak pokazała analiza znajomych, bardzo mało osób wie, że ta usługa jest wspierana przez entuzjastów, którzy przesyłają dane na serwer. Jeszcze mniej osób wie, że każdy chętny może dołączyć do projektu.
Uzupełnijmy tę lukę. O tym, jak to działa, opowiemy dalej.
Sprzęt
Pierwsze pytanie — skąd pochodzą dane.
Każdy cywilny samolot wyposażony jest w specjalny nadajnik, tak zwany transponder ADS-B:

(zdjęcie ze strony Garmin)
To urządzenie wysyła na częstotliwości 1090MHz specjalne pakiety, zawierające podstawowe parametry lotu, typ statku powietrznego, jego współrzędne, miejsce docelowe itd.
Sygnał na spektrum wygląda mniej więcej tak:

A co dla nas najważniejsze, dekodowanie tych danych nie jest trudne, wystarczy odbiornik RTL-SDR kosztujący około 8$, podłączony do komputera. W zasadzie, idea jest już zapewne jasna — jeśli zbierzemy dane z wielu odbiorników, uzyskamy obraz, mniej więcej taki:

Ale to nie wszystko. Część samolotów przesyła pakiety danych, jednak brakuje w nich współrzędnych GPS. Jeśli odbieramy dane jednocześnie z wielu odbiorników, których współrzędne są znane, to analizując opóźnienia na różnych odbiornikach, możemy ustalić położenie statku powietrznego. Taka technologia nazywa się multilateration (MLAT), więcej na ten temat można przeczytać .
I w końcu ostatnie pytanie — jak przyjmowane są dane. Odpowiedź jest prosta, odbiornik może umieścić każdy chętny, cena wynosi od 0 do 50$. Na przykład, tak wygląda mapa odbiorników serwisu Flightaware:

Jak widać, pokrycie rosyjskiej części pozostawia wiele do życzenia, więc niektórzy mają całkiem duże szanse być pierwszymi.
Do odbierania danych potrzebne są:
— Raspberry Pi2/3 z dostępem do internetu (cena od 20$)
— Dongle RTL-SDR (cena od 10$)
— przynajmniej najprostsza antena z 2 kawałków drutu o długości 6.8cm każdy (1/4 dipol na 1090MHz)
Dobrze jest także mieć miejsce z dość otwartym widokiem na chociaż część nieba, ponieważ sygnały na gigahercowej częstotliwości są tłumione przez przeszkody, takie jak domy czy drzewa.
Miałem zarówno Raspberry Pi, jak i RTL-SDR, więc nie musiałem nic kupować. Jednak każdy może spróbować za darmo uzyskać gotowy odbiornik — zarówno Flightradar, jak i Flightaware wysyłają zestawy za darmo do użytkowników z obszarów, gdzie pokrycie w danym momencie jest niewystarczające. Można wysłać zapytanie pod tym linkiem ( lub ), oczywiście warto próbować tym, którzy mieszkają w dość odległych miejscach.
Używałem zestawu RTL-SDR V3, który razem z anteną i mini statywem kosztował 27$ z darmową dostawą z Chin:

Przy okazji, jako drugi bonus, wszystkim, którzy przesyłają dane na serwer, zarówno Flightradar24, jak i Flightaware oferują nieograniczony dostęp do kont premium i wszystkich funkcji serwera (osobno taki dostęp kosztuje około 50$/miesiąc). Jeśli ktoś interesuje się lotnictwem i chce mieć rozszerzony dostęp do takiego konta, zainstalowanie odbiornika RTLSDR jest całkiem tanim rozwiązaniem.
Testowanie
Instalacja jest bardzo prosta, wystarczy podłączyć odbiornik do Raspberry Pi i uruchomić jedną komendę:
sudo bash -c "$(wget -O - http://repo.feed.flightradar24.com/install_fr24_rpi.sh)"Skrypt poprosi o niezbędne dane (współrzędne i typ odbiornika, adres e-mail), następnie oprogramowanie będzie działać automatycznie, a użytkownik nie będzie musiał więcej ingerować. Jednocześnie można aktywować konto premium (dla FR24 pod tym linkiem ) i od razu korzystać ze wszystkich jego możliwości (śledzenie lotów itp.).
Można wejść na stronę z adresem IP Raspberry Pi i zobaczyć bieżący status:

Znacznie więcej informacji można zobaczyć na stronie konta Flightradar24:

Mieszkam na 6. piętrze, stosunkowo blisko lotniska, więc liczba obserwowanych samolotów w ciągu dnia przekroczyła 1000, nawet na prostą antenę na parapecie. Ciekawe, że nawet z taką anteną maksymalny zasięg do przyjętego samolotu wyniósł 215 mil. Różne rodzaje anten można znaleźć na ebayu, wpisując w wyszukiwarkę ads-b antenna.
Alternatywa
Bonus dla tych, którzy mieli wystarczająco dużo cierpliwości, by dotrzeć do tego miejsca. Niektórzy czytelnicy mogą zadać pytanie: czy można obejść się bez zewnętrznych serwisów, takich jak Flightradar? Oczywiście, można uruchomić dekoder na Raspberry Pi bezpośrednio. Źródła można pobrać pod tym adresem .
Wystarczy wpisać 3 komendy na Raspberry Pi:
git clone https://github.com/antirez/dump1090.git
cd dump1090/
makeNastępnie dekoder uruchamiamy poleceniem:
.\/dump1090 --interactive --netDekoder zaczyna działać, a my widzimy "surowe dane" — listę widocznych "rewersów":

Teraz możemy wejść na Raspberry Pi przez przeglądarkę i podziwiać własny, lokalny Flightradar, obraz może wyglądać mniej więcej tak:

Po co to może być potrzebne? Po pierwsze, po prostu z ciekawości, po drugie, Flightradar24, niestety, filtruje część danych i pokazuje nie wszystkie samoloty (na przykład mogą nie być pokazywane wojskowe, rządowe czy biznesowe odrzutowce). Uruchamiając własną lokalną usługę, widzimy wszystko "jak jest", bez żadnej cenzury. Oczywiście, objętość danych jest ograniczona naszym lokalnym położeniem i jakością anteny, a także nie będzie dostępna technologia MLAT. Dump1090 dostępny jest w wersji źródłowej, więc chętni mogą nawet stworzyć swoją wersję Flightradar, z blackjackiem i innymi dodatkowymi funkcjami.
Wnioski
Jak widać, to wszystko nie jest takie skomplikowane, a przy tym całkiem ciekawe i tanie. Dla zrozumienia cen: jeszcze 10 lat temu odbiornik Airnav RadarBox kosztował około 1000$, teraz RTL-SDR, który robi to samo, można kupić za 10$.
W moim przypadku odbiornik był uruchomiony tylko do testów, nie ma sensu trzymać go włączonego na stałe, gęstość pokrycia europejskiej części już osiąga 100%. Dla mieszkańców rosyjskiej głębi może to być całkiem interesujące — pojawia się możliwość zrobienia czegoś pożytecznego dla podróżujących samolotami na całym świecie, rozszerzając obszar pokrycia, a także uzyskania dostępu do konta Premium wspomnianych wcześniej stron.
Wszystkim udanych eksperymentów.
Źródło: habr.com
