Умный дом #5: Управление освещением по датчику движения (PIR + ESP32)
Автоматическое включение освещения при движении — одна из самых практичных функций умного дома. Такой подход экономит электроэнергию, повышает комфорт и безопасность. В данной статье мы рассмотрим, как реализовать управление светом на базе ESP32 и датчика движения PIR. Система будет автоматически включать лампу при обнаружении движения и выключать её через заданное время, если движения больше нет.
Список оборудования и компонентов
- Контроллер ESP32 DevKit.
- Датчик движения PIR (например, HC-SR501).
- Модуль реле 220 В для управления лампой.
- Лампочка (светодиодная или накаливания) 220 В.
- Блок питания для ESP32 (5 В, 1 А).
- Соединительные провода, макетная плата.
- Корпус (для финальной сборки, при установке в помещении).
Схема подключения и принцип работы
Подключение простое и состоит из трёх частей: ESP32, PIR-сенсор и реле для управления лампой.
- PIR датчик:
- VCC → 5 В ESP32.
- GND → GND ESP32.
- OUT → GPIO 27 (например).
- Реле:
- IN → GPIO 23 (управление).
- VCC → 5 В ESP32.
- GND → GND ESP32.
- Контакты реле → разрыв фазы к лампочке 220 В.
Принцип работы следующий: PIR датчик фиксирует движение и подаёт сигнал на ESP32. Микроконтроллер включает реле, подавая питание на лампу. Если в течение заданного времени движения не будет, лампа автоматически выключается.
Пример кода
Приведённый ниже код показывает, как настроить ESP32 для работы с PIR датчиком и управлением реле.
// Подключаем пины
const int pirPin = 27; // Датчик движения
const int relayPin = 23; // Реле для лампы
unsigned long lastMotionTime = 0; // время последнего движения
const unsigned long timeout = 10000; // таймаут выключения (10 секунд)
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // лампа выключена (реле разомкнуто)
}
void loop() {
int motion = digitalRead(pirPin);
if (motion == HIGH) {
Serial.println("Движение обнаружено!");
digitalWrite(relayPin, LOW); // включить лампу
lastMotionTime = millis(); // обновить время движения
}
// Проверяем таймер
if (millis() - lastMotionTime > timeout) {
digitalWrite(relayPin, HIGH); // выключить лампу
}
}
Пояснение кода
Код организован максимально просто:
- ESP32 считывает состояние PIR датчика (HIGH при движении).
- При обнаружении движения включается реле (LOW на пине управления).
- Фиксируется время последнего срабатывания.
- Если движение не фиксировалось в течение 10 секунд, ESP32 отключает реле и гасит лампу.
Значение таймера легко изменить, подбирая его под конкретные задачи. Например, для освещения в коридоре можно установить 30 секунд, а для уличного освещения — несколько минут.
А вот пример программы с веб-страницей управления
Что делает скетч: Поднимает точку доступа к сети Wi-Fi (STA), запускает встроенный HTTP-сервер ESP32. Читает сигнал от PIR-датчика, управляет реле (лампой) и автоматически выключает свет по таймеру без delay(). Показывает в веб-интерфейсе текущие состояния «PIR» и «Лампа», а также позволяет менять таймаут авто-выключения. Сохраняет таймаут в энергонезависимую память ESP32 (NVS/Preferences), чтобы он не терялся после перезагрузки.
Применение и расширение проекта
- Автоматическое освещение в прихожей или коридоре.
- Включение уличного света при движении на участке.
- Использование в офисах и общественных местах для экономии энергии.
- Добавление веб-интерфейса на ESP32 для удалённого включения и настройки таймера.
- Интеграция с MQTT и Home Assistant для сценариев «если движение вечером, включить свет».
- Дополнение датчиком освещённости, чтобы свет включался только в темное время суток.
Заключение
Мы реализовали базовый проект умного дома — автоматическое управление освещением по датчику движения PIR и ESP32. Такая система проста в сборке и программировании, но при этом значительно повышает удобство и помогает экономить электроэнергию. В дальнейшем проект можно расширить веб-интерфейсом, MQTT, графиками и интеграцией в Home Assistant.
Если вам нужен индивидуальный проект — разработка электроники, схемы, печатной платы и программного обеспечения, мы можем помочь. Мы создаём уникальные решения на базе ESP32 и разрабатываем платы под конкретные задачи. Ознакомьтесь с примерами проектов в нашем портфолио.





