Датчик освещенности BH1750 на ESP32: сборка и интеграция с Алисой
Автоматическое управление освещением — один из базовых сценариев любого умного дома. Однако стандартные датчики движения со встроенными сенсорами освещенности часто передают данные с большой задержкой или измеряют уровень света некорректно, реагируя только в момент фиксации движения.
Для плавного управления диммерами, умными лампами и электроприводами рулонных штор необходим выделенный люксметр, передающий показания в реальном времени. В данном руководстве мы соберем точный цифровой датчик освещенности на базе популярного сенсора BH1750 и микроконтроллера ESP32 (или ESP8266), прошьем его с помощью ESPHome и интегрируем в «Дом с Алисой» для создания сценариев автоматизации.
1. Подбор компонентов и схема подключения
Сенсор BH1750 (часто продается на платах GY-302) — это калиброванный цифровой датчик освещенности, который измеряет уровень освещения в люксах (лк) и передает данные по интерфейсу I2C. В отличие от аналоговых фоторезисторов, BH1750 не требует калибровки, имеет встроенный аналого-цифровой преобразователь (АЦП) и спектральную чувствительность, близкую к человеческому глазу.
Для сборки устройства нам понадобятся:
- Микроконтроллер: Плата ESP32 (например, ESP32 NodeMCU) с поддержкой Wi-Fi.
- Сенсор: Модуль BH1750.
- Соединительные провода: Jumper-кабели типа «мама-мама».
- Корпус: 3D-печатный кейс или любая подходящая монтажная коробка.
Схема подключения BH1750 к ESP32:
- VCC датчика -> 3.3V на плате ESP32 (питание датчика строго 3.3 Вольта).
- GND датчика -> GND на плате ESP32.
- SCL (шина тактирования) -> GPIO 22 (стандартный пин SCL на ESP32).
- SDA (шина данных) -> GPIO 21 (стандартный пин SDA на ESP32).
- ADD (выбор адреса I2C) -> Оставляем неподключенным (по умолчанию адрес
0x23).
2. Прошивка микроконтроллера через ESPHome
Для быстрой настройки без написания сложного кода на C++ мы будем использовать модульную систему ESPHome. Напишем YAML-конфигурацию для нашего датчика.
Создайте новый файл конфигурации в панели ESPHome:
esphome:
name: diy-light-sensor
esp32:
board: esp32dev
wifi:
ssid: "Ваше_Имя_Wi-Fi"
password: "Ваш_Пароль"
# Настройка шины I2C на стандартных пинах ESP32
i2c:
sda: 21
scl: 22
scan: true
sensor:
- platform: bh1750
name: "Освещенность в комнате"
address: 0x23
update_interval: 10s
resolution: 1.0
После компиляции и загрузки прошивки по USB (или «по воздуху» OTA) датчик подключится к вашей домашней Wi-Fi сети и начнет транслировать данные об уровне света каждые 10 секунд.
3. Интеграция в Home Assistant и проброс в Алису
После того как датчик успешно проинтегрирован в локальную систему Home Assistant, нам нужно передать его показания в облако Яндекса для работы с Алисой. Это делается через официальную интеграцию Yandex Smart Home:
- В Home Assistant добавьте созданный датчик в список экспортируемых сущностей (в файле
configuration.yamlили через графический интерфейс интеграции Yandex). - Зайдите в приложение «Дом с Алисой», нажмите
+->Устройство умного дома-> выберитеHome Assistantи обновите список устройств. - В списке ваших устройств появится новый датчик освещенности. Задайте ему имя (например, «Датчик света на окне») и укажите комнату.
Теперь Алиса умеет опрашивать показания датчика голосом: «Алиса, какая освещенность в гостиной?» — и использовать эти данные в автоматизациях.
4. Сценарии автоматизации по уровню освещенности
Локальный люксметр позволяет настроить точные и гибкие сценарии, которые сделают дом действительно умным.
Сценарий 1: Умное закрытие штор при ярком солнце (Защита от жары)
В летнее время яркое солнце перегревает комнату. Автоматика закроет рулонные шторы при превышении лимита освещенности.
- Условие (Если):
«Датчик света на окне»-> «Освещенность выше 15000 лк в течение 5 минут». - Действие (Тогда):
«Шторы в спальне»(электропривод) -> статус «Закрыть».
Сценарий 2: Мягкая подсветка при наступлении сумерек
Когда на улице темнеет, но основное освещение включать еще рано, система активирует уютную контурную подсветку.
- Условие (Если):
«Датчик света на окне»-> «Освещенность ниже 100 лк в течение 2 минут» (и при этом датчик присутствия фиксирует людей в комнате). - Действие (Тогда):
- Включить
«Светодиодная лента за телевизором». - Перевести диммер торшера на яркость
30%.
- Включить
TIP
При установке датчика на подоконнике защитите его корпус от прямого попадания капель воды при проветривании. Используйте аккуратный 3D-печатный кейс с небольшим отверстием под линзу сенсора BH1750, направленной наружу или под углом к стеклу.
5. Смежные DIY сценарии автоматизации
Этот люксметр идеально дополняет другие самодельные приборы. Например, его показания можно использовать для корректировки работы автоматической подсветки лестницы на ESP32 и WLED, блокируя включение ступеней днем. Также датчик света часто монтируют в один корпус с датчиком качества воздуха, о сборке которого рассказано в гайде по созданию датчика CO2 своими руками.
6. Заключение
Сборка собственного датчика освещенности на базе BH1750 и ESP32 под управлением ESPHome — отличный способ получить профессиональное и точное измерительное устройство за небольшие деньги. Благодаря плавной интеграции с Яндекс Алисой, вы сможете автоматизировать управление шторами и сценариями освещения, сделав ваш умный дом по-настоящему адаптивным и комфортным.
Инструкция по настройке
Сборка схемы на макетной плате
Соедините контакты датчика BH1750 с выводами I2C микроконтроллера ESP32 по схеме: VCC к 3.3V, GND к GND, SCL к GPIO22, SDA к GPIO21.
Обсуждение статьи