Умный дом #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 разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Разработка электроники и печатных плат в Украине

Разработка электроники и печатных плат в Украине

Ищете опытного инженера для разработки электроники, IoT-устройств или печатных плат в Украине? М..

Лічильник води WiFi 1/4" DN8

Лічильник води WiFi 1/4" DN8

Габариты 82x57x34 мм..

1207.42грн.

Набор перемычек (мама-мама) 40шт 10см

Набор перемычек (мама-мама) 40шт 10см

Набор соединительных проводов для соединения плат контроллера с периферией без пайки. Подходят под с..

50.09грн.

Модуль 4 реле I2C на DIN-рейку без корпуса

Модуль 4 реле I2C на DIN-рейку без корпуса

Плата продаётся без коробкиМодуль 4-х релейных выходов I2C для построения домашней или промышленной ..

766.68грн.

Ультразвуковой датчик расстояния HC-SR04 для Arduino, ESP32, STM32

Ультразвуковой датчик расстояния HC-SR04 для Arduino, ESP32, STM32

HC-SR04 — это популярный ультразвуковой датчик для точного измерения расстояния в диапазоне от 2 до ..

62.06грн.