Управление климатом дешево и сердито (библиотека IRremoteESP8266 и бризер Tion 02)

в 11:47, , рубрики: arduino, diy или сделай сам, esp8266, infrared, ir, Tion02, метки:

Нашел способ подружить кондиционер (или другой прибор управляемым пультом дистанционного управления) и умный дом, либо сделать управление этим устройством, например с сотового.
В теории просто, подключаем esp8266 (ценой около 2 долларов у китайцев) к инфракрасном светодиоду, заливаем прошивку и готово.
Управление климатом дешево и сердито (библиотека IRremoteESP8266 и бризер Tion 02) - 1

На практике оказалось все несколько сложнее, т.к. у меня ревизия esp-01 пришлось припаять (примерно так) проводок к ножке микросхемы размером 5*5мм, вывести дополнительный GPIO. Рекомендую использовать ревизию постарше, например ESP-12.
Читателям не знакомым с esp8266 предлагаю ознакомится этой статьей.

Компоненты и модули

* Esp8266 ревизии esp-01
* FT232RL: USB to Serial 232 TTL Adapter + провода для подключения
* Фотоприемник Tsop 4838
* Регулятор 3.3v
* Транзистор S9014
* Светодиод инфракрасный 5013IRAB (длина волны 940 nm)
* Резистор 330ом
* Проектная плата
* Паяльник, припой, флюс.
* Для работы с IR используется замечательная библиотека IRremoteESP8266. Авторы Mark Szabo, Sebastien Warin, Ken Shirriff.

Сохранение кодов

* Подключаем фотоприемник, VCC на +3.3, GND на ноль, OUT на GPIO.
* Открываем пример для дампа кодов из нашей библиотеки IRremoteESP8266examplesIRrecvDumpIRrecvDump.ino
* Если надо — меняем номер пина к которому мы подключили OUT фотоприемника (строка «int RECV_PIN = 2;»).
* Заливаем прошивку. Подключаемся к выводу модуля. Поочередно зажимаем кнопки пульта для дампа кодов.
Для бризера Tion O2 у меня получились такие кода
Down
16711935
Decoded NEC: FF00FF (32 bits)
----
Up
16724175
Decoded NEC: FF30CF (32 bits)
----
Set
16722135
Decoded NEC: FF28D7 (32 bits)
----
Power
16720095
Decoded NEC: FF20DF (32 bits)

Фотоприемник больше не нужен, пока не потребуется «сграбить» кода другого пульта.

Управление устройством

* Подключаем ИК светодиод по схеме.
Управление климатом дешево и сердито (библиотека IRremoteESP8266 и бризер Tion 02) - 2
(Картинка заимствована у Fritzing)
GPIO можно использовать другой. От напряжения 3.3v светодиод так-же нормально работает.
* Демо прошивка с сервером находится тут
IRremoteESP8266examplesIRServerIRServer.ino
* Меняем в ней название и пароль вашей точки доступа, чтобы esp мог подключиться к ней. А так-же номер используемого GPIO
const char* ssid = ".....";
const char* password = ".....";
IRsend irsend(0);

* Прошиваем модуль.
* При подключении в консоль будет выведен IP адрес выделенный esp.

Теперь можно отправлять кода вводя в броузере адрес вида 192.168.1.1/ir?code=16720095 (просто подставьте нужный IP и код).

Я сделал вот такую страничку для удобства управления своим бризером.

<html>
<head>
<script>
function sendIR(str) {
    if (str.length == 0) { 
        // document.getElementById("txtHint").innerHTML = "";
        return;
    } else {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                // document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET", "http://192.168.0.193/ir?code=" + str, true);}
        xmlhttp.send();
    }
}
</script>
</head>
<body>
	<div id="demo">
	  <button type="button" onclick="sendIR(16724175)">Up</button>
	  <button type="button" onclick="sendIR(16711935)">Down</button>
	  <button type="button" onclick="sendIR(16722135)">Set</button>
	  <button type="button" onclick="sendIR(16720095)">Power</button>  
	</div>
</body>
</html>

Конкретно в моем случае бризер работает с пультом необычно, при первом нажатии он «просыпается», а именно включает подсветку экранчика, и только после этого начинает принимать команды. При автоматизации стоит учитывать это.

Надеюсь данная инструкция кому-то пригодится. Прошу делиться доработанными прошивками.

Автор: LexB

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js