Самодельный ИК- приемник сигналов дистанционного управления (ATtiny. В этой статье описано как самостоятельно изготовить ИК- приемник для управления различными устройствами по ИК- каналу.
В статье изложен общий принцип построения приемника ИК- сигналов, а что потом делать с принятыми командами — решеть вам. Можно организовать срабатывание от определенной команды определенного выхода микроконтроллера, а можно передавать декодированные команды по какому либо интерфейсу в другие устройства или на компьютер. В данном случае, для примера, показан вариант, в котором, в зависимости от четырех определенных команд, полученных контроллером, загораются четыре различных светодиода (вместо светодиодов можно подключить, например реле, только нужно пересчитать выходную часть, в зависимости от потребляемого обмотками реле тока).
В обозначении приёмников TSOP последние две цифры означают частоту (в кГц) на .
Сигнал с пульта принимается ик приёмником демодулятором. Для этого переходим на вкладку «Пульт ДУ» и на пульте слева .
Итак, вам понадобятся: контроллер ATtiny. То, в каком коде будут приниматься сигналы, зависит только от того, какую программу вы загрузите в контроллер.
В конце этой статьи вы найдёте ссылки на программы (с алгоритмами, описаниями и прошивками), реализующие приём данных по различным протоколам. Описания самих протоколов можно найтивот здесь. Схема приемника: Для питания схемы необходимо стабильное питание +5. В. На них реализованы транзисторные ключи.
Токи базы транзисторов задаются резисторами R2, R3, R4, R5. Токи через светодиоды (яркость) можно регулировать резисторами R6, R7, R8, R9 (при указанных на схеме номиналах — токи светодиодов около 2 м. А). С1 — электролит 1. Ф х 1. 0В, С2 — керамика 0,1 мк. Ф. В итоге получается вот такой приемник: Скачать печатную плату (Dip.
Trace)Эта плата разведена под использование SMD компонентов. Если вы будете использовать другие компоненты, то плату придется переделывать. Как самому собрать программатор для работы с контроллерами AVR — смотрите здесь. Если на сборку программатора нет времени, то вот здесь его можно купить. Программа для приёма сигналов по протоколу RC- 5. Программа для приёма сигналов по протоколу RC- 5, не зависящая от точности генератора.
ИК дистанционное управление . День выдался тяжёлый, поэтому ей не хотелось ничего делать.

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


Нижние кнопки без опознавательных знаков и, скорее всего, не использовались. И тут у меня возникла интересная мысль?
Там даже кнопки лишние есть. Первый и последний пункты простые, как топор. А вот со вторым немного интереснее. Я решил не ограничиваться каким- то конкретным пультом (Почему?
Лишь бы ИК- приёмник не спасовал, и уверенно ловил сигнал. Ловить сигнал будем с помощью фотоприёмника TSOP. Причем не каждый приёмник подойдёт – несущая частота должна совпадать с частотой пульта. Несущая частота приёмника указана в его маркировке: TSOP1.
А несущую частоту пульта можно найти в документации или в инете. В принципе, сигнал будет приниматься, даже если частоты не совпадают, но чувствительность будет фиговой – придётся тыкать пультом прямо в приёмник. Каждая компания, выпускающая бытовую технику, вынуждена соблюдать стандарты при изготовлении «железа». И частоты модуляции у пультов, тоже стандартные. Зато разработчики отрываются на программной части – разнообразие протоколов обмена между пультом и устройством просто поражает. Поэтому, пришлось придумать универсальный алгоритм, которому плевать на протокол обмена.
Работает он так: В памяти устройства хранятся контрольные точки. Для каждой такой точки нужно записать время и состояние выхода с ИК- приёмника – 0 или 1. При получении сигнала с пульта, МК будет последовательно проверять каждую точку. Если все точки совпали – то это была та самая кнопка, на которую устройство запрограммировали. А если выход с приёмника хотя- бы в одной точке не совпал с шаблоном, то устройство никак не отреагирует. Впрочем, баги никто не отменял! Возможно, что, сигнал будет отличаться от шаблона, нов контрольных точках значения будут одинаковые.
Получится ложное срабатывание. Казалось- бы – редкостное западло, и бороться с ним пипец сложно! Но на самом деле не всё так плохо (а местами даже хорошо).
Во- первых, у нас ведь цифровой сигнал, а значит, импульсы идут с постоянными задержками (таймингами) и просто- так не возникают. Поэтому, если точки стоят достаточно плотно, то можно не бояться, что какой- нибудь импульс будет пропущен. Во- вторых мелкий шум (обычно выглядит, как редкие короткие импульсы) в большинстве случаев идёт лесом – ибо если он не попадёт прямо на контрольную точку, то нифига не повлияет на систему. Значит у нас есть естественная защита от шума. Второй тип ошибок (aka «Пропуск команды») бывает из- за того, что точка расположена слишком близко к фронту импульса (к тому месту, где сигнал на выходе приёмника меняет свой уровень). Представь себе, что через несколько микросекунд после контрольной точки сигнал должен меняться с HIGH на LOW. А теперь представь, что пульт выдал команду чуть быстрее, чем обычно (довольно часто случается). Игра Покемоны На Компьютер Онлайн.
Фронт импульса сдвинулся во времени, и теперь он происходит ДО контрольной точки! Выход с приёмника не совпадёт с шаблоном и система сбросится. Чтобы этого не происходило, нужно размещать контрольные точки подальше от фронтов.«Всё круто» — скажешь ты – «Но откуда мне взять контрольные точки?».
Вот и я над этим долго тупил. В результате решил доверить расстановку точек тебе. На устройстве есть джампер J1.
Если при включении он замкнут – устройство будет тупо передавать через UART всё, что выдаёт ИК- приёмник. На другой стороне провода эти данные принимает моя программа, которая выдаёт на экран компа импульсы с TSOP’а. Тебе остаётся только мышкой раскидать по этому графику контрольные точки, и прошить их в EEPROM. Если возможности использовать UART нету, то на помощь приходит джампер J2.
Когда он замкнут – устройство не выдаёт данные по UART, а складывает их в EEPROM. Схема. Простая до безобразия. В качестве контроллера я взял ATTiny. Частота 4 мегагерца, от кварца, или внутренней RC цепочки.
На отдельный разъём выведены линии RX и TX для связи, и питание. Туда – же выведен RESET для того чтобы можно было перепрошивать МК, не вынимая из устройства.
Выход фотоприёмника подключается к INT0, он подтянут к питанию через резистор в 3. Если будут сильные помехи, то можно поставить туда резистор поменьше, например, 1. На пинах D4 и D5 висят джамперы.
Jumper. 1 на D5 и Jumper. D4. К пину D6 подцеплен силовой модуль. Причём симистор я взял самый мелкий из тех, что у меня были – BT1. Ток у него 1. А – не круто, но зато корпус не слишком большой — ТО9. Для мелкой нагрузки самое то.
Опторазвязку я сделал на MOC3. Порт B почти полностью выведен на разъём – туда можно прицепить индикатор или ещё что- нибудь. Этим- же разъёмом я пользуюсь при прошивке девайса. То есть на вход можно подавать переменное напряжение, например, с трансформатора. Главное, чтобы оно не превышало 2. Вольт, а то умрёт либо стабилизатор, либо кондер.
Плата получилась вот такая: Да, она немного отличается от той платы, которая лежит в архиве. Но это не значит, что я сделал себе убер- продвинутую плату, а вам подсунул демо версию : ). Напротив, моя плата имеет пару недостатков, которых нет в конечной версии: у меня не выведена на штырёк ножка RESET, и светодиод висит на PB7. А это не очень способствует внутрисхемному программированию. Прошивка. Устройство может работать в двух режимах.
В первом – когда J2 замкнут – оно просто передаёт импульсы с фотоприёмника в UART. С него и начнём: UART работает на скорости 9. МГц в регистр UBRR записываем 2. Как только она опустилась (изначально- то она болтается на pull- up резисторе) мы запускаем таймер (TIMER/COUNTER1, тот, что на 1. INT0 на любое изменение входа – any logical change (ICS0. Таймер тикает. Теперь записываем в память значение таймера и сбрасываем таймер. Ещё нужно инкрементировать указатель записи, чтобы в следующем прерывании записать в другую ячейку памяти.
Ещё импульс. Или, пока сигнал не кончится. В любом случае, мы стопорим таймер и отключаем прерывания. Потом, не спеша выкидываем всё, что насобирали, в UART.
Или, если J2 замкнут – в EEPROM. В конце можно затупить в бесконечный цикл и ждать ресета – миссия выполнена. А на выходе получится последовательность чисел. Каждое из них – время между изменениями состояния выхода TSOP’a. Зная, с чего началась эта последовательность (А мы знаем! Это перепад с HIGH на LOW), мы можем восстановить всю картину: Второй режим. Тут мы ловим команды с пульта и управляем нагрузкой.
Прерывания не используются совсем, всё крутится в главном цикле программы. В EEPROM лежат контрольные точки. Каждая из них занимает 1 байт: 7 бит на время от последней точки и 1 бит на состояние выход TSOP’a в этой точке. После инициализации сидим и ждём, пока TSOP дёрнется. Как только это случилось – читаем из EEPROM первую точку, и в простом цикле тупим столько, сколько там написано. При этом время считаем пачками по 3. Если выход не совпал с тем, что мы ожидали – это не наша команда.
Можно спокойно дожидаться конца сигнала и начинать всё сначала. Если выход соответствует нашим ожиданиям – загружаем следующюю точку и проверяем её.
Так до тех пор, пока не наткнёмся на точку, время которой = 0. Это значит, что точек больше нет.