В начало | Зарегистрироваться | Заказать наши киты почтой
 
 
 
 

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

📆6 февраля 2017   ✒️maddiego   🔎7.902   💬8  
Привет всем датагорцам! Возникла у меня в рабочем порядке проблемка. Есть неплохой проектор на потолке (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 ⇣ 20
🎁Программа в CodeVision AVR 3.12 (исходники)  75.68 Kb ⇣ 22
🎁Демо проект для опытов в Proteus v8.4 SP0  46.36 Kb ⇣ 21
🎁«Осциллограмма» в mp3-файле (открывать в любом аудиоредакторе)  469.09 Kb ⇣ 19
🎁Печатная плата в SprintLayout v6.0  22.43 Kb ⇣ 27

Заключение

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

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

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

На этом всё. Благодарю за внимание!

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

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

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




 

Читательское голосование

Нравится

Статью одобрили 37 читателей.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.
 

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

 

 

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

 

Схема на Датагоре. Новая статья Проект «BRASS». Часть 2. Блок ДУ и mp3-модуль... Привет, камрады! Всех с майскими праздниками Мира, Труда, Радио и Победы! В первой части статьи о...
Схема на Датагоре. Новая статья Модули микшерного пульта. Мартиньяк Ф.... Мартиньяк Филлип. Модули микшерного пульта. Перевод с фр. — М. ДМК-Пресс, 2002г. 144 с; ил. В...
Схема на Датагоре. Новая статья Не стартует материнка от кнопки питания. Лечим очень нетривиальным методом... Приветствую читателей журнала Датагор! Есть у меня пожилой компьютер, которому уже исполнилось лет...
Схема на Датагоре. Новая статья Блок управления аудиоусилителем с лестничным регулятором громкости и ДУ... Сделал я усилитель SE на ГУ-50 и как обычно встал вопрос о регуляторе громкости. Ставить обычный...
Схема на Датагоре. Новая статья Регулятор громкости и тембра с ДУ на TDA8425 + ATMEL AT90S4433... Когда-то, в 2005-2006 году, мной был сделан регулятор громкости и тембра на TDA8425 с ДУ. Статья...
Схема на Датагоре. Новая статья Микшер Numark DM2002X изнутри. Насколько страдает качество при серийном производстве?... Если вы считаете себя радиолюбителем, то вероятно ваши знакомые тоже так считают, и разумеется...
Схема на Датагоре. Новая статья Облегченный лестничный регулятор громкости с дистанционным управлением... Конструкция регулятора громкости (РГ) в моей статье на Датагоре "Блок управления...
Схема на Датагоре. Новая статья Портативный анализатор ИК сигналов «IR-master»... Каждый радиолюбитель сталкивающийся с применением в своих конструкциях дистанционных пультов...
Схема на Датагоре. Новая статья Регулятор громкости на TDA7313 и PIC 16F876A.... Для новой конструкции мне понадобился блок управления громкостью и тембрами. Я выбрал...
Схема на Датагоре. Новая статья Lossless аудио плеер на базе mini-ITX материнской платы ASUS AT5NM10T-I + Intel Atom D525... С детства люблю слушать музыку. Всегда было много катушек с записями. Возьмешь список, найдешь...
Схема на Датагоре. Новая статья Грызём микроконтроллеры. Урок 7. Подключение к МК кнопок, клавиатуры, энкодера... Очень давно обещал продолжить цикл статей по работе с микроконтроллерами, но не было физической...
Схема на Датагоре. Новая статья осциллограф с1-68... Выкладываю обещанное на форуме полное техническое описание и руководство по эксплуатации...
 

Комментарии, вопросы, ответы, дополнения, отзывы

 

<
Читатель Датагора

Datagor

<
Читатель Датагора

Yamazaki

<
Читатель Датагора

Datagor

<
Читатель Датагора

StalKer-NightMan

<
Читатель Датагора

maddiego

<
Читатель Датагора

dimon5000

<
Читатель Датагора

ilyap

<
Читатель Датагора

Владимир

Добавить комментарий, вопрос, отзыв 💬

Камрады, будьте дружелюбны, соблюдайте правила!

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
 
 
В начало | Зарегистрироваться | Заказать наши киты почтой