title: 继电器控制
date: 2026-05-04T14:22:43+08:00
lastmod: 2026-05-31T17:03:00+08:00继电器控制(RelayLight)
基于 CC2530 的 Zigbee Router 设备,集成 DS18B20 温度传感器和继电器控制。
硬件特性
- 主控:CC2530
- 供电:220V AC(Router 节点,常供电)
- 温度传感器:P1_7 连接 DS18B20 单总线数字温度传感器(GPIO 主动驱动,无需外部上拉电阻)
- 继电器控制:P0_3 输出高电平驱动 NPN 三极管闭合继电器,控制 220V 负载
功能
-
上电自动组网:Router 节点启动后自动进行 Network Formation + Steering
-
温度上报:每
report_period秒(默认 10s)读取 DS18B20 温度并上报到 Coordinator- ZCL Temperature Measurement Cluster(0x0402)
- 单位:0.01°C(int16,例如 2515 = 25.15°C)。驱动内部把 DS18B20 原始 1/16°C 值换算为 0.01°C 再交给 ZCL 属性
-
可配置上报周期:z2m UI 上直接编辑
report_period,或写制造商自定义属性ATTRID_RELAY_REPORT_PERIOD (0xF001, uint16)- 范围:5~3600 秒
- 写入立即更新 RAM + NV
-
快速切换物理开关检测:
- 设备运行时每秒记录运行时长到 NV,持续
boot_record_sec秒 - 下次开机时如果上次运行时长 <
toggle_threshold阈值,自动反转继电器状态 - 可通过 zigbee2mqtt 配置
toggle_threshold(0xF002,毫秒,默认 5000ms)和boot_record_sec(0xF003,秒,默认 10s)
- 设备运行时每秒记录运行时长到 NV,持续
-
继电器控制:接收 On/Off 命令(ON/OFF/TOGGLE),控制 P0_3 输出
-
状态同步:OnOff 标记 ACCESS_REPORTABLE;入网 15 秒后自动 JOIN_REPORT
-
状态持久化:OnOff 状态和上报周期保存到 NV
-
软件版本自动暴露:ApplicationVersion / SWBuildID / DateCode
ZCL Clusters
| Cluster | 属性 |
|---|---|
| Basic | 制造商名、型号、版本、构建信息、上报周期配置(0xF001)、快速切换阈值(0xF002)、启动记录秒数(0xF003) |
| Identify | IdentifyTime |
| On/Off | OnOff(R/Reportable) |
| Temperature Measurement | MeasuredValue(R/Reportable)、MinMeasuredValue、MaxMeasuredValue |
zigbee2mqtt 暴露
-
state-- 继电器状态(ON/OFF) -
temperature-- DS18B20 温度值(°C) -
report_period-- 温度上报周期(秒),5~3600,默认 10 -
toggle_threshold-- 快速切换阈值(毫秒),默认 5000ms -
boot_record_sec-- 启动时记录运行时长的秒数,默认 10s -
linkquality-- 信号质量
DS18B20 驱动说明
驱动针对 ZStack 协作式多任务做了非阻塞化重构:
- API 拆分为两阶段:
DS18B20_StartConversion() 发送命令后立即返回(<2ms);DS18B20_ReadResult()读取结果(<15ms)。两次调用之间通过 OSAL 定时器插入 ≥800ms 延迟,绝不忙等 - 温度单位换算:DS18B20 12-bit 原始值单位 1/16°C,驱动内部换算为 ZCL 标准的 0.01°C(
raw * 100 / 16) - 时序校准:基于 CC2530 @ 32MHz 逻辑分析仪实测,所有 1-Wire 时序参数均在 DS18B20 规范范围内
- GPIO 主动驱动:空闲时 P1_7 = OUTPUT HIGH,无需外部上拉电阻
硬件图纸
PCB_PCB_iot_board_LightRouterV3_2026-05-04.pdf
SCH_iot_board_LightRouterV3_2026-05-04.pdf
固件下载
RelayLight.hex(Router 节点,Flash 236.3 KB / RAM 7.2 KB)