092-Универсальный обучаемый пульт.

Автор: | 05.12.2012

 

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

 

1 Принцип работы.

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

Я пошел по другому пути. Для того чтобы не создавать огромную базу команд различных пультов, я решил записывать IR-команды с оригинального пульта в память микроконтроллера и впоследствии их воспроизводить (своего рода диктофон для IR-команд).  Обучаемому пульту нет разницы, по какому протоколу работает оригинальный пульт, нет разницы какого формата и длины IR-команда, он записывает всю передаваемую оригинальным пультом  информацию в сыром (RAW) виде и точно так же воспроизводит.

Конечно, есть ограничения, и некоторые пульты не могут быть изучены по объективным причинам:
— обучаемый пульт воспринимает IR-посылки TSOPом работающем на частоте 36 или 38 кГц (подавляющее большинство пультов работает именно в этом диапазоне) — это не дает возможности воспринять посылку от пульта который работает на несущей сильно отличающейся от несущей TSOP (например, 30 или 56 кГц);
— протоколы пультов с обратной связью (например, как у кондиционеров), по понятным причинам, не могут быть воспроизведены;
— нестандартные протоколы, которые имеют специфическое построение IR-команды (например, команда разбита на несколько посылок).

 

2 Конструкция пульта.

Обучаемый пульт представляет из себя небольшую коробочку с сенсорным клавишами. Питается вся конструкция от трехвольтовой батарейки 2032 . На корпусе имеется 9 сенсорных клавиши, 6 из них служат для управления техникой (клавиши пульта) и оставшиеся 3 – для выбора набора команд (соответственно, можно записать и воспроизвести до 3х наборов команд по 6 команд). Еще есть тактовая кнопка для переходов между режимами работы. Конструктивно пульт состоит из двух плат:
— первая – плата управления – это универсальная плата, собранная нами ранее;
— вторая – плата сенсоров (ее описание Вы найдете ниже по тексту).
Обе платы соединяются между собой при помощи разъемов, образуя цельную компактную конструкцию.

 

2 Схема пульта (шилда универсального пульта).

Remote-Scheme.spl7 - Схема универсального пульта

На рисунке показана схема универсальной платы вместе с шилдом обучаемого пульта.  На базовой плате могут быть установлены разные микроконтроллеры из серии ATmega48/88/168. Компоненты схемы не критичны по номиналам и допускают небольшое варьирование. Наверное, придется подобрать гасящий резистор для IR-светодиода. Чем меньше значение этого резистора — тем мощнее сигнал пульта, но быстрей будет садится батарейка.

Изначально пульт планировалось питать от трех батареек размера ААА, которые располагались бы в батарейном отсеке, прикрепленному снизу пульта, но полевые испытания показали, что небольшой батарейки 2032 на 3 вольта, вполне достаточно для удовлетворительной работы. Конечно, несколько уменьшается мощность IR-сигнала, но остается в приделах комфортной работы. В связи с этим была немного изменена печатка платы сенсоров, куда было добавлено место для крепления батарейки 2032.

Но нужно учитывать, что не все TSOPы способны работать при напряжении питания 3в. Если Ваш TSOP не заработал от 3х вольт, или Вам нужен мощный IR-сигнал, способный работать на больших расстояниях, отражаясь от стен и потолка, то прикрепите батарейный отсек на три батарейки типа ААА к низу пульта (закрытый батарейный отсек даже не испортит внешнего вида) и Вы получите мощный пульт и продолжительную работу.

 

3 Печатная плата

Как собрать плату управления – ранее я уже писал — читаем. Изготовление печатной платы шилда обучаемого пульта может представлять некоторую сложность по причине относительно тонких дорожек и больших полигонов сенсорных площадок. После протравки и лужения платы обязательно нужно просмотреть/прозвонить все дорожки на предмет обрывов и замыканий между собой.
Здесь оставляю разводку базовой платы и платы шилда пульта вместе с боковыми стенками в одном месте (для удобства изготовления всех плат за один раз).

Remote-PCB.lay - Рисунок печатной платы пульта

 

4 Сборка конструкции

После того как Вы убедились в целостности дорожек шилда – запаеваем компоненты. Особо там паять нечего, но есть некоторые нюансы:
— индикаторные SMD светодиоды (их два в параллель) нужно паять боком, для того, чтобы их свечение было видно сквозь плату.

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

Кстати, светодиоды не обязательно должны быть SMD. Можно просверлить в удобном месте платы отверстие и установить туда обычный светодиод, проводами дотянув к нему питание.

— Еще один проблемный для монтажа элемент – пьезоизлучатель. Габариты пьезоизлучателя не позволяют его установить в каком либо определенном месте (он просто не помещается), поэтому к его установке придется подойти творчески. Я, например, обрезал ножницами  стандартную пьезопластинку  до удобных размеров и припаял пластинку в нижней части пульта.

Если с пьезоизлучателем ничего не получается, вместо него можно установить светодиод, не забыв последовательно с ним поставить гасящий резистор (300 – 1000 Ом).

— Плата сенсоров имеет три боковые стенки, припаиваемые перпендикулярно (четвертая торцевая стенка паяется к универсальной плате). При соединении универсальной платы и платы сенсоров боковые стенки не должны затирать или клинить друг между другом. Для этого необходима подгонка плат между собой  — придется поработать напильником :).

 

5 Прошивка микроконтроллера

Прошивается базовая плата через стандартный разъем для программирования ISP-6 (он средний с боку базовой платы).
ULRemote.hex - Прошивка универсального пульта ATmega88
fusebits88.png - Фьюзы универсального пульта ATmega88
Напоминаю:Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставятся инверсно.
Как программировать микроконтроллеры читаем в FAQ.

 

6 Декорирование пульта. Изготовление и крепление сенсорной панели.

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

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

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

Вот вам несколько общих вариантов дизайна клавиш.

092-Дизайн3+.doc - Рисунки сенсорных панелей для пульта (DOC)

 

6 Работа обучаемого пульта

Пульт готов, теперь расскажу как с ним работать.

Для начала ознакомления с работой пульта — элементы управления:


— аппаратная (контактная) клавиша Set служит для различных целей, но главные — переход между режимами работы, усыпление пульта и вывод его из сна;
— индикаторные Led (на картинке он немного не на своем месте, но все течет, все меняется …) служит для индикации различных режимов работы + подсветка сенсоров;
— сенсорные клавиши смены программ и изменения уровня имеют автоповтор (функции: громкость, переключение каналов, яркость, тембр, …);
— сенсорные клавиши Power и Mute не имеют автоповтора (нужны для единичных действий: включить-выключить, открыть-закрыть, …);
— сенсоры выбора группы команд делают активным один из трех возможных наборов (по 6 штук) команд-сенсоров (например: 1-телевизор, 2-усилитель, 3-свет) ;
— еще есть пьезоизлучатель Buzzer (внутри корпуса), он озвучивает нажатия клавиш и выполняет ряд других действий.

Вот теперь сам алгоритм работы:
— При первом включении пульта (подаче питания), он начнет процедуру автоматической настройке сенсоров. Перед настройкой, с небольшими паузами, прозвучат два длинных и один короткий сигнал. Сразу после короткого сигнала сенсоры автоматически настроятся.  В момент автоматической настройке сенсорные площадки должны быть свободными. — Далее пульт переходит в режим воспроизведения команд из первой группы команд. Прозвучит длинный пииик и сразу за ним короткий (первый набор команд). Загорится Led. Если теперь нажимать сенсоры выбора группы команд то будет звучать длинный пииик и, сразу за ним, в зависимости от номера группы, количество коротких. Переключатели групп команд во всех режимах работают одинаково.
— При нажатии в режиме воспроизведения сенсоров команд, будет издаваться короткий звуковой сигнал (пик) и выдаваться IR-команда.
— Если пульт не трогать некоторое время он сам перейдет в режим сна. В режим сна можно ввести пульт принудительно нажав кратковременно Set. Кратковременное нажатие на Set в режиме сна просыпает пульт и он просигналит номер активной группы команд (чтобы лишний раз не тыкать пальцем 😉 ).
— Если в режиме воспроизведения длительно зажать Set, то пульт перейдет в режим обучения, издав два коротких сигнала, и Led начнет постоянно мигать. При нажатии на любой сенсор — светодиод погаснет, прозвучит длительный сигнал и пульт будет ждать IR-посылку от оригинального пульта. Если посылка получена, прозвучит длинный сигнал, пульт запомнит команду и вернется в режим обучения. Если посылки долго нет — прозвучит короткий сигнал и пульт перейдет в режим обучения самостоятельно. Еще, ожидание IR-посылки можно отменить кратковременным нажатием Set. В режиме ожидания IR-посылки оригинального пульта можно выбирать другие сенсоры или группы. Действия сенсоров-селекторов аналогично режиму воспроизведения.
— Возвратится назад в режим воспроизведения можно длительно зажав Set (последуют два коротких сигнала) или, спустя некоторого времени бездействия, пульт сам перейдет в режим воспроизведения.

 

7 Решение проблем. Отладка конструкции.

Сенсоры устройства являются самым тонким и чувствительным элементом конструкции. Они нуждаются в аккуратном изготовлении (не смытый флюс или грязь на плате способны значительно ухудшить или даже сделать невозможным работу сенсоров) и точной настройке. В программе были приняты меры делающие работу сенсоров более надежной:
— при старте, программа проверяет линии сенсоров на отсутствие К.З. В случае, когда на сенсорах будет находиться напряжение питания (худший вариант, который может привести к «выгоранию» портов микроконтроллера) программа остановит свое выполнения и выдаст сигнал ошибки;
— при старте программа автоматически настраивает чувствительность для каждого сенсора отдельно;
— при удачной инициализации портов сенсоров и первой настройке чувствительности срабатывания сенсоров программа запишет уровни чувствительностей для всех сенсорных площадок в EEPROM с первого адреса (нулевой адрес – общая чувствительность) в порядке:

EEPROM:
&01 Up
&02 Down
&03 Plus
&04 Minus
&05 Power
&06 Mute
&07 Sel1
&08 Sel2
&09 Sel3
Прочитав при помощи программатора таблицу чувствительности из EEPROM можно косвенно оценить качество работы сенсоров и диагностировать проблемы с их работой.

А именно:
— Нормальная чувствительность лежит в пределах значений: 20-50. Эти значения не являются абсолютными, так как на чувствительность сенсоров влияет очень много факторов:
— Значения близкие к 0 говорят о том, что сенсорная площадка имеет утечки на «+питания» (КЗ не может быть, так как программа в этом случае просто не начнет работать (будет непрерывно выдаваться сигнал ошибки). Причиной утечек может быть плохо очищенная плата, «сопли» между дорожками, не той величины (меньше 1 Мом) подтягивающие резисторы сенсоров, плохо протравленные промежутки между дорожками на плате.
— Значения близкие к 255 говорят об утечках на «землю» (вплоть до КЗ), или обрыве в цепи сенсорная площадка – ножка микроконтроллера, или обрыве подтягивающего сенсор резистора (тот, который 1 Мом). Причинами утечек на «землю» могут быть: плохо отчищенная плата; «сопли» между дорожками; плохо протравленные промежутки между дорожками на плате.
— Величины чувствительностей сенсоров должны быть примерно одинаковыми. Слишком большой разброс значений хотя и не является однозначным показателем неправильной их работы (сенсоры обрабатываются и подстраиваются индивидуально), но указывает на то, что существуют какие-то проблемы.

Для случая ненадежной работы сенсоров, по нулевому адресу EEPROM, при помощи программатора, можно вручную задать общую чувствительность всех сенсоров. При этом нулевое значение соответствует максимальной чувствительности, 19 – минимальная, значения больше 19 будут устанавливать чувствительность по умолчанию – 5.

EEPROM:
&00 Sensitivity

При прошивке пульта, EEPROM очищается и все ячейки (в том числе и нулевая) получают значения 255, что автоматически устанавливает номинальную чувствительность.

 

8 Шилд для Arduino

Так как пульт собран на микроконтроллере используемым в платах типа Arduino, Freeduino и им подобных, логично сделать шилд универсального пульта и для них. На данный момент такого шилда я еще не разводил (не дошли руки), но если у Вас это получится сделать быстрей (и опробовать на работоспособность) – присылайте материалы и я с удовольствием выложу их в этой части статьи. Вот, в помощь, основа платы шилда Arduino в Sprint Layout:
Arduino-pin.lay - Заготовка шилда Arduino (Sprint Layout)

 

Дополнительные материалы:

Топик форума, где велась разработка пульта — можно почитать дополнительные материалы.
Топик обсуждения пульта на форуме.
Remote-Scheme.spl7 - Схема универсального пульта
Remote-PCB.lay - Рисунок печатной платы пульта
ULRemote.hex - Прошивка универсального пульта ATmega88
fusebits88.png - Фьюзы универсального пульта ATmega88
092-Дизайн3+.doc - Рисунки сенсорных панелей для пульта (DOC)
GCn Remote 2.zip - Исходник прошивки универсального пульта

(Visited 8 307 times, 1 visits today)

092-Универсальный обучаемый пульт.: 98 комментариев

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

    @pasha140697
    Сопротивление МК в схеме больше МОм (так как он не может запуститься от малого напряжения мультиметра). Кде-то ошибка на плате может сопли при пайке?

    @alec220
    Пока никак не дойду до этого устройства, но развитие будет. (кроме того и данного устройства есть потребность немного проапгрейдить).

  2. sadam

    А можно сделать небольшой вариант данного девайса, мне нужно устройство с 3 кнопками и возможностью самообучения. 1 кнопка — вход-выход в режим обучения, 2 и 3 кнопки обучаемые. Если возможно то на Тини13 или 2313.

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

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

  4. sadam

    Когда освободишься, сможешь скинуть схему и прошивку?
    И если можно туда еще сделать индикацию приема светодиодом?

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

    Если я сделаю такое устройство — это будет статья, со схемой и прошивкой 🙂

  6. miklmakl

    Подскажите,пожалуйста,прошивка для atmega88 подойдет для atmega48?А то не очень понятно…

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

    мега48 немного отличается по архитектуре, поэтому врядли такое сработает.

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

    На продажу я не делаю, но если делать самому, то по цене деталей совсем не дорого получается.

  9. mgood

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

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

    Я в некоторых местах специально делал такие вставки «на всякий случай» вдруг придется дополнительную подтяжку ставить или еще чего…

  11. micky1954

    Уважаемый GetChiper, как попадает питание от батареи на основную плату с контроллером?
    Или я уже совсем никакой?..

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

    По соединительному разъему.

  13. micky1954

    Спасибо!
    Значит, где-то прошиб — нет питания на контроллере.
    Будем искать…

  14. micky1954

    Снова вопрос: на основной плате — ДВУХрядный разъём, а на плате кнопок — ОДНОрядный, и я чо-то не понимаю.
    Разъясните, пожалуйста.
    Спасибо.

  15. micky1954

    К чему подключаются второй ряд контактов на основной плате плюс и минус питания к плате кнопок?

  16. micky1954

    Извините, но не нахожу я где в разъёме питания…
    В основной плате — ДВУХрядный разъём, а в плате кнопок — ОДНОрядный.
    В двухрядном — половина контактов второго ряда — плюс питания, а вторая — минус.
    А где на плате кнопок подвод к разъёму питания? Только проводниками пайкой???
    Спасибо.

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

    В верхних частях плат есть еще один разъем (на первом фото его видно, он рядом с TSOP). Он как раз и используется для подачи питания. Вторая его функция надежно удерживать две половинки корпуса.

  18. micky1954

    Наконец понял!!!
    Спасибо!
    Буду пробовать.

  19. kp128

    А у вас есть возможность модифицировать это устройство под радиоуправление, то есть сделать программируемый радио-пульт!?

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

    Както не совсем понял, что значить модифицировать? Под радио передатчик нужно делать совсем другое устройство.

  21. kp128

    Ну как-нибуть немного переписать программу для запоминания и воспроизведения радио-команд и заменить инфрокрасный приёмник и передатчик на готовые радио-модули приёма и передачи. Примерно так?

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

    Это будет уже другой пульт и алгоритм его работы будет иной. Может как нибудь и выберусь такое сделать.

  23. ksyxa

    Уважаемый автор,спасибо за интересную конструкцию! А есть ли возможность скомпилировать прошивку под Atmega 168. Спасибо.

  24. micky1954

    С Новым годом, уважаемый Getchiper,
    ну не получилось запустить эту игрушку….

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

    С Новым годом!
    Почему не получилось?

  26. dmitrye25

    Доброго времени суток !
    А кто нибудь делал хек и епром файлы ?
    выложите пожалуйста хочу очень повторить устройство

  27. leopold

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

  28. xedory

    здравствуйте, собрал пульт (очень понравился), но он не входит в режим программирование! Прошивал прошивкой ULRemote (может єту нужно EE_ULRemote),
    Фьюзи поставил в сина прог
    0xE7 LOW
    0xDF HIGH
    0x05 EXTENDED
    Проблема такова: не входит в режим программирования (записи кодов пульта)
    соплей нет, проверял под микроскопом, Кз нет… Обрива нет!
    Я думаю тут что-то с програмной частью!

  29. GetChiper

    Прошивка ULRemote.hex
    По поводу правильности фьюзов почитайте статью (ссылка есть рядом с фьюзами)

  30. S@per

    Уважаемый GetChiper. У а есть возможность переделать прошивку под ATmega16(32) и матрицу 5х6(обычные кнопки)?

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

    Это будет проблематично.

  32. S@per

    Изза специфики таймеров?

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

    Много чего переделывать (в том числе и из-за таймеров).

  34. andrey966854

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

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

    Помогу, чем смогу.

  36. andrey966854

    хотелось бы узнать перечень элементов

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

    Радиоколедж + диплом — ну как-бы обязывает уметь читать схемы… 🙂

    Вот набор элементов (все в SMD):
    — микроконтроллер ATmega88 (корпус TQFP)
    — кварц 16МГц
    — конденсаторы
    22пФ — 2 шт
    0.1мкФ (керамика) -3 шт
    10мкФ — 2 шт
    — резисторы
    1 МОм — 9 шт
    10 кОм
    2 кОм
    300 Ом
    10 Ом
    — индикаторный светодиод (любой)
    — ИК светодиод (любой)
    — фотоприемник TSOP4836
    — транзистор BC817
    — кнопка (какая понравится)

    Устройство довольно не простое, так как сенсорные кнопки привередливые в плане качества их исполнения (если где-то на плате небольшой огрех, может даже и автоподстройка не вытянуть). Возможно придется помучатся.

  38. andrey966854

    @GetChiper
    спасибо, мне нужны были номиналы найти их не смог)

  39. andrey966854

    не получается запрограммировать мегу88 на калькуляторе фьюзов не выставляются нужные значения, при записи фьюзов вылетает (sinaprog 2.1)

  40. andrey966854

    не програмируется ЕЕPROM, может я делаю что то не так?

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

    почему на калькуляторе не ставится нужные значения? туда ведь можно галок наставить без ограничений? с инверсией фьюзов не ошиблись? для сины они ставятся инверсно моей картинке

    вылет при программировании — это проблема программы для программирования

    EEPROM не нужно программировать

  42. andrey966854

    но прошивка EEPROM у вас есть, для чего тогда,
    фьюзы ставил инверсно, ошибка выходит при прошивке ext, записывает туда 05,
    возможно ли то что сгорела микросхема (перегрел паяльником)

  43. Dmawzx

    Я правильно понимаю что такая же микросхема используется в ардуино мега?
    На сколько хватит заряда батарейки в пульте?

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

    Не совсем то МК.
    В новых ардуинах стоят меги328 — здесь мега88 (одна серия, но более дешевая)

    Про батарейку не скажу — так долго пультом не пользовался…

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