Представляем TV Devil, Легкий Пульт Дистанционного Управления Arduino Prank

Спрячь это в своей гостиной и смейся, поскольку коробка TiVo, по-видимому, одержима демоном, который требует смотреть нечистые каналы покупок. Независимо от того, является ли ваша конечная цель выключить каждый соседний телевизор или построить универсальный пульт дистанционного управления, управляемый Siri, этот проект послужит отличной отправной точкой для изучения основ ИК-управления и приемников.

В этой «шутке» мы создадим устройство, которое записывает, а затем воспроизводит серию ИК-команд дистанционного управления. Он будет работать с любым устройством, которое использует ИК-пульт дистанционного управления или даже одновременно несколько устройств — запись до 10 нажатий клавиш.

Компоненты

Вот список вещей, которые вам понадобятся для этого проекта:

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

компоненты

электропроводка

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

Схема-диаграмма, ИК-шалость

Получение сигналов

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

irrecv

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

irdump

Повторение сигнала

Мы не будем писать нашу шутку сегодня с нуля, так что давай проверим IRrecord пример. Сложность кода здесь значительно возрастает, но в основном это все для того, чтобы справляться с различными типами ИК-кодов — в основном, вот что происходит внутри цикла:

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

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

Шутка!

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

  • Определите 3 новых массива размером 10 для хранения набора сигналов каждый раз, когда один обнаружен, и целое число для хранения размера этих массивов.
  • Сохраните индекс того, где мы сейчас находимся в этом массиве. Увеличивайте индекс каждый раз, когда сигнал обнаружен, но не увеличивайте, если сигнал является повторяющимся кодом.
  • Булево значение, которое больше не записывается, когда мы достигли максимума.
  • Логическое значение, указывающее, находимся ли мы в режиме воспроизведения или нет, вместо того, чтобы удерживать кнопку нажатой; также изменил логику кнопки, чтобы переключить это.

Обратите внимание, что светодиодный индикатор на Arduino (контакт 13) будет активирован после заполнения памяти. Прямо сейчас вы должны записать 10 нажатий кнопок — не меньше — и режим воспроизведения будет ждать 1 секунду между повторными нажатиями кнопок. Вот оно в действии:

Вы можете поиграть с ИК-шутками или посчитать это хорошим началом более эпического проекта по автоматизации дома.

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

Изображение предоставлено: DaGoaty

Ссылка на основную публикацию
Adblock
detector