Ссылки на обновления:
Приветствую паяющую публику! Но в данном случае пайка нам практически не понадобиться!
Новая реализация автономного 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):
Во вложении прошивка и конфигуратор, актуальные версии смотри в обновлениях в начале поста! Изменения описаны в файле verinfo.txt.
Если что то пошло не так — посмотри FAQ, если и эта информация не поможет, пиши на почту, попробуем разобраться!
WSPR_Beacon_3
73!
При инициализации OLED дисплея программа V 2.00, нет приема данных с GPS приемника в веб загрузчике,при измнение индикации на LED диод данные с GPS приемника проходят.C модулем часов все работет корректно.Это баг?Спасибо вам интересную разработку!
Должно и так и так работать, сейчас не подскажу, проверять надо.
Приветствую снова !!! ришол мне модуль GPS… ВОПРОС ??? на какие пины его сажать
кинулна А0 … не чего не работает … ( ТХ—>> A0)
модуль рабочий … проверял его на терменале… DE UA0ZEO… Oleg
Доброго времени суток, Олег Леонидович!
Подключать в соответствии с описанием.
В конфигураторе выбрать соответствующий источник времени.
Рекомендую поставить последнюю прошивку.
Какая маркировка GPS модуля?
Модупль GPS6MV2…
Здравствуйте!
Спасибо вам за проделанную работу.
Повторил ваш проект.Все замечателно работает.
Подскажите пожалуйста могу заменит 1602 дисплей /большой он/ на 0.91″ 128X32 OLED LCD LED Display Module IIC.
Драйвер IC: SSD1306 и и още — когда будет GPS модуль для точного определения координат и
автоматической коррекции времени.
Георги
73! LZ1GBY
Доброго времени суток, Георги!
Спасибо за Ваш комментарий!
Поддержка GPS NEO-6M уже тестируется, в ближайшее время будет соответствующее обновление.
Поддержку OLED дисплеев тоже планирую добавить.
Следите за обновлениями.
73!
Болшое Вам спасибо
73!
Можете выложить исходник приложения на C#?
Доброго времени суток, исходников в свободном доступе не будет, т.к. в том числе используются наработки сторонних разработчиков, с которыми есть соответствующая договоренность — не открывать исходный код.
Если интересует, что то конкретно, спрашивайте, если это моя реализация, то поделюсь.
Здравствуйте! Спасибо вам за проделанную работу! Хочу повторить ваш проект, подскажите пожалуйста, поместится ли код программы в Arduino c микроконтроллером Atmega168?
Все версии прошивок поддерживают работу с дисплеем без использования i2c модуля дисплея?
Доброго времени суток, Илья!
На 168 работать не будет.
Последние обновления не поддерживают работу дисплея 1602 без i2c, в архиве есть текстовый файлик verinfo.txt, там вся информация по релизам.
Понял, спасибо!
Приветствую, Александр!
Столкнулся с тем, что настраивая на столе WSPR маяк на Si5351 наблюдаю на водопаде через каждые 100 Гц сигнал,и снизу и сверху от основного, с затуханием относительно основного. В чем может быть причина?
Плохая фильтрация, наводки по питанию?
Добрый день, Марат!
Родные спуры si5351, все нормально. На расстоянии их нет, фильтр на выходе конечно лучше поставить, а если поставите трансформатор 1:1 на выход сишки, то сигнал будет еще более чистый по спектру и близок к синусоиде. Si5351 это же тактовый генератор а не синтезатор, со всеми вытекающими.
Приветствую, Александр!
Благодарю за ответ.
Какое колечко для трансформатора будет более подходящим?
Можно по верхней частоте подобрать колечко, хотя бы такое
http://toroids.info/FT37-43.php
Приветствую, Александр!
Понял, спасибо.
Прошу прощения, все же не понял как записать прошивку после записи нового бутлоадер , с помощью какой программы записывается прошивка ?
Можно ли записать новый бутлоадер в среде Arduino IDE ?
Как все это проделать в Линукс?
Спасибо!
В статье есть ссылки, там все в картинках.
С линуксом не дружу, тут не подскажу.
Ни какого УМ не надо чтоль?
С такой мощность только из соседней комнаты этот маяк можно услышать?
В данной конфигурации достаточно хорошей антенны, чтобы приняли за пару тройку тысяч км, это цифра.
Собрал наконец. При попытке прочесть (READ) Tx options в WSPR_Beacon_3 — ардуина и программа зависает, программа сворачивается, хотя пару раз как то прочесть удавалось. Остальные разделы читаются нормально, erase flash делал. Если Tx options не читать, а сразу заполнить данными и прошить все разделы — маяк работает и выдает звуковое сообщение как и должен. И еще — постоянно синий экран на 1602, пробовал i2c и простой без i2c — одинаково. Регулировка яркости есть в дисплее с i2c но текста на экране не появляется.
Отправьте на почту:
1. какая ардуина
2. фото как подключили
3. скриншот параметров COM порта на котором определяется ардуина
Здравствуйте! Сохраняются ли пользовательские настройки, после обновления ПО маяка? Можно ли использовать маяк без приемника, только TX?
Приветствую! При прошивке маяка область EEPROM не изменяется. В следующем релизе, область EEPROM останется без изменений. Таким образом пользовательские настройки останутся без изменений.
В маячке нет приемника! Он работает только на передачу.
Я имел ввиду можно ли обходиться без приемника вообще, почитал вроде можно.
А как коммутировать на прием/передачу маяк и приемник FT817 (или другой)? Они ведь должны как то работать поочередно 2мин прием/2мин передача.
Андрей, понял вопрос.
Маяк начинает передачу в первую секунду четной минуты, передача длиться примерно 111 секунд, чуть меньше двух минут.
Приемники, вернее программы для приема WSPR сообщений принимают постоянно, им без разницы когда началась передача, если время у маяка и программы приемника синхронизированы по времени, то приемная часть декодирует принятое сообщение. Еще один момент, сильный сигнал плохо декодируется программами декодирования WSPR. Для теста лучше разнести подальше маяк и приемник.
Получается нужны две антенны? Для приема и передачи.
Маяк автономное устройство, ему своя антенна нужна.
Здравствуйте! Прошил загрузчик, потом залил прошивку маяка, подключаюсь к ардуинке через WSPR Beacon — долго горит: Waiting for a response from the WSPR_Beacon board…
но не подключается, может нужно к ардуинке остальные модули подключить или что-то пошло не так?
Подключаю пока только одну ардуину.
Приветствую!
Голая ардуинка отвечать не будет, необходимо подключить любой модуль по шине i2c, плату синтезатора, DS3231 или дисплей 1602 с i2c. Еще может быть и такая ситуация, если с подключенным модулем по i2c конфигуратор не видит плату, значит на ардуинке сигнал DTR с TTL-USB преобразователя через конденсатор 0,1 мкф не заведен на ногу RESET микроконтроллера ардуинки. Без этого условия не будет перезагрузки бутлоадера по команде конфигуратора. Проверьте и этот момент.
Не совсем понял, в варианте с i2c дисплей подключается к модулю часов DS-3231? А в описании — Дисплей 1602 с модулем i2c (слева выводы дисплея, справа выводы Arduino UNO)
На плате DS3231 выводы сквозные, тут без разницы куда подключать дисплей с i2c, хоть на ардуинку хоть в модуль DS3231
Спасибо! Все понял! 73!
приветствую, спасибо за интересную информацию, жаль что не тестирован вариант на 2 метра
мне это более интересно, но думается что со временем вы это воплотите
dl8rcb ex uw9ez
Супер! Спасибо за столь интересную разработку! Пожелания: добавить GPS модуль для точного определения координат и автоматической коррекции времени.
Валерий YL2GL
Спасибо за комментарий, в следующих релизах будет добавлена поддержка, в том числе, и модуля GPS.
Добрый день! Какой GPS модуль будете применять? Этот — NEO6MV2? Хочу заказать заранее.
В том числе и NEO6MV2.