Умный дом #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 и разрабатываем платы под конкретные задачи. Ознакомьтесь с примерами проектов в нашем портфолио.

<< Проекты << Все товары >> Статьи, уроки >>

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Умный дом 1. Постановка задачи.

Умный дом 1. Постановка задачи.

Умный дом 1. Постановка задачи. Каждый человек представляет себе свой умный дом в соответствии со с..

Сенсорные входы ESP32

Сенсорные входы ESP32

Привет друзья! Тема статьи: ESP32 сенсорные входы Вы наверное уже слышали, что у контроллера ESP32 ..

Создание простого таймера на ESP32: пример периодического вызова функции

Создание простого таймера на ESP32: пример периодического вызова функции

Создание простого таймера на ESP32: пример периодического вызова функции При разработке проектов ..

Модуль усилителя 2 х 3 Вт

Модуль усилителя 2 х 3 Вт

Миниатюрный стерео усилитель звуковой частоты класса D на основе микросхемы PAM8403Мощность 2 х..

29.19грн.

SIM800 Arduino автоматические команды

SIM800 Arduino автоматические команды

Привет друзья! В прошлом видео мы разобрали ручное управление GSM-модулем набирая команды в мониторе..