ESPHome 光照传感器实战教程:5 步让 ESP32 根据环境光自动开关灯
ESPHome 光照传感器实战教程5 步让 ESP32 根据环境光自动开关灯【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome天黑回家走廊灯已经亮了清晨出门灯自动关掉——这就是本节要帮你搭出的东西用 ESPHome 光照传感器BH1750 一块 ESP32约 10 分钟完成配置全程只写 YAML不写一行 C。成果速览做完之后你能得到什么这套方案由三部分组成一个 I2C 光照传感器负责看天色ESP32 负责做决定一路 PWM 输出驱动 LED 灯带负责执行。做完后你会看到环境光低于 300 lx 并持续 10 秒灯自动亮起从采样到点亮延迟 ≤ 5 秒环境光高于 500 lx 并持续 30 秒灯自动熄灭不会在阈值边缘来回闪Home Assistant 里多出一个sensor.室内光照度单位 lx可画曲线、配任意场景整机电流约 80~100 mA含传感器灯灭时待机仅十几 mA如果你觉得延迟 5 秒内的自动开关灯值得做往下看。动手前清单缺什么先补齐这一节帮你避免 90% 的装不上、扫不到问题。必须项项目说明ESP32 开发板NodeMCU-32S / WROOM 模组均可需 1 路空闲 GPIO 做 PWMBH1750 光照传感器模块I2C 接口工作电压3.3V地址固定 0x23Python 3.10用于运行 ESPHome CLIUSB 数据线能传数据的线纯充电线不行可选项项目说明4.7KΩ 上拉电阻多数 BH1750 小模块已内置裸芯片才需要3~10W LED 灯带 三极管/MOS 驱动直接点 5mm 小灯珠可先用电流限制电阻过渡Home Assistant想看曲线、远程关断时再装本文不依赖它安装 ESPHomepip install esphomeESPHome 是一个配置文件驱动固件的开源系统你只写 YAML它负责生成 C 并交叉编译出固件源码在 esphome/。实施路线5 个里程碑跑通全流程每个里程碑固定四步目标 → 操作 → 最小配置 → 验证。Step 1接线并确认传感器能被扫到目标让 ESP32 的 I2C 总线上出现 BH1750。操作四线对插注意别接反反了会烧芯片BH1750 VCC → ESP32 3V3 BH1750 GND → ESP32 GND BH1750 SDA → ESP32 GPIO21 BH1750 SCL → ESP32 GPIO22最小配置smart_light.yamlesphome: name: smart-light esp32: board: nodemcu-32s logger: i2c: sda: GPIO21 scl: GPIO22 scan: True验证烧录后打开日志esphome logs smart_light.yaml出现[I][i2c] Scanning I2C bus...后应能看到[I][i2c] Found new device BH1750 0x23。看不到先看避坑手册第 1 条。Step 2接入光照传感器目标让 ESP32 每 5 秒上报一次环境照度lux。BH1750 组件已内置在 ESPHome 里esphome/components/bh1750/默认 I2C 地址 0x23、单位 lx直接声明即可sensor: - platform: bh1750 name: 室内光照度 id: ambient_light update_interval: 5s accuracy_decimals: 1验证重新esphome run smart_light.yaml日志里周期性打印Illuminance...lx。对着传感器手挡一下数值应明显下降。想深挖驱动逻辑看 bh1750.cpp它每轮先粗测再按亮度自动切换高精度模式比很多第三方库更省心。Step 3加一路 PWM 输出和灯光对象目标把开关灯这个动作落到物理电路上。ESP32 的 LEDC硬件 PWM输出默认频率 1kHzesphome/components/ledc/人眼已感知不到闪烁适合做调光output: - platform: ledc id: led_output pin: GPIO4 frequency: 1kHz light: - platform: monochromatic name: 智能主灯 id: main_light output: led_output default_transition_length: 1s验证在 Home Assistant 或网页控制台手动开关智能主灯LED 应平滑渐变亮/灭约 1 秒过渡而非啪地跳变。Step 4写阈值自动化实现真正的无人值守目标天黑自动开、天亮自动关不再碰任何开关。ESPHome 的传感器自带事件触发器sensor 组件在设备本地判断不依赖网络断网也能工作。用两个阈值做滞回是防止闪跳的关键sensor: - platform: bh1750 name: 室内光照度 id: ambient_light update_interval: 5s on_value: below: 300 for: 10s then: - light.turn_on: id: main_light on_value: above: 500 for: 30s then: - light.turn_off: id: main_light验证用手掌完全遮住传感器约 10~15 秒后灯自动亮起移开手约 30~35 秒后自动熄灭。整个过程 Home Assistant 离线也能复现说明判断发生在设备端。Step 5给读数加滑动平均去掉毛刺目标传感器偶发跳变不再误触发开关灯。ESPHome 的传感器滤波链在 filter.h 中实现sliding_window_moving_average用 5 个采样点求平均单点毛刺会被摊平sensor: - platform: bh1750 name: 室内光照度 id: ambient_light update_interval: 5s filters: - sliding_window_moving_average: window_size: 5 send_every: 3 on_value: below: 300 for: 10s then: - light.turn_on: id: main_light on_value: above: 500 for: 30s then: - light.turn_off: id: main_light验证用esphome logs观察Illuminance输出数值应平滑变化快速扫过一片阴影不再出现0.5 → 480 → 320这类孤立跳点。原理速览它为什么不用联网也能开关灯可以把整套逻辑想象成楼道声光控开关传感器是耳朵自动化规则是大脑里的够响且持续 3 秒才开灯那条铁律LED 是灯本身。区别在于这里全部跑在 ESP32 芯片里——每 5 秒采一次数本地比较阈值满足条件就直接拉高 PWM 占空比。Home Assistant 只是旁观者断网、HA 宕机都不影响天黑开灯这件事。验证与对比默认配置 vs 优化后指标直接默认配置本文优化后采样间隔update_interval60s5s开灯响应延迟最长约 60s≤ 10s含 10s 确认窗口数据毛刺直接上报原始值5 点滑动平均阈值边界行为单一阈值易来回触发300/500 lx 双阈值滞回 for延时灯光变化瞬间跳变1s 渐变无视觉刺眼避坑手册最容易被坑的 3 个地方坑 1日志里找不到 0x23 设备现象i2c: scan后输出No new addresses available或扫到的是别的地址。原因SDA/SCL 接反、VCC 接到了 5VBH1750 是 3.3V 器件、或模块的供电地没和 ESP32 共地。解法先断电检查四线确认 VCC 在 3V3 引脚上模块 GND 与开发板 GND 相连仍不行时给i2c显式加freq: 50kHz部分长线缆下默认 100kHz 不稳定i2c: sda: GPIO21 scl: GPIO22 freq: 50kHz scan: True坑 2灯在阈值附近疯狂开/关现象傍晚光线缓慢变化时灯每几分钟跳一次。原因开、关用了同一个阈值光照在临界值两侧抖动每抖一次就触发一次。解法拉开两个阈值形成滞回区间开灯 300 lx、关灯 500 lx再各加for确认延时抖动根本积累不到触发时长on_value: below: 300 for: 10s then: - light.turn_on: id: main_light on_value: above: 500 for: 30s then: - light.turn_off: id: main_light坑 3PWM 调光时灯珠低频闪烁现象侧着看灯带暗度调低时能看到 50Hz 左右的闪烁拍照出现条纹。原因PWM 频率太低肉眼对占空比下降最敏感。解法ESP32 的 LEDC 频率提到 1kHz 以上即可默认值已经合适若你手改过低改回output: - platform: ledc id: led_output pin: GPIO4 frequency: 1kHz收尾一句话总结一个 I2C 传感器 两个阈值 一路 PWM5 个 Step 就能让灯自己看天色干活。下一步行动把below: 300改成你房间实测的入夜照度傍晚拿手机 lux 计类 App 对照读 10 分钟然后接入 Home Assistant 的light实体给家人留一个手动覆盖的余地。下期预告用 ESP32 的ultrasonic或 PIR 组件做人来灯亮、人走灯灭和本文的光照自动化组合成完整的走廊方案。【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →