ASH腻 发表于 2024-3-20 17:24:22

ESP32-C6制作Matter协议智能灯泡:从环境搭建到接入网络全流...

使用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协议的设备都可以接入,不再区分设备厂商。




第二部分:环境搭建
使用硬件

[*]firebeetle ESP32-C6 *1
[*]WS2812 *1

将WS2812连接到FireBeetle ESP32-C6的IO8



FireBeetle ESP32-C6 硬件资源

[*]Wiki

环境搭建
[*]系统使用的是Ubuntu20(作为Matter网关,负责接收和下发Matter数据)
[*]国内用户需让Ubuntu上能够科学上网

export https_proxy=http://192.168.1.120:10809
export http_proxy=http://192.168.1.120:10809

[*]esp-idf开发环境搭建,使用v5.1.1版本

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 ..


[*]esp-matter开发环境搭建

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 ..

[*]安装esp-matter过程可看到如下打印信息




[*]安装成功后可看到如下信息




[*]进入idf目录配置idf的环境变量

cd esp-idf
source ./export.sh

[*]进入matter的目录配置matter的环境变量

cd esp-matter
source ./export.sh

[*]使能IDF构建启动Ccache,以增加构建速度

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示例代码讲解》


页: [1]
查看完整版本: ESP32-C6制作Matter协议智能灯泡:从环境搭建到接入网络全流...