Продолжение. Смотреть начало
Подключение модулей, как правило, осуществляется по пяти проводам: VCC - питание, GND - земля, CLK - тактовые импульсы, STR - строб и DATA (IO). На всех модулях есть обозначения пинов со стороны модуля, а пин со стороны Ардуино назначается в программе. Например датчик температуры не требует тактирования и его выход подключается к аналоговому входу А1. Часы, например, имеют данные к передаче, поэтому подключение пятипроводное. Назначенные пины можно найти в теле программы. То же самое с платой кнопок и дисплея. С простыми сигналами типа PTT, CW манипуляцией, подключением дополнительной антенны или включение дополнительного ветилятора достаточно только одного пина. Они тоже назначаются в программе и через оптопары подключаются к исполнительным устройствам: трансиверу, коммутатору, вентилятору и т.д. На схеме это всё прозрачно. Пин 10 Ардуино используется для подачи разрешения на "пищалку" и подключается непосредственно к BUZZER. Так как современные трансиверы все имеют самоконтроль в телеграфе, в этой модели он не включен. Но, если вы захотите включить, например, этот маяк в режиме FM, этот сигнал вам понадобиться.
Соединение производится штатными проводниками оконеченными или "папой", "мамой" или их комбинацией. При макетировании это удобно, но для практических конструкций рекомендую эти соединения менять на пайку, так как в этих разъёмах часто контакт пропадает. Назначение (соединение) всех пинов Ардуино и модулей описывается в самом скетче, всегда можно проверить и при необходимости изменить. На фото дополнительная плата, в которой как раз и использована пайка. Для наглядности (индикации работы) оптопары включены с дополнительным светодиодом для того чтобы можно было контролировать управляющие сигналы Ардуино. Так удобнее и очень помогает при отладке программы. Наконец, если стало понятно как всё происходит, перейдём к самому алгоритму.
Так как это первый маяк в цепи последующих за ним, переход на передачу запланирован в начале каждого пятиминутного интервала. Для запуска процедуры используются значение минут модуля TRC (часов) кратное 5. Например 00, 05, 10, 15, 20 и т.д. Для следующего маяка будет использован интервал второй минуты в пятиминутке и т.д. Поскольку в часе можно разместить 12 таких интервалов для одного маяка, то соответственно можно назначить этому маяку 12 частот в течении часа. Эти частоты выбирались с учётом рекомендаций IARU и разрешения и составляют следующий массив: 1839, 3599, 7039, 10139, 14099, 18099, 21099, 24939, 28099, 144299, 145499, 432299 килогерц. Программа определяет номер временного интервала и выбирает из массива соответствующую частоту, которая передаётся в трансивер до начала передачи. В процессе передачи текста маяка также передаётся нажатие с именением мощности через каждые 2 секунды от максимальной ( в соответствии с разрешением) до 5 ватт. Исключение - УКВ, где разрешённые мощности до 5-ти ватт. Это следующий массив в скетче. Вы без труда найдёте эти фрагменты и текст маяка в тексте скетча.
Для передачи частоты и команд трансиверу используется RS232 порт. Поскольку Kenwood TS2000 использует реальные уровни плюс-минус RS232, то нужен преобразователь уровней 232 to TTL. Купить его можно повсеместно, например тут - https://arduino-ua.com/prod2080-modyl-perehodnika-rs-232-v-uart-na-max3232. Поскольку в Arduino Uno только один RS232 порт и он используется при общении контрорллера и компьютера при "заливке" скетча, то использовать его одновременно для двух задач нельзя. При прошивке скетча COM порт от Kenwood надо отключать и наоборот, при автономной работе не забыть отключить разъём USB. Так как практическая эксплуатация показала что порт подвержен помехам, то на провода надето небольшое колечко. У Arduino Mega COM портов аж четыре, и там процесс отладкт обходиться без отключения RS232, но эта плата по своим параметрам избыточна.
Надо сказать, что часто маяк "застревал" на одной частоте. Тоже по причине помех, в буфер порта ложатся ошибочные биты и при подаче команды они следуют перед самой командой, искажая её. Поэтому алгоритм передачи частоты в трансивер пришлось усовершенствовать. После передачи команды частоты, например FA00001839000; передаётся команда зачитать частоту и полученное сравнивается с переданной. Если да - выход из цикла, если нет - передаём частоту еще раз. Строки скетча 265-275. То же самое иногда происходит с передачей команд на изменение мощности. Но к счастью, не так часто. Команда намного короче :-)
Как это происходит в реалиях можно посмтриеть на видео - https://youtu.be/XApWWKQI8ho