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

Цифровой датчик температуры и влажности DHT11

Измерение относительной влажности в пределах 20 ... 90 %Точность измерения влажности ± 5,0 %RHИ..

59.29грн.

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

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

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

Двойная шестерня для зубчатого ремня на 20 зубьев под ось 5 мм

Двойная шестерня для зубчатого ремня на 20 зубьев под ось 5 мм

Сдвоенная шестерня для передачи крутящего момента с одного вала на другой.Применяется для разделения..

97.08грн.

Радиатор 25х23х16мм

Радиатор 25х23х16мм

Радиатор алюминиевый для транзисторов, симисторов ... с установкой на печатную платуОкрашенный в чер..

17.24грн.

Мини выключатель 250 В 3 А

Мини выключатель 250 В 3 А

Прикольный маленький выключатель питания, для врезки в монтажную панель или в корпус электронного ус..

12.88грн.