Рекламное объявление
Спрячь это в своей гостиной и смейся, поскольку коробка TiVo, похоже, одержима демоном, который требует смотреть нечистые каналы покупок. Независимо от того, является ли ваша конечная цель выключить каждый телевизор по соседству или построить универсальный Этот проект, управляемый Siri, является отличной отправной точкой для изучения основ ИК-управления. и приемники.
В этой «шалости» мы создадим устройство, которое записывает, а затем воспроизводит серию ИК-команд дистанционного управления. Он будет работать с любым устройством, которое использует ИК-пульт дистанционного управления или даже одновременно несколько устройств - запись до 10 нажатий клавиш.
Составные части
Вот список вещей, которые вам понадобятся для этого проекта:
- Ардуино и патч проводов
- ИК-приемник, такой как TSOP382 - но вы должны найти совместимый в старой электронике. Я вытащил свой из запасного контроллера освещения RGB. Как правило, они имеют 3 ножки и черные, с одной стороны в виде светодиода, который был разрезан пополам и закреплен. Я уверен, что есть техническое слово для этого.
- Светодиоды ИК-передатчика, такие как TIL38 - опять же, они довольно распространены, но я купил новый мощный от Maplin; они выглядят одинаково с любым другим светодиодом, поэтому не допускайте их попадания в ваш комплект электроники!
- Подходящий резистор для вашего ИК-светодиода - используйте это Светодиодный калькулятор учитывая напряжение питания (5 В от Arduino), а также прямое напряжение и ток из таблицы данных светодиодов (обычно около 1,2 В при 20 мА). Это получилось как 220 Ом в моем случае.
- Кнопка и резисторы 10 кОм и резисторы 100 Ом.
- Скачать ИК дистанционная библиотека Кена Ширриффа из Github и место в вашем Arduino / Библиотеки папки. Есть также пример кода, который мы будем использовать, который затем будет доступен из Arduino. Открыть -> Библиотеки меню.

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

Получение сигналов
Идите вперед и откройте библиотеки / IRremote / IRrecvDemo пример кода. Убедитесь, что RECV_Pin настроен правильно, скомпилируйте и загрузите, затем откройте последовательную консоль на скорости 9600 бод. Возьмите любой пульт, который вам нужно, наведите его на приемник и начните нажимать кнопки. Разные кнопки будут выдавать разные коды; некоторые укажут долгое нажатие с начальным кодом FFFFFFв то время как разные пульты могут просто повторить код снова.

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

Повторение сигнала
Мы не будем писать нашу шутку сегодня с нуля, так что давай проверим IRrecord пример. Сложность кода здесь значительно возрастает, но в основном это все для того, чтобы справиться с различными типами ИК-кодов - в основном, вот что происходит внутри цикла:
- Проверьте, нажата ли кнопка, воспроизведите текущий сохраненный сигнал, если он есть, и повторяйте каждые 50 мс до нажатия.
- Если не нажата и обнаружен сигнал, запишите это.
Самым большим ограничением этого примера является то, что он работает только с одним кодом за раз, поэтому, если вы нажмете другую кнопку на пульте, он перезапишет последний. Кнопка просто воспроизводит самый последний полученный сигнал. Скомпилируйте и запустите код, чтобы вы могли использовать этот базовый повторитель сигнала. Для воспроизведения отдельного сигнала он работает нормально, но это мало практического применения в шутку или иначе.
Шутка!
Давайте немного изменим его, чтобы записать 10 или более вредных сигналов. Вы можете найти полный модифицированный код здесь, но вот краткий обзор изменений, которые я сделал на случай, если вы захотите попробовать программировать это для себя:
- Определите 3 новых массива размером 10 для хранения набора сигналов при каждом его обнаружении и целое число для хранения размера этих массивов.
- Сохраните индекс того, где мы сейчас находимся в этом массиве. Увеличивайте индекс каждый раз, когда сигнал обнаружен, но не увеличивайте, если сигнал является повторяющимся кодом.
- Логическое значение, которое больше не записывается, когда мы достигли максимума.
- Логическое значение, указывающее, находимся ли мы в режиме воспроизведения или нет, вместо того, чтобы удерживать кнопку нажатой; также изменил логику кнопки, чтобы переключить это.
Обратите внимание, что светодиодный индикатор на Arduino (контакт 13) будет активирован после заполнения памяти. Прямо сейчас вы должны записать 10 нажатий кнопок - не меньше - и режим воспроизведения будет ждать 1 секунду между повторными нажатиями кнопок. Вот оно в действии:
Вы можете либо поиграть с ИК-шутками, либо считать это хорошим началом более эпического проект домашней автоматизации Руководство по домашней автоматизации с Raspberry Pi и ArduinoРынок домашней автоматизации наводнен дорогими потребительскими системами, несовместимыми друг с другом и дорогостоящими в установке. Если у вас есть Raspberry Pi и Arduino, вы можете добиться того же в ... Подробнее ; и не забудьте проверить все остальные Arduino проекты. Поделитесь своими творениями (или проблемами) в комментариях и, пожалуйста, покажите свою оценку этой статье, поделившись ею в своих любимых социальных сетях!
Кредит изображения: DaGoaty
Джеймс имеет степень бакалавра в области искусственного интеллекта и сертифицирован CompTIA A + и Network +. Он является ведущим разработчиком MakeUseOf и проводит свое свободное время за игрой в VR-пейнтбол и настольные игры. Он строит компьютеры с детства.