4. 创建第一个Matter over Thread智能灯
本章的目标非常明确:在Silicon Labs EFR32MG24开发板上,把Matter SDK自带的Light示例工程编译成可烧录固件,烧录进芯片,并完成Thread配网,最终让这盏“灯”被Matter生态中的控制器识别与控制。整个过程涉及三个关键环节:工程构建、固件烧录、Thread网络配网。理解这三者的关系,是后续所有Matter开发的基础。
一、开发环境与工程准备
在开始之前,需要确认开发环境已经就绪。推荐使用Simplicity Studio 5(SSv5)作为集成开发环境,它内置了Gecko SDK(GSDK)和Matter扩展包。安装时需勾选“Matter”和“Thread”相关组件。EFR32MG24开发板(如BRD4186A/BRD4187A)通过USB连接后,SSv5会自动识别并显示板卡信息。
Matter Light示例工程位于GSDK的Matter示例目录中,通常路径为Matter → Light Over Thread。创建工程时,SSv5会基于所选开发板自动生成对应的工程配置,包括引脚映射、时钟设置和无线射频参数。这里需要特别注意的是,Matter over Thread的示例工程默认使用Thread作为传输层,而不是Wi-Fi或以太网,因此工程中会包含OpenThread协议栈。
二、编译工程与关键配置
工程创建完成后,直接点击“Build”即可开始编译。但在此之前,有几个关键配置值得检查:
- 设备类型(Device Type):Light示例默认配置为“Dimmable Light”,即支持亮度调节的灯。如果需要更简单的On/Off Light,可以在
ZCL配置中调整。 - Thread设备角色:默认配置为“Sleepy End Device”或“End Device”,具体取决于示例。对于常供电的灯,建议使用“End Device”并保持接收窗口常开,以确保响应及时。
- 配对码与鉴别器:Matter使用11位配对码(Passcode)和12位鉴别器(Discriminator)进行设备身份识别。这些值在工程中通常由
CHIPProjectConfig.h或MatterConfig定义,示例工程会生成默认值,但量产时需要唯一化。
编译成功后,会在工程的Binaries目录下生成.s37或.hex格式的固件文件。这个文件就是后续烧录到EFR32MG24中的完整镜像。
三、烧录固件到EFR32MG24
烧录可以通过SSv5自带的“Flash Programmer”工具完成,也可以使用命令行工具commander。在SSv5中,右键工程选择“Flash to Device”即可自动完成擦除、烧录和校验。烧录过程中,开发板上的LED会闪烁,表示正在写入Flash。
烧录完成后,按下开发板的复位按钮,设备会重新启动。此时,如果使用串口终端(如115200波特率)连接开发板的虚拟串口,可以看到Matter协议栈的启动日志,包括设备初始化、Thread协议栈启动、以及等待配网的提示信息。这些日志是判断设备是否正常启动的重要依据。
四、Thread配网与Matter调试
设备启动后,处于“待配网”状态。此时需要使用Matter控制器(如Apple Home、Google Home、Amazon Alexa,或开源的chip-tool)来完成配网。配网的本质是:控制器通过BLE(蓝牙低功耗)与设备建立临时连接,将Thread网络的凭据(Network Key、PAN ID、Channel等)下发给设备,设备随后加入Thread网络,并通过IPv6与控制器通信。
以chip-tool为例,配网命令通常如下:
chip-tool pairing ble-thread 1 hex:0e080000000000010000000300001335060004001fffe00208... 20202021 3840
其中,1是节点ID,hex:...是Thread网络的Operational Dataset(包含网络密钥、PAN ID、通道等),20202021是配对码,3840是鉴别器。配网成功后,chip-tool会输出“Device commissioning completed with success”之类的提示。
配网完成后,可以通过chip-tool发送控制命令,例如:
chip-tool onoff toggle 1 1
这条命令会切换节点1上端点1的On/Off属性,从而控制灯的亮灭。如果开发板上的LED随之变化,说明整个链路——从Matter应用层、Thread网络层到物理设备——已经打通。
五、常见问题与排查思路
在实际操作中,最常遇到的问题集中在配网阶段。如果chip-tool提示“Failed to establish BLE connection”,通常是因为设备已经被配网过,或者BLE广播已停止。此时需要先执行“Open Commissioning Window”命令,让设备重新进入可配网状态。另一个常见问题是Thread网络凭据不匹配,导致设备无法加入网络。此时应检查控制器下发的Operational Dataset是否与边界路由器所在的Thread网络一致。
如果配网成功但控制无响应,需要确认Matter端点(Endpoint)和集群(Cluster)的映射是否正确。Light示例通常使用端点1,包含On/Off集群和Level Control集群。使用chip-tool时,命令中的端点号必须与固件中的配置一致。
整个流程的核心逻辑可以概括为:工程构建产出固件,固件烧录让设备具备Matter能力,Thread配网让设备接入网络,控制器通过Matter协议实现最终控制。这四个环节环环相扣,任何一环出错都会导致最终无法控制。理解每个环节的输入、输出和判断依据,是快速定位问题的关键。