Irsend в IRremoteESP8266

Здравсткуйте! Подскажите, как отправить команду ON/OFF. Не могу понять… Вот инфа по протоколу:
Transmission format of LCD projector operation key:
NEC Format (single command / command pipelining mode)

Custom Code + Custom Code:
2 patterns as below
33h+00h(Default;code1), 33h+11h(code2)

Data Code (HEX) - 00 Function - on/off

Это какой-то обрывок.
Можете выложить описание протокола целиком? или дать на него ссылку, если оно в сети

Лучше не стало…
Я пас, сорри.

А так?))

User Manual к проектору:

А как пробовал? Показывай свой код.

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>

const uint16_t kIrLed = 4;  // Пин для ИК-светодиода (D2 на NodeMCU)
IRsend irsend(kIrLed);      // Создаем объект для отправки ИК-сигналов

// Параметры NEC-протокола для вашего проектора
const uint32_t kCustomCode = 0x330000;  // Custom code 33h + 00h (в 32-битном формате)
const uint8_t kCommand = 0x00;          // Команда ON/OFF

void setup() {
  irsend.begin();
  Serial.begin(115200);
  Serial.println("IR sender started");
}

void loop() {
  // Отправляем команду ON/OFF в NEC-формате
  irsend.sendNEC(kCustomCode | kCommand, 32);  // 32 бита - стандартная длина для NEC
  
  Serial.println("Sent IR ON/OFF command");
  
  delay(1000);  // Пауза 1 секунда
}

И как реагирует проектор?
Кстати, перенеси код из loop() в setup(), или увеличь задержку до 5-10 секунд. Может быть он команды принимает, но просто не успевает реагировать на них?))

1 лайк

Согласно описания протокола NEC:

Особенности формата:

  • 8 бит данных и 8 бит команда
  • Адрес и команда передаются дважды для исключения ошибки

И вообще протокол NEC специфический.

Попробуй библиотеку именно под него заточеную:

Работает в паре с:

Как я понял из перевода:

How is this different from regular IR?

An IR remote typically sends out pulses that are modulated at 38khz. These pulses are received by an IR receiver (like the TSOP devices). An IR receiver is an IR photodiode and circuitry that filters out the 38khz carrier wave. The output of this receiver is the unmodulated IR signal that was received by the remote.

The receiving device expects an unmodulated signal on the data line.

This library cannot be used to control an IR LED directly, since there modulation is required. There are multiple libraries out there that can be used to control IR LEDs from Arduino:

Пример кода:


#include "nectransmitter.h"
#include <Arduino.h>

#define SEND_PIN 8

NECTransmitter necTransmitter(SEND_PIN);

void setup() {}

void loop() {
  // Will send 0x00FF 0xAB54.
  necTransmitter.SendNEC(0x00, 0xAB);
  delay(1000);
}

В общем - пробуй. :grinning_face:

Arduino-Direct-NEC-Transmitter не поддерживает ESP

Странно, глянул код , там вроде нечему “не поддерживать”- обычные ардуино-функции…
Возможно ошибаюсь

не в курсе насчет ESP8266, но в новом (ESP32) есть спецпереферия для посылки\получения IR команд.

Автор!

Посмотри на это, может поможет: IRremoteESP8266/src at master · crankyoldgit/IRremoteESP8266 · GitHub

PS: там большой набор всяких разных брендов :). Дажей мой проектор есть. Эпсон.

Стандарт de-facto , на самом деле.

Похоже проблема в самой библиотеке, не хочет она инвертировать биты в LSB формат. Отправил 0xCC0000FF и все заработало