探索Matter协议与Arduino Nano Matter开发板的强大功能

图源:JJ1990/Stock.adobe.com;使用AI生成
作者:Ricky Flores,贸泽电子专稿
发布日期:2024年12月27日
想象走进一个万物和谐运转的家——灯光会根据你的存在而自动调节;百叶窗会根据阳光强度自动开合;温度始终保持在舒适的状态——而这一切都不需要你动一根手指。这就是Matter标准致力实现的愿景。该标准由CSA联盟于2019年制定,目标是简化智能家居设备的碎片化问题。CSA该联盟由亚马逊、苹果、谷歌等科技巨头联合创立。在Matter的支持下,无法互通的应用和设备都将成为历史,恒温器、门铃、摄像头等设备都将实现无缝协作。
在本指南中,您将学习如何构建一个通过Amazon Alexa语音AI控制的智能卷帘系统,并将传感器数据集成至开源Home Assistant软件和Arduino Cloud,实现更加强大的自动化与实时监控功能。无论您是经验丰富的开发人员,还是刚刚入行的新手,此项目都将助您打造一个互联、智能的家居环境。
项目材料与资源
项目物料清单(BOM)
Arduino Nano Matter
DFRobot SEN0245飞行时间距离传感器
Adafruit BH1750光传感器
Adafruit MCP9808温度传感器扩展板
Analog Devices TMC2209步进电机驱动器(或Arduino电机扩展版Rev3)
12V电源适配器
焊接板
USB Type-C®至Type-C电缆
Arduino Nano螺丝端子适配器
散热片
Amazon Echo(第四代)
卷帘式窗帘
项目代码/软件
Arduino集成开发环境(IDE)
Amazon Alexa移动应用
VirtualBox 7.1.2
Home Assistant移动应用
Home Assistant
Arduino Cloud(需订阅)
其他资源
调试技巧与GitHub资源
Arduino IoT Cloud API文档
Arduino Nano Matter引脚布
项目硬件概览
Arduino Nano Matter开发板(图1)结合了Arduino的易用性与Silicon Labs MGM240S多协议无线模块的强大功能,是开发Matter兼容物联网(IoT)设备的理想平台。

图1:搭载Silicon Labs MGM240S模块的Arduino Nano Matter开发板。(图源:Arduino)
这款紧凑的平台可以使各种经验水平的制造商都能轻松构建智能家居设备、升级现有项目,并尝试使用Matter、OpenThread、Zigbee和低功耗蓝牙等协议。
Silicon Labs MGM240S模块是Nano Matter开发板的核心,它是一个系统级封装(SiP)模块,专为电池供电的物联网设备而优化。该模块基于2系列EFR32MG24 SoC构建,具有先进的连接功能、高安全性和出色的能效,是智能家居和自动化应用的绝佳选择。
项目软件概览
该项目使用以下软件和环境:
Arduino IDE:编写、上传代码至Nano Matter开发板
Amazon Alexa移动应用:与项目集成,通过语音命令和例程控制智能卷帘
VirtualBox 7.1.2:在Windows主机上虚拟化Home Assistant
Home Assistant移动应用:为设备监控提供便利
Home Assistant:先进的家居自动化平台,可实现物联网设备的灵活本地控制
Arduino Cloud:用于远程监控设备;提供基于云的仪表板,实现传感器数据实时可视化;可与物联网应用集成,实现远程访问和自动化
项目开发
本项目的目标是通过Thread通信将Arduino Nano Matter开发板连接到Amazon Alexa Hub,从而通过Alexa应用控制卷帘。此外,您还可以通过Arduino Cloud仪表板和Home Assistant应用监控卷帘,实现灵活的多功能智能家居自动化控制系统。
首先,我们将介绍开发过程所需的软件,然后再介绍本项目中使用的硬件。
设置Arduino IDE
我们选择使用Arduino IDE进行开发,以确保与Nano Matter开发板完全兼容,因为这款开发板并没有完全适配Arduino Cloud IDE。为了便于测试和调试,我们将该项目分成几个阶段来实现。首先,使用Nano Matter库提供的预构建示例草图对开发板的Matter功能进行基本测试(图2)。

图2:Arduino IDE提供了许多用于Matter的示例草图。(图源:贸泽电子)
设置用于开发的Nano Matter内核:
单击文件,选择首选项。
在设置选项卡的其他开发板管理器地址字段(图3)中,输入“https://siliconlabs.github.io/arduino/package_arduinosilabs_index.json”,然后单击确定。

图3:Arduino IDE首选项窗口。(图源:贸泽电子)
单击工具,选择开发板,然后选择开发板管理器。
搜索“Silicon Labs”,安装最新的Silicon Labs内核(图4)。

图4:用于Arduino Nano Matter的Silicon Labs内核。(图源:贸泽电子)单击工具,单击Protocol stack,然后选择Matter(图5)。

图5:Arduino IDE中显示Arduino Nano Matter协议栈。(图源:贸泽电子)
设置Arduino Cloud API
由于Arduino Nano Matter开发板没有内置Wi-Fi®连接,因而我们使用Home Assistant通过Matter协议连接到Arduino Cloud以实现自动化。该集成方案需使用付费订阅的Arduino Cloud API。请确保您的订阅计划包含对设备连接的API支持。
在Arduino Cloud(图6)中,新建一个Thing并添加三个变量:一个用于接收温度传感器数据,一个用于光传感器,还有一个用于跟踪卷帘打开或关闭位置的百分比大小(图7)。

图6:Arduino仪表板。(图源:贸泽电子)
图7:在Arduino Cloud中添加变量。(图源:贸泽电子)记下变量ID(图8),本项目中稍后需要用到它们。

图8:Arduino Cloud中显示变量ID。(图源:贸泽电子)单击左侧菜单中的Space Settings,将Space ID复制出来,稍后也需要用到它(图9)。

图9:Arduino Cloud中显示Space Settings和Space ID。(图源:贸泽电子)单击左上角的账户图标,选择API Keys。
创建新的API Key并妥善保存,稍后需要用到它(图10)。

图10:在Arduino Cloud中查找API Key。(图源:贸泽电子)
设置Home Assistant
本节将介绍在Windows计算机上使用VirtualBox安装Home Assistant的操作步骤。
下载Home Assistant虚拟电脑映像
在Home Assistant网站上,单击导航栏中的Getting Started项,然后找到Install Home Assistant on Windows(图11)。
单击View Tutorial按钮。
下载VirtualBox (.vdi) 映像。

图11:Home Assistant网站显示获取Windows .vdi映像的位置。(图源:贸泽电子)
下载并安装VirtualBox
在VirtualBox网站上,单击Download,然后在VirtualBox Platform Packages中选择Windows Hosts。
打开安装程序,按照提示在计算机上安装VirtualBox。
在安装VirtualBox的同时,找到之前下载的Home Assistant映像文件,将.vdi映像从.zip压缩包中解压缩出来。
在VirtualBox中新建虚拟电脑
打开VirtualBox,单击新建创建新虚拟电脑(VM)。
在名称字段中,输入“Home Assistant”。
将类型设为Linux、版本设为Other Linux (64-bit),然后单击下一步(图12)。

图12:VirtualBox新建虚拟电脑的设置(图源:贸泽电子)
配置虚拟电脑设置
设置内存(RAM)大小和CPU内核数。建议至少设置2GB RAM和两个虚拟CPU核心。
选中启用EFI。该设置对Home Assistant正常运行必不可少(图13)。

图13:VirtualBox为虚拟电脑分配内存和处理器数量的设置。(图源:贸泽电子)
添加Home Assistant虚拟硬盘
在虚拟硬盘下,选中使用已有的虚拟硬盘文件,然后单击文件夹图标(图14)。
在接下来出现的窗口中,单击左上方的添加图标,浏览到先前解压缩出来的Home Assistant .vdi文件。
选中该文件,单击选择,然后单击下一步。
单击完成。

图14:将Home Assistant .vdi文件载入到VirtualBox中。(图源:贸泽电子)
配置网络设置
打开虚拟电脑设置,单击网络选项卡。
在网卡1下,选择桥接网卡,然后从下拉菜单中选择您的网卡(图15)。

图15:在VirtualBox设置中添加网卡。如果网卡设置错误,Home Assistant将无法与网络通信。(图源:贸泽电子)
单击声音选项卡,选择Intel HD Audio作为控制器,然后单击确定。
启动虚拟电脑
配置好虚拟机和网络设置后,单击启动以启动Home Assistant虚拟电脑,观察启动过程直至完成(图16)。

图16:VirtualBox中的虚拟电脑。(图源:贸泽电子)
完成Home Assistant设置
虚拟电脑运行后,打开浏览器并访问http://homeassistant.local:8123,必要时也可使用虚拟电脑的IPv4地址(图17)。

图17:Home Assistant在虚拟电脑上运行。我们使用IPv4地址远程访问Home Assistant。(图源:贸泽电子)
在Home Assistant欢迎屏幕上,单击Create My Smart Home打开设置向导(图18)。

图18:Home Assistant欢迎屏幕。(图源:贸泽电子)完成设置向导后,将显示Home Assistant仪表板(图19)。

图19:Home Assistant仪表板。(图源:贸泽电子)
为Nano Matter开发板供电
Nano Matter开发板可通过USB Type-C电缆或连接到IN5V引脚的外部5V电源供电,具体请参阅“项目材料与资源”中的开发板引脚布局。
设置步进电机和TMC2209驱动器
本项目中,我们使用了Analog Devices的TMC2209步进电机驱动器,它具有运行安静、精度高和控制平稳的特点,是智能卷帘系统的理想之选。下面将详细介绍如何设置步进电机和驱动器,以及确保高性能和防止损坏的重要注意事项。
将电机导线连接至TMC2209驱动器的A1、A2、B1和B2引脚。如果不确定接线顺序,请使用万用表检查电机导线之间的导通性。如果两根导线是成对的(即检测到导通),请将它们连接倒驱动器的A1/A2或B1/B2引脚(图20)。
注:接线错误会导致电机振动而不旋转或完全不运转。
图20:(a)在面包板上使用TMC2209驱动器和Arduino Nano Matter开发板测试步进电机。(b)集成了电机驱动器和Arduino Nano Matter的焊接板。(图源:贸泽电子)
由于我们使用12V电源为步进电机供电,因此要确保TMC2209驱动器内部逻辑的5V输入正确连接到电路板上,以确保电机平稳运行。关闭驱动器电源。关闭电源后,逆时针旋转驱动器电位器以增加电流,顺时针旋转以减少电流。
调整电流后,重新打开驱动器电源并测量参考电压,以确保设置正确。通过测量该电压,可以精确、可重复、安全地设置电机电流,比仅凭直觉调节更加可靠。
TMC2209驱动器在运行过程中会产生热量,因此适当的热管理至关重要。在驱动器上安装散热片,确保周围有足够的空隙,以避免与附近的引脚短路。必要时可考虑使用散热风扇,以防止过热并确保驱动器维持高性能。
安装注意事项:
安装时务必仔细检查驱动器的方向。安装错误会导致永久性损坏。
测量电压时切勿连接电机,否则会烧坏驱动器。
在设置和测试过程中,请使用主电源进行电压测量,不要依赖USB供电。
项目概览
图21是本项目的示意图。

图21:本项目所使用硬件示意图。(图源:贸泽电子)
Arduino项目
本项目使用的最终Arduino项目可从贸泽的GitHub上获取,其中包括对关键函数和变量的说明。下载项目后,Arduino Nano Matter开发板通过USB连接到计算机。确保在Arduino IDE中选择了正确的板和端口,然后点击上传将代码传输到开发板上。
下文将对Arduino项目的主要函数和变量进行说明。
库
#include
#include
#include
#include
#include
#include
#include
#include
#include
Matter和MatterWindowCovering:这些库处理Matter协议,该协议用于与Alexa等智能家居设备和Thread网络进行通信。
TMCStepper:用于使用通用异步收发器(UART)通信来控制TMC2209步进电机驱动器的库。
Wire:处理微控制器与I²C设备之间的I²C通信协议。
BH1750和MatterIlluminance:BH1750是一款光传感器,MatterIlluminance有助于将其集成到Matter生态系统中。
Adafruit_MCP9808和MatterTemperature:MCP9808是一款数字温度传感器,MatterTemperature将其读数与Matter集成。
Adafruit_VL53L0X:用于控制VL53L0X接近传感器的库。
传感器对象初始化
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
BH1750 lightMeter;
Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();
MatterIlluminance matter_illuminance_sensor;
MatterTemperature matter_temperature_sensor;
VL53L0X:管理接近传感器的对象。该传感器用于初始化窗户的高度。
BH1750 (lightMeter):用于测量照度的对象。
MCP9808 (tempsensor):用于检测温度。从MCP9808传感器读取温度值。
MatterIlluminance和MatterTemperature:向Matter生态系统(如Alexa)报告光照和温度水平的对象。
阈值定义
const float lightCloseThreshold = 1000.0;
const float lightOpenThreshold = 5.0;
定义关闭和打开卷帘时的光照强度(单位:勒克斯)。如果光照强度超过1000勒克斯,卷帘就会关闭;如果低于5勒克斯,卷帘就会打开。
引脚定义和步进电机设置
#define EN_PIN 7
#define DIR_PIN 4
#define STEP_PIN 3
#define R_SENSE 0.11
#define UART_ADDRESS 0x00
EN_PIN、DIR_PIN、STEP_PIN:这些引脚用于控制TMC2209电机驱动器。
R_SENSE:配置电机驱动器电流测量所需的感应电阻值(通常为0.11Ω)。
UART_ADDRESS:用于定义微控制器与TMC2209之间通信的UART地址。
步进电机对象
TMC2209Stepper driver(&Serial1, R_SENSE, UART_ADDRESS);
使用UART (Serial1) 为TMC2209步进电机创建驱动程序对象,以便与电机驱动程序通信。
设置函数
void setup() { ... }
串行通信:Serial.begin(115200) 用于初始化串行通信,Serial1.begin(115200) 用于与TMC2209进行UART通信。
VL53L0X传感器初始化:lox.begin(0x29) 在默认I2C地址(0x29)上初始化接近传感器。
光传感器和温度传感器初始化:matter_illuminance_sensor.begin() 和matter_temperature_sensor.begin() 函数将初始化这些传感器,以便进行Matter报告。
TMC2209设置:
driver.begin():启动电机驱动器。
driver.toff(5):将步进电机驱动器的关闭时间设置为5。
driver.rms_current(500):将电机电流限制在500mA。根据您使用的驱动器,最大电流可能需要手动设置。
driver.microsteps(1):确保电机全速运行。
driver.en_spreadCycle(false):启用名为StealthChop的静音模式,实现更流畅的静音运行。
LED和引脚设置:pinMode() 函数设置特定引脚的方向,如内置LED和电机控制引脚(STEP、DIR、EN)。
循环函数
void loop() { ... }
光照和温度报告:
float lux = lightMeter.readLightLevel():读取环境光亮度。
float tempC = tempsensor.readTempC():读取当前温度(摄氏度)。
matter_illuminance_sensor.set_measured_value_lux(lux) 和matter_temperature_sensor.set_measured_value_celsius(tempC):向Matter报告光照和温度水平。
电机控制:
电机的位置通过matter_blinds.get_requested_lift_position_raw() 和set_actual_lift_position_raw() 函数不断更新。
使用check_light_and_adjust_blinds() 函数可根据照度调整卷帘位置(向上或向下)。
光照控制逻辑(卷帘)
void check_light_and_adjust_blinds (int32_t current_percent) { ... }
勒克斯阈值检查:如果照度大于高阈值(1000勒克斯),卷帘将关闭。如果照度小于低阈值(5勒克斯),卷帘将打开。由于Alexa应用目前不支持创建带有光传感器的例程,因此我们决定用代码来实现这一自动化。
卷帘动作:move_blinds() 函数将卷帘的位置调整为向上或向下。
电机动作函数
void step_motor() { ... }
void stop_motor() { ... }
step_motor():通过切换STEP_PIN和调整脉冲宽度来控制电机走动一步,实现速度控制。
stop_motor():通过禁用电机驱动器和停止向STEP_PIN发送脉冲来停止电机。
停用处理函数
void decommission_handler() { ... }
该函数检查内置按钮是否被按下超过10秒,通过清除存储的数据让设备退出Matter。
LED亮度更新
void update_onboard_led(uint8_t brightness) { ... }
根据卷帘位置调整板载LED的亮度。如果卷帘关闭,亮度将为零;如果完全打开,亮度将映射到10至255的范围内。
集成Amazon Alexa
要将Arduino Nano Matter开发板与Amazon Alexa集成,请按照以下步骤操作:
将项目上传到Arduino Nano Matter开发板后,“串口监视器”中会出现一个二维码URL(图22)。

图22:Arduino IDE中显示集成到Alexa所需的二维码URL。(图源:贸泽电子)将URL复制并粘贴到浏览器中,即可显示该二维码。
打开Amazon Alexa应用,点击右上角的 + 符号。
选择Device,然后选择Matter徽标。
使用Alexa应用扫描Nano Matter项目生成的二维码。
选择可用的Thread网络,等待设备纳入其中并添加到Alexa应用中(图23)。

图23:Amazon Alexa中显示智能卷帘以及光和温度传感器。(图源:贸泽电子)
现在,您的Matter兼容设备将集成到Alexa应用中,随时可供使用。
注:如果在连接Arduino Nano Matter开发板和Alexa应用时遇到任何问题,请按照我们的调试提示进行操作。图24是我们在实施过程中曾遇到过的一些问题。

图24:这是我们在将Arduino Nano Matter与Alexa应用连接时曾遇到过的一些错误。如果发生类似的问题,请尝试按照贸泽GitHub上提供的调试提示操作。(图源:贸泽电子)
与Home Assistant和Arduino Cloud集成
在本节中,我们将把Arduino Nano Matter开发板与Home Assistant相集成在一起,并通过Arduino API将传感器数据传送到Arduino Cloud进行监控。
设置Home Assistant并添加设备
要配置Home Assistant管理Matter设备,请安装Matter Server附加组件:
打开Home Assistant的Settings菜单(图25)。

图25:Home Assistant的设置菜单(图源:贸泽电子)单击Add-Ons,然后单击Add-On Store。
在搜索栏中输入“Matter Server”。
在结果中找到Matter Server附加组件,然后单击Install。
安装File editor附加组件,后面的步骤中会需要它。
安装附加组件后(图26),请确保它们配置正确并且运行正常,以便在Home Assistant中启用Matter设备管理。

图26:Home Assistant中的File editor和Matter Server附加组件。(图源:贸泽电子)
接下来,在智能手机上安装Home Assistant应用并登录您的账户,然后将传感器添加到Home Assistant中:
在Alexa应用中,选择Control device with another assistant or app(图27)。

图27:在Amazon Alexa应用设置中添加另一个助手或应用来控制设备。(图源:贸泽电子)在Add Matter Device中,选择Yes, it’s already in use。
选择Other controllers,然后复制提供的配对码。
在Home Assistant应用中,找到Add Matter Device,将配对码粘贴进来(图28)。

图28:使用从Alexa应用复制的配对码将Matter设备添加到Home Assistant。(图源:贸泽电子)
设备集成进来后,Home Assistant仪表板中应显示温度传感器和光传感器的数据,以及卷帘的控制图标(图29)。

图29:Home Assistant网页应用中显示出连接的Matter设备(位于右侧)。(图源:贸泽电子)
在Home Assistant中配置Arduino Cloud集成
从左侧菜单中打开File editor附加组件,然后在文件夹中找到secrets.yaml(图30)。如果该文件不存在,请创建它。该文件可以安全地存储项目ID、凭证和API密钥等敏感数据,使主配置文件保持整洁并受到保护。

图30:Home Assistant的File editor。单击Browse Filesystem选择要编辑的文件。(图源:贸泽电子)
在secrets.yaml文件中,添加以下配置,注意将占位符替换为实际的Space ID、Client ID、Client Secret和Thing ID:
arduino_organization:
上一篇:Matter 1.4:支持智能家居能源自动化
下一篇:Nordic Semiconductor 赋能 Matter over Thread 智能庭院门锁
推荐阅读最新更新时间:2026-02-20 07:59
- LT1172CS8、1.25A 驱动高压 NPN 的典型应用
- AL3159FSG-EVM Rev.1,用于 AL3159 高效电荷泵白光 LED 驱动器的评估模块
- DC1678A-B,用于 LTC2654BCUF-H16 四通道 SPI 16 位电压输出数模转换器的演示板
- WRL-15663,基于 ESP32 WROOM 的 SparkFun Thing Plus 开发套件
- DC941A,演示电路采用 LTC2482、16 位高性能 DS 模数转换器
- MMA8652FC 3 轴、12 位、数字加速度计的典型应用
- 使用 Infineon Technologies AG 的 OM1320NTM 的参考设计
- LTC1665IGN 微功率八通道 8 位 DAC 的典型应用
- 使用 Analog Devices 的 ADV7282AWBCPZ-M 的参考设计
- AM1DR-2403SH30Z 3.3V 1 瓦 DC-DC 转换器的典型应用



【Follow me第三季第4期】CY8CPROTO-063-BLE开发任务汇总代码
英飞凌PSoC 6 电位器控制LED闪烁状态并水墨屏显示——源码
现代雷达系统的信号设计
TLC27M7CPE4
BFR340T






京公网安备 11010802033920号