Trudno być w czymkolwiek dobrym specjalistą, nie będąc równocześnie pasjonatem. W informatyce widać to równie dobrze jak w każdej innej dziedzinie życia czy nauki. Warunek konieczny oczywiście nie jest warunkiem wystarczającym, ale jednak to przyjemne chcieć wgryzać się głębiej i głębiej w swoją ulubioną działkę. W wielu sytuacjach przekłada się to na osiągnięcia zawodowe, ale tak naprawdę, najciekawsze są te obszary, w których zabawa nie jest niczym więcej niż tylko zabawą. Tam właśnie możemy poeksperymentować, nikt nas nie goni, nikt nie rozlicza z efektów, nikt nie mówi co jest ważniejsze a co mniej istotne. A jednak projekty same się toczą i często kończą niemałym sukcesem. W moim prywatnym przypadku, ostatni (tak naprawdę zupełnie niewielki) projekt dotyczył przecięcia się dwóch tematów, które mnie interesują: IT i latania, pozwalając mi bawić się tym, co lubię, czyli łączeniem komputerów z obiektami zupełnie nie-informatycznego świata. W efekcie, powstało proste rozwiązanie odbierające z samolotów nad Polską sygnały transponderów i przekazujące je dalej w postaci możliwej do wykorzystania dla użytkowników Internetu.
Gdyby ktoś chciał pobawić się w ten sam sposób, potrzebne będą:
- Sygnały z samolotów. To oczywiście nie ode mnie zależy, ale samoloty wyposażone są w transpondery, które nadają wiele ciekawych informacji. Numer rejestracyjny, wysokość, prędkość, typ maszyny, status, dane pogodowe itp. Razem około 80 różnych parametrów, które w postaci nieprzetworzonej można sobie obejrzeć na przykład tutaj: http://adsb.stderr.pl/.
- Antena. Sygnały ADS-B nadawane są na częstotliwości 1090MHz i spokojnie są w stanie przewędrować 250km z samolotu do odbiornika znajdującego się na ziemi. Oczywiście idealnie byłoby ustawić dużą antenę na szczycie samotnej góry, jednak nawet kilkucentymetrowa antena postawiona na parapecie (i to wewnątrz mieszkania) zupełnie nieźle się sprawdza. Trzeba tylko poszukać dobrego miejsca. Co ciekawe, w moim przypadku nawet przesunięcie anteny rzędu 10cm dawało ogromne różnice w efektywnym zasięgu. Można na pewno to jakoś mądrze opomiarować, jednak uznałem, że będę prowadził dobowe statystyki dla różnych miejsc i coś z tego w końcu wyjdzie. W efekcie znalazłem to jedno jedyne słuszne miejsce i z Warszawy odbieram bez większego problemu dane z kilku-kilkunastu samolotów nad północną Polską a dodatkowo znad kawałka Litwy i Białorusi. Oczywiście większa antena brzmi kusząco, ale jestem świadomy, że wiele nie wniesie dopóki nie stanie w lepszym miejscu, a na to chwilowo szans nie ma.
- Odbiornik sygnałów ADS-B. Brzmi poważnie. Jednak współczesna elektronika zmierza w bardzo ciekawą stronę. Zamiast zrobić dziesięć różnych urządzeń (czy chipów) z wąską funkcjonalnością, taniej jest zrobić jeden, potrafiący wszystko i zastosować go do dziesięciu różnych celów. Tak więc, jeżeli uda znaleźć się podłączalny do komputera odbiornik potrafiący odbierać 1090MHz, to już jesteśmy w połowie drogi. Druga połowa to jego zdolność do "zrozumienia" sygnałów. Oczywiście są specjalizowane odbiorniki ADS-B. Czasem nawet nie są bardzo drogie. Najciekawsze jest jednak to, że i częstotliwość i charakter sygnału nie odbiegają bardzo mocno od tego, co potrzebne jest do telewizji DVB-T i w efekcie, sygnały z samolotów mogą być odbierane przez tunery telewizyjne. Oczywiście nie wszystkie, ale mając w środku najpopularniejszy obecnie chip Realtek RTL2832U połączony z tunerem R820T lub podobnym – możemy próbować zrozumieć interesujące nas transmisje. Nie każdy tuner to potrafi, ale wiedząc czego szukamy, możemy naprawdę łatwo i niedrogo (poniżej 100PLN razem z anteną) kupić urządzenie, które będzie miało potrzebną funkcjonalność.
- Sterownik. Oczywiście dołączone do tunera telewizyjnego oprogramowanie ma nas uszczęśliwić ostatnim odcinkiem ulubionego serialu a nie danymi z samolotów, więc jego funkcjonalność rzadko nam się przyda. Żeby rozmawiać z urządzeniem, najprościej jest użyć stworzonego przez Microsoft drivera WinUSB. Driver ten ma mocno ograniczoną funkcjonalność, jednak potrafi to, co najważniejsze: sięgnąć do samego dna sygnałów USB przesyłanych między komputerem a urządzeniem. Wszystko bardzo dokładnie udokumentowane jest na MSDN, na przykład tutaj i tutaj. Oczywiście musimy "zmusić" nasz system do użycia poprawnego drivera (czyli przekonać Windows, że podpięliśmy po prostu bezmyślne urządzenie USB a nie żaden tuner) ale to nie jest trudne do wykonania, zwłaszcza jeżeli wspomożemy się programem Zadig.
- Oprogramowanie interpretujące sygnały. Od tunera dostajemy cyfrową transmisję, która dzięki WinUSB dociera do komputera w postaci strumienia bitów i teraz musimy z tych bitów poskładać informację o samolotach. Zrobi to dla nas aplikacja RTL1090, która poza wyświetleniem danych w czytelnej postaci, potrafi "wystawić" je przy pomocy TCP/IP (zwykle na porcie 30003), skąd mogą zostać odebrane przez specjalizowane oprogramowanie zajmujące się śledzeniem ruchu lotniczego.
- Oprogramowanie używające podsłuchanych danych. To, jakie oprogramowanie będzie potrzebne zależy od osobistych potrzeb użytkownika. Do malowania samolotów na mapie nada się PlanePlotter (jedyne płatne oprogramowanie ze wszystkich tutaj opisanych). Ciekawsze jednak jest podzielenie się danymi z serwisami agregującymi dane od wielu użytkowników i przedstawiające je w jednolitej formie. Wskazać tu można na przykład FlightRadar24, RadarBox24 czy PlaneFinder. To dzięki nim, mamy ogólnoświatowe mapy dostępne dla każdego w Internecie. Oczywiście, programy te mogą działać równocześnie i nie ma problemu z wysyłaniem informacji z jednego odbiornika do wielu serwisów.
I działa. Chodzi sobie to wszystko od wielu miesięcy bardzo ładnie, a współpracując choćby z aplikacją na telefon, pozwala na wycelowanie w niebo kamerki i dzięki zastosowaniu idei Augmented Reality zobaczenie na przykład skąd, dokąd i z jaką prędkością leci maszyna, którą właśnie widzimy na niebie.
Gdzieśtam w przyszłości może będzie większa antena, myślę też o zbieraniu danych do jakiejś bazy, która pozwoli mi przeglądać i analizować historię tych tysięcy strumieni informacji, które do mnie z nieba docierają. Pewnie chwilę później, baza ta otrzyma jakiś interfejs webowy. Ale na razie to tylko mętne plany.
Jeżeli komuś ten opis się przyda do uruchomienia własnego odbiornika ADS-B to super. Tak naprawdę jednak, najbardziej fascynujące jest to, jak prosto współczesna technologia pozwala połączyć istniejącą dookoła nas rzeczywistość ze światem IT. Pasjonatów (żeby nie powiedzieć technologicznych zboczeńców) nie brakuje i w efekcie każdy może wejść na prostą stronę i zobaczyć jak wygląda ruch w powietrzu, ruch statków na morzach czy ostatnie wyładowania atmosferyczne. A wszystko bardzo tanio, z wykorzystaniem "cywilnego" sprzętu, prostych i bezpłatnych aplikacji oraz systemów, których każdy z nas i tak w domu używa.
Autor: Grzegorz Tworek [MVP]
PS Słyszę czasem pytanie czy nie boję się wizyty smutnych panów. Nie boję się. Słuchanie transmisji radiowych jest w Polsce w 100% legalne niezależnie od tego, czego dotyczą. W końcu to sam samolot dzieli się z całym światem tą informacją. Ja ją tylko przekładam z fal radiowych na pakiety TCP/IP.