Библиотека irremote h для управления ИК-устройствами

0
13

Библиотека irremote h

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

Стандартные протоколы вроде NEC и Sony поддерживаются из коробки. Для нестандартных вариантов потребуется ручная настройка таймингов. Например, пульты некоторых китайских кондиционеров используют 16-битные адреса вместо 8-битных – это учитывается в коде.

Минимальная задержка между отправками команд – 100 мс. Если интервал меньше, приёмник может проигнорировать сигнал. Для длинных кодов, таких как RC-MM, проверьте буфер: он ограничен 64 байтами.

Работа с инфракрасными сигналами через IRremote h

Подключение и настройка

Установите последнюю версию через менеджер платформ (Arduino IDE 2.x+). Для ESP8266/ESP32 добавьте в platformio.ini строку: lib_deps = IRremote. Аппаратная часть требует ИК-приёмника (VS1838B) и светодиода (940 нм) с резистором 100 Ом.

Пример отправки кодов

Для эмуляции пульта TV Sony передайте HEX-код:

#include <IRremote.hpp>
void setup() {
IrSender.sendSony(0xA90, 12); // Код питания, 12 бит
}

Частота ШИМ – 38 кГц. Для NEC-протокола замените sendSony на sendNEC.

Снижение энергопотребления: на ESP32 активируйте IR_USE_RMT в IRremoteInt.h. Это снижает нагрузку на CPU на 40%.

Подключение и настройка IRremote h на Arduino

Установка

Скачайте архив с GitHub (https://github.com/z3t0/Arduino-IRremote). В Arduino IDE выберите Скетч → Подключить библиотеку → Добавить .ZIP библиотеку и укажите загруженный файл.

Схема соединений

Подключите ИК-приемник TSOP4838 к Arduino:

  • VCC – к +5V
  • GND – к земле

Для передачи сигналов используйте ИК-светодиод. Анод через резистор 100 Ом – к пину 3, катод – к GND.

Проверка работы

Для отправки команд модифицируйте скетч IRsendDemo, заменив значение 0xFFA25D на полученные ранее коды.

Примеры кода: отправка и приём сигналов

Отправка команды на пульт

Чтобы передать сигнал NEC, используйте этот фрагмент:

#include <IRremote.hpp>
void setup() {
IrSender.begin(3); // Пин 3 для передачи
}
void loop() {
IrSender.sendNEC(0xFF00FF, 32); // Адрес 0xFF00FF, 32 бита
delay(1000);
}

Для Sony-протокола замените sendNEC на sendSony с 12-битным адресом.

Считывание входящих данных

Для декодирования сигналов добавьте в скетч:

#include <IRremote.hpp>
void setup() {
Serial.begin(9600);
IrReceiver.begin(2); // Пин 2 для приёма
}
void loop() {
if (IrReceiver.decode()) {
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
IrReceiver.resume();
}
}

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь