управление кондиционером с помочью esp 01 отправка по ик сигналу
- Войдите на сайт для отправки комментариев
Пт, 18/06/2021 - 21:46
Здравствуйте форумчане, давно меня не было, забросил ардуинко на время. Но опять понадобилась. Захотел управлять кондиционером с помочью esp. Несколько дней мучаюсь, подскажите, пожалуйста, заранее спасибо.
#include <IRremoteESP8266.h>
#include <IRsend.h>
#define kIrLed 4
IRsend irsend(kIrLed);
uint16_t rawData_Off[211] = {8928, 4558, 492, 1732, 492, 1758, 466, 606, 492, 610, 490, 606, 492, 606, 492, 1734, 492, 1732, 492, 1732, 494, 1758, 466, 1734, 492, 1734, 492, 606, 492, 606, 494, 606, 492, 1734, 494, 606, 492, 632, 468, 632, 466, 608, 492, 606, 494, 606, 492, 606, 494, 606, 494, 606, 492, 606, 494, 608, 492, 604, 494, 632, 466, 632, 468, 606, 492, 608, 492, 606, 492, 632, 466, 632, 466, 608, 492, 606, 494, 1760, 466, 608, 490, 608, 492, 608, 492, 608, 492, 606, 492, 606, 492, 606, 492, 632, 468, 1732, 492, 632, 468, 606, 492, 634, 466, 608, 492, 606, 492, 606, 494, 1734, 490, 606, 492, 606, 494, 608, 492, 632, 466, 632, 466, 608, 492, 606, 494, 606, 494, 606, 492, 632, 466, 610, 490, 608, 492, 608, 492, 606, 492, 632, 466, 606, 492, 632, 466, 634, 466, 608, 490, 632, 468, 606, 492, 608, 492, 606, 494, 606, 492, 632, 468, 632, 466, 610, 490, 608, 492, 606, 492, 632, 468, 608, 490, 608, 492, 608, 490, 608, 490, 1760, 466, 608, 492, 1732, 492, 608, 492, 632, 466, 632, 466, 606, 492, 608, 492, 1732, 492, 1732, 494, 1732, 516, 608, 490, 1708, 492, 608, 492, 1734, 492, 1732, 518}; // UNKNOWN 207ECAA8
uint16_t rawData_ON[211] = {8930, 4556, 492, 1732, 494, 1732, 494, 604, 494, 606, 492, 606, 494, 606, 494, 1732, 494, 1732, 494, 1732, 494, 1732, 492, 1732, 494, 1730, 494, 604, 494, 604, 496, 604, 494, 1730, 496, 604, 494, 604, 494, 606, 492, 606, 494, 606, 494, 604, 494, 606, 492, 606, 492, 606, 492, 606, 492, 606, 494, 604, 494, 608, 492, 606, 492, 606, 494, 580, 520, 606, 492, 606, 494, 606, 494, 604, 494, 608, 492, 1732, 492, 606, 494, 606, 494, 606, 492, 608, 492, 606, 494, 606, 494, 606, 494, 606, 492, 1732, 494, 606, 494, 604, 494, 606, 494, 580, 520, 604, 494, 606, 494, 1730, 494, 606, 494, 606, 494, 580, 520, 606, 494, 606, 494, 606, 494, 606, 492, 606, 494, 606, 492, 606, 494, 606, 494, 606, 494, 606, 492, 604, 494, 606, 494, 606, 494, 606, 492, 608, 492, 606, 494, 604, 494, 580, 518, 606, 492, 606, 494, 1732, 492, 606, 494, 606, 494, 606, 518, 582, 492, 580, 520, 606, 492, 606, 494, 606, 494, 606, 492, 606, 492, 1732, 492, 610, 514, 1708, 492, 606, 494, 606, 516, 582, 518, 580, 518, 580, 518, 1706, 494, 1732, 494, 1732, 518, 582, 494, 1730, 494, 1730, 520, 1680, 544, 1706, 544}; // ELECTRA_AC
void setup()
{
irsend.begin();
}
void loop() {
irsend.sendRaw(rawData_Off, 211, 38); //Выключаю
delay(1000);
irsend.sendRaw(rawData_ON, 211, 38); //Выключаю
}
Скетч для получение ir сигрла
#include <IRremoteESP8266.h> #include <IRrecv.h> #include <IRac.h> #include <IRutils.h> const uint16_t kRecvPin = 4; // D4, ПИН подсоединения ИК приемника const uint32_t kBaudRate = 115200; // Скорость соединения с последовательным портом const uint16_t kCaptureBufferSize = 1024; // Размер буфера // kTimeout - задержка в милисекундах для в получении нескольких пакетов сообщений // ИК протоколы кондиционеров часто используют значение 20-40 мс #if DECODE_AC const uint8_t kTimeout = 50; // Задержка в милисекундах для получения нескольких пакетов сообщений #else const uint8_t kTimeout = 15; #endif const uint16_t kMinUnknownSize = 12; // Минимальный размер неизвестных случайных данных, позволяет снизить инфракрасный шум IRrecv irrecv(kRecvPin, kCaptureBufferSize, kTimeout, true); decode_results results; void setup() { #if defined(ESP8266) Serial.begin(kBaudRate, SERIAL_8N1, SERIAL_TX_ONLY); #else Serial.begin(kBaudRate, SERIAL_8N1); #endif while (!Serial) // Ожидание установления соединения с последовательным портом delay(50); Serial.printf("\nОжидаем ИК сигнал для его считывания, ПИН: " "%d\n", kRecvPin); #if DECODE_HASH irrecv.setUnknownThreshold(kMinUnknownSize); #endif irrecv.enableIRIn(); } void loop() { // Проверяем, есть ли ИК код if (irrecv.decode(&results)) { // Display a crude timestamp. uint32_t now = millis(); Serial.printf("Timestamp : %06u.%03u\n", now / 1000, now % 1000); if (results.overflow) Serial.printf( "Предупреждение: ИК код превышает буфер (>= %d). " "Полученные значения неверные, увеличьте буфер kCaptureBufferSize.\n", kCaptureBufferSize); Serial.println("Library : v" _IRREMOTEESP8266_VERSION_ "\n"); Serial.print(resultToHumanReadableBasic(&results)); String description = IRAcUtils::resultAcToString(&results); if (description.length()) Serial.println("Description: " + description); yield(); Serial.println(resultToTimingInfo(&results)); yield(); Serial.println(resultToSourceCode(&results)); Serial.println(); yield(); } }Так выдало, при получение команды