WSPR маяк из готовых модулей

Автор: | 28.07.2021

Карта спотов прототипа…

Ссылки на обновления:

Update #1 от 25.11.2021

Update #2 от 12.12.2021

Update #3 от 16.12.2021

Update #4 от 12.01.2022

Update #5 от 10.03.2023

Update #6 от 07.06.2023


Приветствую паяющую публику! Но в данном случае пайка нам практически не понадобиться!

Новая реализация автономного WSPR маяка является продолжением моего проекта WSPR-Beacon-24DX.

Маяк собран из готовых модулей:

Основная плата – Arduino UNO, вернее ее китайский клон

Модуль тактового генератора SI-5351

Модули часов реального времени DS-1302 или DS-3231. Забегая немного вперед скажу, что планируется использование и модулей GPS

Для информативности используется дисплей 1602, поддерживается подключение модуля по i2c. Но этот модуль не обязателен, его можно и не подключать.

Собранная конструкция, вариант с дисплеем 1602 без i2c и модулем часов DS-1302

вариант с дисплеем 1602 с i2c и модулем часов DS-3231

Теперь о управляющей программе (прошивке). Программа написана в среде Atmel Studio 6.2. такое решение было принято по одной простой причине – размер файла прошивки и быстродействие кода.

Для того, чтобы запрограммировать микроконтроллер модуля Arduino UNO управляющей программой необходимо прошить другой бутлоадер в Arduino UNO, а именно от фирмы Chip45. Как это сделать я описывал тут и тут, сложного ни чего нет, понадобится простой USBasp программатор

После того как бутлоадер будет успешно прошит, можно спокойно программировать Arduino UNO прошивкой маяка.

Соединяем модули следующим образом:

Дисплей 1602 (слева выводы дисплея, справа выводы Arduino UNO)

  • VSS –> GND
  • VDD –> 5V
  • RS –> DIGITAL 7
  • RW –> GND
  • E –> DIGITAL 8
  • D4 –> DIGITAL 9
  • D5 –> DIGITAL 10
  • D6 –> DIGITAL 11
  • D7 –> DIGITAL 12
  • A –> 5V
  • K –> GND

Не стоит забывать, что на дисплей 1602 необходимо подключить подстроечное сопротивление для регулировки контрастности символов

Дисплей 1602 с модулем i2c (слева выводы дисплея, справа выводы Arduino UNO)

  • GND –> GND
  • VCC –> 5V
  • SDA –> SDA
  • SCL –> SCL

Модуль часов реального времени DS-1302 (слева выводы DS-1302, справа выводы Arduino UNO)

  • VCC –> 5V
  • GND –> GND
  • CLK –> ANALOG A1
  • DAT –> ANALOG A2
  • RST –> ANALOG A0

Модуль часов реального времени DS-3231 (слева выводы DS-3231, справа выводы Arduino UNO)

  • GND –> GND
  • VCC –> 5V
  • SDA –> SDA
  • SCL –> SCL

Модуль генератора SI-5351 (слева выводы SI-5351, справа выводы Arduino UNO)

  • SCL –> SCL
  • SDA –> SDA
  • GND –> GND
  • VIN –> 5V

Конфигурирование маяка

Для конфигурации маяка используется Windows приложение, написанное в среде Visual Studio Express 2017 на языке C# Windows Forms, конфигуратор не требует установки, работа конфигуратора проверена на системах Windows 7/8/10 x32/x64.

Для конфигурирования маяка необходимо запустить конфигуратор, подключить плату Arduino UNO к USB разъему ПК, выбрать COM порт на котором определилась плата Arduino UNO и нажать кнопку «Connect».

После успешного распознавания конфигуратором платы маяка, в информационном окне конфигуратора будет соответствующая информация и станут доступны элементы управления.

Вкладка «Settings»

Блок «Active bands» – кнопкой «Read» можно прочитать текущую информацию из EEPROM MK, отмечаем галками необходимые диапазоны, кнопка поменяет надпись на «Write» и при нажатии на данную кнопку происходит запись новой конфигурации в EEPROM MK.

Блок «TX options» – кнопкой «Read» можно прочитать текущую информацию из EEPROM MK, вводим позывной, четыре символа QTH локатора, выбираем выходную мощность (эта опция информативная, голая SI-5351 на 50-омную нагрузку выдает примерно 10 dBm), в поле «Get time:» выбираем источник точного времени. После ввода/изменения данных, кнопка поменяет надпись на «Write» и при нажатии на данную кнопку происходит запись новой конфигурации в EEPROM MK.

Блок «Clock generator Si5351» – кнопкой «Read» можно прочитать текущую информацию из EEPROM MK. В поле «Xtal freq:» выбираем значение частоты используемого кварцевого резонатора с генератором SI-5351. В поле «PLLA freq:» выбираем значение для петли ФАПЧ, если на используемом генераторе SI-5351 значение частоты на диапазонах “дрожит”, можно подобрать значение «PLLA freq:» 600 или 900 МГц для стабильной установки частоты на выходе генератора SI-5351. В поле «TX freq offset:» выбираем значение частоты смещения для WSPR передачи в Гц.  После ввода/изменения полей «Xtal freq:», «PLLA freq:» или «TX freq offset:», кнопка поменяет надпись на «Write» и при нажатии на данную кнопку происходит запись новой конфигурации в EEPROM MK.

В режиме подключения к конфигуратору на дисплее маяка отображается соответствующая информация и активный диапазон, с выхода CLK0 можно контролировать частоту диапазона. Кнопками «<Band» и «Band>» меняем активный диапазон.

Частоты используемых в маяке диапазонов по стандарту WSPR: USB dial (MHz):

  • 160m – 1.8366
  • 80m – 3.5686
  • 60m – 5.2872
  • 40m – 7.0386
  • 30m – 10.1387
  • 20m – 14.0956
  • 17m – 18.1046
  • 15m – 21.0946
  • 12m – 24.9246
  • 10m – 28.1246
  • 6m – 50.293
  • 2m – 144.489

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

Для более точной установки выходной частоты реализован следующий функционал – частотомером либо контрольным приемником контролируя выходную частоту генератора SI-5351 выполняем калибровку нажатием на соответствующие кнопки в данном случае изменяется цифровое значение частоты опорного кварцевого резонатора для калькуляции регистров генератора SI-5351 с шагом в 500/100/5 Гц. Калибровку лучше проводить на диапазонах 20…15m. Такой калибровки достаточно для попадания в границы каждого диапазона с точностью до единиц Гц. Калибровочное значение сразу записывается в EEPROM MK.

Выбор используемого дисплея 1602, варианты:

  • без i2c
  • с i2c подсветка включена
  • с i2c подсветка выключена

Кнопка «Set time in xx-xxxx» – при нажатии на данную кнопку происходит установка текущего времени в выбранном модуле часов DS-1302 или DS-3231

время берется через сеть Internet с одного из серверов реального времени, при недоступности сервера либо при отсутствии доступа в сеть internet текущее время берется с локального ПК.

Кнопка «Erase EEPROM data» – при нажатии на данную кнопку обнуляются все ячейки энергонезависимой памяти микроконтроллера EEPROM, рекомендуется сделать очистку EEPROM перед первым конфигурированием маяка, после обновления прошивки и при смене подключаемых модулей. Если в памяти EEPROM нет записанной конфигурации, при первом включении маяка записываются значения по умолчанию – активный диапазон 30m, позывной R0AEK, локатор NO15, выходная мощность 10dBm, источник времени DS-1302, частота опорного кварцевого резонатора 25.000 МГц, частота ФАПЧ PLLA 600.000 МГЦ, дисплей 1602 без модуля i2c. WSPR последовательность не записывается, т.е. при автономной работе маяка, в данном случае будет просто несущая на частоте диапазона.

Вкладка «WSPR data»

На данной вкладке выводится информация о кодированном WSPR сообщении

Кодировка WSPR сообщения выполняется конфигуратором автоматически при записи конфигурации блока «TX options» в EEPROM MK, в память MK записывается WSPR последовательность в виде символов от 0 до 3.

При нажатии на кнопку «Play audio WSPR data» на аудиоустройстве компьютера проигрывается WSPR сообщение. Начало воспроизведения – первая секунда четной минуты. Можно используя виртуальный аудио кабель, с устройства воспроизведения направить аудио поток в программу декодирования WSPR.

После отключения маяка от конфигуратора при нажатии на кнопку «Disconnect», маяк переходит в автономный режим работы. Дожидается первой секунды четной минуты

При наступлении данного условия начинается WSPR передача на выбранных диапазонах, диапазоны переключаются в цикле, т.е. например 160 > 40 > 20 > 160.

В момент передачи на дисплее отображается информация:

Transmit: 40m – передача на диапазоне 40m

Sym ch:3 – символ канала, значение от 0 до 3

13/162 – 13 количество переданных символов, 162 всего символов.

В данной версии используется только один выход CLK0.

Собрал, прошил, сконфигурировал, включил рядом стоящий приемник и процесс пошел!

На новом QTH с антеннами у меня пока беда, тестирую на столе! Надо какой нибудь шнурок выкинуть за окно!

В процессе разработки проекта использовал материалы из источников (To develop the project, i used materials from sources):

  1. WSPRnet.org
  2. Silicon Labs
  3. WSPR Coding Process – Andy Talbot G4JNT
  4. QRP Labs
  5. Chip45

Во вложении прошивка и конфигуратор, актуальные версии смотри в обновлениях в начале поста! Изменения описаны в файле verinfo.txt.

Если что то пошло не так – посмотри FAQ, если и эта информация не поможет, пиши на почту, попробуем разобраться!

73!

WSPR маяк из готовых модулей: 38 комментариев

  1. Олег Леонидович Чупан

    Приветствую снова !!! ришол мне модуль GPS… ВОПРОС ??? на какие пины его сажать
    кинулна А0 … не чего не работает … ( ТХ—>> A0)
    модуль рабочий … проверял его на терменале… DE UA0ZEO… Oleg

    1. Radio9OFG Автор записи

      Доброго времени суток, Олег Леонидович!

      Подключать в соответствии с описанием.
      В конфигураторе выбрать соответствующий источник времени.
      Рекомендую поставить последнюю прошивку.
      Какая маркировка GPS модуля?

  2. Георги

    Здравствуйте!
    Спасибо вам за проделанную работу.
    Повторил ваш проект.Все замечателно работает.
    Подскажите пожалуйста могу заменит 1602 дисплей /большой он/ на 0.91″ 128X32 OLED LCD LED Display Module IIC.
    Драйвер IC: SSD1306 и и още – когда будет GPS модуль для точного определения координат и
    автоматической коррекции времени.
    Георги
    73! LZ1GBY

    1. Radio0AEK Автор записи

      Доброго времени суток, Георги!

      Спасибо за Ваш комментарий!

      Поддержка GPS NEO-6M уже тестируется, в ближайшее время будет соответствующее обновление.
      Поддержку OLED дисплеев тоже планирую добавить.
      Следите за обновлениями.
      73!

    1. Radio0AEK Автор записи

      Доброго времени суток, исходников в свободном доступе не будет, т.к. в том числе используются наработки сторонних разработчиков, с которыми есть соответствующая договоренность – не открывать исходный код.

      Если интересует, что то конкретно, спрашивайте, если это моя реализация, то поделюсь.

    2. Илья

      Здравствуйте! Спасибо вам за проделанную работу! Хочу повторить ваш проект, подскажите пожалуйста, поместится ли код программы в Arduino c микроконтроллером Atmega168?
      Все версии прошивок поддерживают работу с дисплеем без использования i2c модуля дисплея?

      1. Radio0AEK Автор записи

        Доброго времени суток, Илья!
        На 168 работать не будет.
        Последние обновления не поддерживают работу дисплея 1602 без i2c, в архиве есть текстовый файлик verinfo.txt, там вся информация по релизам.

  3. Марат

    Приветствую, Александр!
    Столкнулся с тем, что настраивая на столе WSPR маяк на Si5351 наблюдаю на водопаде через каждые 100 Гц сигнал,и снизу и сверху от основного, с затуханием относительно основного. В чем может быть причина?
    Плохая фильтрация, наводки по питанию?

    1. Radio0AEK Автор записи

      Добрый день, Марат!

      Родные спуры si5351, все нормально. На расстоянии их нет, фильтр на выходе конечно лучше поставить, а если поставите трансформатор 1:1 на выход сишки, то сигнал будет еще более чистый по спектру и близок к синусоиде. Si5351 это же тактовый генератор а не синтезатор, со всеми вытекающими.

      1. Марат

        Приветствую, Александр!
        Благодарю за ответ.
        Какое колечко для трансформатора будет более подходящим?

          1. Марат

            Приветствую, Александр!
            Понял, спасибо.

  4. Дмитрий

    Прошу прощения, все же не понял как записать прошивку после записи нового бутлоадер , с помощью какой программы записывается прошивка ?
    Можно ли записать новый бутлоадер в среде Arduino IDE ?
    Как все это проделать в Линукс?
    Спасибо!

    1. Radio0AEK Автор записи

      В статье есть ссылки, там все в картинках.
      С линуксом не дружу, тут не подскажу.

  5. Александр

    Ни какого УМ не надо чтоль?
    С такой мощность только из соседней комнаты этот маяк можно услышать?

    1. Александр

      В данной конфигурации достаточно хорошей антенны, чтобы приняли за пару тройку тысяч км, это цифра.

  6. Андрей

    Собрал наконец. При попытке прочесть (READ) Tx options в WSPR_Beacon_3 – ардуина и программа зависает, программа сворачивается, хотя пару раз как то прочесть удавалось. Остальные разделы читаются нормально, erase flash делал. Если Tx options не читать, а сразу заполнить данными и прошить все разделы – маяк работает и выдает звуковое сообщение как и должен. И еще – постоянно синий экран на 1602, пробовал i2c и простой без i2c – одинаково. Регулировка яркости есть в дисплее с i2c но текста на экране не появляется.

    1. Radio0AEK Автор записи

      Отправьте на почту:
      1. какая ардуина
      2. фото как подключили
      3. скриншот параметров COM порта на котором определяется ардуина

  7. Андрей

    Здравствуйте! Сохраняются ли пользовательские настройки, после обновления ПО маяка? Можно ли использовать маяк без приемника, только TX?

    1. Radio0AEK Автор записи

      Приветствую! При прошивке маяка область EEPROM не изменяется. В следующем релизе, область EEPROM останется без изменений. Таким образом пользовательские настройки останутся без изменений.
      В маячке нет приемника! Он работает только на передачу.

      1. Андрей

        Я имел ввиду можно ли обходиться без приемника вообще, почитал вроде можно.
        А как коммутировать на прием/передачу маяк и приемник FT817 (или другой)? Они ведь должны как то работать поочередно 2мин прием/2мин передача.

        1. Radio0AEK Автор записи

          Андрей, понял вопрос.

          Маяк начинает передачу в первую секунду четной минуты, передача длиться примерно 111 секунд, чуть меньше двух минут.

          Приемники, вернее программы для приема WSPR сообщений принимают постоянно, им без разницы когда началась передача, если время у маяка и программы приемника синхронизированы по времени, то приемная часть декодирует принятое сообщение. Еще один момент, сильный сигнал плохо декодируется программами декодирования WSPR. Для теста лучше разнести подальше маяк и приемник.

          1. Андрей

            Получается нужны две антенны? Для приема и передачи.

          2. Radio0AEK Автор записи

            Маяк автономное устройство, ему своя антенна нужна.

  8. Андрей

    Здравствуйте! Прошил загрузчик, потом залил прошивку маяка, подключаюсь к ардуинке через WSPR Beacon – долго горит: Waiting for a response from the WSPR_Beacon board…
    но не подключается, может нужно к ардуинке остальные модули подключить или что-то пошло не так?
    Подключаю пока только одну ардуину.

    1. Radio0AEK Автор записи

      Приветствую!
      Голая ардуинка отвечать не будет, необходимо подключить любой модуль по шине i2c, плату синтезатора, DS3231 или дисплей 1602 с i2c. Еще может быть и такая ситуация, если с подключенным модулем по i2c конфигуратор не видит плату, значит на ардуинке сигнал DTR с TTL-USB преобразователя через конденсатор 0,1 мкф не заведен на ногу RESET микроконтроллера ардуинки. Без этого условия не будет перезагрузки бутлоадера по команде конфигуратора. Проверьте и этот момент.

      1. Андрей

        Не совсем понял, в варианте с i2c дисплей подключается к модулю часов DS-3231? А в описании – Дисплей 1602 с модулем i2c (слева выводы дисплея, справа выводы Arduino UNO)

        1. Radio0AEK Автор записи

          На плате DS3231 выводы сквозные, тут без разницы куда подключать дисплей с i2c, хоть на ардуинку хоть в модуль DS3231

          1. Андрей

            Спасибо! Все понял! 73!

  9. анатолий

    приветствую, спасибо за интересную информацию, жаль что не тестирован вариант на 2 метра
    мне это более интересно, но думается что со временем вы это воплотите
    dl8rcb ex uw9ez

  10. Валерий

    Супер! Спасибо за столь интересную разработку! Пожелания: добавить GPS модуль для точного определения координат и автоматической коррекции времени.

    Валерий YL2GL

    1. Radio0AEK Автор записи

      Спасибо за комментарий, в следующих релизах будет добавлена поддержка, в том числе, и модуля GPS.

      1. Андрей

        Добрый день! Какой GPS модуль будете применять? Этот – NEO6MV2? Хочу заказать заранее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *