IR remote control, а без микроконтроллеров можно? Да не вопрос

Сколько логических микросхем понадобится для того, чтобы получить полноценный ИК пульт дистанционного управления? Наверняка вам даже в голову не приходил этот вопрос! А в моем воспаленном сознании однажды такой вопрос возник.
Если вам приходилось сталкиваться с моими предыдущими статьями на Хабре, то вы уже имеете представление о моем специфическом увлечении схемотехникой. Но далеко не все мои идеи находят воплощение в железе, многое так и остается в виде черновиков на виртуальных моделях. Так случилось и с этой схемой, но она кажется мне достаточно интересной, чтобы поделиться ей с вами.
Если вы тоже считаете, что немного схемотехники после новогодних праздников вам не повредит, тогда добро пожаловать под кат.
Одному моему товарищу из Ярославля необходимо было разработать задание для конкурса по электронике. Формат конкурса удивительным образом совпал с форматом моего увлечения. Поэтому товарищ и обратился ко мне.
Конкурс проводился для студентов колледжа, и мне хотелось предложить что-то «умное», а не очередную «свистелку-мигалку» на жесткой логике. И тут в моем архиве попалась схема ИК пульта дистанционного управления в формате RC-5. Почему бы и нет? Тут и модуляция есть, и кодирование и схемотехника занятная. Решено! Я предварительно согласовал идею с товарищем и приступил к проработке.
❯ Формат RC-5
Сам по себе протокол RC-5 стар как этот мир и является хорошим примером функционального минимализма в схемотехнике. Разрабатывался он в те времена, когда инженерам приходилось экономить вычислительные ресурсы в своих схемах. Это сегодня можно взять какую-нибудь Arduino и сделать на ней любой протокол управления без особых хлопот. Наверное, поэтому в современных статья по протоколу RC-5 опускаются некоторые важные моменты.
Протокол RC-5 использует бифазное модулирование, которое в зарубежной литературе именуется кодом «Манчестер». Его основным преимуществом является самосинхронизация. То есть двоичный код можно передавать по одному каналу связи без дополнительного канала синхронизации.

Все биты передаются за одинаковое время 1.778мс. Для передачи логического ноля первую половину периода передается высокий уровень, а вторую — низкий. Для передачи единицы — наоборот.
Такой код получается очень просто путем кодирования данных тактовым сигналом с заполнением 50% с помощью функции «исключающего или». Тактовый сигнал должен иметь высокий уровень первую половину периода, и низкий уровень — во второй. Если вспомнить, как работает логическая функция XOR, то все сразу станет понятно.

К слову, время передачи одного бита данных 1.778мс выбрано не случайно. Для исключения влияния фонового ИК излучения, например от ламп дневного освещения, сигнал пульта модулируется на частоте 36кГц. Таким образом за один период передачи данных помещается ровно 64 заполняющих импульса. Опорная частота обычно имеет скважность 3 или 4, так сигнал потом проще фильтровать.
Сама посылка в формате RC-5 включает в себя 14 бит. Чуть позже мы увидим, что это тоже очень удобно с точки зрения схемотехники. Общее время передачи одной посылки составляет 24,9мс.

В начале посылки всегда передается два стартовых бита, имеющих значение логической «1». При Манчестерском кодировании нам необходимо знать значение первого бита, иначе все последующие могут быть интерпретированы неверно. Также это позволяет синхронизироваться приемникам.
Третий бит триггер (бит управления) меняет своё состояние при каждом следующем нажатии кнопки. Если кнопка удерживается, то посылка должна повторяться каждые 114 мс, а бит — триггер при этом не меняется. Таким образом определяется различие между нажатием одной кнопки несколько раз и ее удерживанием.
Пять битов адреса системы S4 — S0 управления позволяют выбрать одно из 32-х стандартных устройств (телевизор, видеопроигрыватель, CD-плеер и так далее), для которого адресуется команда C5 — C0. Команды были тоже стандартизированы разработчиком протокола — компанией Филипс.
Когда-то это позволяло различать пульты управления для разных устройств. Но потом Китайцы, как всегда, все поломали, в их сверх массовых устройствах частенько коды использовались так, как это было удобно китайским инженерам. Вот сейчас и случается так, что на пульте от люстры появляется секретная кнопка, которая добавляет громкости телевизору и одновременно включает кухонную вытяжку на первой скорости.
❯ Структурная схема пульта
У меня получилась следующая структурная схема пульта управления. Вспоминая, что это задание для конкурса, количество элементов схемы и площадь печатной платы имеют ограничение, функциональность пульта пришлось ограничить десятью кнопками. Функция повторной отправки команды при удержании кнопки тоже не реализована. Но все это достаточно просто можно добавить при необходимости.

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

Обработка командных кнопок реализована с помощью приоритетного шифратора CD4532. Для добавления еще двух кнопок я использовал три вентиля ИЛИ 74НС32. Можно было бы использовать два шифратора включенных последовательно, но один вентиль ИЛИ понадобился в другом блоке схемы, так получилось сократить количество корпусов.
Кнопки обязательно следует подтянуть на землю резисторами, чтобы входы шифратора не болтались в воздухе. В зависимости от качества кнопок, параллельно каждой можно поставить по конденсатору на 0,1мкФ.
Вывод 14 GS микросхемы U6 позволяет определить момент нажатия кнопки, дифференциальная цепочка С7-R9 выступает в роли детектора фронта и формирует короткий импульс запуска схемы write. На выходах d0-d3 формируется двоичный код нажатой кнопки.

Формирователь сообщения

Код нажатой кнопки передается на схему формирования сообщения. Эта схема построена на основе двух сдвиговых регистров 74НС165. Я думаю, что тут все должно быть понятно, RC-5 это же последовательный протокол, вот и регистры использованы параллельно-последовательные.
Один вентиль XOR используется в качестве инвертора, это тоже сделано с целью сокращения количества корпусов логических микросхем, чтобы еще дополнительный корпус не ставить с вентилями НЕ.
Через инвертор сигнал write защелкивает входы сдвигового регистра, чтобы последовательно были переданы данные, установившиеся на входе регистра на момент нажатия кнопки.
Входы D0-D4 сдвигового регистра U1 посажены на землю и формируют нулевой адрес устройства, при необходимости эти линии можно переключить между землей и плюсом питания так, как вам будет удобно. По классификации от Филипс 0h это адрес для телевизоров, кнопками можно будет клацать TV-программы.

Бит-переключатель

Бит управления trig формируется триггером U3:B, включенным по схеме ждущего мультивибратора с увеличенной крутизной фронта. Короткий импульс write со схемы обработки клавиатуры переключает выход триггера на противоположенное значение. Благодаря этому в посылке можно различать отдельные нажатия на кнопки пульта.

Отправка сообщений и тактирование

Также сигнал write переключает выходы второго вентиля триггера U3:A, что активирует работу схемы формирования сообщения на основе счетчика 74HC393.
Задача этой схемы заключается в том, чтобы подать на сдвиговые регистры 14 тактовых импульсов и выдать все 14 бит данных.
Триггер U3:A удерживает счетчик U2:A в состоянии сброса, пока не придёт сигнал write. Благодаря схеме монтажного ИЛИ на диодах D3-D6, счетчик будет вести счет до тех пор, пока хотя бы на одном из его выходов Q0-Q3 будет присутствовать низкий уровень.
По фронту 15-ого тактового импульса все выходы счетчика установятся в высокий уровень, через вентиль ИЛИ U4:A на вход триггера поступит импульс переключения, и работа схемы завершится. То есть пятнадцатый импульс от тактового генератора на сдвиговый регистр не поступит, схема пропустит ровно 14 тактовых импульсов с выхода генератора U8 на NE555, во время которых выходной сигнал схемы формирования сообщения transfer будет в активном уровне.

Бифазный модулятор

Думаю, что объяснять работу модулятора в манчестерский код подробно не нужно. Это должно быть понятно из предыдущего текста.
Заполнение сформированного сообщения частотой 36кГц выполняет генератор U9 на таймере NE555. Современные ИК-приемники часто строятся на модулях типа TSOP, которые на выходе сразу дают низкочастотный сигнал, и поэтому они не так критичны к количеству импульсов заполнения.
Светодиод D7 должен быть инфракрасным с длинной волны 940нм, это самый распространенный диапазон для ИК управления. Если длинна волны светодиода будет отличаться, дальность приема может сильно сократиться.
Немного о питании схемы
Питание схемы можно осуществлять от трех, а лучше четырех последовательно включенных батареек типа ААА. Либо использовать две батарейки с повышающим стабилизатором на 5В. Наличие стабилизатора предпочтительнее, это позволит выжать из батареек максимальную емкость.
❯ Итоги проектирования
Предварительная компоновка схемы на печатную плату показала ее жизнеспособность. Для реализации схемы ИК-пульта в формате RC-5 мне понадобилось всего девять корпусов типа SOIC, два из которых имеют по 8 выводов. Все эти компоненты вполне помещаются в формате классического пульта управления для телевизора.

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

- 1. Простая схема динамических указателей поворотов, и никаких микроконтроллеров
- 2. Светодиодная шкала для переменного резистора на «рассыпухе»
- 3. Светофор на логике со схемотехникой в стиле Beatles. Как электроника вновь стала моим хобби
- 4. Профессиональные методы прототипирования печатных плат. Распечатать на принтере или фрезеровать, ни слова про утюг
- 5. Бирдекель или арифметический детектив на операционных усилителях
- 6. Электронная игра «лабиринт» на сервоприводах. Никаких arduino, только жесткая логика
- 7. Велосипедный фонарь с динамическими поворотами. Зачем покупать на AliExpress, если можно сделать самому?
- 8. LPKF ProtoMat S63. Мыши плакали, кололись, но… продолжали фрезеровать печатные платы
- 9. Звуковой усилитель на драйвере шагового двигателя L298 и таймере 555. Да, 555-й может и спеть
- 10. Графический спектроанализатор с динамической индикацией на жесткой логике
- 11. Цифровой термометр на жесткой логике
- timeweb_статьи
- жесткая логика
- стандартная логика
- схемотехника для начинающих
Универсальный пульт на Arduino
Есть много статей в интернете о том, как сделать свой пульт к телевизору на Arduino, но мне понадобился универсальный пульт для управления телевизором и медиа-плеером. Главное преимущество моего универсального пульта в том, что кнопки в приложении для андроид телефона двух-целевые, а впрочем, смотрите на видео.
Пульт очень удобен в том, что на экране практически одни и те же кнопки используются для управления телевизором и плеером. Одно отличие в том, что кнопка «AV» в режиме управления телевизором меняется на кнопку «◻» (stop) при переходе в режим управления плеером. На картинках показано два режима, слева режим управления телевизором, справа — режим управления плеером.


Ну а сейчас я расскажу немного о создании такого пульта. Для устройства использовал пульт от телевизора ERGO и пульт от медиаплеера DUNE HD TV101W.

Для получения данных от пультов я использовал инфракрасный датчик TSOP1138 (аналог TSOP4838) на рабочей частоте 38 кГц и подключил его к плате Arduino по схеме:

Для начала нам потребуется прочитать коды кнопок пультов. Я воспользовался библиотекой IRremote и тестовым скетчем IRrecvDump.

Этот скетч на потребуется для определения кодировки передачи данных и считывания кода кнопок пультов.
В скетче в строке int RECV_PIN = 11; указываем наш пин под номером 4
После заливки скетча открываем «монитор порта» и, нажимая на кнопки пульта, смотрим на полученные данные.

На картинке пример сканирования кнопки включения от пульта телевизора и пульта плеера. Теперь формируем таблицу для кодов кнопок.

У меня получилось как на фото выше. Под надписью TV коды кнопок пульта от телевизора; под надписью Player — коды от пульта медиаплеера.
Теперь отключаем наш приемник инфракрасных сигналов от платы Arduino и подключаем к ней Bluetooth модуль HC-05 и инфракрасный светодиод по схеме на фото.

После этого переходим непосредственно к скетчу.
#include IRsend irsend; int y = 1; void setup() < Serial.begin(9600); >void loop() < if (Serial.available() >0) < int x = Serial.read(); if (x == 49) < y = 1; >if (x == 50) < y = 2; >if (y == 1) < // коды кнопок для пульта от телевизора if (x == 97) < irsend.sendNEC(0x807F08F7, 32); delay(40); >if (x == 98) < irsend.sendNEC(0x807FA857, 32); delay(40); >if (x == 99) < irsend.sendNEC(0x807F708F, 32); delay(40); >if (x == 100) < irsend.sendNEC(0x807FF00F, 32); delay(40); >if (x == 101) < irsend.sendNEC(0x807F30CF, 32); delay(40); >if (x == 102) < irsend.sendNEC(0x807FB04F, 32); delay(40); >if (x == 103) < irsend.sendNEC(0x807F9867, 32); delay(40); >if (x == 104) < irsend.sendNEC(0x807F58A7, 32); delay(40); >if (x == 105) < irsend.sendNEC(0x807FD827, 32); delay(40); >if (x == 106) < irsend.sendNEC(0x807F38C7, 32); delay(40); >if (x == 107) < irsend.sendNEC(0x807F48B7, 32); delay(40); >if (x == 108) < irsend.sendNEC(0x807FB847, 32); delay(40); >if (x == 109) < irsend.sendNEC(0x807F6897, 32); delay(40); >> if (y == 2) < //коды кнопок пульта от медиаплеера if (x == 97) < irsend.sendNEC(0xFDC23D, 32); delay(40); >if (x == 98) < irsend.sendNEC(0xFDE01F, 32); delay(40); >if (x == 99) < irsend.sendNEC(0xFD18E7, 32); delay(40); >if (x == 100) < irsend.sendNEC(0xFDE817, 32); delay(40); >if (x == 101) < irsend.sendNEC(0xFDA857, 32); delay(40); >if (x == 102) < irsend.sendNEC(0xFD6897, 32); delay(40); >if (x == 103) < irsend.sendNEC(0xFDA857, 32); delay(40); >if (x == 104) < irsend.sendNEC(0xFD6897, 32); delay(40); >if (x == 105) < irsend.sendNEC(0xFDE817, 32); delay(40); >if (x == 106) < irsend.sendNEC(0xFD18E7, 32); delay(40); >if (x == 107) < irsend.sendNEC(0xFD9867, 32); delay(40); >if (x == 108) < irsend.sendNEC(0xFD28D7, 32); delay(40); >if (x == 109) < irsend.sendNEC(0xFD20DF, 32); delay(40); >> > >
В скетче вам потребуется отредактировать коды кнопок, а именно в строках:
if (x == 97) < irsend.sendNEC(0x807F08F7, 32); delay(40);
Значение 807F08F7 поменять на:
if (y == 1) < //коды кнопок для пульта от телевизора if (x == 97)
Где 12345678 — это код вашей кнопки.
После редактирования скетча по ваши коды кнопок заливаем скетч в плату Arduino и переходим к установке приложения на телефон.
Включаем блютуз в телефоне, ищем наше устройство, создаем пару, потом запускаем приложение Pult на телефоне.
При запуске у нас появится экран с красным значком bluetooth в правом нижнем углу, что сигнализирует о том, что мы не подключены к нашему устройству.

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

Теперь мы снова вернулись на главный экран и уже можем управлять телевизором:

Для перехода в режим управления нам потребуется нажать кнопку с надписью «Player». Как я говорил раньше, у нас кнопка с надписью «AV» поменяется на кнопку "◻":

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



Получилось, вроде, неплохо. Жду комментарии к статье.
- универсальный пульт
- ардуино
- arduino
Универсальный ИК пульт из смартфона
Смартфон уже давно мигрировал из разряда обычных телефонов, которые используют чисто для звонков. Сотни различных приложений позволяют превратить ваш смартфон в различные цифровые приборы, тем самым существенно облегчая нашу жизнь.
Вот и сегодня, я вам хочу показать, как сделать из практически любого смартфона универсальный ИК-пуль дистанционного управления, с помощью которого можно будет управлять телевизорами, музыкальными центрами и другой техникой.

Нам понадобиться абсолютно немного: два ИК светодиода, которые можно выдрать из старых пультов или купить – ТУТ. Трех с половиной миллиметровый штекер «Джек» от старых наушников или купить – ТУТ.

Смартфон с системой «Андроид» и интернет для скачивания приложения с «Google Play».
Схема приставки ИК пульта из смартфона
Все что вам понадобиться, так это припаять к разъему два светодиода встречно-параллельно. И ваша приставка будет готова. Припаивать нужно к выходам каналов левого и правого, общий вывод не будет задействован.

Сборка приставки для ИК пульта
Первым делом я склеил супер клеем светодиоды межу собой, скрутил вывода и запаял.

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

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




Вы же можете залить все горячим клеем или одеть и обдуть термоусадочную трубку.
На этом сборка завершена.
Установка приложения

После установки запускаем приложение, выбираем модель вашей техники в настройках, которой хотите управлять. Нажимаем на появившиеся кнопки, проверяя работу приставки.
Вещица очень удобная, учитывая большое количество пультов в одном телефоне.
PS: Если приложение вдруг не заработает или не понравиться, то можете поискать другое. Для этого введите в поисковой строке Google Play – «Audio IR».
Теперь можно взять эту крохотную приставку с собой куда угодно и управлять различной техникой в местах общего пользования.
Замена ИК диода в пульте увеличивает дальность управления
Порой, чтобы сделать какие-то переключения пультом, необходимо вставать и почти вплотную подходить к управляемому устройству. А иногда, приходится вращать пульт и судорожно, нажимая кнопки, пытаться, как стрелок попасть в приемник инфракрасного излучения прибора. В таких случаях хочется запустить пульт куда подальше, и вручную переключить нужный режим.
Почему так происходит?
Дело в том, что раньше в бытовой технике применяли более качественные электронные компоненты. Сейчас же пытаются на всём сэкономить, применяя детали, по более низкой цене. Именно применение дешёвого инфракрасного светодиода с малой мощностью излучения и некачественной линзой, приводят к вышесказанным проблемам. Что можно предпринять в случаях, когда пульт совсем не функционирует или работает с близкого расстояния? Ниже в статье, будет описан способ ремонта и увеличения дальности действия пульта дистанционного управления. Он не займет много времени, и тем более денежных средств.
Диагностика пульта ДУ
Проверить, работает пульт или нет, можно простым способом. Для этого, во-первых, необходимо вставить в него новые батарейки. Во-вторых, включить камеру телефона и направив на нее пульт, нажать кнопку «ВКЛ». На экране телефона должно быть видно, как засветиться инфракрасный диод.

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

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

Модернизация - ремонт
Сама модернизация заключается в том, чтобы заменить инфракрасный светодиод на другой, более мощный. Взять такой светодиод можно из пульта дистанционного управления от старого видеомагнитофона, неисправного DVD-плеера, кондиционера или музыкального центра.

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

Если такового не будет видно, значит пульт, скорее всего неисправный, и покупать такой нет смысла. На фото пульт, то ли от кондиционера, то ли от калорифера – неизвестно, но он точно рабочий, и с мощным инфракрасным диодом. Самого кондиционера уже давным-давно нет, он сломался и ремонту не подлежал. Он и будет донором.


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


Когда корпус будет разобран, внутри его обнаруживаем плату управления, на которой находятся электронные компоненты, площадка кнопок и сам инфракрасный светодиод.


Далее, отставляем старый пульт в сторону и разбираем тот, который хотим модернизировать. В нашем случае, это пульт от приставки Т2. Принцип разборки такой же, как и в первом случае. Выкручиваем винт крепления – если он есть, и ножом или отверткой, разделяем половинки корпуса.


На фото, плата с инфракрасным диодом.


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

Перед тем, как впаивать диод, нужно определить полярность – где анод, а где катод, или плюсовой и минусовой выводы.

Бывает, что на плате указана полярность, но чаще всего маркировка отсутствует, поэтому сразу следует определить, где положительный вывод и пометить его на плате.

Определить вывод можно простым способом. Нужно внимательно посмотреть на диод с помощью лупы, и тот вывод в корпусе, который короче – анод (плюс), а тот, который больше и шире – катод или минус.

Определив на плате пульта Т2, где плюсовой вывод – делаем пометку, нацарапав её чем-нибудь острым, например шилом. Теперь можно выпаивать диод из платы.

Так, как у выпаянного донорского диода ножки короче, чем у того, который следует заменить, то выпаивать диод с платы Т2 не нужно. Его необходимо откусить кусачками, оставив небольшие выводы. К ним и подпаяем диод-донор. Таким образом, длины должно быть достаточно, чтобы линза диода выходила за закрытый корпус. Залуживаем выводы на диоде, и концы на плате, и аккуратно – соблюдая полярность – припаиваем их друг к другу.

Проверяем прочность пайки, подергиванием за диод.

Вставляем плату в нижнюю часть корпуса и защелкиваем верхней.

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

Итог проведенной работы

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