Wi-Fi IR-бластер на ESP8266: управление бытовой техникой со смартфона
Компоненты и материалы
| ESP8266 ESP-01 (или NodeMCU / Wemos D1 Mini) | 1 | |
| Arduino Nano R3 | 1 | Для первой версии; далее заменён на NodeMCU |
| NPN-транзистор (любой маломощный) | 1 | Ключ для IR-светодиодов |
| IR-светодиоды (Adafruit или аналогичные) | 2 | Последовательно через транзистор от 5V |
Инструменты
- Паяльник
Приложения и сервисы
- Arduino IDE
- NodeMCU firmware (опционально)
О проекте
Производители убрали IR-порты из смартфонов, а «глупые» устройства (TV, кондиционер, ресивер) остались. Решение — веб-управляемый IR-бластер на ESP8266: нажимаете кнопку в веб-приложении на телефоне → HTTP-запрос на ESP → ESP посылает IR-код.
Эволюция проекта
- Прототип на ESP-01 + Arduino Nano — AT-команды, задержка 1–2 сек, сложно.
- Переход на NodeMCU — встроенный USB, стабильное питание, библиотека
ESP8266WebServer+IRremoteESP8266, нулевая задержка. - Веб-фронтенд — REST-подобный API на ESP, PHP-прокси (curl.php) на сервере (C.H.I.P. / Raspberry Pi / облако), HTML/JS пульт с манифестом для установки как PWA на Android.
Силовая часть IR
ESP8266 — 3.3V, ножки слабые. IR-светодиоды запитываются от 5V через NPN-транзистор (база → GPIO ESP, коллектор → IR-светодиоды последовательно, эмиттер → GND). Без резисторов — ярко, но ресурс ниже; для v2 планируются широкоугольные IR-светодиоды с резисторами.
Функции пульта (пример для Samsung TV + NEC-ресивер)
- TV: Power, Source, Mute, Vol+/-, Ch+/-
- Receiver: Power, Power On/Off отдельно, Mute, Vol+/-, Source CBL/SAT
- Команда «Power All» — макрос включения всего сразу
Планы развития
- Перенос UI в облако
- Интеграция с Amazon Echo (Голосовое управление) — уже сделано
- Датчик температуры DHT22
- RF-передатчик для потолковых вентиляторов
- IR-приёмник для обучения пультов (learning mode)
- Интеграция с системой умного дома (выключение при уходе)
Код
Скетч ESP8266 (C/C++)
Требует библиотек: ESP8266WiFi, IRremoteESP8266, ESP8266mDNS. RAW-коды IR для конкретных устройств (Samsung, NEC) зашиты в массивы. Сервер на порту 80 парсит GET-запросы вида /irTVpwr, /irTVvup и т.д., посылает соответствующий IR-код, отвечает 200 OK.
// Пример фрагмента обработки запроса:
if (req.indexOf("/irTVpwr") != -1) {
irsend.sendRaw(irTVpwr, sizeof(irTVpwr)/sizeof(irTVpwr[0]), 38);
Serial.println("IRreq irTVpwr sent");
}
// ... аналогично для остальных кодов
Полный код в репозитории (ссылка ниже).
Веб-фронтенд
index.html— кнопки пульта, подключает jQuery,script.js, манифест PWAscript.js— функцияbuttonClick(id)шлёт AJAX наcurl.phpс параметрамиroom(IP ESP) иbuttoncurl.php— PHP-прокси:curl('https://' . $room . '/' . $button)manifest.json— настройки PWA (иконки, полноэкранный режим, портрет)
Ссылки на код
- Все файлы: GitHub репозиторий автора (указан в оригинале)
Схемы
- Базовая: ESP → NPN → 2 IR LED последовательно от 5V (без резисторов).
- Расширенная: NPN управляет несколькими PNP-транзисторами — по одному на каждый IR LED (масштабируемость).
Производственный процесс
- Ключевые ограничения Wi‑Fi Real‑Time Location Systems
- Новые беспроводные технологии 2015: гид для M2M и IoT
- Развёртывание TLS-веб-сервера на ESP8266 за $3 за 30 минут
- Бесшовная MQTT интеграция: NodeMCU DHT22 сенсоры с Raspberry Pi 3 B+ как брокер
- Создание WiFi-робота на Raspberry Pi и Android-смартфоне
- Построение Wi-Fi-управляемого робота на Raspberry Pi с Python — пошаговое руководство
- Wi-Fi Calling: как работает, зачем нужен и чем полезен
- Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
- WiFi-умный замок на Arduino и ESP8266 — открывание с телефона
- Пескоструйная обработка (Bead Blasting): полное руководство по гладким полированным покрытиям