109-Модуль Keypad_IR_to_UART формирователь UART сообщений.

Автор: | 25.09.2014

Оглавление: Введение | Keypad_IR_to_UART | UART_to_Pin | SDC_Talking

Устройство Keypad_IR_to_UART предназначено для формирования UART сообщений (заглавные буквы латиницы и цифры) по факту нажатий клавиш на кейпаде и/или любом бытовом ИК-пульте (от телевизора, например). Прежде всего, устройство ориентировано на совместную работу с устройствами управляемых по UART (в частности разрабатывалось для интерактивного стенда), но может быть использовано, например, для управления ПК при помощи ИК-пульта  или других Ваших проектов.

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

Устройство может работать как от встроенного задающего генератора (в этом случае не нужен внешний кварц и ножки МК 4 и 5 можно оставить висящими в “воздухе”), так и от внешнего задающего генератора (нужен кварц на 8 МГц). Вариант работы устройства задается соответствующими фьзами при этом прошивку менять не нужно.

Прошивка для микроконтроллера.

109-keypad_ir_to_uart.zip - Материалы по keypad_ir_to_uart
В архиве находится исходник, прошивка, фьзы, дополнительная информация. Читайте info.txt

 

Устройство имеет следующие органы управления и индикации:

— матричная клавиатура (кейпад) на 16 кнопок. Каждой кнопке присвоена своя буква латиницы от “A” до “P”;
— отдельная кнопка “Zero” предназначенная для формирования посылки нуля “0” по UART и для активации режима подтверждения отпускания кнопок;
— отдельная кнопка “Auto” предназначенная для активации режима автоповтора при удержании кнопок;
— индикаторный светодиод нажатой кнопки “Key hold”;
— выход для зуммера – подтверждающего нажатие кнопки звуковым сигналом;
— ИК-приемник TSOP для приема ИК-команд от пульта и кнопка “IR-Study”, для инициализации процесса изучения кнопок нового пульта.

 

Алгоритм работы устройства.

После того как на устройство подано питание, оно начинает ожидать нажатие любой из клавиш кейпада или ИК-пульта (предварительно клавиши пульта должны быть изучены) и по факту нажатия кнопок, выдает символы по UART.

В зависимости от состоянии кнопок “Zero” и “Auto” возможны несколько вариантов работы устройства:

а) если кнопки “Zero” и “Auto” не нажаты, то на каждое нажатие кнопок кейпада или кнопок ИК-пульта устройство выдает по UART соответствующий кнопке символ латиницы от “A” до “P” (для ИК-пульта дополнительно доступны кнопки, которые выдают по UART символы цифр от “0” до “9”);
б) если кнопка “Zero” находится в зажатом состоянии (ножка МК закорочена на “землю”) то при нажатии кнопок устройство ведет себя аналогично варианту (а), но дополнительно, при отпускании кнопки, устройство выдает по UART символ “0” (ноль), подтверждающий отпускание кнопки;
в) нажатие кнопки “Zero”, в любом из режимов работы, выдает по UART символ “0” (ноль);
г) если зажата кнопка “Auto”, то при удержании зажатой кнопки на кейпаде или ИК-пульте, устройство непрерывно повторяет выдачу соответствующего символа по UART (автоповтор).

Устройство может работать с любым бытовым пультом, вне зависимости от того какой ИК-протокол используется в нем. Но прежде чем начать работать с пультом, нужно пройти процедуру изучения кнопок пульта.

 

Процедура изучения кнопок пульта:

1 обесточить устройство;
2 замкнуть на “землю” переключатель “IR-Study”;
3 включить устройство (замкнутый на “землю” “IR-Study” в момент подачи питания или сброса заставляет устройство начать процедуру изучения кнопок ИК-пульта);
4 разомкнуть переключатель “IR-Study”;
5 последовательно нажать 26 кнопок ИК-пульта, в следующей последовательности относительно выдаваемых по UART символов, “A”, “B”, “C”, “D”, … “P”, “0”, “1”, … “9”;
6 после нажатия 26-ти кнопок устройство автоматически переходит в свой обычный режим работы.

Если не нужны какие-то кнопки на ИК-пульте (соответствующие символы по UART), то нужно нажать на пульте уже изученную кнопку – это пропустит изучение соответствующей кнопки (символа).

 

Для возможности более широкого применения устройства разработано несколько модификаций базовой конструкции:

 

keypad_ir_to_uart_mod1

Модификация работает аналогично базовой конструкции, за исключением измененной последовательности изучения кнопок и выдачи сообщения по UART. Выдача сообщений по UART производится аналогично базовой раскладке кейпада для телефонов. Изучение кнопок пульта производится в следующей последовательности: “0”, “1”, … “9”, “*”, “#”, “A”, “B”, “C”, “D”, … “N” (26 клавиш)

109-keypad_ir_to_uart_mod1.zip - Материалы по 109-keypad_ir_to_uart_mod1
В архиве находится исходник, прошивка, фьзы, дополнительная информация. Читайте info.txt

 

keypad_ir_to_uart_mod2

Модификация предназначена для работы с устройством uart_to_pin_mod2. Работа устройства полностью аналогична описанной выше базовой конструкции, за исключением посылки по UART строчных символов латиницы (от “a” до “p”) в момент отпускания соответствующей кнопки (при зажатой кнопке “Zero”).

109-keypad_ir_to_uart_mod2.zip - Материалы по 109-keypad_ir_to_uart_mod2
В архиве находится исходник, прошивка, фьзы, дополнительная информация. Читайте info.txt

 

keypad_ir_to_uart_mod3

Модификация предназначена для работы с устройством uart_to_pin_mod3. Алгоритм работы модификации довольно своеобразен, но все делалось из расчета работы устройства как от пульта, так и от кейпада (у которого ограниченное количество кнопок). В общем, модификация работает аналогично базовой конструкции, но часть клавиш от “A” до “Н” имеют автоповтор, а часть от “I” до “P” и от “0” до “9” – нет (при отпущенной кнопке “Auto” автоповтор не работает на всех кнопках).

109-keypad_ir_to_uart_mod3.zip - Материалы по 109-keypad_ir_to_uart_mod3
В архиве находится исходник, прошивка, фьзы, дополнительная информация. Читайте info.txt

Оглавление: Введение | Keypad_IR_to_UART | UART_to_Pin | SDC_Talking

(Visited 1 573 times, 1 visits today)

109-Модуль Keypad_IR_to_UART формирователь UART сообщений.: 46 комментариев

  1. SVN

    Здорово! Очень заинтересовал новый подход работы с пультами. Жаль что не могу пока посмотреть прошивки. Есть желание перенести данное устройство на МК ATmega48. Надеюсь должно получиться.

  2. ramzes1903

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

  3. ramzes1903

    в модификации keypad_ir_to_uart_mod2 при подключении 087-ATtiny2313 SD Card Talking Device для того что бы произносились фразы на откючения кнопок нужно присвоить фразам на микро сд маленькими латинскими а на нажатие большими .или нужно переделывать прошиву на SD Card Talking Device.????с уважением.

  4. GetChiper Автор записи

    Следующий модуль UART_to_Pin и будет щелкать релюхами и шимить светодиоды.

    По поводу строчных букв — не выйдет. фат16 не различает регистр имени файла. Но можно будет сделать модификацию в которой при отпускании кнопки выдавались бы символы латиницы со второй части алфавита.

  5. sigma17

    Спасибо, очень интересный подход. Давно искал что то подобное. Думаю сделать универсальный блок для умного дома. Добавлю Arduino для обратной связи и расширения возможностей.
    Вопрос — печатные платы будут?

  6. GetChiper Автор записи

    Я Валентину отправил сообщение по поводу плат.

    Схема очень проста — можно запросто на макетке делать.

  7. ramzes1903

    собрал на плате.матричная клавиатура (кейпад) на 16 кнопок работает четко.а с ИК-пультом у меня проблема.в ваших прежних устройствах при замыкании “IR-Study” -с последующем рамыканием светодиод кратковремено загорался и тух.указывая на готовность к обучению.а здесь у меня после размыкания светодиод блымает только после нажатия кнопок.обучение проходит.окончание обучение тоже не не указывается.так и должно ???после обучения с пульта как бы заклинивает букы.нажимаешь A B C и при повторном нажатии на С несколько раз -она то прохотит по UART то нет.при этом А проходит постоянно.так происходит с разными буквами .при этом клавиатура работает четко .наблюдаетс помигивание светодиода при проносе экрана смартфона перед Фотоприемником.Фотоприемник у меня SM3374.пршивал несколькими прошивками.результат один и тот.

  8. GetChiper Автор записи

    В этом варианте светодиод специально не загорается — после размыкания обучение начинается в любом случае, без пауз. По поводу ненадежности работы — может поменять ИК приемник? Я таких проблем у себя не наблюдал.

  9. ramzes1903

    спасибо за совет.поменял ИК приемник и все стало на свои места.а схема говорилки будет новая .а то 087-ATtiny2313 SD Card Talking Device- у меня задействованна.смело поять ее или после щелканья релюхами и мигания светодиодами будет и навая схема говорилка.

  10. GetChiper Автор записи

    Говорилка будет совсем с небольшой модификацией. Можно смело собирать та что есть, а потом прошить новой прошивкой.

  11. 444c-c4

    Извиняюсь, не по теме. Пошлите куда-нибудь. Проблемма:известно ли кому-нибудь достоверно как ведет себя радиоканал с применением протокола RC5, декодер — сверхрегенератор с AVR? Может кто-то располагает готовым вариантом кодирования, декодирования на ASM для AVR? Может кто-то в курсе примера проги с сайта ATMEL «AVR410 RC5 IR remote control decoder» Один вопрос. Не ругайте сильно.

  12. ramzes1903

    Добрый день Евгений.решил попробывать подключить 109-Модуль Keypad_IR_to_UART формирователь UART сообщений +111-Модуль SDC_Talking – озвучивание действий к контактам электрорелюх в шкафу управления хрораторной установки(для очистки воды).тоесть за место кнопок Keypad-подключить свободные контакты релюшек(технология СССР)для озвучивания технологического процесса.есть пару проблем.во первых нужно чтобы при нажатии и отпускании по юарт выходили разные заглавные буквы.нажал-А.отпустил-В.итд.а вторая проблема-не возможность работы Keypad при нескольких нажатых кнопках.а в моем варианте они должны работать не зависимо друг от друга.и при включениях/выключениях релюх в разных последовательностях должен выходить сигнал по юарт о их состоянии.если можно -то очень прошу.С уважением.

  13. ramzes1903

    поразмышлял и понял.не к тому устройству прошу модификацию.мне нужно зеркальное отражение 110-Модуль UART_to_PIN – управление нагрузками.что бы нагрузки выдавали сигнал по юарт о своем состоянии.и по юарт озвучивали выполненное действие.вроде так.

  14. GetChiper Автор записи

    Да, я понял, что нужно. Наверное стоит сделать такое устройство. Четь позже займусь. Готовы заняться его тестированием?

  15. ramzes1903

    Да.думаю и не только я.вот решит кто то например в машину себе вашу говорилку установить?а эта схема как раз и свяжит датчики и релюхи с говорилкой.и таких примеров много….

  16. GetChiper Автор записи

    Как будет что тестировать я отпишусь здесь.

  17. GetChiper Автор записи

    ramzes1903 :

    поразмышлял и понял.не к тому устройству прошу модификацию.мне нужно зеркальное отражение 110-Модуль UART_to_PIN – управление нагрузками.что бы нагрузки выдавали сигнал по юарт о своем состоянии.и по юарт озвучивали выполненное действие.вроде так.

    Готово устройство http://www.forum.getchip.net/viewtopic.php?f=8&t=569
    нужно провести тестирование

  18. EVG

    Здравствуйте, Евгений.
    Можно ли изменить прошивку, чтобы устройство «PIN-to-UART» при изменении состояния любого входа посылало по юарт пакет символов, соответствующий состоянию всех входов.
    Например: (ABcdefgh…)- активны входы (притянуты к земле) 1,2
    (abcdEFGh…)- активны входы 5,6,7
    Пишу программу на дэлфи для отображения состояния входов этого устройства. Преимущество такого алгоритма в том, что при любом изменении состояния любого входа, получаем сразу всю информацию.

  19. SVN

    Евгений в добавленном варианте та же ошибка как и в первой (от клавиш работать не будет), надо в процедурах опроса изменить Port на Pin, так как регистры Port всегда в 1 (подтягивают резисторы).

  20. GetChiper Автор записи

    Точно! Спасибо! Исправлю.

  21. pino24

    Привет всем.Помогите на основе это устройства делать IR брелок на 2 функциональные кнопки. С функцией «копирования» сигналов и воспроизведения на запрограммированной кнопке 1 или кнопке 2. Что бы на каждой был «записан» свой скопированный код с пульта

  22. GetChiper Автор записи

    Есть в планах такое устройство (даже плату уже вытравил), но когда им займусь не могу сказать…

  23. o.merganov

    Здравствуйте. Извините мне. Я с Ташкента, у мня не очень с Русском языком, понимаю хорошо но пишу плохо. Я могу нарисовать платы на SprintLayout и лудит платы все детали можно найти магазине. Хочу с вами работать и тестировать ваши устройств. Программаторы есть, есть навыки программировать контроллеры, но создать программы не умею. Так первый вопрос, сделал этот устройство, работает нормально то ест когда нажимаю кнопки пикает буззер и моргает светодиод. Соединил с компом через UART и программа Терминал. там сам по себе отправляют какое та аброко дабро. Но не буквы латинское. Втарой вопрос если я не нажимаю кнопки а просто трогаю проводами он пикает и моргает светодиод эта из чего. Спасибо за пониманию и думаю мы можем найти общий язык. С Ташкента Обиджон.

  24. GetChiper Автор записи

    По поводу неправильных символов в терминале — скорей всего неправильно установлена скорость приема. Скорость порта должна быть 9600, без бита четности, и одним стоп-битом.

    По поводу помех от пальца — это наводки на линии кнопок — они довольно чувствительны. Нужно добавить по питанию пару конденсаторов 10мкФ- электролит плюс 0.1мкФ — керамический. Возможно блок питания выдает много шума (особенно если это зарядка от мобильного телефона)

  25. o.merganov

    Спасибо большое. У меня получилось. А можно, чучут изменения делать в прошивке. Если ZERO замкнута на землю входе UARTа (RxD) А, а выходе UARTа (TxD) А0. Если AUTO замкнута на землю входе UARTа (RxD) А, а выходе UARTа (TxD) АA. так на все B,C,D,E,F,G,H,I,J,K,L,M,N,O,P…

  26. GetChiper Автор записи

    А для чего это нужно? В чем смысл?

  27. myx

    Будет ли работать данное устройство если удерживать в нажатом состоянии несколько кнопок? Будет ли передача нескольких команд одновременно?
    И какая длина провода допустима для безошибочной передачи данных в данной конструкции? 50 метров осилит?

  28. GetChiper Автор записи

    Несколько клавиш не могут быть обработаны одновременно — это особенность матричного способа включения клавиш.

    Я бы на 50 метров не очень рассчитывал. Можно конечно попробовать взяв хорошо экранированный провод, но лучше использовать для этих целей специальный интерфейс, например rs485 (заявленная дальность передачи по витой паре более 1км).

  29. myx

    А не могли бы вы разработать на тини 2313 «передатчик» на 16 команд с 16 входами отдельно? На каждой из 16 ног кнопки, которые замыкаются на землю и передают по UART 16 команд с возможностью передачи нескольких команд одновременно. Без всяких “Zero”, “Auto” и IR. Нажал 1 кнопку с фиксацией — пошла передача А команды, нажал 2ю кнопку — передача А и В команд. Отпустил 1ю кнопку — прекратилась передача А команды. В осталась. И т.д.
    Приемная часть будет соответственно — «UART_to_Pin».

  30. o.merganov

    Здравствуйте, У меня появился идея. Можно ли сделать один отдельный модуль. Чтобы через уарт принимал команды (A,B,C,D…)и показал на лсд 16х2 чтобы, если пришел (А) то тогда там надпись или там 16 какой то фигурки первой горит или не горит… Как то так.. Можно..

  31. GetChiper Автор записи

    Просто для индикации?

    В этом случае лучше использовать преобразователь USB-UART еще и управлять с компьютера можно будет.

  32. o.merganov

    Хотел умный дом. Для индикаций нужно было. у меня уже готово pin to uart, uart to нагрузка и talking SD… Осталось индикация с экраном 16х2, проекте не используется компьютер, поэтому что нужен был…
    например там не надпись 16 какой то фигурки, может быт рисунок фонарика когда UARTе (А) там лог.1 фонарик горит. Когда UARTе повторно (А) там лог.0 фонарик погас. Просто схемотехнике разбираюсь, а программирования только только начал. Спасибо за внимания.

  33. o.merganov

    Спасибо за советь, попробовал. Но мне надо когда ЛСД смотрим, тама ясно было что вкл. а что нет. Этого хотель. СПС.

  34. GetChiper Автор записи

    Как нибудь займусь не знаю только когда.

  35. vitalic_81

    Здравствуйте, уважаемый GetChiper! Собираю схему управления освещением в гараже . Планирую использовать 3 модуля — как в и в устройстве «Времена года». 109 модуль отлично подходит в качестве основного — в нем есть и клавиатура и IR. Но вылазит загвоздка при озвучивании кнопок — мне нужно разное озвучивание каждой кнопки, т.е. один раз нажал на кнопку «A» — в UART ушел символ «A», еще раз нажал на кнопку «A» — в UART ушел символ «B», снова нажал на кнопку «A» — в UART ушел символ «A». И так со всей клавиатурой (нагрузок у меня пока 12, но на будущее…) и с пультом тоже. То есть включил лампу — озвучка «лампа включена», выключил — озвучка «лампа выключена. Похожий мод создан для 99 модуля, но там нет клавиатуры — только пульт. Сам пробовал разобраться с исходниками, но т.к. в программировании «0» — толку тоже «0». Поэтому, GetChiper, по возможности, прошу создать прошивку под мои нужды! Спасибо!

  36. admin Автор записи

    Делайте пока устройство (хотя-бы на макетке), модификацию будет сделать не проблема.

  37. MarkAntoniy

    Здравствуйте. Использую прошивку keypad_ir_to_uart_mod1 и столкнулся с не понятной мне ситуацией. После програмирования пульта все кнопки работают испрано, а после нескольких включений выключений перестает передаваться посылка от первой кнопки «0»! В чем может быть причина? Куда копать?

  38. admin Автор записи

    Похоже это стирается ячейка EEPROM в моменты пограничного питания при включении/отключении.
    Тут нужно либо добавить конденсатор по питанию (это для случая если в процессе включения/отключения питания наблюдается шум), либо уменьшить (при большой емкости напряжение питания растет/падает медленно, затягивая время нахождения МК в пограничной зоне напряжения)

    Еще можно попробовать разные варианты значений для фьюзов BODLEVEL — это контроль уровня питания

  39. MarkAntoniy

    По поводу ячейки епром, я подумал в первую очередь! В проекте ячейка с адресом 00 зарезервирована, я еще одну добавил! Это ничего не поменяло. Ладно, попробую поиграть с будлевелом. Большое Вам спасибо!!!

  40. MarkAntoniy

    Программу немного покапал, думал исправил. Но сегодня выяснилось, что ошибка не исправлена! Теперь выпала цифра 2. Что можно сделать? Обработка клавиатуры не может мешать?

  41. admin Автор записи

    Если проблема только с первыми числами, то можно организовать несколько пустых значений в EEPROM не привязанных к символам и изучить на них ненужные кнопки пульта.

  42. MarkAntoniy

    Понял. Спасибо, попробую отпишусь.

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