Проект: умная лампа и управление реле
Собираем первое настоящее устройство умного дома — управляемую лампу.
Реле — электромеханический ключ, которым слаботочный сигнал ESP32 (3.3 В) включает мощную нагрузку: лампу, обогреватель, насос на 220 В.
Почему реле, а не прямое подключение
Вывод ESP32 выдаёт 3.3 В и десятки миллиампер — лампочку не зажжёшь. Реле решает: на управляющий вход подаём логический сигнал, а его контакты замыкают отдельную цепь 220 В. ESP32 и опасное напряжение при этом гальванически разделены.
Схема
ESP32 GPIO26 ---> [ модуль реле ] ---> цепь 220 В --- ЛАМПА
(3.3 В сигнал) (оптопара) (раздельно!)Хорошие модули реле содержат оптопару — она световым каналом разделяет логику и силовую часть, защищая плату.
Логика управления с сохранением состояния
Удобно помнить, включена ли лампа, и не дёргать реле зря. Логику переключения можно проверить на обычном Python:
class Lamp:
def __init__(self):
self.on = False
def handle(self, cmd):
if cmd == "TOGGLE":
self.on = not self.on
elif cmd == "ON":
self.on = True
elif cmd == "OFF":
self.on = False
return "горит" if self.on else "погашена"
lamp = Lamp()
for cmd in ["ON", "TOGGLE", "TOGGLE", "OFF"]:
print(f"{cmd:6s} -> лампа {lamp.handle(cmd)}")Вывод:
ON -> лампа горит TOGGLE -> лампа погашена TOGGLE -> лампа горит OFF -> лампа погашена
Код на плате (реле + MQTT)
from umqtt.simple import MQTTClient
from machine import Pin
relay = Pin(26, Pin.OUT)
state = False
def on_message(topic, msg):
global state
if msg == b"ON":
state = True
elif msg == b"OFF":
state = False
elif msg == b"TOGGLE":
state = not state
relay.value(1 if state else 0)
client = MQTTClient("esp32-lamp", "192.168.1.50")
client.set_callback(on_message)
client.connect()
client.subscribe(b"home/livingroom/lamp")
while True:
client.check_msg()Как работает под капотом
На управляющем входе модуля стоит транзистор и светодиод оптопары. Сигнал ESP32 зажигает этот светодиод, фотоприёмник по другую сторону открывает силовой ключ, и катушка реле притягивает контакт — цепь 220 В замыкается. Свет между двумя частями — единственная «связь», поэтому даже при пробое 220 В не попадёт на ESP32. Слышимый щелчок — это движение механического контакта.
Частые ошибки
- Работа с 220 В без знаний. Это опасно для жизни — силовую часть собирайте, только если уверены; иначе ограничьтесь низковольтной нагрузкой.
- Инверсная логика модуля. Многие реле включаются по уровню
0(active-low) — проверьте. - Питать реле от вывода. Катушке нужен ток с отдельной линии 5 В, не с GPIO.
Итог
- Реле даёт слабому сигналу ESP32 управлять мощной нагрузкой.
- Оптопара разделяет логику и силовую часть, защищая плату.
- Состояние удобно хранить и менять командами ON/OFF/TOGGLE.
- 220 В опасно — собирайте только при должных знаниях; многие модули active-low.