10分钟用ESP32做出Zigbee光照传感器:Arduino零基础从烧录到入网

📅 2026/8/27 4:50:05
10分钟用ESP32做出Zigbee光照传感器:Arduino零基础从烧录到入网
10分钟用ESP32做出Zigbee光照传感器Arduino零基础从烧录到入网【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32把一份官方示例固件烧进ESP32-C6它就变成一台Zigbee光照传感器接上光敏电阻自动加入Zigbee网络持续上报lux光照值到智能家居平台。从接线到在面板上看到数据全程10分钟BOM成本不到30元。你能得到什么烧录完成后你得到的是一台符合Zigbee HA规范的标准照度终端设备End Device变化才上报、平时可休眠的低功耗角色核心特性有三个即插即识别设备实现ZCL光照测量集群Cluster ID 0x0400Zigbee2MQTT和Home Assistant会自动把它认成标准的illuminance_sensor无需写任何平台侧代码。变化触发上报默认原始光照值变化超过1000才上报一次平时安静待命网络流量和功耗都很低。BOOT键双功能短按立即上报一次当前值方便验证长按3秒执行工厂重置随时可以重新配网。准备物料3分钟烧录进板子硬件清单如下接线方式是光敏电阻与10KΩ下拉电阻分压后送进ADC物料规格作用ESP32-C6 或 ESP32-H2 DevKit支持Zigbee 3.0主控光敏电阻 10KΩ电阻模拟分压输出光照输入带数据线的USB线5V供电供电兼烧录接线3V3接模块VCC、GND接GND、GPIO6接分压输出OUT示例中illuminance_sensor_pin 6改这个变量即可换引脚。环境配置按顺序做四步安装ESP32板卡支持文件 首选项在附加开发板管理器网址里填入 Espressif 的板包地址https://espressif.github.io/arduino-esp32/package_esp32_index.json然后在开发板管理器里搜索 esp32 并安装。打开仓库里的示例 Zigbee_Illuminance_Sensor.ino仓库地址https://gitcode.com/GitHub_Trending/ar/arduino-esp32clone 后即可在 examples 目录找到在工具菜单确认四个选项开发板ESP32C6 Dev Module或 ESP32H2 Dev ModuleZigbee模式Zigbee ED (end device)分区方案Zigbee 4MB with spiffsUSB CDC On BootEnabled串口监视器用选端口点上传。核心代码只讲三处整份 示例代码 不到150行真正干活的是下面三段。1. 端点注册 上报策略。setup()里把传感器端点挂进Zigbee核心然后设定变化才报的规则Zigbee.addEndpoint(zbIlluminanceSensor); // 把光照端点注册进Zigbee核心 zbIlluminanceSensor.setReporting(1, 0, 1000); // 原始值变化≥1000才上报最小间隔1秒注意与Zigbee2MQTT配网后这个策略大概率被平台侧的默认配置覆盖想改上报节奏要去Z2MQTT那边调。2. ADC原始值 → Zigbee标准光照值。这是最容易踩坑的换算示例把它放在一个1秒循环的任务里int raw analogRead(illuminance_sensor_pin); // 读12位ADC0-4095 int zraw map(raw, 0, 4095, 0, 50000); // 映射到Zigbee光照范围 zbIlluminanceSensor.setIlluminance(zraw); // 注意传的是raw值不是lux上报给网络的是zraw0~50000网关侧再用规范公式lux 10^(zraw/10000) - 1还原成lux。示例里map()的参数就是校准点——拿到你的实际传感器后对着标准光照仪调这两组参数即可。3. 工厂重置。loop()里监听BOOT键长按3秒触发Zigbee.factoryReset(); // 清掉网络凭据重新进入可配网状态这就是配网失败怎么救的答案不用拆机按一下就行。从入网到HA出数最短路径传感器自己是终端设备必须有协调器Coordinator组网并保管网络密钥的设备才能入网。最快的两条路现成协调器小米多模网关、刷了协调器固件的ZBDongle-P等重启后60秒内网络默认开放直接上电传感器等入网。自制协调器再找一块C6/H2烧 Zigbee_Gateway.ino 当协调器配合Zigbee.openNetwork(60)手动开放入网Zigbee库文档 有完整API说明。验证步骤传感器上电串口监视器115200会先打印Zigbee started successfully!再等Network joined successfully!和短地址Short Address。短按BOOT立即看到raw analog value / lux value连续打印说明采集链路通了。Zigbee2MQTT 侧设备上线后自动创建illuminance_sensor实体Home Assistant 里走设置 设备与服务 添加集成 Zigbee2MQTT仪表板即可显示光照曲线。想验证变化触发逻辑用手掌遮挡光敏电阻再移开lux值和上报都会明显跳动。踩坑清单现象与解法现象一直打印Connecting to network不结束。解法协调器默认只在重启后60秒开放入网先确认协调器开放了网络传感器侧打开工具 Erase All Flash Before Sketch Upload Enabled再重烧一次。现象编译报错 Zigbee end device mode is not selected。解法工具 Zigbee模式没选Zigbee ED (end device)选上后重新编译。现象lux读数与肉眼感受对不上。解法map()只是演示性映射按实际传感器标定曲线改参数另外注意 示例README 提到Zigbee2MQTT用的是不带-1的换算式两边数值会差1 lux属正常现象。现象烧录失败或COM口不识别。解法换一根带数据线的USB线很多廉价线只有供电线仍失败就调低串口烧录速度。现象想上电池供电。当前示例是常亮主供电写法参考 温湿度睡眠传感器示例 的先上报、等确认、再esp_deep_sleep_start()模式改写即可做到分钟级唤醒、微安级待机。ESP32-C6/H2 加一个光敏电阻就是能直接进Zigbee2MQTT生态的照度节点协议栈、端点封装、配网流程全部由 Zigbee库 代劳。下一步建议把map()参数换成你的标定曲线、改造成深睡上报版、或照着 光照端点API文档 增加第二个测量端点。核心示例代码libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/Zigbee_Illuminance_Sensor.ino光照端点API文档docs/en/zigbee/ep_illuminance_sensor.rstZigbee库总览docs/en/zigbee/zigbee.rst低功耗参考示例libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/Zigbee_Temp_Hum_Sensor_Sleepy.ino示例说明与故障排除libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/README.md【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考