Умная розетка на ESP32 и реле: делаем сами, управляем из браузера
Что это за проект
Делаем розетку, которую включают и выключают из браузера. Внутри — плата на ESP32-WROOM-32 и реле Songle SRD-05VDC-SL-C. Логика живёт на самом ESP32: он поднимает маленький веб-сервер, вы открываете страницу с телефона и жмёте кнопку. Проект хорош тем, что здесь впервые пересекаются три мира: 3,3-вольтовая логика микроконтроллера, 5-вольтовая катушка реле и 220-вольтовая бытовая сеть. Собирается за вечер, деталей немного.
Если вы ещё не работали с реле, сначала гляньте обзор реле-модуля на 1-2-4 канала — там расписаны распиновка и активный уровень входа. А автономная метеостанция на ESP32 покажет, как из трёх модулей собрать устройство с веб-интерфейсом — пригодится, когда захотите добавить в розетку показания датчиков.
Характеристики из даташитов
Все цифры ниже — из официального даташита Espressif по модулю ESP32-WROOM-32 (v3.7) и даташита реле Songle SRD.
| Параметр | ESP32-WROOM-32 | Реле SRD-05VDC-SL-C |
|---|---|---|
| Ядро / контакты | Xtensa LX6, 2 ядра, до 240 МГц | Form C (SPDT): COM, NO, NC |
| Питание | 3,0–3,6 В | Катушка 5 В DC |
| Радио | Wi-Fi 802.11 b/g/n до 150 Мбит/с, Bluetooth 4.2 BR/EDR + BLE | — |
| Ток катушки | — | 71,4 мА (сопротивление 70 Ом ±10%) |
| Коммутация | — | 10 А 250 В AC / 10 А 30 В DC (резистивная нагрузка) |
| Индуктивная нагрузка | — | 3 А 120 В AC / 3 А 28 В DC |
| Время срабатывания / отпускания | — | ≤10 мс / ≤5 мс |
| Изоляция катушка–контакты | — | 1500 В AC 50/60 Гц, 1 мин |
| Память и размер | 520 КБ SRAM, 4 МБ flash, 18×25,5×3,1 мм | вес ~10 г |
| Температура | −40…+85 °C | −40…+85 °C |
| Срок службы контактов | — | 107 циклов механически, 105 под нагрузкой |
Схема подключения
Реле-модуль для Arduino обычно имеет транзисторный ключ и опторазвязку на входе, поэтому 3,3-вольтовый сигнал ESP32 его устраивает. Но катушку питать от 3,3 В нельзя: ей нужно ровно 5 В и 71,4 мА, иначе реле щёлкает вяло или не притягивается вовсе. Подключение к DevKit:
- VCC модуля реле → пин 5V (VIN) платы ESP32;
- GND → GND платы;
- IN → GPIO26;
- COM — фаза от вилки розетки, NO — фаза на сам разъём розетки. Ноль и земля идут мимо реле напрямую.
Контакты держат 10 А — этого хватает на чайник около 2 кВт, но уже впритык. Для бойлера 3 кВт и мощнее берите реле с запасом или отдельный контактор. Если на модуле есть перемычка JD-VCC, оставьте её снятой, когда хотите, чтобы сетевые помехи не возвращались в ESP32 по земле.
Код для ESP32
Прошивка — через Arduino IDE, плата «ESP32 Dev Module». Код поднимает веб-сервер в вашей домашней сети и переключает реле по клику на кнопки:
#include <WiFi.h>
#include <WebServer.h>
const char* ssid = "home_wifi"; // имя вашей сети
const char* pass = "password";
const int RELAY = 26; // вход IN модуля реле
WebServer server(80);
void setup() {
Serial.begin(115200);
pinMode(RELAY, OUTPUT);
digitalWrite(RELAY, HIGH); // большинство модулей активны при LOW
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
Serial.println(WiFi.localIP()); // адрес розетки — сюда идём с телефона
server.on("/", []() {
if (server.arg("state") == "on") digitalWrite(RELAY, LOW); // включить
if (server.arg("state") == "off") digitalWrite(RELAY, HIGH); // выключить
server.send(200, "text/html", page());
});
server.begin();
}
void loop() { server.handleClient(); }
String page() {
String s = "<html><meta charset='utf-8'><h1>Умная розетка</h1>";
s += "<a href='/?state=on'><button>ВКЛ</button></a> ";
s += "<a href='/?state=off'><button>ВЫКЛ</button></a>";
return s;
}
Частые ошибки
- Реле щёлкает, но не притягивает контакт. Питают модуль от 3,3 В или, что хуже, от GPIO. Катушке нужен 5 В и 71,4 мА — берите линию VIN, не тяните её с логического пина.
- Плата перезагружается при старте Wi-Fi. Пиковый ток Wi-Fi плюс катушка реле просаживают 5 В. USB-порт компьютера этого не тянет. Нужен отдельный БП 5 В / 1 А и электролит 470–1000 мкФ вплотную к разъёму.
- Контакты залипли, розетка не выключается. Превышен ток коммутации. 10 А — это чисто резистивная нагрузка; двигателям и трансформаторам хватает 3 А. Проверяйте, что реально висит на выходе.
- Розетка работает «наоборот». Большинство модулей активны при LOW: digitalWrite(RELAY, LOW) — включить, HIGH — выключить. Если наоборот — просто поменяйте уровни в коде.
- 220 В на открытой макетке. Силовую часть собирайте в корпусе, клеммы затягивайте отвёрткой, не трогайте под напряжением мокрыми руками. Это не «форматальная» ошибка новичка — это вопрос жизни.
Куда расти
Прикрутите DS3231 — и розетка станет включаться по расписанию без внешнего сервера. Или добавьте датчик движения HC-SR501, чтобы свет загорался при появлении человека. Вход GPIO26 тот же, меняется только логика в коде.
Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.