клавиатурный датчик кода морзе на микроконтроллере
Клавиатурный датчик кода морзе на микроконтроллере
Понадобился как то датчик кода Морзе, я не стал изобретать велосипед и повторил готовую конструкцию RK3DOV, заслуживающую внимания своей простотой и доступностью прошивки. С разрешения автора я и публикую этот материал. Описание этой конструкции можно найти на сайте автора по адресу: http://www.qsl.net/rk3dov
Схема этого девайса дана на Рис.1,2 отличаются лишь различными типами микроконтроллеров.
Что паять
Рис. 1
Рис.2
Сигнал Нога DIN Нога PS/2 GND 4 3 +5V 5 4 DATA 2 1 CLOCK 1 5
Нумерация контактов разъёма PS/2 (сторона компа):
Как этим пользоваться
Всякие навороченные знаки:
Клавиша | Описание | Как звучит | |
Рисунок 1. | Принципиальная схема устройства. |
Исходные данные поступают от внешнего источника в формате ASCII по аппаратному каналу UART. Сохранение символов происходит в ОЗУ МК с каждым новым прерыванием «USART0, RX». Длина входного пакета данных за одну операцию преобразования может составлять до 100 символов. Конец набора текста должен заканчиваться знаком «Enter» (командой 0x0D). При поступлении этой команды МК начинает преобразование латинских символов в звуковой и световой код Морзе.
В Таблице 1 приведены коды азбуки Морзе, загруженные в память микроконтроллера.
Генератор кода Морзе на Arduino Uno
Азбука Морзе (код Морзе) – это система связи для кодирования любого символа в двух различных длительностях сигналов, называемых точками и тире. Азбука Морзе разработана Сэмюэлем Ф. Б. И в дальнейшем стала использоваться в телеграфии для передачи секретной информации. Больше всего она использовалась во время Второй мировой войны. Код Морзе можно формировать с помощью постукивания, мигающего света или письма. Код Морзе доступен в двух вариантах: оригинальный и международный код. В международной версии азбуки Морзе оригинальная версия модифицируется путем удаления пробелов и создания тире определенной длины.
Код Морзе может быть использован для кодирования алфавитов и цифр. Он, в основном, используется в радиосвязи и океанской связи, а также является частью подготовки солдат. Его очевидным достоинством по сравнению со всеми другими современными методами передачи информации является то, что прием информации при его использовании можно осуществлять при очень слабом уровне сигнала, ниже уровня шумов – в этих условиях не может работать ни одна современная система связи (широкополосные сигналы не в счет, приводить в сравнение их здесь некорректно).
Язык всегда был барьером для азбуки Морзе, так как трудно выполнить код для диакритических символов на другом языке. Есть несколько известных слов, которые считаются важной особенностью азбуки Морзе, например «SOS». SOS (расшифровывается как Save Our Souls) – означает спасение наших душ. Он был создан как универсальный сигнал бедствия.
На следующем рисунке показана азбука Морзе для английского алфавита от A до Z.
В этой статье мы рассмотрим создание генератора кода Морзе на основе платы Arduino Uno, который будет принимать символы из окна монитора последовательной связи и конвертировать их в код Морзе с помощью зуммера. Статья переведена с иностранного сайта, поэтому представленный генератор кода Морзе работает только с английским алфавитом (впрочем, как и все другие аналогичные статьи на эту тему, которые мне удалось найти в рунете). Но, поняв принцип этого проекта, вы легко можете переписать его программу для работы с русским алфавитом – если вы сделаете это, будем вам признательны если поделитесь кодом этой программы с другими посетителями нашего сайта (могу включить код вашей программы в текст данной статьи).
Необходимые компоненты
Схема проекта
Схема генератора кода Морзе на основе платы Arduino Uno представлена на следующем рисунке.
Как вы можете видеть, схема очень проста. Просто соедините положительный контакт зуммера с контактом 8 платы Arduino Uno, а его отрицательный контакт – к земле платы Arduino Uno. Загрузите код программы в плату Arduino и можете начинать печатать символы в окне монитора последовательной связи – зуммер начнет издавать сигналы кода Морзе, соответствующие данным символам. Также схему можно усовершенствовать, включив в нее ЖК дисплей 16х2.
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Сначала в программе объявим переменную, в которую будем записывать символы, которые мы в дальнейшем будем конвертировать в код Морзе.
Клавиатурный датчик кода морзе на микроконтроллере
Генератор предназначен для автоматического формирования сигналов телеграфных знаков в коде Морзе и может быть использован на служебных и любительских радиостанциях, а также при обучении и тренировке радистов. Формирование сигнала знака начинается сразу после нажатия на одну из клавиш клавиатуры. Скорость формирования знака можно регулировать в широких пределах. Сигнал контролируют на слух, для чего в приборе предусмотрен телефонный капсюль. Регулятором, ручка которого выведена “под шлиц”, можно подобрать желаемый тон звучания.
От описанных ранее генератор отличается тем, что его постоянное запоминающее устройство, хранящее коды телеграфных знаков, выполнено в виде периодически опрашиваемой матрицы проводников, в узлах которой включены контакты клавиатуры. Это позволило сократить число элементов прибора и упростить его схему. Всего в генераторе использовано четырнадцать микросхем низкой н средней степени интеграции. Он питается от отдельного стабилизированного сетевого блока и потребляет ток 150 мА при напряжении 5 В. Клавиатура генератора самодельная.
Структурная схема генератора показана на 3 с. обложки (рис. 1). При нажатии на какую-либо клавишу клавиатуры кодирующий блок формирует сигнал в двоичном коде, соответствующий поступившей команде, и переписывает его в сдвиговый регистр. Логический блок анализирует записанную в сдвиговом регистре информацию и выдает команды на электронный ключ и кодирующий блок. Электронный ключ манипулирует передатчик и вырабатывает тональный сигнал в соответствии с кодом, записанным в сдвиговом регистре, а также тактирует сдвиговый регистр и формирует следующую за знаком паузу.
Сигналы трех младших разрядов счетчика управляют работой мультиплексора, а четырех старших — дешифратора.
Это приводит к тому, что на шестнадцати выходах дешифратора D14 поочередно формируется сигнал логического 0, а восемь входов (DO—D7) мультиплексора D4 готовы последовательно принять этот сигнал.
Но этого не произойдет до тих пор, пока не будет замкнута какая-либо одна пара контактов на контактном поле, или, иными словами, пока не будет нажата одна из клавиш.
Каждое пересечение на контактном поле горизонтальных линий с вертикальными обозначает пару контактов, которой на клавиатуре может быть присвоен тот или иной символ.
Нажатие на какую-либо клавишу приведет к соединению одного из выходов дешифратора с одним из входов мультиплексора. Через промежуток времени, не превышающий 2 мс (время “поиска”), на выходе мультиплексора возникнет сигнал логической 1, который через инвертор D1.4 поступит на входы С2 семиразрядного сдвигового регистра D5, D6 и перепишет содержимое двоичного счетчика D2, 03 в сдвиговый регистр. Записанная в регистр информация и будет кодом телеграфного знака. Конденсатор С4 устраняет короткие импульсы помех, возникающие из-за запаздывания переключения мультиплексора относительно дешифратора.
Формирователь телеграфных посылок содержит тактовый генератор на элементах D10.1 — DI0.3, формирователь сигналов тире и точки на микросхеме DII и элементе D10.4, устройство совпадения на элементе D9.I, тональный генератор на элементах D12.1—D12.4, усилители мощности на элементах 013.1, DI3.2 и манипуляциониое реле К1. Работа формирователя телеграфных посылок разрешается сигналом логической 1 на входе R триггера DI1.1. Вид посылки — тире или точка — определяется уровнем напряжения на входе R триггера D11.2.
Для слухового контроля передаваемого сообщения служит встроенный в прибор телефонный капсюль В1. Контроль можно вести и на головные телефоны, включенные в линию. Генератор позволяет подключать 20—25 пар высокоомных телефонов. Резистор R6 предотвращает выход из строя элемента D13.I при случайном коротком замыкании в линии.
Логический блок, собранный на микросхемах D7, D8 и элементах D9.3, D9.4, координирует работу кодирующего устройства, сдвигового регистра и формирователя телеграфных посылок. Записанный в сдвиговый регистр код телеграфного знака обязательно содержит хотя бы один логический 0, что приводит к возникновению сигнала с уровнем логического 0 на выходе элемента D9.4. Поступая на входы V2 регистра D5, D6, этот сигнал запрещает повторное вписывание информации в сдвиговый регистр и разрешает ее сдвиг.
После окончания первого элемента телеграфного знака на выходе элемента D10.4 появится сигнал логического 0. Отрицательный перепад напряжения поступит на входы CI сдвигового регистра D5, D6 и вызовет сдвиг записанного в нем кода на один шаг в сторону старшего разряда. На освободившееся место в младшем разряде запишется логическая 1. После паузы длительностью в одну точку начнется формирование второго элемента телеграфного знака, также определяемого уровнем напряжения на выходе старшего разряда сдвигового регистра.
Так будет продолжаться до тех пор, пока логический блок не обнаружит в сдвиговом регистре комбинацию 0111111. Тогда формирователь телеграфных посылок выработает сигнал точки (на выводе 6 элемента D7.3 возникнет сигнал 0), но на выход прибора сигнал не пройдет, так как устройство совпадения D9.I будет закрыто уровнем 0 с вывода 8 элемента D8. В результате будет сформирована пауза длительностью в две точки, а сдвиговый регистр заполнен логическими 1. Логический блок, обнаружив это состояние, запретит работу формирователя телеграфных знаков, выработав низкий логический уровень на входе R триггера D11.1, и разрешит запись новой информации в сдвиговый регистр подачей сигнала логической 1 на входы V2 микросхем D5, D6. На этом цикл заканчивается.
Если к этому моменту нажатая клавиша не будет отпущена или она будет отпущена и нажата другая, произойдет новая запись кода (старого или нового) в сдвиговый регистр и по истечении интервала в одну точку начнется формирование очередного телеграфного знака. При этом интервал между знаками составит три точки.
Соответствие между двоичным кодом, вписываемым в сдвиговый регистр, и кодом Морзе установлено следующим правилом.
Двоичный код телеграфного знака получается заменой в коде Морзе точек единицами, а тире — нулями, с последующим дополнением полученного двоичного выражения нулем и столькими единицами, чтобы получилось семиразрядное число.
Так, например, указанная замена в коде Морзе буквы Л дает 1011. Дополнив это выражение нулем н двумя единицами, получим 1011011 — семиразрядный двоичный код буквы Л.
При считывании этого кода со старшего разряда сдвигового регистра формирователь телеграфных посылок выдаст сначала сигнал точки (логическая 1 в старшем разряде), затем содержимое регистра сдвинется на один разряд влево (0110111) и будет выдано тире (логический 0 в старшем разряде), после этого последуют две точки (1101111, 1011111), пауза (0111111) и остановка.
Для генерирования сигнала той же буквы Л необходимо замыкать выход 1011 дешифратора со входом 011 мультиплексора или в десятичной системе счисления — выход 11 дешифратора со входом 3 (D3) мультиплексора (рис. 1).
Номера соединяемых выходов дешифратора и входов мультиплексора для генерирования всех остальных знаков азбуки Морзе и некоторых других общеупотребительных знаков, передаваемых слитно, сведены в таблицу.
Конструктивно все детали прибора размещены на двух печатных платах.
Большая из них (се чертеж показан на рис. 2 в тексте) является основным конструктивным элементом клавиатуры,
На этой плате монтируют микропереключатели МП7-1И (со стороны, показанной на рисунке сверху); их число равно числу клавиш.
Внешние размеры платы (она показана в масштабе 1:1) на чертеже не указаны, так как они в большой мере зависят от конструкции и размеров корпуса прибора, способа крепления платы в корпусе.
Плата изготовлена из двустороннего фольгированного стеклотекстолита толщиной 2 мм.
Она прикреплена к лицевой панели винтами через резьбовые стойки, расположенные по краям платы.
На этой плате (в нижней части клавиатуры) предусмотрены две клавиши, выводы от которых на рис. 2 никуда не разведены. Дополнительные клавиши могут быть использованы для разных целей.
Автор, например, использует их для оперативной передачи “CQ”, для чего эти микропереключатели навесными проводниками включены параллельно соответствующим микропереключателям клавиатуры.
Дополнительные клавиши можно также использовать для управления режимами “прием-передача:”, включив микропереключатели в цепь питания обмоток самоблокирующегося реле РПС32.
Взаимное положение обеих печатных плат и лицевой панели с клавишами, а также способ крепления микропереключателей к большей плате показаны на рис. 3 обложки.
Для повышения прочности крепления микропереключателей в отверстие каждого их вывода вставляют крючок из медного луженого провода.
Второй конец крючка вставляют в отверстие платы, после чего пропаивают весь узел с обеих сторон. На рис. 4 обложки показано устройство и крепление клавиши.
На обеих платах предусмотрены места для установки блокировочных конденсаторов Св (на схеме они не показаны) емкостью 0,022. 0,1 мкФ. Все отверстия на платах, имеющие разводку печатными проводниками на обеих сторонах, желательно металлизировать. Если это затруднительно, придется при монтаже пропаивать выводы деталей с обеих сторон и впаивать проволочные перемычки.
Лицевую панель удобно изготовить из фольгированного стеклотекстолита толщиной 2 мм (фольгой внутрь) или. другого материала. В ней просверлены четыре ряда круглых отверстий диаметром 14 мм, расположенных в шахматном порядке. В первом и третьем рядах — по 13, а во втором и четвертом — по 12 отверстий. Расстояние между центрами отверстий в ряду — 19 мм, между рядами — 20 мм.
На лицевую поверхность клавиш нанесены обозначения знаков. Для этой цели наилучшим образом подходит так называемый “моментальный” шрифт, защищенный снаружи пленкой паркетного лака или прозрачной эпоксидной смолы. Лак наносят тонкими слоями несколько раз, иначе пленка может потерять прозрачность или из-за усадки испортить шрифт.
Источником питания генератора служит сетевой блок БП2-3, входящий в комплект некоторых карманных микрокалькуляторов. Можно использовать любой стабилизированный блок питания, который способен обеспечить ток нагрузки 150. 200 мА при напряжении 5 В.
Регулятор скорости передачи выведен на боковую панель корпуса. На задней панели расположены гнезда линии, подключения манипуляционного входа передатчика, телефонный капсюль (W66 или ему подобный с сопротивлением постоянному току около 65 Ом) и разъем питания.
Правильно собранный генератор в налаживании не нуждается. При включении питания в сдвиговый регистр вписывается случайная комбинация логических 0 и 1, поэтому прежде чем перейти в исходное состояние, датчик выдает несколько неопределенных телеграфных посылок, соответствующих этой комбинации. В дальнейшем сигналы возникают только при нажатии на клавиши.
- С чем связаны пигментные пятна на лице
- как поменять код продукта windows 10