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

 
 
 
7

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

Разместил maddiego 6 февраля 2017. Просмотров: 1 398

Привет всем датагорцам! Возникла у меня в рабочем порядке проблемка. Есть неплохой проектор на потолке (Epson EB-X18) с кучей гнёзд и функций. Сделан капитальный ремонт помещения, а к проектору идут лишь два кабеля, VGA и питание. Источник слайдов — ноутбук. Задача: нужно переключать слайды при показе презентаций дистанционно, без участия помощника, который сидел бы за компьютером. Новый кабель USB или HDMI проводить… ковырять потолок и стенку… или кидать свисающий кабель с потолка… не вариант!

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

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

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


Собственно вот он, пульт от проектора

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

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

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

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


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


Вот они, колебания!


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


Один пакет от пульта ДУ

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


Пример протокола NEC

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

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

Хотел я использовать «мелочь пузатую» - микроконтроллер ATTiny13, но на практике стало понятно, что его встроенная RC-цепочка сильно «гуляет» по частоте при изменении температуры окружающей среды, и питания, и ещё неизвестно от чего, так то всё работает не стабильно. Это не допустимо для таймера захвата импульсов от ИК-приёмника, который должен работать строго и точно. Пришлось взять микроконтроллер «пожирнее», Tiny26. Он и с кварцем работает, и памяти в 2 раза больше, да и в случае надобности увеличения количества кнопок, выводов у него тоже хватит. Так появилась принципиальная схема. Дроссели играют роль больше перемычек, нежели фильтров.
Исключён фрагмент. Полный вариант статьи доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.


Настала пора мучить 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):

//временные пороги импульсов от ИК датчика
#define START_IR_MAX		224	// 14.0ms (62.5us / 1) 
#define START_IR_MIN		208	// 13.0ms
#define BIT_IR_MAX		40	// 2.875ms
#define BIT_IR_MIN		30	// 1.625ms 

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

Немало времени я потратил на обработку команд от пульта, которые сыпятся пачками, если держать любую кнопку, и в итоге решил поставить задержку на 240 мс между отправкой компьютеру команд на переключение слайдов. Задержку можно сменить в начале программы:
//интервал между импульсами отправки команды компьютеру
#define KEY_SPEED 120 //интервал в мс * 2 (120*2=240мс)

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

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

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

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

Наладка заключается лишь в перекомпилировании исходника под свой пульт, который у каждого разный, для этого в конце программы есть условный оператор «if», который и отвечает за фильтрацию команд. Печатная плата начинает работать сразу после подключения к компьютеру.
//проверка адреса команды от ПДУ
if((temp[0]==193 && temp[1]==170) || //ПДУ от проектора
 (temp[0]==64 && temp[1]==64)) //ПДУ от openbox hd-1
 { 
 //была нажата кнопка PAGE_UP или UP на ПДУ
 if((temp[2]==208 && temp[3]==47) ||
 (temp[2]==97 && temp[3]==158) ||
 (temp[2]==13 && temp[3]==242)) //97/158//13/242
 {...}

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

Файлы

Прошивка для заливки (hex) | Файл 865 b загружен 7 раз.
Программа в CodeVision AVR 3.12 (исходники) | Файл 75,68 Kb загружен 7 раз.
Демо проект для опытов в Proteus v8.4 SP0 | Файл 46,36 Kb загружен 7 раз.
«Осциллограмма» в mp3-файле (открывать в любом аудиоредакторе) | Файл 469,09 Kb загружен 5 раз.
Печатная плата в SprintLayout v6.0 | Файл 22,43 Kb загружен 12 раз.

Заключение

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

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

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

На этом всё. Благодарю за внимание!
Тимур (maddiego)
Узбекистан, Ташкент
Профиль maddiego
Мне 27, с паяльником подружился в 10 лет. В 22 скатился в сферу микроконтроллеров.
 

Понравилось? Палец вверх!

  • всего лайков: 35

Поделись с друзьями!

Связанные материалы:


Схема на Датагоре. Новая статья TEA5767.pdf - стерео FM приёмник с МК управлением... TEA5767 - стерео FM приёмник с МК управлением Даташит TEA5767.pdf :...
Схема на Датагоре. Новая статья Облегченный лестничный регулятор громкости с дистанционным управлением... Конструкция регулятора громкости (РГ) в моей статье на Датагоре «Блок управления аудиоусилителем...
Схема на Датагоре. Новая статья Вторая жизнь лампового радиоприемника Philips 592LN (Голландия, 1947). Часть 1... Здравствуйте, уважаемые граждане и гости Датагории! Есть у меня приятель, который держит...
Схема на Датагоре. Новая статья Мой путь к электронике... Моё детство было довольно интересным, чем я и горжусь. На дворе начался новый век с инфляцией и...
Схема на Датагоре. Новая статья Блок управления аудиоусилителем с лестничным регулятором громкости и ДУ... Сделал я усилитель SE на ГУ-50 и как обычно встал вопрос о регуляторе громкости. Ставить обычный СП...
Схема на Датагоре. Новая статья Как сэкономить электроэнергию и уберечься от пожара. Умная розетка на PIC12F675... Многие обсуждают проблему потребления электричества аппаратурой, которая находится в дежурном...
Схема на Датагоре. Новая статья Портативный анализатор ИК сигналов «IR-master»... Каждый радиолюбитель сталкивающийся с применением в своих конструкциях дистанционных пультов...
Схема на Датагоре. Новая статья Регулятор громкости на TDA7313 и PIC 16F876A.... Для новой конструкции мне понадобился блок управления громкостью и тембрами. Я выбрал...
Схема на Датагоре. Новая статья осциллограф с1-68... Выкладываю обещанное на форуме полное техническое описание и руководство по эксплуатации...
Схема на Датагоре. Новая статья Микшер Numark DM2002X изнутри. Насколько страдает качество при серийном производстве?... Если вы считаете себя радиолюбителем, то вероятно ваши знакомые тоже так считают, и разумеется...
Схема на Датагоре. Новая статья Программа - осциллограф... Простой и очень удобный осциллограф для просмотра сигнала. Программа-эмулятор осциллографа,...
Схема на Датагоре. Новая статья Модули микшерного пульта. Мартиньяк Ф.... Мартиньяк Филлип. Модули микшерного пульта. Перевод с фр. — М. ДМК-Пресс, 2002г. 144 с; ил. В...
<
  • Главный редактор
6 февраля 2017 16:11

Игорь Петрович Котов / Datagor

  • С нами с 25.02.2011
  • Ушёл в реал Пользователь offline
  • 1 638 комментариев
  • 261 публикация
 
  • 0
Тимур, спасибо за статью и полезное устройство.
Я сам не раз попадал в ситуацию, когда для проведения лекции или презентации требуется минимум два человека grinning Понятно, что причина этого кроется в организационных проблемах учреждения.
Тем не менее, твоя ИК-клавиатура на две кнопки полностью решает проблему, не зависимо от причин.

Плюс можно похулиганить и пошутить над собратом, управляя другими кнопками клавиатуры ПК. wink

Осциллографа у меня нет.
Тимур, я думаю, мы это поправим!

<
  • Гражданин
6 февраля 2017 16:15

Сергей / Yamazaki

  • С нами с 2.07.2009
  • Ушёл в реал Пользователь offline
  • 137 комментариев
  • 3 публикации
 
  • 0
Если на компьютере есть ком-порт, можно подключить такой приемник и без микроконтроллера. Но ваш вариант предпочтительнее, т.к. совместим с любым компьютером без плясок с бубном .

<
  • Главный редактор
6 февраля 2017 16:27

Игорь Петрович Котов / Datagor

  • С нами с 25.02.2011
  • Ушёл в реал Пользователь offline
  • 1 638 комментариев
  • 261 публикация
 
  • 0
Сергей,
на современных ноутбуках (нетбуках и подавно) com-порт не найдешь днём с огнём. Да чего там на современных, уже лет 5 такая тенденция.
Кроме этого потребуется какой-то софт, который будет интерпретировать команды на входе ИК-приёмника с ком-порта и рулить презентацией MS Power Point, например.

А у Тимура срабатывает "кусочек" стандартной USB-клавиатуры ПК. Т.е. человек нажимая на пульт как-будто реально жмёт клавиши ПК.

Ещё мне очень понравился ход мыслей и находчивость автора.
Ёлки-палки, как он исследовал ИК-протокол! Браво! grinning

<
  • Подписчик
7 февраля 2017 12:06

Игорь / StalKer-NightMan

  • С нами с 15.03.2012
  • Ушёл в реал Пользователь offline
  • 90 комментариев
  • 1 публикация
 
  • 0
Да, изящное инженерное решение!!!

<
  • Гражданин
7 февраля 2017 12:13

Тимур / maddiego

  • С нами с 2.08.2016
  • На сайте Пользователь Онлайн
  • 13 комментариев
  • 8 публикаций
 
  • +1
Цитата: Datagor
Плюс можно похулиганить и пошутить над собратом, управляя другими кнопками клавиатуры ПК. wink

О да, помнится, как я хулиганил с блютус адаптером так, подключил его к ПК на кафедре и использовал сенсор своего телефона как тачпад для управления мышкой, сижу за спиной преподавателя, и ели сдерживаю себя от смеха. grinning

Цитата: Datagor
Осциллографа у меня нет.
Тимур, я думаю, мы это поправим!

Был бы беспредельно рад и благодарен!

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

Даже если нету ком-порта, думаю можно применить RS232, USB to UART конвертер, конечно, он стоит почти как сама клавиатура, но в сочетании с МК, можно добиться нечто подобного.

Цитата: Datagor
Ещё мне очень понравился ход мыслей и находчивость автора.
Ёлки-палки, как он исследовал ИК-протокол! Браво! grinning

Сам порой удивляюсь , как можно решать разные задачи, экстраординарными методами grinning

<
  • Гражданин
9 февраля 2017 19:25

Дмитрий / dimon5000

  • С нами с 11.08.2011
  • Ушёл в реал Пользователь offline
  • 11 комментариев
  • 0 публикаций
 
  • 0
Интересная реализация данного устройства. У меня как-то была идея повторить домашний медиа центр на основе древнего пк, по мотивам статьи приведенной здесь "домашний медиа плеер из пк". Но потом обстоятельства изменились, и идея так и осталась идеей. Однако, пока я ее думал, я все думал как запилить управление плеером без использования внешней клавы. И тоже посетила мысль разобрать клаву, вытащить из нее плату, по дорожкам отследить нужные кнопки и таким образом рулить плеером. Ну а потом, переезды, учеба, массовое появление mp3 плееров, телефонов, флешек... В общем, так и не реализовалась задумка.

<
  • Кандидат
17 марта 2017 10:38

Илья / ilyap

  • С нами с 22.01.2010
  • Ушёл в реал Пользователь offline
  • 5 комментариев
  • 0 публикаций
 
  • 0
Arduino Leonardo умеет "прикидываться" HID-устройством. Так что можно сделать на нем свою реализацию клавиатуры.

Информация
Вы не можете участвовать в комментировании. Вероятные причины:
— Администратор остановил комментирование этой статьи.
— Вы не авторизовались на сайте. Войдите с паролем.
— Вы не зарегистрированы у нас. Зарегистрируйтесь.
— Вы зарегистрированы, но имеете низкий уровень доступа. Получите полный доступ.