Модуль ИК дистанционного управления ПК на микроконтроллере ATTiny26 для перелистывания презентаций. ИК-клавиатура на 2 кнопки

Модуль ИК дистанционного управления ПК на микроконтроллере ATTiny26 для перелистывания презентаций. ИК-клавиатура на 2 кнопки

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

Я решил объединить ИК-пульт (взял от проектора) + ИК-приёмник из закромов + микроконтроллер AVR + плату от побитой жизнью USB-клавиатуры ПК. Так родилась в моей голове мысль об «инфракрасной клавиатуре» всего на пару клавиш: чтобы нажатие кнопок на ИК-пульте вызывало отрабатывание нажатий кнопок «PgUp» и «PgDn» клавиатуры ПК. Хм, звучит неплохо. К делу!

Содержание / Contents

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.

↑ Путь от идеи к началу проектирования

Так как для переключения слайдов достаточно двух кнопок, я решил использовать кнопки «Вправо» и «Влево» от пульта, как команды «Следующий слайд» и «Предыдущий слайд» соответственно. Ещё задействовал центральную кнопку как «Следующий слайд», для удобства – ведь она самая крупная и чаще всего используется.

Осталось узнать, по какому протоколу работает пульт, чтобы использовать в программе МК. В Интернете, к сожалению, для этого пульта такие тонкости не описаны. Осциллографа у меня нет. Собирать дешифратор команд лень.

И тут пришла ещё одна бредовая идея! Использовать аудиокарту компьютера плюс любой редактор аудиофайлов как осциллограф. Всё просто, входные ёмкости карты пропускают частоту в диапазоне примерно от 30 Гц до 16 кГц, т.е. скорости должно хватить для захвата сигнала от ИК-приёмника, который я добыл для этого проекта из горелого ресивера.

Подал питание на ИК-приёмник, а его выход подключил на микрофонный вход аудиокарты через регулятор громкости (он же делитель на резисторах). Поставил на запись микрофонный канал, начал нажимать на кнопки пульта и мне повезло, частота ИК излучателя пульта (а она может быть от 36 до 40 кГц) от проектора совпала с ИК-приёмником и я увидел на экране колебания!

Наигравшись, я увеличил масштаб и отчётливо увидел бинарный код, который шлёт пульт ДУ. Отправляет он два одинаковых пакета подряд, таким образом, разработчики Epson повысили надёжность передачи команды и принятие её проектором. Если зажать кнопку на пульте, то пакеты сыпятся подряд и это пища для раздумий при написании программы обработчика таких команд, об этом позже.

Используя инструмент программы «Выделение» я узнал ширину импульсов в миллисекундах и пришёл к выводу, что пульт работает по протоколу, похожему на протокол NEC. У пакета имеется стартовый бит в 9 мс, пауза в 4,5 мс, далее идёт адрес из 2-х байт и команда, ещё из 2-х байт, логическая единица передаётся в течении 2,25 мс, а логический ноль 1,12 мс.

В общем, благодаря самодельному «осциллографу», я узнал адрес пульта и коды нужных мне кнопок. Как видно на фото с пультом, на фоне валяется пульт от ресивера «Openbox», который я также внёс в программу, для тестов. Пусть будет, всё равно у него оказался такой же протокол NEC.

↑ Схемы ИК-клавиатуры для презентаций

Настала пора мучить USB-клавиатуру ПК. Я разобрал её, вытащил плату и рассмотрел всё под яркой настольной лампой. В ней есть плёнка с кнопками, плата и USB-провода. Взяв плёнку клавиатуры, и проследил по ней путь от кнопок PAGE UP и DOWN до контактов платы.

Взял за хвост плату клавиатуры и увидел, что дорожки на плёнке привели меня к контактам C13+R7 для PAGE DOWN и C13+R6 для PAGE UP. Подключил платку клавиатуры к компьютеру, замкнул пинцетом найденные контакты. Сработало, значит, не ошибся! Решил уменьшить габариты платы и убрать ненужные контакты, сделал разметку, проверил, что нужные дорожки сохранены, и давай её пилить.

Было вот так.

Пока пилил, задел контакт ёмкости сверху слева, но ничего, позже припаял её через тонкий проводок. Надфилем допилил плату и вмонтировал на основную печатную плату, которую вытравил с помощью технологии ЛУТ (тут впервые я решил не лудить дорожки, так плата выглядит красивее на мой взгляд). Корпус взял от завалявшегося брелока для поиска ключей. Это который - посвистишь, и он в ответ начинает пикать.

Готовый модуль с ИК-приёмником, подключается по USB к ПК.

Модуль в сборе.

↑ Программная часть

На момент сборки схемы в магазине не оказалось кварца на 4МГц, пришлось брать на 4.096МГц, зато частота кратна 8, что немного облегчило мне процедуру расчёта скорости работы таймера захвата, который работает ровно на 16 кГц. В принципе, разность частоты составляет всего 2,4%, что теоретически позволяет использовать кварц на 4 МГц (в Proteus всё прекрасно работает на обоих кварцах). В любом случае, проверить это на практике я уже не смогу, а подогнать таймслоты всегда можно используя исходник.

Для этого в начале программы есть макросы соотношения микросекунд на 1 единицу (62.5 us / 1):

Также ниже прилагаю файлы демонстрационного стенда на Протеусе, там для наглядности работы эмулирован пульт ДУ и ИК приёмник.

Немало времени я потратил на обработку команд от пульта, которые сыпятся пачками, если держать любую кнопку, и в итоге решил поставить задержку на 240 мс между отправкой компьютеру команд на переключение слайдов. Задержку можно сменить в начале программы:

Программа занимает всего 28% флеш памяти. Все строки исходного кода прокомментированы. Фьюзы настроены лишь на тактирование от внешнего кварца, остальные фьюзы заводские.

К сожалению, какие именно фьюзы надо выставлять, касаемо тактирования от кварца, привести я не могу, т.к. использую для прошивки программу AVR Studio 4, а в ней есть готовые варианты источников тактирования.

Но думаю это не так критично.

↑ Наладка устройства

Наладка заключается лишь в перекомпилировании исходника под свой пульт, который у каждого разный, для этого в конце программы есть условный оператор «if», который и отвечает за фильтрацию команд. Печатная плата начинает работать сразу после подключения к компьютеру.

На момент тестирования устройства, я долго недоумевал, почему при точном расчёте времени таймера захвата, ИК-приёмник срабатывал через раз. Как я не бился, всё никак. Оказалось, у меня настольная лампа оборудована лампочкой дневного света, и она, заррраза, мерцает! Тем самым, свет от неё попадая на ИК-приёмник, создавал в нём помехи, ведь технология передачи сигнала от пульта до ИК-приёмника использует несущую модуляцию в диапазоне 36-40 кГц. Не хилый такой подводный камень!

↑ Файлы

↑ Заключение

Как ещё можно использовать ресурсы применённого микроконтроллер? Можно было добавить функцию обучения, дабы принимать команды от почти любого пульта и помнить его адрес + коды команд. Но, разнообразие пультов огромно и протоколы у многих собственные. На такую функцию у меня ушло бы много времени, а меня поторапливали, и я отдал устройство в работу. Да и пультов у меня дома всего пара: нечем и не на чем всё это дело проверять.

Но мой проект изначально был нацелен на одну конкретную задачу, которую он целиком выполняет: теперь лектор сам листает презентацию в нужный ему момент. Нажатие кнопок на пульте вызывает отрабатывание нажатий кнопок «PgUp» и «PgDn» клавиатуры ПК.

А ещё проект несёт учебный характер, код закомментирован, а кнопки клавиатуры ПК вы можете выбрать сами.

📎📎📎📎📎📎📎📎📎📎