Наблюдаем за самолетами при помощи RTL-SDR и ADS-B
4 октября 2017
Один из способов развлечения с Software Defined Radio заключается в том, чтобы наблюдать за самолетами. В современных самолетах используется технология ADS-B. Суть ее заключается в том, что самолеты передают номер рейса, скорость, высоту полета, GSP-координаты, и прочую информацию о воздушном судне на частоте 1090 МГц, используя модуляцию DPSK. Передаваемая информация никак не шифруется, и при помощи RTL-SDR принять ее может любой желающий.
Выбираем антенну
Как вы можете помнить из заметки О работе пультов и радиомодулей на 433 МГц, для приема сигнала известной частоты можно использовать штыревую антенну, длина которой составляет 1/4 длины волны. Не сложно подсчитать, что в нашем случае длина антенны составит около 68 мм. Такую антенну легко изготовить самостоятельно из SMA-разъема и куска провода, или же обрезав стоковую антенну RTL-SDR. Для лучшего приема антенну следует поставить на металлическую банку из-под кофе, консервированных ананасов, или чего-то такого.
Антенна, которую использовал я, выглядит следующим образом:
Обратите внимание на то, с какого места следует начинать отсчет длины. Заметьте также, что диаметр банки должен быть не меньше 1/4 длины волны. Если банки совсем нет, то под антенной можно постелить лист фольги.
Альтернативные варианты антенн можно найти в этом трэде. В сущности они представляют собой ту же штыревую антенну, только в качестве плоскости заземления (ground plane) используется либо 8 припаянных проводов (так называемая spider antenna), либо обычная алюминиевая банка диаметром 66 мм от Coca-Cola или пива (cantenna):
Еще для приема ADS-B можно использовать G7RGQ Omni Directiona Antenna. Однако ее высота составляет около полуметра, что как минимум не слишком удобно в плане транспортировки. На AliExpress можно купить готовую антенну, которая, согласно описанию, специально предназначена для ADS-B. Эту антенну я не пробовал, поэтому не могу сказать, насколько она хороша или плоха. Наконец, для полноты картины стоит отметить, что на eBay доступна антенна для ADS-B от FlightAware, цена которой составляет 50$ + 24$ за доставку в Россию.
Дополнение: Позже я выяснил, что cantenna, приклеенная на двухсторонний скотч к окну, ловит заметно лучше использованной мной изначально штыревой антенны.
Декодируем ADS-B
Для декодирования ADS-B существует утилита dump1090. Она легко собирается из исходников, или, если у вас Arch Linux, ставится из AUR:
Fun fact! Оригинальный код dump1090 был написан господином Salvatore Sanfilippo, который более известен миру под ником antirez и как автор Redis. А еще у него в блоге можно найти инструкцию по изготовлению дипольной антенны для приема ADS-B из пробки и медной проволоки.
Ставим антенну у окна, подключаем ее к RTL-SDR, который в свою очередь подключаем к компьютеру. Затем говорим:
Если все было сделано правильно, очень скоро вы увидите информацию о пролетающих поблизости самолетах:
----------------------------------------------------------------------
42404B S 1570 13675 7 5 53
42455C S 1200 159 069 8 3 57
4D215F S 5716 40975 7 4 53
424946 S AFL1196 33000 428 092 9 19 55
4245A9 S PBD433 32200 370 067 55.86 39.10 10 50 50
4243F1 S 2151 35750 434 082 55.79 40.51 9 78 45
78100A S 0212 CCA940 34975 484 087 55.67 38.14 12 64 16
4240CA S 29425 451 071 55.62 40.75 10 75 43
42458F S 27000 468 089 55.68 40.54 11 85 44
43BE87 S 1563 AFL1432 16600 376 105 55.69 38.27 20 237 44
Кроме того, на localhost:8080 будет доступен красивый веб-интерфейс, вроде такого:
Сказать по правде, я был приятно удивлен тем фактом, что ADS-B превосходно ловится в черте города. Конечно же, на открытой местности картинка будет куда красивее, так как сигнал будет приниматься со всех сторон, а не только с той, в которую у вас смотрят окна. Что же касается дальности передачи информации, я успешно принимал сигнал от самолета, пролетающего в 160 км от меня. Судя по обсуждению в этом трэде, при правильных условиях (открытая местность, расположение антенны на большой высоте, …) вполне реально наблюдать за самолетами в радиусе 400-450 км.
Заключение
Ссылки по теме:
- Плейн- и радарспоттинг, или я болен авиацией, статья Кирилла Снежко, в которой он более подробно рассказывает о плейнспоттинге и радарспоттинге. Помимо прочего, в статье вы найдете немало интересных ссылок;
- Существует множество форков dump1090, среди которых особого внимания заслуживает форк, умеющий рисовать heatmap, за авторством Ted Sluis;
- Сайт flightradar24.com позволяет наблюдать за самолетами во всем мире. Также вы можете заливать на этот сайт данные о самолетах, принятые на RTL-SDR. Вот инструкция как это сделать;
- Если вам хочется подробнее разобраться в том, как именно кодируются данные в ADS-B, обратите внимание на ADS-B Decoding Guide;
- В видео All Your RFz Are Belong to Me, помимо прочего, приводится много интересных примеров визуализации данных, полученных по ADS-B;
Поначалу я как-то скептически относился ко всей этой теме с наблюдением за самолетами. Но теперь должен признать, что это затягивает. Возникает желание собрать побольше данных и как-то их визуализировать, экспериментировать с антеннами, чтобы добиться максимального радиуса приема сигнала, и так далее. В общем, довольно любопытное хобби, рекомендую.
Дополнение: Прием ADS-B на RTL-SDR, вторая попытка
Метки: SDR, Антенны, Беспроводная связь.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.