[Программирование, Беспроводные технологии, Разработка систем связи, Гаджеты, Научно-популярное] Определяем направление на аэропорт с помощью RTL-SDR и GNU Radio

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
10-Окт-2020 07:36

Привет Хабр.
В настоящее время существует не так уж много стандартов связи, которые с одной стороны, любопытны и интересны, с другой стороны, их описание не занимает 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, вот так «на пальцах» декодировать уже не получится. Они открыты для приема, в них нет ключей и криптографии. Во-вторых, возможно, в будущем они уйдут в историю и будут заменены спутниковой навигацией и более современными цифровыми системами. Так что владельцам приемников можно посоветовать принять такие сигналы, пока они еще работают.
Как обычно, всем удачных экспериментов.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_programmirovanie (Программирование), #_besprovodnye_tehnologii (Беспроводные технологии), #_razrabotka_sistem_svjazi (Разработка систем связи), #_gadzhety (Гаджеты), #_nauchnopopuljarnoe (Научно-популярное), #_navigatsija (навигация), #_aviatsija (авиация), #_vor, #_gnu_radio, #_dekodirovanie (декодирование), #_programmirovanie (
Программирование
)
, #_besprovodnye_tehnologii (
Беспроводные технологии
)
, #_razrabotka_sistem_svjazi (
Разработка систем связи
)
, #_gadzhety (
Гаджеты
)
, #_nauchnopopuljarnoe (
Научно-популярное
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 12:28
Часовой пояс: UTC + 5