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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Привет Хабр.

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


VOR Beacon (с) wikimedia.org

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

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


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

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

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

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



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

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

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


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



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



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

Граф GNU Radio:



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



Сигнал достаточно зашумленный, и для окончательного вычисления разности фаз может потребоваться дополнительная фильтрация, но принцип надеюсь, ясен.

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

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



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


Image © www.aopa.org

Заключение


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

Как обычно, всем удачных экспериментов.
Источник: https://habr.com/ru/post/522828/


Интересные статьи

Интересные статьи

Магнитогорский металлургический комбинат входит в число крупнейших мировых производителей стали и занимает лидирующие позициии среди предприятий черной металлургии России. На пред...
Отбор признаков – это важная задача для любого приложения с машинным обучением. Особенно важно, когда данные, о которых идет речь, имеют много признаков. Оптимальное коли...
Сегодня я расскажу о том, как быстро собрать отказоустойчивый кластер с балансировкой нагрузки с помощью keepalived на примере DNS-серверов. Читать дальше → ...
В компьютерном зрении существует метод измерения расстояния до объекта без использования датчиков глубинны и стереокамер. В данной работе метод используется для определения положе...
На сегодняшний день у сервиса «Битрикс24» нет сотен гигабит трафика, нет огромного парка серверов (хотя и существующих, конечно, немало). Но для многих клиентов он является основным инструментом ...