24
March
2023
Формирование сигнала для УКВ радиомаяка в режиме PI4
15:50

Формирование сигнала для УКВ радиомаяка в режиме PI4

24 March 2023 15:50

Мне на почту пришло сообщение с вопросом, как сформировать звуковой сигнал для маяка в режиме PI4.
В статье рассказываю о том, как получилось сделать без использования сторонних аппаратных средств, только программными возможностями Linux.

Введение

Радиомаяки на УКВ предназначены для отслеживания прохождения сигнала, определения условий "тропо", при которых из-за повышенной рефракции радиоволн становится возможной дальняя радиосвязь на УКВ с высокими уровнями сигнала. В обычные дни активность радиолюбителей на УКВ низкая, но в дни сильного тропо возрастает многократно, т.к. резко улучшается слишимость дальних корреспондентов в аналоговых режимах CW, SSB и цифровых видах FT4, FT8, JT65A и других. Чтобы вовремя обнаружить улучшение распространения радиоволн на УКВ, используют маяки. Это постоянно или большую часть времени действующие передатчики, размещёные на частотах предназначенных для УКВ маяков.

IARU в регионе 1 разрешает узкополосные бакены в участке 144,400 - 144,490 МГц согласно VHF Bandplan, российская сетка частот в последнем решении ГКРЧ ссылается на частотный план диапазона R1. Полоса сигнала телеграфного маяка не должна превышать 500 Гц. Для широкополосных экспериментальных маяков исследований слабых сигналов предназначен участок 144,491 - 144,493 МГц, где разрешена полоса сигнала до 20 кГц.

Частота маяка RB1CA в Приозеске - 144,420 МГц, маяка UA1ZFG в Мурманске — 144.430 МГц.

PI4 — это идеальная цифровая модуляция, которая соответствует принятой Комитетом IARU по УКВ региона 1 радиомаяков в смешанном режиме "MGM - CW - несущая". Длительность передачи 1 минута (непрерывная передача практически без пауз — 100% рабочий цикл 60 секунд), затем передача повторяется.

В статье "Радиомаяк RB1CA в Приозерске" приведен опыт приёма маяка в программе PI4RX для Windows.

Поиск информации по способам формирования сигнала привел меня на сайт OZ2M "Next Generetion Beacon".

Ресурсы для написания программы

Что из себя представляет модуляция PI4 ?

Описание модуляции размещено на сайте OZ2M.

PI4 - модуляция с 4 тонами (FSK). Два тона не могут звучать одновременно.

Параметры FSK модуляции зависят от коэффициента K, который может принимать значения 40, 80, 96 и 120. По факту, PI4-RX распознаёт лишь модуляцию с K=40, её и использовал. Также, она называется "PI4 модуляция".

Каждой частоте можно присвоить код 0, 1, 2, или 3. Длительность передачи сформированного машиной сигнала (MGM - machine generated mode) — приблизительно 24 секунды.

fsk-code

На приёме необходимо выставить частоту приёма с точностью +- 50 Гц относительно несущей 800 Гц (лучше +- 12.5 Гц для возможности сужения полосы пропускания фильтра частот на приёме с 100 Гц до 50 или 25 Гц).

Четыре тона выровнены по сравнению с несущей 800 Гц на

  • Тон 0: -117,1875 Гц
  • Тон 1: 117,1875 Гц
  • Тон 2: 351,5625 Гц
  • Тон 3: 585,9375 Гц

Расстояние между тонами deltaF = 12000/2400 * k , для коэффициента k=40 составляет 234.375 Гц.
Длительность звучания символа 2000/12000 = 0.166 секунды.

Название k deltaF, Гц сдвиг CW-FSK, Гц Полоса, Гц
PI4 40 234.375 250 709.125
PI4-80 80 468.750 400 1412,250
PI4-96 96 562,500 400 1693,500
PI4-120 120 703,125 400 2115,375

Частоты тонов режима PI4 (k=40)

FREQ0=682.8125 Гц
FREQ1=917.1875 Гц
FREQ2=1151.5625 Гц
FREQ3=1385.9375 Гц

Частота несущей = 800 Гц - для точной настройки на сигнал (важно!).

Первый тон для DFCW = 800 Гц
Второй тон для DFCW = 800-234.375 = 565.625 Гц (частота не принципиальна, т.к. CW в PI-RX не распознаётся).

Рабочий цикл маяка PI4

Цикл повторения передачи - 1 минута начиная с 00 секунд (синхронизация времени на передатчике и приёмнике должна быть очень точная - лучше +-1 секунды.

pi4mod

Набор утилит для формирования PI4

Файл Описание Вход Выход
stage1.c Консольное приложение на языке ANSI C для формирования последовательности частот PI4 - разработал самостоятельно на основе исходных текстов репозитория программ с открытым исходным кодом GitHub Guenael/tinybeacon. Используется однократно. CALLSIGN в тексте stage1.c Последовательность 146 цифр
stage2.c Консольное приложение на языке ANSI C для кодирования Позывного и Локатора в последовательность частот двухчастотной CW- манипуляции (DFCW) - разработал самостоятельно. Используется однократно. CALLSIGN, LOCATOR в тексте stage2.c Последовательность N цифр для CW
pi4-wav.sh shell скрипт автора PE1ITR для создания WAV-файла с модуляций PI4. Для создания звука (синусоиды) используется утилита sox. Выход программ stage1.c и stage2.c WAV файл с модуляцией PI4, для передачи
run.zsh shell скрипт для запуска mpv имя_файла.WAV в начале каждой минуты. WAV-файл звук

Правило написания позывного в первой части сообщения (MGM)

Длина строки позывного должна быть длиной 8 символов. После позывного и "дроби" нужно дополнить строку до 8 символов пробелами в конце.
table
С помощью добавление избыточности и функции cвертки(convolution) с перемежением, эти 8 символов в процессе кодирования преобразуются в псевдослучайную последовательность из 146 символов. Длительность каждого символа в стандарте PI4 выбрана 2000/12000 = 0.1666 скунд. Итоговая длительность MGM части сообщения, в которой при помощи 4 тонов передаётся позывной - 24.32 секунды .

Правило создания сообщения во второй части передачи маяка (CW)

Длина передачи со скоростью 12 WMP должна составлять 12-20 секунд, например, сообщение RA1AHQ ko59ct длится 16.5 секунд. Если позывной короче, 4-значный, длина сообщения CW уменьшается, а длина последующей несущей CW увеличивается автоматически, что предусмотрено в скрипте pi4-wav.sh.
Разрешенные символы - 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ /.
Ограничение связано с тем, что должно остаться время на "настроечный" сигнал - несущую 800 Гц.

Несущая 800 Гц для настройки (третья часть передачи)

Утилита sox вызываемая с параметрами из скрипта pi4-wav.sh формирует несущую 800 Гц (для настройки по "нулевым биениям") в оставшееся до 60 секунд время передачи - 60-24.3-16.5=19 секунд. Длина последней части несущей: 16-24 секунд в зависимости от различной длительности CW части.

Правило выдачи сообщений маяка PI4 в эфир

Сообщения должны быть синхронизированы по времени по протоколу NTP с максимальной точностью.
Приемлемой является точность до секунды. Начало передачи сообщений - 00 секунд каждой минуты.
Длительность сообщения несколько короче минуты, например, 58 или 59 секунд. Каждую минуту запуск сообщения производится с начала. Передатчик в режиме USB для маяка должен работать постоянно, а модуляция производится с помощью вывода в эфир файла WAV, синхронизированного по времени.
Дрейф частоты передатчика не должен превышать +- 50 Гц (0.5 ppm = 72 Гц) на частоте 144.7 МГц.

Инструкция (как пользоваться набором программ)

0) Установите пакеты для компиляции и программу sox для синтеза звука - синусоида заданной частоты и фазы.

sudo apt-get install build-essential sox

1) Исправьте позывной в исходном тексте файла stage1.c. Позывной вместе с конечными пробелами должны занимать 8 символов строго!
Скомпилируйте программу и запустите её:

nano stage1.c
gcc stage1.c -o stage1
./stage1

2) Исправьте текст для CW-сообщения второй части работы маяка, скомпилируйте программу, запустите её:

nano stage2.c
gcc stage2.c -o stage2
./stage2

3) Отредактируйте pi4-wav.sh - пропишите последовательности из пунктов 1 и 2.

nano pi4-wav.sh

4) Запустите файл, который сформирует WAV файл для маяка

bash pi4-wav.sh

4) Прослушайте файл в том же каталоге: result.wav

5) Улучшаем качество - убираем щелчки при смене частот тонов (символов FSK) - В Audacity накладываем фильтр низких частот (убираем частоты от 2 кГц и выше).

sudo apt-get install audacity
audacity result.wav

Выделить - Все
Эффекты - Графический EQ

eq

6) Сохраняем обработанный звук в файл result!.wav .

7) Подготовка к запуску скрипта - устанавливаем zsh

sudo apt-get install zsh

8) Запускаем под Linux скрипт run.zsh. С этого ПК будет вестись передача маяка.

9) Запускаем программу под Windows PI4-RX. Смотрим на "водопад" (для теста я соединил источник звука одного ПК под Linux кабелем с приемником на другом ПК под Windows. В реальных условиях первый ПК должен выводить сигнал на передатчик с антенной маяка, а второй ПК должен находиться достаточно далеко от него на приёме).

10) При наблюдении нескольких циклов передачи, уточняем коррекцию времени в файле run.zsh (у меня константа -0.90 секунд), чтобы на приеме было минимальное отклонение начала передачи от начала минуты 0 секунд. Например, от -0.2 до +0.2 секунды в зависимости от цикла.
progress4

Архив с исходными текстами программ:
pi4.zip



Related publications