• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

【代码库】使用 K32W061 DK6 在照明应用 Matter 应用程序中集成门锁集群

08/15 16:52
678
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

dm-nxp-k32w061-dk6-door-lock-and-lighting-app-matter-application-main.zip

共1个文件

使用 K32W061 DK6 在照明应用 Matter 应用程序中集成门锁集群

此示例演示介绍了在恩智浦 K32W061 DK6 开发套件上运行的现有 Matter 照明应用中添加和执行门锁集群的过程。它重点介绍了对 Matter 照明应用所做的更改,同时还展示了使用 ZAP 平台所需的集群配置。这两个示例均基于 Connectedhomeip 存储库,因此用户需要按照原始 README 中的说明完成克隆和环境设置的整个过程。此演示仅包含必须替换照明应用示例中原始文件夹和文件的部分。

主板:IOTZTB-DK006

类别:无线连接

外围设备:蓝牙、USB

工具链:GCC

目录

  1. 软件
  2. 硬件
  3. 设置
    1. 解决方案概述
    2. 使用 ZAP 进行集群配置
    3. 实施方面的变化
    4. 建筑
    5. 闪烁电路板
    6. 调试设备
  4. 结果
  5. 支持
  6. 发行说明

1.软件

本次开发基于 Connectedhomeip (CHIP) 开源项目 v1.4.0.0 版本,并针对 NXP K32W061 SDK 开发套件。此代码库包含来自原始Connectedhomeip/examples/lighting-app/nxp/代码库的照明应用示例文件夹,以及添加门锁集群所需的所有修改文件。

构建和开发所需的环境是 Ubuntu 20.04 或 Ubuntu 22.04 版本。构建系统使用 gn 和 ninja 来构建项目。Ubuntu 环境的必要先决条件可以按照本README中的步骤安装。

为了在 K32W061 板上刷新应用程序,可以使用MCUXpresso IDE或 DK6Programmer 工具。

2.硬件

此演示需要以下硬件设置:

  • 带有通用扩展板 OM15082-2 的K32W061 DK6开发套件
  • 用于调试和控制设备的控制器。本演示使用 Raspberry Pi 4 作为控制器实现。
  • 用于 Raspberry Pi 的 SD 卡,带有 Matter 特定图像和 OTBR 实现
  • NORDIC Dongle 用于在节点和控制器之间创建 Thread 网络

3. 设置

按照以下步骤设置环境。如果在激活 Matter 虚拟环境时遇到问题,可以在此处找到与 Matter 仓库相关的所有要求。

克隆connectedhomeip存储库后,仅需要检出NXP特定的子模块:

shell
user@ubuntu: ~/connectedhomeip$ scripts/checkout_submodules.py --shallow --platform nxp --recursive

要激活环境:

shell
user@ubuntu: ~/connectedhomeip$ source scripts/activate.sh

初始化/更新 NXP SDK:

shell
user@ubuntu: ~/connectedhomeip$ third_party/nxp/nxp_matter_support/scripts/update_nxp_sdk.py --platform k32w0

上述所有步骤均直接取自照明应用程序的README文件。

3.1 解决方案概述

开源 Matter 标准允许将集群和端点用于不同的应用。本例中,以 Lighting App 为例。如下图所示,除了前两个端点(设备类型为Matter Root Node 的端点 0和设备类型为Matter On/Off Light 的端点 1,最初来自 Lighting App)之外,还添加了第三个端点——设备类型为Matter Door Lock 的端点 2。这两个应用均基于 Project CHIP 和 NXP K32W SDK,并支持通过低功耗 802.15.4 Thread 网络远程访问和控制灯泡或门锁。

3.2 使用 ZAP 配置集群

ZAP平台概述

ZAP 平台是一个基于 Zigbee 集群库的应用程序和库的通用引擎和用户界面。它用于配置和创建 Matter 集群,因为它为 Matter 应用程序和 SDK 提供了一些功能,例如:配置端点、集群和属性;创建可自动生成数据模型定义和 Matter 源代码的模板。

有关如何安装 ZAP 的更多信息和步骤请参见此处

添加门锁集群

此演示使用了照明应用示例中的原始 .zap 文件,该文件不包含门锁组件。此代码库附带的 zap 文件夹包含已修改的 .zap 文件,该文件应在执行以下步骤后生成。

启动ZAP平台后,第一步是加载lighting-on-off.zap文件。

  • 文件 -> 打开文件 -> 从下载的 Matter 存储库中选择 lights-on-off.zap 文件。

下一步是添加一个新的端点并将其配置为门锁应用程序。

  • 添加端点 -> 在“创建新端点”弹出框中选择设备类型“Matter Door Lock” -> 创建

创建新端点后,主要关注点是门锁集群。需要检查其属性、命令和事件,以确保所有内容都已正确配置,适合应用程序。

  • 搜索“门锁”集群

  • 配置 -> 命令 -> 检查 LockDoor 和 UnlockDoor 命令是否已启用

  • 最后,新文件需要保存在connectedhomeip存储库中,路径为:/connectedhomeip/examples/lighting-app/nxp/zap

3.3 实施方面的变化

Matter 示例使用的源文件和头文件位于 Matter 主存储库的以下路径:connectedhomeip/examples/lighting-app/nxp/k32w0。用户必须将原始存储库中的文件替换为以下内容:

  • main/文件夹(替换connectedhomeip/examples/lighting-app/nxp/k32w0/main/
  • zap/文件夹(替换connectedhomeip/examples/lighting-app/nxp/zap/
  • args.gni文件(替换ConnectedHomeIP/Examples/Lighting-app/nxp/k32w0/args.gni
  • BUILD.gn文件(替换ConnectedHomeIP/Examples/Lighting-App/nxp/k32w0/BUILD.gn

main/目录的结构如下图所示。

ZCLCallback.cpp 文件与 AppTask.cpp 文件共同负责创建程序的工作流程。LightingManager 文件包含特定于照明应用集群的结构和函数的声明和实现。

最初,所有文件仅包含与照明应用相关的函数。我们的目标是通过添加新的实现和功能,将这些文件转换为一个能够接受并响应门锁操作和命令的应用程序。

与 LightingManager 文件类似,该演示也需要一个 LockManager 实现来处理门锁集群和命令。该实现包含 SetLockState、ExecuteCallback 和 GetLockState 等函数。

AppTask.cpp 文件代表应用程序的主体部分。它实现了涉及照明和锁定应用的函数和操作,从一些初始化开始,一直到 LED 闪烁、根据命令打开或关闭。主要关注的是 LockManagerCallback 函数,它接收事件——LockStarted、LockComplete、UnlockStarted、UnlockComplete,并控制扩展板上的 LED D2。

有关新功能的更多详细信息请参阅此存储库中的源文件。

3.4 建筑

修改源文件后,可以按照以下步骤生成新的二进制文件。

shell
user@ubuntu: ~/connectedhomeip$ cd examples/lighting-app/nxp/k32w0
user@ubuntu: ~/connectedhomeip/examples/lighting-app/nxp/k32w0$ gn gen out/debug/
user@ubuntu: ~/connectedhomeip/examples/lighting-app/nxp/k32w0$ ninja -C out/debug

chip_enable_ota_requestor请注意,由于闪存大小限制,文件 args.gni 中的选项已被禁用。

生成的输出文件可以在out/debug/chip-k32w0x-light-example中找到。

3.5 烧写开发板

要烧录chip-k32w0x-light-example.bin二进制文件,请按照README中的说明进行操作。如果选择 DK6Programmer 替代方案,则必须考虑到 chipenableota_requestor 设置为 false,因此烧录时地址偏移量需要从 0x0 开始。

3.6 调试设备

假设在 K32W061 DK6 板上构建和刷新成功,下一步就是调试部分。

使用 Raspberry Pi 控制器时,建议使用 Ubuntu 20.04 或 Ubuntu 22.04 版本。可以通过从connectedhomeip/examples/chip-tool构建 chip-tool 应用程序来获取 chip-tool 二进制文件。可以使用命令 从根文件夹构建示例scripts/examples/gn_build_example.sh examples/chip-tool FULL-PATH/,该命令将二进制文件放在FULL-PATH/chip-tool中。需要将 FULL-PATH 替换为所需的路径。之后,需要将生成的 chip-tool 二进制文件复制到 Raspberry Pi 设备上。它将用于调试和向节点发送命令。

  • 执行 OTBR 脚本
    • 该脚本将输出一个数据集字符串
  • 将 K32W061 板委托给 Matter 控制器
    • 在此步骤之前,必须将电路板置于广告模式,在本例中,可以通过按下用户界面按钮来完成

shell
user@ubuntu: ~$ sudo ./chip-tool pairing ble-thread node_id hex:dataset 20202021 3840

  • node_id需要用户指定
  • dataset表示执行 OTBR 脚本后得到的数据集哈希值

现在K32W061板和Raspberry Pi控制器已调试完毕,可以在网络中通信

4.结果

调试完成后,用户可以使用以下命令从同一节点控制这两个应用程序。命令的效果将反映在 LED D2(用于 Lock App 示例)和 D3(用于 Lighting App 示例)上。这些命令将在 Matter 控制器(Raspberry Pi)上运行。

照明应用程序的切换命令:

shell
user@ubuntu: ~$ sudo ./chip-tool onoff toggle node_id endpoint_id

  • node_id - 使用调试步骤中给出的那个
  • 端点 ID为 1

除了切换命令之外,还可以使用开启关闭命令。

门锁应用程序的命令:

  • 锁门动作

shell
user@ubuntu: ~$ sudo ./chip-tool doorlock lock-door node_id endpoint_id --timedInteractionTimeoutMs 100

  • 开锁动作

shell
user@ubuntu: ~$ sudo ./chip-tool doorlock unlock-door node_id endpoint_id --timedInteractionTimeoutMs 100

  • node_id - 使用调试步骤中给出的节点(也用于照明命令)
  • 端点 ID为 2

5. 支持

在此提供帮助的 URL。

项目元数据

董事会徽章

类别徽章

周边徽章 周边徽章

工具链徽章

有关此示例的内容/正确性的问题可以作为此 GitHub 存储库中的问题输入。
警告:有关 NXP 微控制器和预期功能差异的更多常规技术问题,请在NXP 社区论坛上输入您的问题
在 YouTube 上关注我们 在 LinkedIn 上关注我们 在 Facebook 上关注我们 在 Twitter 上关注我们

来源:恩智浦appcodehub

  • dm-nxp-k32w061-dk6-door-lock-and-lighting-app-matter-application-main.zip
    下载
恩智浦

恩智浦

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。收起

查看更多

相关推荐