Изучив инструкцию, вы можете собрать на базе IR remote Arduino один универсальный ДУ пульт для телевизора, который заменит все пульты в вашем доме.


Для ИК пульта Ардуино вам понадобятся:

  • Arduino (я использовал дешевую копию Uno)
  • Плата LCD Keypad Shield
  • 1 инфракрасный светодиод
  • 1 инфракрасный датчик
  • Компьютер для запуска компилятора Arduino

Коды и программы:

Шаг 1: Введение

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

Процесс связи между эмиттером (пультом) и ресивером (устройством) начинается с нажатия пользователем кнопки на пульте. Ресивер имеет генератор и чип с определенной конфигурацией, что позволяет ему принимать инфракрасные волны частотой 39 кГц. Каждое нажатие кнопки передает чипу определенный код, что позволяет устройству различать команды.

Доходя до инфракрасного светодиода, сигнал преобразуется в ряд импульсов (940 нм), а затем в квадратичную волну, которая отдает команду устройству.

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

Шаг 2: Аппаратное оборудование



Эта инструкция проста и не требует конструирования сложных схем. Работа будет сосредоточена на коде.

Мы будем использовать Ардуино и LCD Keypad Shield для визуализации меню кодов пульта.

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

Шаг 3: Считывание кодов





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

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

Код взят из учебника Adafruit, я немного изменил его для простоты понимания.

После загрузки кода и подключения датчика мы переходим к вкладке «Tools» и нажимаем на «Serial Monitor». После этого вы увидите сообщение «Ready to decode IR!». Теперь нажатие кнопки на пульте, направленном на сенсор, будет считывать код.

Если вы используете предоставленную мной версию, показания появятся в форме кода, и код будет готов для вставки в программу Arduino. Чтобы не потерять этот код, можно создать .txt файл и вставить его туда.

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

Совет: если Arduino показывает сообщение «Serial port ‘COM3’ not found. Did you select the right one from the Tools > Serial Port menu?», значит, ваш Arduino не подключен или порт неисправен.

Как только все необходимые коды были получены, переходим к следующему шагу.

Шаг 4: Настройка кодов: меню и подменю






Перед загрузкой кодов нам нужно визуализировать их. Нужно создать меню с необходимыми функциями.

Создать меню несложно, но процедура довольно запутана. Я прокомментировал каждую часть кода для удобства.

Я бы хотел использовать библиотеку, но вместо этого решил создать единую монолитную программу, чтобы вам не пришлось скачивать что-либо еще. Это облегчит понимание устройства кода. Создание меню — очень полезный навык, необходимый для любого программиста.

Меню:

Как только вы открыли файл с кодом, в первую очередь нужно посмотреть на строки в зеленой рамке. Эти константы ограничивают область меню и подменю. Отсчет начинается с числа 0, т.е. если ввести «2», программа создаст три меню.

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

После ознакомления с фотографиями укажите имя меню в массиве символов меню (см. фото 2). Данный код рассчитан на три меню, но вы можете добавить столько, сколько вам нужно, повторив структуру на четвертом изображении и внеся соответствующие настройки в массив и домены.

Подменю:

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

Коды:

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

Необходимо скопировать и вставить коды, которые были получены при чтении сигналов устройства в соответствующие меню и подменю. Проследите, чтобы индексы сигналов совпадали, иначе пульт не будет работать.

После этого нужно сохранить полученный код.

Шаг 5: Проверка





После завершения манипуляций с кодом, убедитесь, что вы переставили контакт инфракрасного светодиода из цифрового разъема 3 в ground.

Левая и правая кнопки служат для навигации по меню, кнопки вверх и вниз нужны для управления подменю, select отправляет сигнал устройству.

Для увеличения мощности и диапазона пульта можно использовать несколько светодиодов и транзистор, как показано на изображении. Питание стокового вывода ограничено 40 мА, чего будет достаточно для одного или двух светодиодов, но не хватит для пяти.

Ёмкость резистора для основы (выход посередине транзистора) должна составлять около 1-2 к.

Резистор может не понадобиться, так как здесь используется высокочастотное переключение, и светодиоды сами будут управлять мощностью. Я пробовал использовать стандартные ИК-светодиоды с питанием в 5 В от 3 разъема, это работало без проблем.

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