Найти тему
Электроника, ESP32, Arduino

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

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

Ссылка на статью тут:

Для управления кондиционерами можно воспользоваться библиотекой IRremoteESP8266 (её также можно будет найти в архиве с примерами):

GitHub - crankyoldgit/IRremoteESP8266: Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/

Данная библиотека умеет работать только с платам ESP8266/ESP32, за то поддерживает огромное количество климатической техники. Со списком оборудования можно ознакомиться тут:

IRremoteESP8266/SupportedProtocols.md at master · crankyoldgit/IRremoteESP8266

Схему подключения к ESP8266 можно также найти в Wiki

Home · crankyoldgit/IRremoteESP8266 Wiki

Расскажу как я прикручивал свой домашний кондюк к ESP32.

На макетной плате собираем схему:

Схема подключения ИК светодиода и ИК приемника
Схема подключения ИК светодиода и ИК приемника
Компоненты на макетной плате
Компоненты на макетной плате

Прошиваем плату скетчем из архива IRrecvDump_ESP32.ino, открываем монитор порта на скорости 115200.

Берем пульт от кондиционера, направляем на приемник и клацаем кнопку питания:

Текущие настройки кондиционера на пульте:
Текущие настройки кондиционера на пульте:

Получаем ответ:

Timestamp : 000211.710
Library : v2.8.2
Protocol : WHIRLPOOL_AC
Code : 0x83060422000083120000000000B700010000000001 (168 Bits)
Mesg Desc.: Model: 1 (DG11J13A), Power Toggle: On, Mode: 2 (Cool), Temp: 20C, Fan: 0 (Auto), Swing: Off, Light: On, Clock: 03:18, On Timer: Off, Off Timer: Off, Sleep: Off, Super: Off, Command: 1 (Power)
uint16_t rawData[343] = {8986, 4512, 622, 1624, 596, 1658, 592, 566, 598, 538, 572, 570, 566, 574, 598, 552, 568, 1662, 622, 532, 566, 1656, 596, 1656, 624, 542, 598, 540, 570, 576, 570, 576, 596, 538, 598, 530, 598, 536, 566, 1656, 624, 538, 598, 544, 568, 574, 598, 550, 592, 538, 598, 530, 566, 1654, 622, 540, 566, 570, 566, 576, 592, 1646, 596, 548, 628, 508, 628, 496, 602, 530, 628, 504, 628, 508, 628, 510, 600, 544, 628, 516, 600, 536, 602, 526, 628, 506, 626, 506, 626, 508, 628, 514, 628, 512, 626, 522, 598, 520, 598, 7952, 624, 1624, 598, 1652, 596, 566, 570, 566, 598, 542, 570, 574, 594, 552, 570, 1658, 624, 528, 592, 1628, 624, 540, 564, 570, 592, 1642, 592, 580, 592, 554, 566, 568, 566, 556, 570, 562, 566, 564, 566, 572, 566, 572, 594, 546, 566, 578, 566, 570, 568, 560, 594, 534, 566, 566, 572, 564, 596, 544, 570, 576, 566, 576, 598, 538, 598, 530, 566, 562, 598, 532, 598, 540, 598, 544, 568, 576, 568, 580, 566, 568, 568, 560, 594, 534, 572, 562, 598, 542, 566, 570, 570, 576, 566, 578, 570, 564, 598, 528, 572, 562, 592, 538, 566, 570, 566, 570, 570, 574, 568, 582, 566, 570, 568, 1652, 624, 1628, 628, 1628, 628, 508, 596, 1664, 626, 1636, 602, 548, 628, 1614, 598, 7960, 628, 500, 628, 500, 602, 536, 628, 508, 626, 514, 626, 518, 626, 516, 628, 508, 602, 1648, 602, 530, 628, 508, 628, 510, 628, 510, 604, 542, 602, 546, 630, 508, 626, 500, 628, 500, 602, 536, 626, 506, 630, 512, 628, 518, 628, 522, 626, 508, 628, 496, 630, 502, 628, 504, 630, 506, 628, 512, 630, 512, 628, 516, 630, 508, 628, 494, 628, 500, 626, 504, 628, 510, 626, 512, 628, 514, 626, 522, 630, 506, 628, 496, 626, 500, 628, 506, 628, 506, 628, 514, 628, 512, 628, 518, 628, 506, 628, 1618, 628, 504, 628, 506, 628, 502, 628, 514, 628, 518, 626, 516, 628, 492, 654}; // WHIRLPOOL_AC
uint8_t state[21] = {0x83, 0x06, 0x04, 0x22, 0x00, 0x00, 0x83, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01};

Из лога видно, что в отличии от теликов (где отправлялась команда только одной кнопки) все параметры для установки настроек кондиционера передаются в одном пакете при нажатии на любую кнопку.

Внимательно изучаем в библиотеке файл: ir_Whirlpool.h (если у Вас другая модель изучаем соответствующий ей файл):

IRremoteESP8266/ir_Whirlpool.h at master · crankyoldgit/IRremoteESP8266

И пишем на его основании свою процедуру, которая будет управлять кондиционером. Для включения/выключения моего кондиционера команду оказалось необходимо отправить 2 раза подряд с небольшим интервалом:

Процедура включения кондиционера
Процедура включения кондиционера

Соответственно, чтобы после включения изменить параметры устанавливаем флаг:

ac.setPowerToggle(false); // Питание не переключать!

и устанавливаем любые параметры (команду отправляем только один раз)!

Модифицировав данный код, кондиционером можно будет управлять со смартфона, через Телеграм или интегрировать в систему умного дома.

Примеры кода и библиотеку качаем тут:

Как управлять кондиционером с помощью ESP32 ESP8266.zip

Оглавление моего канала доступно по этой ссылке:

Всем удачи!