944|2

330

帖子

5

TA的资源

纯净的硅(中级)

楼主
 

【得捷电子Follow me第3期】两块ESP32C3通过Matter 互联实现控制 [复制链接]

 

Matter是一项好技术,适应Matter的设备正在逐渐增多。ESP32的大东家乐鑫,还专门提供了Matter解决方案:https://www.espressif.com.cn/zh-hans/solutions/device-connectivity/esp-matter-solution

这篇分享,就是使用两块Seeed Studio XIAO ESP32C3,进行Matter匹配,一块为主控端,一块为受控端,通过主控端扩展板上的按键,来控制受控端上的LED。

 

一、硬件了解

1. Seeed Studio XIAO ESP32C3了解

在乐鑫的esp-matter方案中,esp32c3的开发板默认会调用esp32c3_devkit_m的配置,其对应的LED为GPIO8,且为WS2812,主控端对应的按键为GPIO9。

在这个实例中,受控端的LED,还是连接到GPIO8,具体见XIAO ESP32C3的引脚图:

 

主控端按键则使用扩展板上的按键:

 这里的D1,对应了核心板上的GPIO3,后面需要进行对应的设置。

 

2. WS2812B

这里用的是一位WS2812B,DI为连到到开发板,DO为连接到下一级WS2812B的。

 

WS2812B通过一个数据引脚,就能接受控制信号,从而控制其上的LED。

 

二、软件了解

乐鑫开源了 

链接已隐藏,如需查看请登录或者注册
 开发者可以基于此,很方便的进行开发。

在此源码中,提供了两个实例,分别为light_switch、light,这两个实例,编译后下载到两个ESP32C3,然后通过配置工具,就能把他们通过Matter关联起来,实现light_switch上的按键,控制light上的LED。

ESP-Matter的文档,可以查看:https://espressif-docs.readthedocs-hosted.com/projects/esp-faq/zh-cn/latest/application-solution/esp-matter.html

 

三、编译源码

1. 编译环境

要搭建esp-matter的编译环境,可以参考esp-matter的文档,一步一步亲手搭建。

当然,也有更快捷的方法,那就是使用乐鑫提供的esp-matter的docker环境,一步到位,包括各种软件的适配。

一行命令,就能搞定一切:

mkdir -p ~/Projects/esp32/matter
cd ~/Projects/esp32/matter

# 启动docker环境
docker run --rm -v $PWD:/project -w /project -e HOME=/tmp -it espressif/esp-matter

启动docker环境后,再执行一些简单的脚本,就可以开始编译了:

# 安装vim
apt update
apt install vim

# 应用环境设置
. /opt/espressif/esp-matter/connectedhomeip/connectedhomeip/scripts/activate.sh
. /opt/espressif/esp-matter/export.sh
. /opt/espressif/esp-idf/export.sh

# 考虑light相关实例
cp -a /opt/espressif/esp-matter/examples/light* ./

 

2. 编译light_switch

编译前,先修改一下源码,以便使用GPIO3,从而用扩展板上的按键,做为控制按键。

vim /opt/espressif/esp-matter/device_hal/device/esp32c3_devkit_m/device.c

-#define BUTTON_GPIO_PIN GPIO_NUM_9
+#define BUTTON_GPIO_PIN GPIO_NUM_3

然后,按照下面的步骤编译:

cd light_switch
idf.py set-target esp32c3
idf.py menuconfig
idf.py build
esptool.py --chip esp32c3  merge_bin -o light_switch.bin --flash_mode dio --flash_size 4MB --flash_freq 80m 0x0 build/bootloader/bootloader.bin 0xc000 build/partition_table/partition-table.bin 0x1d000 build/ota_data_initial.bin 0x20000 build/light_switch.bin

编译完成后,使用esptool、flashdownload等工具,将light_switch.bin烧录到开发板即可,例如:

esptool write_flash -z 0x00 light_switch.bin

 

3. 编译light

编译完了light_switch,编译light更简单,具体步骤如下:

cd ../light
rm -rf build
idf.py set-target esp32c3
idf.py menuconfig
# 此时,需要搜索DEVICE_PRODUCT_ID,修改为0x8001,然后保存退出
idf.py build
esptool.py --chip esp32c3  merge_bin -o light.bin --flash_mode dio --flash_size 4MB --flash_freq 80m 0x0 build/bootloader/bootloader.bin 0xc000 build/partition_table/partition-table.bin 0x1d000 build/ota_data_initial.bin 0x20000 build/light.bin

注意其中需要修改DEVICE_PRODUCT_ID,以便和主控端区分。

编译完成后,使用esptool、flashdownload等工具,将light.bin烧录到第二块开发板即可,例如:

esptool write_flash -z 0x00 light.bin

烧录的时候,建议仅连接需要烧录的开发板,等全部完工后,再连接到一起。

 

4. 通过chip-tool工具配网

首先参考 

链接已隐藏,如需查看请登录或者注册
,编译当前环境的chip-tool。

 

然后,将两个开发板,都连接到电脑,并使用串口工具,进行监听,开发板启动后,显示到:

 

就可以进行配网了。

 

使用chip-tool,通过蓝牙进行配网,指令如下:

node_master=0x8000
node_slave=0x80001

# 主控端配置
chip-tool pairing ble-wifi $node_master OpenBSD1 13581882013 20202021 3840

# 受控端配置
chip-tool pairing ble-wifi $node_slave OpenBSD1 13581882013 20202021 3840

主控端配网后,显示:

 

受控端配网后,显示:

 

上述两个输出中,instance name 最后,就对应的 DEVICE_PRODUCT_ID ,默认为0x8000,受控端我们修改为了0x8001

 

然后,将两者进行关联:

chip-tool accesscontrol write acl '[{"privilege": 5, "authMode": 2, "subjects": [ 112233, '$(printf "%d" $node_master)' ], "targets": null}]' $node_slave 0x0

chip-tool binding write binding '[{"node":'$(printf "%d" $node_slave)', "endpoint":1, "cluster":6}]' $node_master 0x1

设置的过程中,会在主控上看到:

 

会在受控上看到:

 

这表示两者已经关联起来。

 

四、通过matter控制测试

1. 通过chip-tool测试控制功能

通过下面的命令,可以使用chip-tool直接控制受控端上的LED:

# 开灯
chip-tool onoff on 0x8001 0x1
# 关灯
chip-tool onoff off 0x8001 0x1

# 切换状态
chip-tool onoff toggle 0x8001 0x1

 执行后,受控端将会收到控制指令,并控制LED:

 

2. 主控端按键控制:

现在,主控端和受控端,已经通过Matter关联起来了,受控端也可以控制了,那么,现在就可以按一按主控端扩展板上的用户按键了。

 

 

上图中,上面的受控端,连接了1位 WS2812B。下图为主控端,扩展板左下角的按键,为用户按键,对应GPIO3。

 

现在,按一下这个按键,则受控端上的LED会进行切换,两者的串口,也会输出对应的信息:

 

具体操作视频如下:

4498_1702564282

 

通过上面的视频可以看到,操作非常顺滑,几乎没有延时,控制效果非常好。

 

五、总结

Matter是一项正在蓬勃发展的技术,越来越多的设备都会接入Matter。

乐鑫对Matter的大力支持,是我们的已在ESP32C3开发板上,顺利的使用上Matter功能。

赶紧多多研究官方的实例,了解Matter功能的具体用法吧。

最新回复

楼主的分享十分有用,先收藏起来,慢慢学习,非常感谢楼主的无私奉献   详情 回复 发表于 2023-12-15 22:40

赞赏

1

查看全部赞赏

点赞(3) 关注
 
 

回复
举报

6107

帖子

4

TA的资源

版主

沙发
 

感谢分享!

 
 
 

回复

755

帖子

5

TA的资源

纯净的硅(高级)

板凳
 

楼主的分享十分有用,先收藏起来,慢慢学习,非常感谢楼主的无私奉献

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表