Найти в Дзене
Электроника, ESP32, Arduino

Как сделать ИК пульт управления своими руками

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

Для сборки макета использовались тройка модули от компании Амперка произведенные в России. С ними удобно работать с макетной платой.

Тройка модули для компании Амперка
Тройка модули для компании Амперка

Для чтения сигналов от домашних пультов использовался ИК-приёмник (Troyka-модуль) на базе TSOP22 на котором уже есть вся необходимая обвязка.

Схема ИК-приёмник (Troyka-модуль)
Схема ИК-приёмник (Troyka-модуль)

(в поисковых системах ИК приемники ищутся по запросу "IR Receiving arduino")

Расшифровка сигналов с пультов вопрос нетривиальный, и требует больших временных затрат - но в Интернет существует готовая библиотека IRremoteESP8266 разработчики которой уже выполнили данную работу. С ESP32 данная библиотека так-же дружит.

Подключаем датчик на 14 контакт, подаем питание

Читаем сигналы с пульта дистанционного управления
Читаем сигналы с пульта дистанционного управления

Идем в примеры:

Загружаем пример IRrecvDumpV2
Загружаем пример IRrecvDumpV2

Открываем монитор порта на скорости 115200 и считываем сигналы с пультов (приставка цифрового телевидения + пульт от телевизора)

Определяем протокол и код управления
Определяем протокол и код управления

Копируем нужные значения кодов кнопок в блокнот

Protocol : SAMSUNG (телевизор)
uint64_t data = 0xE0E040BF; // TVONOFF
uint64_t data = 0xE0E0E01F; // VOLUMEUPP
uint64_t data = 0xE0E0D02F; // VOLUMEDOWN
uint64_t data = 0xE0E0F00F; // VOLUMEMUTE

Protocol : NEC (триколор приставка)
uint64_t data = 0x807F807F; // TRONOFF
uint64_t data = 0x807FE817; // CHUP
uint64_t data = 0x807F58A7; // CHDOWN
uint64_t data = 0x807F00FF; // CH1
uint64_t data = 0x807FE01F; // CH2
uint64_t data = 0x807F609F; // CH3
uint64_t data = 0x807F20DF; // CH4
uint64_t data = 0x807FD02F; // CH5
uint64_t data = 0x807F50AF; // CH6
uint64_t data = 0x807F10EF; // CH7
uint64_t data = 0x807FF00F; // CH8
uint64_t data = 0x807F708F; // CH9
uint64_t data = 0x807FC837; // CH0

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

Набор процедур для отправки команд с помощью ИК светодиода
Набор процедур для отправки команд с помощью ИК светодиода

Для теста попробуем включать/выключать ТВ и приставку триколор при подаче питания на ESP32

Проверка работы кода и железа
Проверка работы кода и железа

Для проверки работы используем ИК-модуль передатчик

Электрическая схема ИК-передатчика от Амперки
Электрическая схема ИК-передатчика от Амперки
Цифровой вход модуля подключаем к выводу D4
Цифровой вход модуля подключаем к выводу D4

Идем к телику и подаем питание на плату от PowerBank. Включилось и то и то - альтернатива 2-м пультам работает.

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

Подключение ИК светодиода к микроконтроллеру.
Подключение ИК светодиода к микроконтроллеру.
Подключение ИК светодиода к микроконтроллеру на макетной плате
Подключение ИК светодиода к микроконтроллеру на макетной плате

Размещаем прототип напротив телевизора с приставкой

Тестирование работы
Тестирование работы
При подаче питания включился телевизор и приставка
При подаче питания включился телевизор и приставка

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

Полный список статей доступен по этой ссылке:
Список всех статей канала ESP32 и Arduino

Всем удачи!