三、编译源码
1. 编译环境
要搭建esp-matter的编译环境,可以参考esp-matter的文档,一步一步亲手搭建。
当然,也有更快捷的方法,那就是使用乐鑫提供的esp-matter的docker环境,一步到位,包括各种软件的适配。
启动docker环境后,再执行一些简单的脚本,就可以开始编译了:
2. 编译light_switch
编译前,先修改一下源码,以便使用GPIO3,从而用扩展板上的按键,做为控制按键。
编译完成后,使用esptool、flashdownload等工具,将light_switch.bin烧录到开发板即可,例
3. 编译light
编译完了light_switch,编译light更简单,注意其中需要修改DEVICE_PRODUCT_ID,以便和主控端区分。编译完成后,使用esptool、flashdownload等工具,将light.bin烧录到第二块开发板即可,烧录的时候,建议仅连接需要烧录的开发板,等全部完工后,再连接到一起。
4. 通过chip-tool工具配网
然后,将两个开发板,都连接到电脑,并使用串口工具,进行监听,开发板启动后,就可以进行配网了。
使用chip-tool,通过蓝牙进行配网,主控端配网后,显示:
受控端配网后,显示:
上述两个输出中,instance name 最后,就对应的DEVICE_PRODUCT_ID ,默认为0x8000,受控端我们修改为了0x8001
然后,将两者进行关联,设置的过程中,会在主控上看到:
会在受控上看到:
这表示两者已经关联起来。
四、通过matter控制测试
1. 通过chip-tool测试控制功能
执行后,受控端将会收到控制指令,并控制LED:
2. 主控端按键控制:
现在,主控端和受控端,已经通过Matter关联起来了,受控端也可以控制了,那么,现在就可以按一按主控端扩展板上的用户按键了。
上图中,上面的受控端,连接了1位 WS2812B。下图为主控端,扩展板左下角的按键,为用户按键,对应GPIO3。
现在,按一下这个按键,则受控端上的LED会进行切换,两者的串口,也会输出对应的信息:
具体操作视频如下:
通过上面的视频可以看到,操作非常顺滑,几乎没有延时,控制效果非常好。
五、总结
Matter是一项正在蓬勃发展的技术,越来越多的设备都会接入Matter。
乐鑫对Matter的大力支持,是我们的已在ESP32C3开发板上,顺利的使用上Matter功能。
赶紧多多研究官方的实例,了解Matter功能的具体用法吧。
nRF7002-DK Wi-Fi 6开发套件评测
这个开发板是最新支持wifi 6的,支持wifi6的路由器都瞬间贵了不少,这里主要是用了测一下这个多样的无线连接能力。这个还配套一个nfc标签,因为没有合适的测试平台,就暂时不评测了。已经收到了板子,还是很环保简洁包装,一图全包如下。
nRF7002 DK是nRF7002 Wi-Fi 6协同IC的开发套件,这款DK具有一个nRF53®多协议系统级芯片(SoC),作为nRF7002的主处 理器。这款DK支持低功耗Wi-Fi应用的开发 工作,并支持实现OFDMA、波束成形和目标唤醒时间等Wi-Fi 6功能。
最关键的是,这个开发板还支持用于 Matter 的所有无线协议、用于调试的蓝牙 LE、用于低功耗网状网络的 Thread 以及用于高吞吐量的 Wi-Fi。
Matter初探
原帖地址:
一.了解Matter
Matter作为物联网通讯中一种应用层连接标准,首先了解其发展,其次对其组成概念协议熟悉
1.发展史
2019年,苹果、谷歌、亚马逊等巨头共同成立了一个名为“Connected Home Over IP”(简称CHIP)的组织,目的在于开发、制定一套基于IP协议的智能家居连接标准,简化设备与设备之间信息传输过程,这就是Matter的前身。2021年,CHIP正式更名为Matter,从此Matter正式走入了人们的视线。
2.概念及协议
Matter的思想是万物互联,在物联网IOT多样发展的今天,各厂商品牌间设备互联互通无形中形成壁垒,对消费者的选择也会造成一定约束,Matter的产生正式基于解决这痛点应运而生。Matter网络拓扑如下图所示。
二.使用Matter协议点灯
1.创建工程light_bulb,参考ncsv2.5.0nrfsamplesmatterlight_bulb
2.编译烧录
整个编译会比较花时间,源于结构代码量及比脚本链接这些,编译成功后烧录开发板。
3.代码解读
代码框架主要使用类继承实现灵活定制。在app_task.h里定义了类任务函数回调,app_task.cpp里StartApp()作为启动APP,定义了内存、协议栈、LED、按键等初始化及各种回调。代码整体结构较为紧凑,注释是比较详细的,可以辅助理解流程、功能。
4.测验
准备:Google Home App,MobaXterm
nRF7002-DK使用IPv6网络通过wifi实现matter交互控制点灯。可以通过Shell命令配合APP做点灯实验。由于个人华为手机,跟Google 的app也相斥没装上,那下面主要做可以做的部分。
(1)用MobaXterm打开串口,按复位键或长按Button 1 6s以上进入出厂设置,可看到启动日志如图3,按“Enter”键进入shell模式,此时蓝牙广播MatterLight也开启
(2)关于配合app操作可参照文档【2】进行.整理来说深入学习使用Matter还是比较大的学习量。通过这个实验,可以有一个整理的了解熟悉。
三.关于Matter认证方式和流程
Matter与Bluetooth类似也有认证,通过认证可以与其他matter产品互联互通得到较广范围的使用,同时也确保了安全性。其认证方式和流程如下图5
通过对Matter的了解和学习,对IOT互联互通有了更深入一步的理解。在物联网生态上,其发展前景还是很广阔的。对使用者与开发者来说,也需与时俱进,更好服务产品的应用推广。
matter协议的部署
原帖地址:
基于nRF7002开发matter协议的部署
1 Matter协议的组织
虽然围绕matter的开发很热,但是完整实现的开发环境实例并不多,nRF7002就是一个很好的开发平台,不过,这个过程显得非常不友好,至少是在国内的伙伴们。本周尝试了10天左右爆款Matter不好开发?买来试一下,应该是说再见的时候。主要的原因就是第一步Matter的构建,需要从github源下载文件,在没有完全完成的情况下,已经达到11G。按照当下github所能提供的流量通道,这个已经很多了,但是这个matter需要完整引用多个submodule,这样至少有三层的子模块在--recursive的选项下是必须下载的安装flash后还是不行,而这个过程其实几乎无法完全控制,在基本下载完的情况下,尝试build就首战告负,显示开发环境有开发错误,这个在不同版本的操作系统下并不罕见,不过,如果不是生产环境,仅仅是测试的过程,就要替厂家debug这个就有些划不来的。所以,这个部分的评测就此中止了。后面原计划还有的连续测试也就只好随后再说了。
不过,这个也说明了当下matter发展所遇到的现状。就是匆匆推出抢占市场,即使是在基础测试很成熟的情况下,在多态适应,多种场景切换,以及不同版本兼容上,还有很大的工作没有完成,无法成为市场的主体。仅从matter的开发需要下载11G的代码就可以看出,这个工作量偏大了。
在此,重新理清matter的脉络。
首先,matter是需要构建围绕2.4GHz的通讯协议互相联通的问题,目前主要的2.4GHz协议是wifi,蓝牙,低功耗蓝牙,蓝牙Mesh,thread,zigbee,以及各个厂家的私有协议,如TI的自有2.4GHz协议。其中wifi和蓝牙已经自称一体,各自在大流量和低功耗上分别占有主导地位,其实,出货量大的情况下,在小圈子里也可以自洽了。这个matter的最大收益者应该是zigbee,应该是zigbee的商业路线起步就要认证收费,和蓝牙等低门槛没认证就铺货不是一个玩法,然后wifi出了ESP芯片,一下子把硬件门槛给减下去了,所以wifi也是因为esp而赢麻了。还需要注意的是matter虽然号称开放,其实Lora,NB-IoT等并没有纳入其中,而且看来不打算纳入其中,所以嘛,还是 那个熟悉的味道。
这个图就比较典型,wifi和thread都各自成网,以wifi接入点也就是我们常见的路由器,thread路由器分别作为高层的网,与必须具备的matter控制器一起构成更高级的网络,这样把异构的网络都连接起来。
具体实现的信号比较复杂,为了保证数据各自安好,同时避免分赃不匀,这个安全协议是相当的复杂,但是基于其复杂度而言,已经是非常效率高的,搞密码的可以好好研究一下。而对应终端开发者记住这样的简单逻辑就是,任意一个终端节点,包括控制这些节点的手机APP,桌面程序等都首先发出一个基于原始协议的信号包,然后到达各自的网关,这个网关把信息提交matter控制器,打包成matter包,然后分发给原来的网关或者其他网关,这些网关再解包分发,这个过程,终端节点的代码和协议完全不变,但是网关和matter控制器是必须更新代码的,这样。在新的构架下,基于matter的编号也是扩展长度的,用matterID来描述。
相比而言,wifi的路由是可以不升级代码的,貌似因为这个包可以整包传给matter控制器,自己只需要支持ipv6就行了,老猫应该是不灵了。
2 构建Matter的方法
这里的核心就是构建matter控制器,目前,只有Linux可以支持爆款Matter不好开发?买来试一下,经过测试的操作系统不多,但是可以支持树莓派。这些matter代码,都需要原生系统上完成build,所以,花时间那个是不可避免的。
这里可以直接使用已经build成的linux版本,不过,只提供了nRF SDK2.5.0的,使用sdk2.4.2的终端代码无法兼容。Matter over Wi-Fi: Configuring CHIP Tool for Linux or macOS以及Working with the CHIP Tool和Building Matter — Matter SDK documentation
首先,下载代码,如果提示用户名不灵,需要改用http下载,然后需要完成依赖包安装。
配置好wifi,这个需要固定IP。
然后安装ZAP file,这个是支持zigbee的文件,已经提供了build release,就不用下载源码了,这个也是一个巨大的工程,提供源码就太浪费资源了。这个就是要形成和zigbee联通的资源包。
都配置好,就build一下,先启动虚拟环境,然后使用ninja来构建,而不是cmake,这样就在build目录下生成可执行的chiptool文件。当然,前提是没有报错啊。
3 启动chiptool的控制
chiptool的运行命令简单很多,直接起飞,运行完成,这个是单此运行。需要完整的功能需要进入交互模式,这样就在配网成功,终端接入的情况下启动,需要网络构建成功。
如果需要thread,还需要启动thread,这里thread提供了一个docker影像,不用从头开始,
这样及形成matter测试的基本环境。
4 终端设备的启动和运行
终端设备运行和识别,需要40位代码,前12位是广播码,后27位是设备码,含厂家编号等。
Discriminator - A 12-bit value used to discern between multiple commissionable device advertisements.
Setup PIN code - A 27-bit value used to authenticate the device.
chiptool是单命令行,如果需要加入设备,或者控制设备的参数状态,都需要直接录入命令。比如,加入一个配对的设备,需要以下命令
如果实现专用的功能,那么还需要再编写一个交互界面,才能简单使用起来。
在各个终端的app都已经升级了针对matter的扫描加入和读码加入功能,用户使用起来,就靠那40位编号搞联通,还算方便,不过,小米什么都都还很淡定,等子弹再飞一会儿,兴许自己就玩没了呢?
5 小结
原本是希望给做一个从零起步的模板打样,结果搞到最后弄了一个现(场表)眼的表现,不过,再丑也见一下各位,有高手用躺雷区,可以继续,不过,目前,已经搞不动了,就先到这里结帖,也不多评价了,毕竟各路大佬已经急急慌慌的弄了一把了,看来还活挺多,超越了我的智能水准,就等大佬什么时候能整出适合智商低一下的工具再用不迟。
跨开发板Matter通讯控制测试
原帖地址:
nRF7002-DK开发板,自带有两个用户按键,如下图开发板右下角的Button1、Button2:
在nRF SDK 中,提供了Matter的相关实例,从VSCode的nRF Connect 中,可以直接以light_switch为参考来实现。
1. 从样例程序新建工程
2. 编译工程
需要说明的是,如果工程路径中带有中文,可能会编译失败。
3. 烧录固件到开发板
将开发板接到电脑,然后直接使用Actions中的Flash烧录即可。
三、Matter互联测试
现在,两块开发板都准备好了,就可以进行Matter相关的测试了。
1. 设备信息获取
首先,使用串口监听工具监听两块开发板。
然后,长按nRF7002-DK开发板的Button1,5秒以上,串口会输出信息。
表示接收到了重置按键。如果按短了,会提示取消重置。
最后,会输出如下信息:
重点关注上面的Product ID,Pin Code,Discriminator。
Product ID对应ESP32C3编译时的设置DEVICE_PRODUCT_ID。
nRF7002-DK的Product ID,即为下面命令中的node_master。
ESP32C3的DEVICE_PRODUCT_ID,即为下面命令中的node_slave。
此时,LED1会狂闪,表示需要配网。
再长按Button2,来启动蓝牙配网模式,至少按5秒,最终输出如下:
此时,LED1会慢闪,表示配网中。
2. 通过蓝牙配网
SSID=你的WiFi名称
SSPW=你的WiFi密码
# 主控,也就是nRF7002-DK的Product ID
node_master=0x8004
# 受控,也就是ESP32C3的
node_slave=0x8001
# 对应的十进制Product ID
node_master_dec=$(printf "%d" $node_master)
node_slace_dec=$(printf "%d" $node_slave)
# 发送配网信息
chip-tool pairing ble-wifi $node_master $SSID $SSPW 20202021 3840
chip-tool pairing ble-wifi $node_slave $SSID $SSPW 20202021 3840
nRF7002-DK开发板配网成功后,输出如下:
输出中的instance name的最后,就是对应的Product ID。
配网成功后,LED1常亮。
ESP32C3配网成功后,输出如下:
输出中的instance name的最后,就是对应的DEVICE_PRODUCT_ID。
3. ACL权限设置
两块板子的网络配置好了,下面就要把他们关联起来,从而可以通过Matter互联和控制。
使用下面的命令,对nRF7002-DK和ESP32C3进行设置:
# 设置受控权限
chip-tool accesscontrol write acl '[{"privilege": 5, "authMode": 2, "subjects": [ 112233, '$node_master_dec' ], "targets": null}]' $node_slave 0x0
# 设置主控权限
chip-tool binding write binding '[{"node":'$node_slave_dec', "endpoint":1, "cluster":6}]' $node_master 0x1
设置完成后,两块板子输出如下:
从上面的信息可以,主控端收到了受控端的信息,受控端也收到了主控端的信息了。
4. 按键测试
现在,按一下nRF7002-DK的Button2,两块板子的输出信息如下:
从上述输出可以看nRF7002-DK的Button2按键被检测到,然后发送控制指令给ESP32C3控制LED。
每按一次Button2,ESP32C3连接的LED就会交换状态,从而实现亮灭了。
四、总结
Matter真的是门好技术,值得好好研究。
在这次的分享中,通过Matter,不同类型的开发板,能够很方便的互联互通起来,进行控制。
这也正式Matter的精髓所在,将不同类型的碎片化的智能设备,通过统一的Matter,来互联互通到一起。
Nordic对Matter的支持非常完善,使得nRF7002-DK能够快速的跑起来Matter的应用,让开发效率大幅提升。
SparkFun MGM240P Thing Plus Matter
SparkFun Thing Plus Matter将Matter与Qwiic生态系统相结合,以实现基于Matter的物联网设备的快速原型设计和开发。
Silicon Labs MGM240P支持与Thread和BLE 5.3协议的连接。Thing Plus Matter可配合 Silicon Labs的Matter物联网协议使用,该协议专为家庭自动化而设计。就像其他SparkFun Thing Plus板一样,它们与Feather兼容,可通过Qwiic连接与无焊I2C电路一起使用。
Matter设备的制作
原帖地址:
MGM240P可以制作Matter网络设备,桥设备等,但因为只有一台设备,无法连接 网络。这里就介绍和实验一下制作Matter设备。
安装好最新的 SimplicityStudio_v5.7.0.0,让它支持Gecko SDK Suite 4.30
然后就看到两个基于Matter的项目例子,第一个可以直接运行。第二个要bootloader烧录后才行。但实验 发现 第一个 不行 ,没搞好吧:
于是用第二个生成例子,首先要搞个bootloader。
创建bootloader-storage-internal-single-1536k并编译
烧录到0x08000000开始的地方,bootloader就搞好了。
创建Matter例程,编译,运行就可以了。
退出
程序,用putty,设置波特率 115200,n ,8,1,就可以看到如下信息:Matter设备就成了。因为一台设备 。无法实验联网。
制作的zigbee3.0设备连homeassistant
原帖地址:
homeassistant好久没连过了,竟然坏了。然后只好重新 制作。
1.把树莓派4翻出来安装flash后还是不行,重新烧写Home Assistant,具体制作方法可以看Home Assistant官网。
下载imager_1.7.5.exe
imager_1.7.5.exe安装运行
选择操作系统==》other specific-purpose os==》home assistant and home automation==》home assistant==》
然后选择sd 卡,然后烧录。
把制作好的tf卡插到树莓派上,启动
pc上输入:8123/就可以进入homeassistant网页。
这里还可以输入wifi ssid和密码,用户名登录密码等等。设置好就进去了。
把cc2531 usb dongle插上树莓派usb口,然后组件里面加入zigbee home
然后home assistant就发现了一个设备(zigbee 协调器,通过它加入其他 zigbee设备)
加入一个以前的zigbee设备进去,试试看。
发现设备加入进去了:
接上面zigbee的制作的light设备程序 包括bootloader 和应用程序 烧录到 MGM240P,先不要启动(不要勾选烧录后即启动 或者让homeassistant设备查找zigbee后烧录)。
homeassistant设备查找zigbee,然后重启设备 。
MGM240P灯光设备 就加入了。
这里可以控制MGM240P板上一个灯的亮灭
· END ·
评论列表 (0)