Напевно, кожен, хто хоч раз зустрічав або проводжав родичів або друзів на літак, користувався безкоштовним сервісом Flightradar24. Це дуже зручний спосіб відстеження положення літака у реальному часі.

Як показало опитування знайомих, дуже мало хто знає, що цей сервіс підтримується лише ентузіастами, які надсилають на сервер дані. Ще менше знають, що приєднатися до проекту може будь-хто.
Відновимо цю прогалину. Про те, як це працює, продовжимо під катом.
Залізо
Найперше питання — звідки беруться дані.
Кожен цивільний борт оснащений спеціальним передавачем, так званим Транспондер ADS-B:

(фото із сайту Garmin)
Цей пристрій посилає частоті 1090МГц спеціальні посилки, містять основні параметри польоту, тип повітряного судна, його координати, пункт призначення та ін.
Сигнал на спектрі виглядає приблизно так:

І що для нас найважливіше, декодувати ці дані неважко, досить RTL-SDR приймача, вартістю близько 8 $, підключеного до комп'ютера. Власне, ідея вже напевно ясна - якщо зібрати дані з безлічі приймачів, то отримаємо картинку, приблизно таку:

Але це ще не все. Частина літаків передають пакети даних, але у них відсутні GPS-координати. Якщо приймати дані одночасно з безлічі приймачів, координати яких відомі, то, аналізуючи затримки на різних приймачах, можна дізнатися про місцезнаходження повітряного судна. Така технологія називається multilateration (MLAT), детальніше про неї можна прочитати .
І, нарешті, останнє питання – як приймаються дані. Відповідь проста, розмістити у себе приймач може будь-який бажаючий, ціна питання становить від 0 до 50 $. Наприклад, так виглядає карта приймачів сервісу Flightaware:

Як можна бачити, покриття російської частини залишає бажати кращого, тому деякі цілком мають шанс бути першим.
Для прийому даних потрібні:
- Raspberry Pi2/3 з підключеним інтернетом (ціна від 20 $)
- RTL-SDR-донгл (ціна від 10 $)
- хоча б найпростіша антена їх 2х шматків дроту довжиною 6.8см кожен (1/4 диполь на 1090МГц)
Також бажано місце з більш-менш відкритим оглядом хоч частини неба, т.к. сигнали гігагерцевої частоти поглинаються перешкодами на зразок будинків чи дерев.
У мене і Raspberry Pi, і RTL-SDR вже були, тож нічого купувати не довелося. Але спробувати безкоштовно отримати готовий приймач може будь-хто - і Flightradar і Flightaware розсилають комплекти безкоштовно користувачам з тих районів, де покриття на даний момент недостатньо. Надіслати запит можна за посиланням ( або ), зрозуміло, пробувати доцільно тим, хто живе у досить віддаленій місцевості.
Я використовував комплект з RTL-SDR V3, який разом з антеною та міні-штативом коштував 27 $ з безкоштовною доставкою з Китаю:

До речі, як другий бонус, всім, хто відправляє дані на сервер, і Flightradar24 і Flightaware надають необмежений доступ до premium-акаунту і всім функціям сервера (окремо такий доступ коштує близько 50 $ / місяць). Отже, якщо хтось цікавиться авіацією і хоче мати розширений доступ до такого облікового запису, встановлення RTLSDR-приймача є цілком дешевою альтернативою.
Тестування
Установка дуже проста, на Raspberry Pi достатньо підключити приймач і запустити одну команду:
sudo bash -c "$(wget -O - http://repo.feed.flightradar24.com/install_fr24_rpi.sh)"Скрипт запросить необхідні дані (координати та тип приймача, адресу електронної пошти), далі програма буде працювати автоматично, увага з боку користувача більше не потрібна. Паралельно можна активувати преміум-акаунт (для FR24 за посиланням ) і одразу користуватися всіма його можливостями (треки польотів та ін).
Можна зайти на сторінку IP-адреси Raspberry Pi та побачити поточний статус:

Набагато більше інформації можна побачити на сторінці облікового запису Flightradar24:

Я живу на 6-му поверсі відносно недалеко від аеропорту, так що кількість літаків, що спостерігаються, за день склала більше 1000, навіть на просту антену на підвіконні. Цікаво, що навіть із такою антеною максимальна дальність до прийнятого борту склала 215 миль. Різні варіанти антен можна знайти на ebay, набравши у пошуку ads-b antenna.
Альтернатива
Бонус для тих, у кого вистачило терпіння дочитати сюди. У деяких читачів може виникнути питання: чи можна обійтися без сторонніх сервісів Flightradar? Зрозуміло можна, запустити декодер на Raspberry Pi можна безпосередньо. Завантажити вихідні дані можна за адресою .
Достатньо на Raspberry Pi набрати 3 команди:
git clone https://github.com/antirez/dump1090.git
cd dump1090/
makeПотім декодер можна запустити командою:
./dump1090 --interactive --netДекодер починає роботу, і ми бачимо «сирі дані» – список видимих «бортів»:

Тепер можна зайти браузером на Raspberry Pi і помилуватися власним, локальним Flightradar, картинка може виглядати приблизно так:

Навіщо це може бути потрібне? По-перше, просто з інтересу, по-друге, Flightradar24, на жаль, фільтрує частину даних і показує не всі літаки (наприклад, можуть не показуватися військові, урядові або бізнес-джети). Запустивши свій локальний сервіс, ми бачимо все «як є», без будь-якої цензури. Зате, звичайно, обсяг даних обмежений нашим локальним місцем розташування та якістю антени, також не буде доступна технологія MLAT. Dump1090 доступний у вихідниках, так що бажаючі можуть навіть створити свою версію Flightradar, з блэкджеком та іншими bells and whistles.
Висновки
Як можна бачити, все не так складно, при цьому цікаво і недорого. Для розуміння порядку цін: ще 10 років тому приймач Airnav RadarBox коштував порядку 1000$, зараз RTL-SDR, який робить те саме, можна взяти за 10 $.
У моєму випадку приймач був запущений лише для тестування, практичного сенсу тримати його постійно включеним немає, щільність покриття європейської частини вже й так сягає 100%. Для мешканців російської глибинки, навпаки, це може бути цілком цікавим — з'являється можливість зробити корисну справу для авіамандрівників усього світу, розширивши зону покриття, так і отримати доступ до Premium-акаунту вищезгаданих сайтів.
Усім успішних експериментів.
Джерело: habr.com
