wemos mini d1
Trema-модуль ИК-передатчик и ресивер
Считываю сигнал с пульта для вентилятора, записываю его в формате таймингов (LOW/ HIGH)
Потом полученные данные передал в программу для отправки чтобы повторить сигнал. Но вентилятор не реагирует. Короче говоря не получается скопировать сигнал пульта
Программа для записи
#include <Arduino.h>
#include <IRremote.hpp>
const int RECV_PIN = 14; // Change to your receiver pin
const int STATUS_PIN = LED_BUILTIN;
void setup() {
pinMode(STATUS_PIN, OUTPUT);
Serial.begin(115200);
#if defined(__AVR_ATmega32U4__) || defined(SERIAL_USB) || defined(ARDUINO_ARCH_RP2040)
delay(4000); // Wait for serial monitor
#endif
Serial.println(F("IR Receiver Ready"));
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK, STATUS_PIN);
Serial.print(F("Listening for IR signals on pin "));
Serial.println(RECV_PIN);
}
void loop() {
if (IrReceiver.decode()) {
digitalWrite(STATUS_PIN, HIGH);
// Print raw data in microseconds
Serial.println(F("Raw timing data (microseconds):"));
for (uint16_t i = 1; i < IrReceiver.decodedIRData.rawDataPtr->rawlen; i++) {
uint32_t duration = IrReceiver.decodedIRData.rawDataPtr->rawbuf[i] * MICROS_PER_TICK;
Serial.print(duration);
if (i & 1) Serial.print("\t"); // LOW
else Serial.println(","); // HIGH
}
Serial.println();
// Print protocol info if known
if (IrReceiver.decodedIRData.protocol != UNKNOWN) {
Serial.print(F("Protocol: "));
Serial.println(getProtocolString(IrReceiver.decodedIRData.protocol));
Serial.print(F("Value: 0x"));
Serial.println(IrReceiver.decodedIRData.command, HEX);
}
IrReceiver.resume();
digitalWrite(STATUS_PIN, LOW);
}
}
А тут код отправки:
#include <Arduino.h>
#include <IRremote.hpp>
const int SEND_PIN = 14; // Change to your transmitter pin
const int STATUS_PIN = LED_BUILTIN;
// Paste your recorded raw data here (in microseconds)
const uint16_t rawSignal[] = {
// LOW, HIGH pairs
1300, 350,
1350, 350,
500, 1200,
1300, 400,
1300, 400,
450, 1250,
450, 1250,
450, 1250,
450, 1250,
450, 1250,
1300, 400,
450,
// Add all your timing pairs here
};
void setup() {
pinMode(STATUS_PIN, OUTPUT);
Serial.begin(115200);
#if defined(__AVR_ATmega32U4__) || defined(SERIAL_USB) || defined(ARDUINO_ARCH_RP2040)
delay(4000); // Wait for serial monitor
#endif
Serial.println(F("IR Transmitter Ready"));
IrSender.begin(SEND_PIN, ENABLE_LED_FEEDBACK, STATUS_PIN);
Serial.print(F("Raw signal length: "));
Serial.println(sizeof(rawSignal)/sizeof(uint16_t));
}
void loop() {
digitalWrite(STATUS_PIN, HIGH);
Serial.println(F("Sending IR signal..."));
IrSender.sendRaw(rawSignal, sizeof(rawSignal)/sizeof(uint16_t), 38);
delay(100); // Debounce
}
Использую так
Также пытался использовать эту демку, но с ней тоже не работает.
P.S. Искал как работает изначальный пульт, но моего гуглфу не хватило, что бы найти какой протокол он юзает. На микросхеме на пульте написано FMT-PAO8
Трансмиттер точно работает, т.к. видно по камере, что он загорается
ЧЯДНТ
