Універсальний пульт, що навчається
Давно хотів собі мати невеликий пульт для управління різною побутовою технікою. І ось, нарешті, дійшли руки і вистачило вільного часу для створення свого універсального пульта! Постарався зробити його поменше, зручніше, красивіше ... загалом дивіться що вийшло!
1 Принцип роботи.
Універсальні пульти, які я маю у продажу, здебільшого працюють за принципом встановлених IR-команд. Тобто в пам'яті пульта записана велика база протоколів різних пультів і для вибору потрібного вбивається його код (книга з кодами додається до пульта). Плюс такого підходу є те, що для налаштування всіх клавіш пульта потрібно набрати один код. Недолік очевидний - пульт зможе працювати тільки з тією побутовою технікою, від якої у неї є команди, записані в пам'ять (для випадку, якщо в книжечці не знайшлося потрібної моделі побутової техніки, виробник універсального пульта рекомендує пробувати найближчі моделі або взагалі все підряд) .
Я пішов іншим шляхом. Для того, щоб не створювати величезну базу команд різних пультів, я вирішив записувати IR-команди з оригінального пульта в пам'ять мікроконтролера і згодом їх відтворювати (своєрідний диктофон для IR-команд). Пульту, що навчається, немає різниці, за яким протоколом працює оригінальний пульт, немає різниці якого формату і довжини IR-команда, він записує всю передану оригінальним пультом інформацію в сирому (RAW) вигляді і так само відтворює.
Звичайно, є обмеження, і деякі пульти не можуть бути вивчені з об'єктивних причин: - пульт, що навчається, сприймає IR-посилки TSOPом, що працює на частоті 36 або 38 кГц (переважна більшість пультів працює саме в цьому діапазоні) - це не дає можливості сприйняти посилку від пульта якийпрацює на несучій, що сильно відрізняється від несучої TSOP (наприклад, 30 або 56 кГц); – протоколи пультів із зворотним зв'язком (наприклад, як у кондиціонерів), зі зрозумілих причин, не можуть бути відтворені; – нестандартні протоколи, які мають специфічну побудову IR-команди (наприклад, команда розбита на кілька посилок).
2 Конструкція пульта.
Пульт, що навчається, являє собою невелику коробочку з сенсорним клавішами. Живиться вся конструкція від тривольтної батареї 2032 . На корпусі є 9 сенсорних клавіші, 6 з них служать для управління технікою (клавіші пульта) і 3 - для вибору набору команд (відповідно, можна записати і відтворити до 3х наборів команд по 6 команд). Є ще тактова кнопка для переходів між режимами роботи. Конструктивно пульт складається із двох плат:
– перша – плата управління. – друга – плата сенсорів (її опис Ви знайдете нижче за текстом). Обидві плати з'єднуються між собою за допомогою роз'ємів, утворюючи цілісну компактну конструкцію.

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

На малюнку показана схема універсальної плати разом з шилдом пульта, що навчається. На базовій платі можуть бути встановлені різні мікроконтролери із серії ATmega48/88/168. Компоненти схеми не критичні за номіналами і допускають невелике варіювання. Напевно, доведеться підібрати резистор, що гасить, для IR-світлодіода. Чим менше значення цього резистора – тим потужніший сигнал пульта, але швидше буде сідати батарейка.
Спочатку пульт планувалося живити від трьох батарейок розміру ААА, які б розташовувалися в батарейному відсіку, прикріпленому знизу пульта, але польові випробування показали, що невеликий батарейки 2032 на 3 вольта, цілком достатньо длязадовільної роботи. Звичайно, дещо зменшується потужність IR-сигналу, але залишається в межах комфортної роботи. У зв'язку з цим було трохи змінено друк плати сенсорів, куди було додано місце для кріплення батарейки 2032.
Але треба враховувати, що не всі TSOP здатні працювати при напрузі живлення 3в. Якщо Ваш TSOP не заробив від 3х вольт, або Вам потрібен потужний IR-сигнал, здатний працювати на великих відстанях, відбиваючись від стін та стелі, то прикріпіть батарейний відсік на три батарейки типу ААА до низу пульта (закритий відсік батареї навіть не зіпсує зовнішнього вигляду ) і Ви отримаєте потужний пульт та тривалу роботу.
3 Друкована плата
4 Складання конструкції
Після того як Ви переконалися в цілісності доріжок шилду – запаюємо компоненти. Особливо там паяти нічого, але є деякі нюанси: - індикаторні SMD світлодіоди (їх два в паралель) потрібно паяти боком, для того, щоб їхнє свічення було видно крізь плату.
Спочатку замислювалося, що ці світлодіоди повинні бути спрямовані всередину корпусу і відбитим світлом висвітлювати всю площину сенсорів, але для економії батарейки довелося зменшити струм світлодіодів і підсвічування стало погано видно.
До речі, світлодіоди не обов'язково мають бути SMD. Можна просвердлити в зручному місці плати отвір та встановити туди звичайний світлодіод, проводами дотягнувши до нього живлення.
- Ще один проблемний для монтажу елемент – п'єзовипромінювач. Габарити п'єзовипромінювача не дозволяють його встановити в якомусь певному місці (він просто не міститься), тому до його встановлення доведеться підійти творчо. Я, наприклад, обрізав ножицями стандартну п'єзопластинку до зручних розмірів та припаяв платівку в нижній частині пульта.
Якщо з п'єзовипромінювачем нічого не виходить,замість нього можна встановити світлодіод, не забувши послідовно з ним поставити резистор, що гасить (300 - 1000 Ом).
- Плата сенсорів має три бічні стінки, що припаюються перпендикулярно (четверта торцева стінка паяється до універсальної плати). При з'єднанні універсальної плати та плати сенсорів бічні стінки не повинні затирати або клинити один між одним. Для цього необхідне припасування плат між собою - доведеться попрацювати напилком :).


5 Прошивка мікроконтролера
Прошивається базова плата через стандартний роз'єм для програмування ISP-6 (він середній із боку базової плати).
Для Algorithm Builder і UniProf галочки ставляться як на картинці.

6 Декорування пульта. Виготовлення та кріплення сенсорної панелі.
Після того, як мікроконтролер прошитий та перевірена працездатність пульта, приступаємо до роботи над зовнішнім виглядом нашого пристрою. Так як зовні шлях є прямокутною гладкою коробочкою складеною їх друкованих плат, декорування не складе якихось труднощів. Надати пульту "товарний вигляд" можна різними способами, наприклад, пофарбувати фарбою з балончика і після цього нанести малюнок клавіш або роздрукувати на папері картинку лицьової панелі та приклеїти і т.д.
Я роздрукував за допомогою кольорового лазерного принтера на папері, що самоклеїться, малюнки передньої і задньої панелі пульта, приклеїв малюнки на пульт і покрив зверху захисним шаром (приклеїв зверху широкий скотч).




Ось кілька загальних варіантів дизайну клавіш.

6 Робота пульта, що навчається
Пульт готовий, тепер розповім, як з ним працювати.
Для початку ознайомлення з роботою пульта – елементи керування:

- апаратна (контактна) клавіша Set служить для різних цілей, але головні - перехід між режимами роботи, присиплення пульта та виведення його зі сну; - індикаторні Led (на картинці він трохи не на своєму місці, але все тече, все змінюється ...) служить для індикації різних режимів роботи + підсвічування сенсорів; – сенсорні клавіші зміни програм та зміни рівня мають автоповтор (функції: гучність, перемикання каналів, яскравість, тембр, …); - сенсорні клавіші Power і Mute не мають автоповтору (потрібні для одиничних дій: увімкнути-вимкнути, відкрити-закрити, …); – сенсори вибору групи команд роблять активним один із трьох можливих наборів (по 6 штук) команд-сенсорів (наприклад: 1-телевізор, 2-підсилювач, 3-світло); - ще є п'єзовипромінювач Buzzer (всередині корпусу), він озвучує натискання клавіш і виконує низку інших дій.
Ось тепер сам алгоритм роботи: - При першому включенні пульта (подачі живлення), він почне процедуру автоматичного налаштування сенсорів. Перед налаштуванням, з невеликими паузами, пролунають два довгі і один короткий сигнал. Відразу після короткого сигналу сенсори автоматично налаштуються. У момент автоматичного налаштування сенсорні майданчики мають бути вільними. – Далі пульт переходить у режим відтворення команд із першої групи команд. Прозвучить довгий піїїк і одразу за ним короткий (перший набір команд). Займеться Led. Якщо тепер натискати сенсори вибору групи команд, то звучатиме довгий піїїк і, відразу за ним, залежно від номера групи, кількість коротких.Перемикачі груп команд у всіх режимах працюють однаково. – При натисканні в режимі відтворення сенсорів команд буде видаватися короткий звуковий сигнал (пік) та видаватися IR-команда. – Якщо пульт не чіпати деякий час, він сам перейде в режим сну. У режим сну можна ввести пульт, натиснувши короткочасно Set. Короткочасне натискання на Set в режимі сну прокидає пульт і просигналить номер активної групи команд (щоб зайвий раз не тикати пальцем ;) ). – Якщо в режимі відтворення тривалий час затиснути Set, то пульт перейде в режим навчання, видавши два короткі сигнали, і Led почне постійно блимати. При натисканні на будь-який сенсор - світлодіод згасне, пролунає тривалий сигнал і пульт чекатиме на IR-посилку від оригінального пульта. Якщо отримана посилка, пролунає довгий сигнал, пульт запам'ятає команду і повернеться в режим навчання. Якщо посилки довго немає - пролунає короткий сигнал і пульт перейде самостійно в режим навчання. Також, очікування IR-посилки можна скасувати короткочасним натисканням Set. У режимі очікування IR-посилання оригінального пульта можна вибирати інші сенсори чи групи. Дії сенсорів-селекторів аналогічні режиму відтворення. – Повернеться назад у режим відтворення можна тривало затиснувши Set (наслідують два короткі сигнали) або, через деякий час бездіяльності, пульт сам перейде в режим відтворення.
7 Вирішення проблем. Налагодження конструкції.
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: &00 Sensitivity
При прошивці пульта, EEPROM очищається і всі комірки (у тому числі нульова) отримують значення 255, що автоматично встановлює номінальну чутливість.
8 Шилд для Arduino
Так як пульт зібраний на мікроконтролері використовується в платах типу Arduino, Freeduino та подібних до них, логічно зробити шилд універсального пульта і для них. На допомогу, основа плати шилду Arduino у Sprint Layout.