Это описание подготовлено для того, чтобы вы могли разобраться с принципами формирования сигнала WSPR и собрать самостоятельно маяк, работающий на КВ (синтезатор AD9850) и УКВ (синтезаторы ADF4351, AD9851).

Теория WSPR протокола



Этот раздел теории о том, как WSPR работает. Вам не нужно все это понимать, чтобы собрать передатчик WSPR. Мне пришлось разобраться, т.к. необходимо было написать программу.


Спецификация протокола:

  • Стандартное сообщение: позывной + 4 цифры QTH-локатора +мощность в дБм (например, UY0LL KN79 30)
  • Стандартное сообщение после сжатия содержит: 28 бит для позывного, 15 для локатора, 7 для уровня мощности, всего 50 бит.
  • Прямая коррекция ошибок (Forward Error Correction, FEC, помехоустойчивое кодирование): нерекурсивный сверточный код с длиной кодового ограничения К = 32, скорость R = 1/2.
  • Количество двоичных символов в дном периоде передачи: nsym = (50 + K-1) * 2 = 162.
  • Скорость манипуляции: : 12000/8192 = 1,4648 бод
  • Модуляция: частотная манипуляция 4-FSK, разнос между тонами 1,4648 Гц.
  • Занимаемая полоса: около 6 Гц
  • Структура данных: каждый символ последовательности передается как один бит синхронизации (LSB) и один бит данных (MSB).
  • Продолжительность передачи: 162 * 8192/12000 = 110,6 с.
  • Передачи начинаются в первую секунду каждой четной минуты.
  • Минимальное отношение сигнал/шум S/N для приема: около -28 дБ по шкале WSJT (эталонная ширина полосы 2500Гц).



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

Код
$ ./wspr0 Tx 0 0.0015 0 UY0LL KN79 20 11



Так как WSPR имеет фиксированную форму сообщения, в которое входят позывной станции, 4-значный QTH локатора и мощности сигнала в дБм. В моем случае это будет "UY0LL KN79 20", где UY0LL мой позывной, KN79 - это первые 4 цифры моего QTH локатора и 20 дБм (примерно 100мВт). Использование помехоустойчивое кодирования с длиной кода 32 и скоростью 0,5 в качестве параметров для прямого исправления ошибок позволяет ввести избыточный код (поэтому потеря части битов уже имеет значительно меньшее влияние на качество принятого сообщения) . Общее количество передаваемых битов при этом увеличивается с 50 до 162 (см. расчет количества битов в одном сообщении):

N_{sym} = 2(B + [K-1]) = 2(50 + [32-1]) = 2(81) = 162

Длительность каждого тона (бита) в последовательности составляет 8192/12000 = 0.682666667 секунды . Т.е. тоны в последовательности следуют с частотой:


Поскольку используется MFSK-4 модуляция с 4-х частотной манипуляций и разносом 1.4648Гц, сигнал будет занимать полосу частот:


162-битная последовательность содержит в себе псевдослучайный вектор синхронизации (pseudo-random synchronisation vector PRSV), который помогает синхронизироваться на приемной стороне. Эта информация дает приемной станции некоторые данные, по которым демодулятор знает, что надо ожидать в следующем принимаемом бите. Благодаря этому декодер способен выделить информацию из сообщения (позывной, локатор, мощность) и также обнаружить ваш сигнал. Каждый тон, называющийся символом канала, кодируется из одного бита синхронизации (LSB) и одного бита данных (MSB) и при этом может быть 4 комбинации битов ( 00, 01, 10, 11). Т.е. мы передаем два бита одновременно, соответственно как один из 4-х тонов.

Общее время передачи составляет:



Сборка конструкции


Для сборки  WSPR маяка потребуются:

  1. Arduino Mega
  2. Arduino MEGA ProtoShield
  3. DDS AD9850
  4. GPS модуль Ublox NEO6M с антенной

Вообще-то для управления синтезатором достаточно самого маленького контроллера Nano из семейства Arduino. Но я использовал контролер Arduino Mega, т.к. с ним в комплекте можно использовать специальную отладочную плату Arduino MEGA ProtoShield, на которой будут смонтированы  DDS и GPS модули.

Контакты Arduino № 44, 45, 46 и 47 соединяются с контактами DDS W_CLK, DATA, FU_UD и RESET соответственно. Обозначение контактов на модуле GPS:

  • VCC (напряжение питания);
  • RX (входящие данные);
  • TX (исходящие данные);
  • GND (общий контакт).

контакты 14 и 15 Arduino необходимо соединить с сигналами  RX и TX соответственно.  Питание модулей DDS  и GPS можно подать с Arduino Protoshield контакты +5V и GND .

Настройка WSPR 


После того, как разобрались с железом, можно заняться установкой программного обеспечения WSPR. Сначала необходимо установить системное программное обеспечение Arduino. Описание процедуры установки приведено, например, здесь. Программу WSPR beacon для Arduino  загрузите отсюда. Настройка программы проста и не должна вызывать трудностей у самых неискушенных пользователей компьютеров. В тексте скетча (так называются программы для Arduino) вам надо внести изменения, связанные с вашими данными - позывной, QTH-локатор и уровень мощности. Если вы используете Linux, то команда, приведенная ниже, поможет преобразовать ваши данные в цифровой код (цифры, разделенные запятыми) для внесения изменений в текст скетча:

Код
$ ./wspr0 Tx 0 0.0015 0 UY0LL KN79 20 11 | awk '{print $2}' | sed ':a;N;$!ba;s/\n/,/g'

3,3,0,0,2,0,0,2,3,2,0,0,3,3,1,0,2,2,1,2,2,3,2,1,3,1,3,0,2,2,2,2,0,2,3,2,2,3,2,1,2,2,
2,2,0,2,3,0,3,1,2,0,3,1,2,3,0,0,2,1,3,2,1,0,2,2,2,1,3,0,1,2,3,2,3,2,3,0,0,1,2,0,1,2,1,
3,2,0,2,3,1,2,3,2,1,2,0,0,1,0,0,2,2,2,1,0,2,3,0,0,1,3,3,0,3,3,0,2,3,3,2,1,2,2,2,3,3,1,
2,0,2,2,2,1,0,1,2,0,3,3,0,2,0,2,0,0,2,3,3,0,1,0,3,3,0,2,0,3,1,2,0,2


 Результат выполнения команды для ваших параметров вносится в скетч вместо соответствующего текста:

Код
// HOME: UY0LL KN79 10dbm (10mw)
// WSPR Tone Data - line breaks in no parciular place, just to look pretty. (0-161).

static byte WSPR_DATA_HOME[] =
{3,3,0,0,2,0,0,2,3,2,0,0,3,3,1,0,2,2,1,2,2,3,2,1,3,1,3,0,2,2,2,2,0,2,3,2,2,3,2,1,2,2,
2,2,0,2,3,0,3,1,2,0,3,1,2,3,0,0,2,1,3,2,1,0,2,2,2,1,3,0,1,2,3,2,3,2,3,0,0,1,2,0,1,2,1,
3,2,0,2,3,1,2,3,2,1,2,0,0,1,0,0,2,2,2,1,0,2,3,0,0,1,3,3,0,3,3,0,2,3,3,2,1,2,2,2,3,3,1,
2,0,2,2,2,1,0,1,2,0,3,3,0,2,0,2,0,0,2,3,3,0,1,0,3,3,0,2,0,3,1,2,0,2};


После внесения изменений в текст скетча, откомпилируйте его и загрузите в Arduino так, как это описано в процедуре установки системного ПО Arduino.

Тестирование

После того, как разобрались с железом, можно заняться проверкой приема WSPR сигнала, формируемого маяком. Дял этого установите на компьютер программное обеспечения WSPR. Последнюю версию ПО можно загрузить отсюда. Доступны версии для Windows, Linux (deb-пакет), а так же можно скачать исходный код программы и попытаться собрать исполняемый модуль самостоятельно на своей «уникальной» платформе. Настройка программы проста и не должна вызывать трудностей у самых неискушенных пользователей компьютеров. Зайдите в меню Setup->Options и введите свой позывной и QTH-loc.

Синхронизация часов 


Как уже говорилось выше, очень важно, чтобы все участвующие в сети маяков станции работали синхронно - начинали передачу в определенное время, в противном случае велика вероятность того, что начав прием или передачу в произвольный момент времени, программа не сможет правильно декодировать принятый сигнал либо проведенную передачу никто не сможет корректно принять. Так что синхронизируйте часы своего компьютера со службами времени, работающими по протоколу NTP, либо любым другим доступным способом, обеспечивающим высокую точность установки часов, например по GPS-приемнику.

Настройка трансивера 

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

Прием сигналов 


Теперь, когда все готово, можно приступить к приему сигналов. Переведите программу WSPR в режим Rx соответствующей кнопкой из группы элементов T/R и ждите. С наступлением очередной четной минуты WSPR в правой нижней части окна программы появится сообщение "receving". Дождитесь начала отрисовки "водопада" в окне программы - это может занять до 2-х минут. Это будет означать, что программа принимает сигналы из эфира. Если среди монотонной гаммы "водопада" будут видны явные или не очень явные горизонтальные черточки то, скорее всего это сигналы  WSPR маяка и результы декодирования этого сигнала можно будет увидеть в окне лога в нижней области окна программы. С началом очередной четной минуты WSPR снова начнет прием.

 

У вас недостатньо прав для коментування