使用ESP32-C6制作Matter协议智能灯泡:从环境搭建到接入网络的全流程指南
导言
Matter是一种开放的、跨平台的物联网(IoT)连接标准和协议,旨在解决智能家居设备之间的互通性和互操作性问题。Matter得到了众多领先的科技公司的支持,如Google、Apple、Amazon、微软等。
ESP32-C6是乐鑫科技推出的一款支持wifi6、Bluetooth5(LE)、zigbee、thread协议的芯片,具有极低的功耗和高性价比,非常适合用于matter设备中,本文将使用FireBeetle ESP32-C6制作一个智能灯泡,并接入matter网络中。
通过本文你将学到以下知识
- Matter的优势及网络框架
- 如何在Ubuntu20搭建ESP-IDF、ESP-Matter环境
- 如何给ESP32-C6烧录代码
- 如何将ESP32-C6添加到Matter网络
- 如何测试控制ESP32-C6
第一部分:Matter的优势及网络架构
外网网关
目前一些智能设备厂商采用云端智能化解决方案,所有设备均需要与云端服务器通讯。信息传递路径如下:按下开关 - 路由器转发信息到云端服务器 - 云端服务器处理分发 - 路由器将信息转发给灯 - 灯泡点亮。这种方式存在一些问题,如数据传输时间长、对外网依赖度高,若无外网,所有智能化控制将失效。
本地网关为了解决外网网关的问题,智能设备厂商开发出了本地网关,控制信息可以不经过外网就可以达到对应设备,提高了稳定性和安全隐私性。信息传递路径如下:按下开关 - 本地网关处理分发 - 灯泡点亮。但是由于各大厂商协议并不相同,导致只能购买同一家生态链的智能家居,造成了智能设备的碎片化。
Matter网关
Matter的网络架构同本地网关类似,但是Matter解决了设备碎片化的问题,只要支持Matter协议的设备都可以接入,不再区分设备厂商。
第二部分:环境搭建
使用硬件
将WS2812连接到FireBeetle ESP32-C6的IO8
FireBeetle ESP32-C6 硬件资源
环境搭建- 系统使用的是Ubuntu20(作为Matter网关,负责接收和下发Matter数据)
- 国内用户需让Ubuntu上能够科学上网
- export https_proxy=http://192.168.1.120:10809
- export http_proxy=http://192.168.1.120:10809
复制代码
- git clone --recursive https://github.com/espressif/esp-idf.git
- cd esp-idf
- git checkout v5.1.1
- git submodule update --init --recursive
- ./install.sh
- cd ..
复制代码
- git clone --depth 1 https://github.com/espressif/esp-matter.git
- cd esp-matter
- git submodule update --init --depth 1
- cd ./connectedhomeip/connectedhomeip
- ./scripts/checkout_submodules.py --platform esp32 linux --shallow
- cd ../..
- ./install.sh
- cd ..
复制代码
- cd esp-idf
- source ./export.sh
复制代码
- cd esp-matter
- source ./export.sh
复制代码
- export IDF_CCACHE_ENABLE=1
复制代码
第三部分:烧录样例代码- 进入esp-matter的light示例,编译并烧录程序
- cd esp-matter/example/light/
- idf.py set-target esp32c6
- idf.py flash
复制代码
- 如果遇到权限问题,不能访问串口导致无法烧录,可先更改它的权限,然后继续烧录即可
- sudo chmod 666 /dev/ttyACM0
- idf.py flash
复制代码
- 烧录完成后,打开ESP32-C6串口,可看到如下打印
- 通过串口发送matter命令配置ESP32-C6,让其连接上Wi-Fi(需要填入Wi-Fi的ssid和password)。
- matter esp wifi connet your-ssid your-password
复制代码
第四部分:接入Matter网络- 切回linux环境下,使用chip-tool进行配对ESP32-C6,并且保证linux环境和ESP32-C6在同一个局域网内。
- chip-tool pairing onnetwork-long 0x12 20202021 3840
- #这里的0x12是自定义的C6这个节点的ID
复制代码
- 在linux下运行上面的命令后,可在C6的串口中看到配对成功的调试信息。
第五部分:效果展示- 然后在linux上使用chip-tool去控制ESP32-C6,完成命令后可在C6的串口看到对应的调试信息和WS2812的状态变化。
- chip-tool onoff on 0x12 0x1
- chip-tool onoff off 0x12 0x1
- #这两条命令即完成了灯亮灭的控制
复制代码
对于linux不熟悉的朋友可能会在制作过程中遇到一些问题,解决问题也是一种成长,建议多多利用搜索引擎查找问题原因,有什么问题和想法欢迎在帖子下面互动。
下一章《esp32-matter示例代码讲解》
|