Датчик освещенности BH1750 на ESP32: сборка и интеграция с Алисой

Датчик освещенности BH1750 на ESP32: сборка и интеграция с Алисой

Автоматическое управление освещением — один из базовых сценариев любого умного дома. Однако стандартные датчики движения со встроенными сенсорами освещенности часто передают данные с большой задержкой или измеряют уровень света некорректно, реагируя только в момент фиксации движения.

Для плавного управления диммерами, умными лампами и электроприводами рулонных штор необходим выделенный люксметр, передающий показания в реальном времени. В данном руководстве мы соберем точный цифровой датчик освещенности на базе популярного сенсора BH1750 и микроконтроллера ESP32 (или ESP8266), прошьем его с помощью ESPHome и интегрируем в «Дом с Алисой» для создания сценариев автоматизации.


1. Подбор компонентов и схема подключения

Сенсор BH1750 (часто продается на платах GY-302) — это калиброванный цифровой датчик освещенности, который измеряет уровень освещения в люксах (лк) и передает данные по интерфейсу I2C. В отличие от аналоговых фоторезисторов, BH1750 не требует калибровки, имеет встроенный аналого-цифровой преобразователь (АЦП) и спектральную чувствительность, близкую к человеческому глазу.

Для сборки устройства нам понадобятся:

  1. Микроконтроллер: Плата ESP32 (например, ESP32 NodeMCU) с поддержкой Wi-Fi.
  2. Сенсор: Модуль BH1750.
  3. Соединительные провода: Jumper-кабели типа «мама-мама».
  4. Корпус: 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:

  1. В Home Assistant добавьте созданный датчик в список экспортируемых сущностей (в файле configuration.yaml или через графический интерфейс интеграции Yandex).
  2. Зайдите в приложение «Дом с Алисой», нажмите + -> Устройство умного дома -> выберите Home Assistant и обновите список устройств.
  3. В списке ваших устройств появится новый датчик освещенности. Задайте ему имя (например, «Датчик света на окне») и укажите комнату.

Теперь Алиса умеет опрашивать показания датчика голосом: «Алиса, какая освещенность в гостиной?» — и использовать эти данные в автоматизациях.


4. Сценарии автоматизации по уровню освещенности

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

Сценарий 1: Умное закрытие штор при ярком солнце (Защита от жары)

В летнее время яркое солнце перегревает комнату. Автоматика закроет рулонные шторы при превышении лимита освещенности.

  • Условие (Если): «Датчик света на окне» -> «Освещенность выше 15000 лк в течение 5 минут».
  • Действие (Тогда): «Шторы в спальне» (электропривод) -> статус «Закрыть».

Сценарий 2: Мягкая подсветка при наступлении сумерек

Когда на улице темнеет, но основное освещение включать еще рано, система активирует уютную контурную подсветку.

  • Условие (Если): «Датчик света на окне» -> «Освещенность ниже 100 лк в течение 2 минут» (и при этом датчик присутствия фиксирует людей в комнате).
  • Действие (Тогда):
    1. Включить «Светодиодная лента за телевизором».
    2. Перевести диммер торшера на яркость 30%.

TIP

При установке датчика на подоконнике защитите его корпус от прямого попадания капель воды при проветривании. Используйте аккуратный 3D-печатный кейс с небольшим отверстием под линзу сенсора BH1750, направленной наружу или под углом к стеклу.


5. Смежные DIY сценарии автоматизации

Этот люксметр идеально дополняет другие самодельные приборы. Например, его показания можно использовать для корректировки работы автоматической подсветки лестницы на ESP32 и WLED, блокируя включение ступеней днем. Также датчик света часто монтируют в один корпус с датчиком качества воздуха, о сборке которого рассказано в гайде по созданию датчика CO2 своими руками.


6. Заключение

Сборка собственного датчика освещенности на базе BH1750 и ESP32 под управлением ESPHome — отличный способ получить профессиональное и точное измерительное устройство за небольшие деньги. Благодаря плавной интеграции с Яндекс Алисой, вы сможете автоматизировать управление шторами и сценариями освещения, сделав ваш умный дом по-настоящему адаптивным и комфортным.

Инструкция по настройке

1

Сборка схемы на макетной плате

Соедините контакты датчика BH1750 с выводами I2C микроконтроллера ESP32 по схеме: VCC к 3.3V, GND к GND, SCL к GPIO22, SDA к GPIO21.

Дмитрий Соколов
Автор статьи

Дмитрий Соколов

Инженер по безопасности & загородным системам
8+ лет в инженерных сетях

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

Обсуждение статьи