Розумний дім #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 при виявленні руху).
- При спрацюванні реле вмикає лампу.
- Фіксується час останнього руху.
- Якщо рух не виявляється протягом 10 секунд, реле вимикається, і лампа гасне.
Тривалість затримки легко змінити. Для коридору достатньо 30 секунд, а для вуличного освітлення можна встановити кілька хвилин.
А ось приклад програми з веб-сторінкою керування
Що робить скетч
- Підключається до мережі Wi-Fi у режимі STA і запускає вбудований HTTP-сервер ESP32.
- Зчитує сигнал від PIR-датчика, керує реле (лампою) та автоматично вимикає світло за таймером без виклику
delay(). - Показує у веб-інтерфейсі поточні стани «PIR» і «Лампа», а також дозволяє змінювати таймаут авто-вимкнення.
- Зберігає таймаут в енергонезалежній пам’яті ESP32 (NVS/
Preferences), щоб він не втрачався після перезавантаження.
Застосування та розширення проєкту
- Автоматичне освітлення в передпокої або коридорі.
- Увімкнення вуличного світла при русі на ділянці.
- Використання в офісах і громадських місцях для економії енергії.
- Додавання веб-інтерфейсу на ESP32 для дистанційного керування і налаштування таймера.
- Інтеграція з MQTT і Home Assistant для складних сценаріїв.
- Комбінація з датчиком освітленості, щоб світло вмикалось лише в темний час доби.
Висновок
Ми реалізували базовий проєкт розумного дому — автоматичне керування освітленням за допомогою датчика руху PIR і ESP32. Система проста у складанні та програмуванні, але суттєво підвищує комфорт і дозволяє економити електроенергію. Далі цей проєкт можна розширити веб-інтерфейсом, MQTT, графіками і повною інтеграцією з Home Assistant.
Якщо вам потрібен індивідуальний проєкт на ESP32 — розробка електроніки, схеми, друкованої плати та програмного забезпечення, ми можемо допомогти. Ми створюємо унікальні рішення й виготовляємо плати під завдання клієнтів. Ознайомтеся з прикладами проєктів у нашому портфоліо.





