资讯动态

30 分钟用 ESP32-C6 做出低功耗 Zigbee 光照传感器:完整入门教程

发布时间:2026/9/10 16:30:48 来源:尧图企业网站定制
30 分钟用 ESP32-C6 做出低功耗 Zigbee 光照传感器完整入门教程【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32走廊的灯总在需要时不亮Wi-Fi 传感器又太费电懒得装。ESP32 Zigbee 光照传感器是个折中解。本教程用 ESP32-C6/H2 加一颗 GL5528 光敏电阻做出低功耗光照传感器。接线、烧录、入网全程约 30 分钟。成品能自动接入 Zigbee 网络并同步到 Home Assistant。先看你将得到什么动手前先对齐预期标准光照传感器端点按 Zigbee Home Automation 规范以扩展光照传感器身份上报数值终端设备End Device即不替别人转发数据、可以睡觉的节点形态入网后随时休眠配合深度睡眠功耗能压到微安量级可控的上报策略最快 1 秒一次最慢 300 秒一次变化量达到 1000 才上报平台接入经 Zigbee2MQTTHome Assistant 自动识别为 illuminance_sensor复用官方示例源码在仓库 libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/你只需改引脚定义开跑前清单1. 备齐硬件组件规格要求推荐型号主控支持 Zigbee 3.0 协议栈ESP32-C6-DevKitM-1 / ESP32-H2-DevKitM-1光照传感模拟输出型GL5528 光敏电阻 10kΩ 下拉电阻接 GPIO6电源3.3V 稳定输出开发期 USB 供电部署期纽扣电池如 CR2032辅料-带数据线的 USB 线、杜邦线接线很简单3V3 接 VCCGND 接 GNDGPIO6 接传感器 OUT10kΩ 下拉电阻另一端接 GND。2. 配置开发环境在 Arduino IDE 首选项的附加开发板管理器网址中填入官方 ESP32 板索引地址再到开发板管理器里安装 esp32 支持包。在工具 开发板中选择ESP32C6 Dev Module或ESP32H2 Dev Module。将Zigbee 模式设为Zigbee ED (end device)。终端设备没有转发功耗整机能随时休眠这是低功耗的根源。分区方案选Zigbee 4MB with spiffs。把USB CDC On Boot设为 Enabled串口监视器才有日志输出。打开示例Zigbee 库随板级支持包附带示例菜单里搜Zigbee_Illuminance_Sensor。警告使用带数据线的 USB 线。只有供电功能的线刷不进固件这是新手最常被卡住的一步。三步跑通第一步烧录固件完成 Zigbee 终端设备配网Zigbee 网络需要协调器Coordinator即网络管理者来维持组网。商用网关小米多模网关、SONOFF ZBDongle-P 等可以或用第二块 C6/H2 自建。协调器像小区物业重启后默认关门先让它在程序里开放一段时间入网再带人进场。把示例刷进传感器板。初始化在setup()函数里完成核心是这几行zbIlluminanceSensor.setManufacturerAndModel(Espressif, ZigbeeIlluminanceSensor); zbIlluminanceSensor.setPowerSource(ZB_POWER_SOURCE_MAINS); // 声明为市电供电 zbIlluminanceSensor.setMinMaxValue(0, 50000); // 量程 0-100000 lux Zigbee.addEndpoint(zbIlluminanceSensor); // 注册光照端点 if (!Zigbee.begin()) { ESP.restart(); } // 启动 Zigbee失败则重启 while (!Zigbee.connected()) { delay(100); } // 等待入网成功串口监视器用 115200 波特率打开。先出现端点注册和启动成功的信息接着一串点号滚动是在等待入网。成功后串口会打出Network joined successfully字样和一行 Short Address。这是协调器分配给设备的地址形如 0x5A3B记下来后面排查问题用得上。第二步读懂光照数值光照 ADC 转 lux 公式ADC模数转换器把模拟电压变成数字的部件在这里读 12 位范围 0-4095。示例做两级转换先把原始值映射到 ZCL 标准范围 0-50000再按 ZCL 规范公式算出 lux。int raw_adc analogRead(6); // ADC 原始值 0-4095 int zcl_raw map(raw_adc, 0, 4095, 0, 50000); // 映射到 ZCL 标准值 int lux round(pow(10, (zcl_raw / 10000.0)) - 1); // lux 10^(raw/10000) - 1走一个具体数值ADC 原始值 2048半量程映射后约 25000代入公式得 10^2.5 - 1约 315 lux接近白天室内亮度。原始值 0 是全黑4095 对应约 99999 lux相当于正午直射阳光。光敏电阻是不撒谎的传感器捂黑就是黑没有例外。但每颗管子特性略有差异所以要用 map 的两个范围参数做线性校准。在全黑和强光环境各读一次调整映射区间让读数贴合真实光强。上报给网络的始终是 ZCL 标准值lux 只是给你自己核对用的。第三步把功耗压下来低功耗上报间隔设置终端设备的低功耗来自两处上报策略和睡眠。上报策略用setReporting(最小间隔, 最大间隔, 变化阈值)设置典型低功耗组合如下// 需在 Zigbee.begin() 之后调用最小 1 秒最大 300 秒变化量 1000 才上报 zbIlluminanceSensor.setReporting(1, 300, 1000);三个参数分工明确1 秒下限防止大变化时刷屏300 秒上限让无变化时也能每 5 分钟发一次心跳变化量小于 1000 不值得上报。这样网络一天只活跃几次。提示Zigbee2MQTT 这类网关配网时往往会用自己的默认策略覆盖上报参数。入网后观察一下实际节奏再调。更深处是睡眠。示例本体是每秒醒来读一次数仍有功耗。要更进一步参考官方 Zigbee_Temp_Hum_Sensor_Sleepy 示例它是 sleepy 传感器周期性醒来上报后回到深度睡眠这是电池供电的模板。翻车急救包卡住了先查这张表症状处理串口一直是点号没有入网成功检查协调器入网窗口是否开放把工具 Erase All Flash Before Sketch Upload设为 Enabled擦除后重新刷入再配网ADC 恒 0 或恒 4095开路或短路。检查光敏电阻与下拉电阻接线确认 GPIO6 没有接到冲突引脚lux 读数系统性偏高或偏低重新校准 map() 区间在全黑、强光两种环境各读一次修正转换参数想退出旧网络重新配网长按 BOOT 键 3 秒固件执行工厂重置并重启上电即可重新入网接进你的智能家居接入 Home Assistant 的最小路径三步协调器连电脑安装并运行 Zigbee2MQTT在它的网页界面打开入网窗口。传感器上电。入网后 Zigbee2MQTT 自动识别为 illuminance_sensor光照值经 MQTT 流出。Home Assistant 的 MQTT 集成会自动创建实体拖到仪表板就能看曲线。再往前一步加温湿度参考 Zigbee_Temp_Hum_Sensor_Sleepy既是 sleepy 传感器也是深度睡眠省电的模板网络升级固件用 Zigbee_OTA_Client 示例传感器不用拆机就能升级接入 Matter仓库里有 Matter 库同一颗 C6 也能做 Matter 光照或温控设备资源汇总完整示例代码Zigbee_Illuminance_Sensor.ino示例说明与故障排查README.md官方 Zigbee 文档docs/en/zigbee/含光照传感器端点参考ESP32-C6 数据手册可在乐鑫官网检索下载【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价