- PVSM.RU - https://www.pvsm.ru -

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio

В настоящее время существует не так уж много стандартов связи, которые с одной стороны, любопытны и интересны, с другой стороны, их описание не занимает 500 страниц в формате PDF. Одним из таких, несложных для декодирования, является сигнал VHF Omni-directional Radio Beacon (VOR), используемый в аэронавигации.

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio - 1
VOR Beacon (с) wikimedia.org

Для начала вопрос читателям — как сформировать сигнал так, чтобы с помощью ненаправленной приемной антенны можно было определять направление? Ответ под катом.

Общая информация

Система Very high frequency Omni-directional Range [1] (VOR) используется для аэронавигации еще с 50х годов прошлого века, и состоит из радиомаяков относительно небольшой дальности (100-200 км), работающих в диапазоне частот УКВ 108-117 МГц. Сейчас, в эпоху гигагерц, название very high frequency применительно к таким частотам звучит забавно и уже само по себе говорит о возрасте этого стандарта, но кстати, еще работают маяки NDB [2], работающие в диапазоне средних волн 400-900 КГц.

Размещение направленной антенны на самолете конструктивно неудобно, поэтому возникла задача, как закодировать в самом сигнале информацию о направлении на маяк. Принцип работы «на пальцах» можно объяснить следующим образом. Представим, что у нас есть обычный маяк, посылающий узкий луч зеленого света, лампа которого вращается 1 раз в минуту. Очевидно, что раз в минуту мы будем видеть вспышку света, но одна такая вспышка много информации не несет. Добавим к маяку вторую ненаправленную лампу цвета красного цвета, вспыхивающую в момент, когда луч маяка «проходит» направление на север. Т.к. период вспышек и координаты маяка известны, посчитав задержку между красной и зеленой вспышками, можно узнать азимут на север. Все просто. Осталось сделать то же самое, но с помощью радио. Решено это было с помощью изменения фаз. Для передачи используется два сигнала: фаза первого является постоянной (reference), фаза второго (variable) меняется сложным образом в зависимости от направления излучения — каждому углу соответствует свой сдвиг фазы. Таким образом, каждый приемник будет получать сигнал со «своим» сдвигом фаз, пропорциональным азимуту на маяк. Технология «пространственной модуляции» осуществляется с помощью специальной антенны (Alford Loop, см КДПВ) и особой, довольно хитрой модуляции. Которая собственно и является темой этой статьи.

Представим, что у нас есть обычный legacy-маяк, работающий с 50х годов, и передающий сигналы в обычной АМ-модуляции азбукой Морзе. Вероятно, когда-то давно, штурман действительно слушал эти сигналы в наушниках и отмечал направления линейкой и циркулем на карте. Мы хотим добавить к сигналу новые функции, но так, чтобы «не порушить» совместимость со старыми. Тема знакомая, ничто не ново… Было сделано следующим образом — к АМ сигналу добавили низкочастотный 30 Гц тон, исполняющий функцию reference-phase сигнала, и высокочастотную компоненту, закодированную частотной модуляцией на частоте 9.96 КГц, передающую variable phase сигнал. Выделив два сигнала и сравнив фазы, мы получаем искомый угол от 0 до 360 градусов, который и является нужным азимутом. При этом, всё это не помешает слушать маяк «обычным образом» и остается совместимым со старыми АМ-приемниками.

Перейдем от теории к практике. Запустим SDR-приемник, выберем модуляцию АМ и ширину полосы 12 КГц. Частоты маяков VOR можно легко найти в сети. На спектре сигнал выглядит следующим образом:

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio - 2

В данном случае сигнал маяка передается на частоте 113.950 МГц. В центре видна легко узнаваемая линия амплитудной модуляции и сигналы азбукой морзе (.- — … что значит AMS, Амстердам, аэропорт Schiphol). Вокруг на расстоянии 9.6 КГц от несущей видны два пика, передающие второй сигнал.

Запишем сигнал в WAV (не MP3 — сжатие с потерями «убьет» всю структуру сигнала) и откроем его в GNU Radio.

Декодирование

Шаг 1. Откроем файл с записанным сигналом, и применим к нему фильтр низких частот, чтобы получить первый reference-сигнал. Граф GNU Radio показан на рисунке.

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio - 3

Результат: низкочастотный сигнал с частотой 30 Гц.

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio - 4

Шаг 2: декодируем variable phase сигнал. Как говорилось выше, он расположен на частоте 9.96 КГц, нам нужно перенести его на нулевую частоту и подать на FM-демодулятор.

Граф GNU Radio:

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio - 5

Все, задача решена. Мы видим два сигнала, разность фаз которых указывает на угол от приемника до VOR-маяка:

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio - 6

Сигнал достаточно зашумленный, и для окончательного вычисления разности фаз может потребоваться дополнительная фильтрация, но принцип надеюсь, ясен. Для тех, кто забыл как определяется разность фаз, картинка из aviation.stackexchange.com [3]:

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio - 7

К счастью, все это вручную можно не делать: существует уже готовый проект [4] на Python, декодирующий сигналы VOR из WAV-файлов. Собственно, его изучение и вдохновило меня на изучение этой темы.

Желающие могут запустить программу в консоли и получить готовый угол в градусах из уже записанного файла:

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio - 8

Фанаты авиации могут даже сделать себе портативный приемник из RTL-SDR и Raspberry Pi. Кстати, на «настоящем» самолете данный индикатор выглядит примерно так:

Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio - 9
Image © www.aopa.org [5]

Заключение

Подобные сигналы «из прошлого века» определенно интересны для анализа. Во-первых, они достаточно простые, современный DRM или тем более GSM, вот так «на пальцах» декодировать уже не получится. Они открыты для приема, в них нет ключей и криптографии. Во-вторых, возможно, в будущем они уйдут в историю и будут заменены спутниковой навигацией и более современными цифровыми системами. В третьих, изучение таких стандартов позволяет узнать интересные технические и исторические подробности того, как задачи решались на другой схемотехнике и элементной базе прошлого века. Так что владельцам приемников можно посоветовать принять такие сигналы, пока они еще работают.

Как обычно, всем удачных экспериментов.

Автор: DmitrySpb79

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/gadzhety/357744

Ссылки в тексте:

[1] Very high frequency Omni-directional Range: https://en.wikipedia.org/wiki/VHF_omnidirectional_range

[2] NDB: https://en.wikipedia.org/wiki/Non-directional_beacon

[3] aviation.stackexchange.com: https://aviation.stackexchange.com/questions/33834/what-causes-the-phase-to-change-in-a-vor

[4] готовый проект: https://github.com/martinber/vor-python-decoder

[5] www.aopa.org: https://www.aopa.org

[6] Источник: https://habr.com/ru/post/522828/?utm_source=habrahabr&utm_medium=rss&utm_campaign=522828