Отрабатывал обмен по VirtualComPort STM32 для SDR проекта, а получилось простенькая, интересная реализация WSPR маячка. Ранее у меня уже были реализации на PIC и на AVR.
Автоматический WSPR маяк WSPR-Beacon-4, предназначен для исследования прохождения на следующих КВ диапазонах: 160/80/40/30/20/17/15/12/10m. Базовые частоты диапазонов: USB dial (MHz): 1.8366, 3.5686, 7.0386, 10.1387, 14.0956, 18.1046, 21.0946, 24.9246, 28.1246. Подробная информация о моде на сайте WSPRNet.org.
Необходимое оборудование: модуль Blue-Pill на базе МК STM32F103C8T6
Модуль SI5351
USB кабель
Соединение модулей
Для работы маяка достаточно питания +5в от USB, либо отдельного источника питания. Настройка и мониторинг работы маяка осуществляется через USB подключение к персональному компьютеру и любой программы терминала для работы с COM портами, например ArduinoTerminal или SerialPortMonitor, в терминале необходимо включить символы конца строки для передаваемых команд — \r\n (CRLF)
Пример для Serial Port Monitor: Send dialog → Add after packet: #0D#0A
Пример для Arduino IDE Serial Monitor: Line ending → «Carriage return + Line feed»
Перед прошивкой STM32F103C8T6 рекомендуется полностью стереть FLASH память STM32, после прошивки маяк готов к работе с настройками по умолчанию. Для конфигурации маяка, необходимо подключить STM32 к персональному компьютеру по USB, открыть программу терминал, указать COM порт, на котором определилась STM32.
Пользовательские команды
HELP – выводит список команд
STATUS – выводит текущее состояние маяка
Маяк в режиме ожидания, GPS нет данных, модуль GPS не видит спутников, включен режим WSPR маяка. После первого включения происходит так называемый холодный старт модуля GPS, чтобы модуль быстрее увидел спутники, необходимо разместить антенну модуля на открытом пространстве, либо у окна, когда модуль GPS принимает необходимое количество спутников для определения точных координат, на плате модуля GPS моргает светодиод.
Маяк в режиме ожидания, GPS время UTC 15:01:30, QTH локатор, определенный по текущим координатам – NO15LC, включен режим WSPR маяка.
CONFIG – выводит текущую конфигурацию маяка записанную во FLASH памяти STM32.
Конфигурация хранит следующие данные: позывной, активные диапазоны в метрах, выходная мощность для WSPR сообщения, частота опорного кварцевого резонатора на модуле SI5351, установкой данного значения выполняется точная калибровка частоты на выходе генератора, идентификатор строки GPS сообщения для получения текущего времени и координат, для последующего определения QTH локатора, логический уровень сигнала на пине PA8 для управления внешним усилителем мощности, логически уровень сигнала на пинах PB12/13/14/15 управления внешними ФНЧ через дешифратор, например SN74LS145D по стандартным кодам ABCD.
CALLSIGN=R9OFG – данная команда установит позывной R9OFG
BANDS=40,20 – данная команда установит активные диапазоны 40m и 20m, диапазоны указываются через запятую, допустимые значения 160/80/40/30/20/17/15/12/10
POWER=10 – данная команда установит значение выходной мощности равное 10dBm, этот уровень выдает генератор SI5351, допустимые значения в dBm 0/3/7/10/13/17/20/23/27/30/33/37
Данное значение только кодируется в WSPR сообщении и не влияет на уровень сигнала на выходе генератора SI5351.
XTALL=25000130 – данная команда установит значение опорного кварцевого резонатора на модуле генератора SI5351, частота указывается в Гц, допустимый диапазон 10…28МГц
Для калибровки выходной частоты генератора, можно включить генерацию на указанной частоте, например 15МГц, командой GEN_ON=15000000
В данном случае генератор SI5351 включит генерацию на указанной частоте, загорится светодиод на плате STM32 подключенный к пину PC13, вводом значения кварцевого резонатора добиваемся точного показания частоты на частотомере, ниже скрин прибора OSA 130 mini
GEN_OFF – команда отключает генерацию тестового сигнала
GPS_LINE_HEADER=$GPRMC – данная команда установит идентификатор сроки $GPRMC для извлечения текущего времени в UTC и координат
При использовании модуля NEO-6M, можно указать идентификатор $GPGGA, у его клонов бывает $GNGGA. Чтобы посмотреть какие данные отдает модуль GPS, можно воспользоваться командой GPS_START
GPS_STOP – останавливает трансляцию данных модуля GPS в терминал
Теоретически можно использовать другой модуль GPS который передает данные по UART со скоростью 9600 бод, и если в данных от модуля GPS есть какая-либо строка с идентификатором $GPRMC или $GPGGA или $GNGGA содержащая время и координаты.
EXT_PWR=HIGH – данная команда установит логический уровень на пине PA8 при WSPR передаче либо при тестовой генерации сигнала, допустимые значения HIGH/LOW.
EXT_BPF=LOW – данная команда установит логический уровень на пинах PB12/13/14/15 (коды ABCD) при командах управления внешними ФНЧ/ДПФ.
Например, установлен логический уровень LOW, при коде 0101 на пинах PB12/14 будет логическая 1, на пинах PB13/15 будет логический 0, при настройке EXT_BPF=HIGH, состояния пинов инвертируются.
В данном релизе прошивки используется разделение на 5 поддиапазонов, граничные частоты: 2499999/4499999/7999999/15999999/29999999 в Гц, соответственно управляющие коды 0000/1000/0100/1100/0010.
WRITE – данная команда записывает текущую конфигурацию во FLASH память STM32, если после изменения конфигурации не выполнить данную команду, после отключения питания текущая конфигурация не сохранится.
WSPR_START – данная команда включает автоматический режим маяка, светодиод на плате STM32 будет моргать, это означает, что маяк ждет условия старта WSPR передачи, а именно получения точных координат и начало четной минуты, маяк перед каждой новой передачей рассчитывает QTH локатор от текущих координат.
WSPR_STOP – данная команда отключает автоматический режим работы маяка.
Если маяк подключен к персональному компьютеру через USB, и включен мониторинг через терминал, при старте и завершении WSPR передачи в терминале будет выводиться соответствующая информация
Обычно окно декодирования сообщений принимаемой станции находится в пределах 1400…1600 Гц, например, базовая частота диапазона 40m составляет 7038600 Гц, значит передача должна идти на частотах в окне от 7038600 + 1400 = 7040000 Гц до 7038600 + 1600 = 7040200 Гц. Маяк перед передачей рассчитывает новую частоту смещения от базовой частоты случайным образом, соответственно каждая передача идет с новым, случайным, смещением от базовой частоты, что повышает вероятность успешного декодирования принимаемой станцией.
Автоматический режим маяка отключается при вводе любой команды, кроме команды STATUS. Тестовая генерация сигнала, вывод сообщений от модуля GPS, отключаются при вводе любой команды.
При сбросе STM32, включается автоматический режим маяка.
Генератор SI5351 обеспечивает выходной уровень сигнала ~10dBm(10mW), при хорошей антенне и хороших условиях прохождения принимающие станции теоретически могут принять передачу с таким уровнем. Для увеличения шансов приема WSPR передач маяка принимающими станциями, необходимо усилить сигнал, например, до 20dBm(100mW) или выше.
В архиве инструкция и актуальная прошивка: v1.0
73!









