Проекты ESP8266 NodeMCU: умный дом, WiFi-реле, датчики
NodeMCU у меня в семье первая плата с WiFi — купил ради умного дома, а в итоге год мигал светодиодом. Потом дома стал пропадать свет, и я за вечер собрал реле, которое включается с телефона: буквально две детали, скетч из 80 строк и один вечер ковыряния. С тех пор NodeMCU у меня в трёх местах: розетка с подсветкой, термометр на балконе и датчик протечки под ванной. Это и есть proyectos esp8266 — жизненные маленькие сборки без претензий на промышленный IoT.
Ниже — шесть проектов, которые я собрал на NodeMCU V3: WiFi-реле на освещение, термогигрометр с отправкой в narodmon, MQTT-датчик протечки, HTTPS-уведомление в Telegram, IR-мост для пульта и ESP-NOW-выключатель без роутера. Схемы, скетчи, цены деталей и честные грабли: какие пины держать под реле, почему 5 В на GPIO убивает чип за месяц, и как не положить домашний WiFi гонкой данных. Железо можно прикинуть в симуляторе платы — реле и кнопка там заведутся без паяльника.
Почему NodeMCU, а не Uno или ESP32
NodeMCU V3 стоит 300-400 ₽ на любом маркетплейсе, по габаритам влезает в одинарную розетку и умеет WiFi из коробки. Uno WiFi и MKR-серия от Arduino официально стоят 5000+ ₽ — перебор для дачной розетки. ESP32 вдвое дороже и быстрее, но для реле на 5 А избыточен: 80 МГц Tensilica L106 и 4 МБ флеша хватает на любой бытовой сценарий. Слабое место у NodeMCU — пины 3,3-вольтовые, не терпят 5 В на входе, и тройка GPIO0/GPIO2/GPIO15 следит за режимом загрузки: об этом ниже.
- Цена и габариты: 300-400 ₽ за плату с USB и 4 МБ флеша; помещается в подрозетник.
- WiFi на чипе: не нужен ни шилд, ни ESP-01 с обвязкой — достаточно #include <ESP8266WiFi.h>.
- Логика 3,3 В:GPIO с 5-вольтового датчика требуют делителя 10 кОм + 20 кОм или модуля с согласителем.
- Один аналоговый вход A0: 0-3,3 В на плате с делителем 220к/100к; для нескольких сенсоров нужен мультиплексор.
- Ток по 3V3 — 300 мА максимум: реле и сервопривод тянут через внешний блок, не с платы.
Проект 1: WiFi-реле на освещение
Модуль реле на 5 В (одноканальный, активный LOW) — 70-100 ₽. NodeMCU подключается четырьмя проводами: 5V и GND с платы на реле-модуль, пин IN реле — на D1 (GPIO5). Питание реле беру с VIN платы (там 5 В от USB) — так реле щёлкает, а плата не проседает. Скетч поднимает WiFi, listens на порту 80, и по запросу /on или /off переключает реле.
#include <ESP8266WiFi.h>#include <ESP8266WebServer.h> const char* SSID = "HomeNet";const char* PASS = "passw0rd";const int RELAY = D1; // GPIO5, безопасный пин ESP8266WebServer server(80); void handleOn() { digitalWrite(RELAY, LOW); server.send(200, "text/plain", "ON"); }void handleOff() { digitalWrite(RELAY, HIGH); server.send(200, "text/plain", "OFF"); } void setup() { Serial.begin(115200); pinMode(RELAY, OUTPUT); digitalWrite(RELAY, HIGH); // выключено (LOW-активное реле) WiFi.begin(SSID, PASS); while (WiFi.status() != WL_CONNECTED) { delay(300); Serial.print("."); } Serial.println(); Serial.println(WiFi.localIP()); server.on("/on", handleOn); server.on("/off", handleOff); server.begin();} void loop() { server.handleClient(); }Заливаете скетч, открываете в браузере http://192.168.1.42/on — реле щёлкнуло, свет включился. IP смотрите в мониторе порта после старта. Статический IP задаю через WiFi.config — иначе после ребута роутер может выдать другой адрес, и закладка в телефоне перестанет работать. Полный разбор веб-сервера с маршрутизацией — в уроке про ESP32 веб-сервер; для NodeMCU API идентичен за именами классов. Логику реле можно «пощупать» в симуляторе с компонентом relay на D7.
Проект 2: термогигрометр с отправкой на narodmon
DHT22 (180-250 ₽) на пине D2, питание 3V3, подтяжка 10 кОм между DATA и VCC. Раз в 10 минут читаем температуру и влажность, отправляем по HTTP GET на narodmon.ru — GET-запросом, без JSON. На сайте виден график. Главный затык — диапазон DHT22: при -10 °C на балконе зимой датчик показал -27, и пришлось проверять термопару с Arduino. Оказалось, конденсат на плате модуля. Лечится силикагелем в коробке и фольгой вокруг датчика.
Проект 3: MQTT-датчик протечки под ванной
Ёмкостный датчик воды (50-80 ₽) на A0 — analogRead выше 600 значит вода. NodeMCU раз в секунду читает, при сработке публикует в MQTT-топик home/bathroom/leak со значением 1, и HA включает сирену. Три грабли, на которые я наступил: (1) питание 5 В с Vin — датчик при 3V3 возвращает максимальные 1023 всегда; (2) WiFi в подвале рвётся каждые 20 минут — нужен auto-reconnect с backoff; (3) пин A0 на NodeMCU принимает до 3,3 В — делитель на плате уже стоит, можно не дублировать.
Проект 4: HTTPS-уведомление в Telegram
Telegram-бот — бесплатный канал для уведомлений. NodeMCU шлёт GET-запрос на api.telegram.org/bot<TOKEN>/sendMessage — но это HTTPS, и библиотека WiFiClientSecure требует отпечаток сертификата (fingerprint), который меняется раз в полгода. Альтернатива — BearSSL с проверкой по корневому сертификату, он живёт дольше. Скетч на 60 строк: при сработке PIR-датчика отправляет сообщение, и через секунду оно приходит в чат. Подробно — в уроке про HTTPS на ESP32; для NodeMCU библиотека зовётся ESP8266WiFiMulti и BearSSL.
Проект 5: IR-мост — пульт в телефон
IR-приёмник VS1838B на D5, IR-светодиод TSAL7200 через транзистор 2N2222 на D6. Скетч ловит коды пультов (TV, кондиционер, тюнер) и кладёт в EEPROM по 4 байта на код. Веб-интерфейс на 80-м порту: список сохранённых кодов, кнопка «Отправить». Получается IR-мост: телефон -> NodeMCU -> IR-светодиод -> техника. Проверил на кондиционере Daikin — работает, на TV Samsung — тоже. Библиотека IRremoteESP8266 держит NEC, RC5, Samsung, Daikin и десяток других протоколов — в уроке про IRremoteESP8266 разобран приём и отправка.
Проект 6: ESP-NOW — выключатель без роутера
Сценарий: выключатель на батарейке в коридоре, реле у розетки в комнате. WiFi-роутер может быть выключен, а выключатель обязан работать. ESP-NOW — протокол Espressif, связывает две платы напрямую по MAC-адресу, без точки доступа. Передатчик на батарейке CR2032 спит 99% времени, при нажатии кнопки просыпается и шлёт пакет. Приёмник у реле получает пакет, переключает свет. Дальность в квартире 12-15 м сквозь две стены — у меня работает через бетонную панель. Скетч и обмен структурами — в уроке про ESP-NOW обмен.
Грабли NodeMCU, на которые я наступал
- 5 В на GPIO: китайский датчик 5V на прямом проводе — вход деградирует за месяц. Делитель 10 кОм + 20 кОм или модуль с согласителем.
- Тройка strap-пинов: D3 (GPIO0), D4 (GPIO2), D8 (GPIO15) следят за режимом загрузки. Реле на D8 — скетч не стартует; кнопку на D3 — режим прошивки при включении.
- EEPROM через begin/commit: на ESP8266 EEPROM эмулируется во флеше, commit обязателен — без него данные не сохранятся, в отличие от Uno.
- WDT 3,2 секунды: ESP8266 перезагружается, если loop() крутится дольше 3,2 с без yield(). Длинный delay() заменяйте на delay + WiFi.handle или split.
- Питание от USB-порта ПК: ток 500 мА, реле щёлкает — плата ребутится. Подтяните к 5V зарядки на 1 А или отдельный блок.