Skip to main content

Seeed Studio XIAO nRF54L15 Sense Zigbee

本教程指导您在 Seeed Studio XIAO nRF54L15 开发板上实现 Zigbee 应用,该开发板结合了 Wi-Fi低功耗蓝牙 (BLE)Zigbee 连接功能,非常适合 物联网应用。本指南中的示例使用 NCS 来实现 Zigbee 功能。

前提条件:nRFConnect SDK 使用

如果您还没有准备好 NCS,请参考 入门指南

如果您担心 nRF Connect SDK 没有完全下载或存在问题,可以通过以下方式验证已下载的 nRF Connect SDK 的完整性和正确性。选择 Manage west workspace,然后选择 West Update,如下所示。

目录

Zigbee 概述

Zigbee 是一种基于 IEEE 802.15.4 标准的 低功耗低带宽 无线通信协议。它专为 家庭自动化智慧城市工业控制 等物联网场景量身定制,提供强大的网状网络功能,在动态环境中实现可靠通信。

  • 我们将简要介绍 Zigbee 相关内容。如果您想直接参考应用示例,也可以跳转到:

Zigbee 数据模型

Zigbee 通信依赖于 Zigbee 集群库 (ZCL),它定义了设备如何组织其功能并进行交互。关键组件包括:

  1. 设备类型 Zigbee 设备(例如开关、传感器、灯具)具有预定义的特定行为,按功能分组到 集群 中。

  2. 集群 集群是以下内容的逻辑分组:

    • 属性:表示设备状态,如亮度或温度。
    • 命令:触发动作,如打开灯或将亮度设置为 50%。

    示例:

    • 开/关集群:控制二进制状态,如电源。
    • 级别控制集群:调节强度或亮度。
    • 温度测量集群:发送温度读数。
    • 场景集群:保存和调用预设配置。
  3. 属性和命令 属性存储设备数据(例如状态、配置),而命令启动操作。

Zigbee 网络架构

Zigbee 网络由三种主要节点类型组成:

  1. Zigbee 协调器 (ZC)

    • 作为网络的中央枢纽。
    • 处理网络创建、设备认证和地址分配。
    • 负责初始化和管理网络。
    • 每个 Zigbee 网络只能有 一个协调器
  2. Zigbee 路由器 (ZR)

    • 通过在设备之间中继消息来扩展网络范围。
    • 支持更多设备加入网络。
    • 通常使用市电供电以确保持续运行和可靠的消息中继。
    • 电池供电的路由器是可能的,但由于能耗较高而不太常见。
tip

当然,路由器不是必需的。当距离较短时,可以省略路由器。例如,我们接下来的演示就不使用路由器。

  1. Zigbee 终端设备 (ZED)
    • 轻量级且节能的设备,与父节点(协调器或路由器)通信。
    • 不向其他设备路由消息。
    • 针对电池操作进行优化,通常进入睡眠模式以节约能源。
note
  • 寻址和路由

    • Zigbee 使用 16 位寻址方案。设备通过直接和间接寻址的混合方式进行通信。
    • 路由决策由路由器使用 AODV(按需距离矢量)等算法做出。
  • 电源管理

    • Zigbee 终端设备针对低功耗进行了优化。它们通常在睡眠模式下运行,只在需要时唤醒。
    • 路由器和协调器通常使用市电供电以确保持续可用性。

网络拓扑

Zigbee 支持三种主要网络拓扑,具体取决于应用需求和环境:

1. 网状拓扑

  • 单个协调器和多个路由器形成自愈、强健的网络。

  • 如果通信路径中断,设备可以动态重新路由消息,确保高可靠性。

  • 适用于需要广泛覆盖和冗余的大规模网络。

  • 主要特性

    • 动态重新路由确保高可靠性。
    • 支持具有可扩展覆盖范围的大型网络。
    • 自愈机制提高容错能力。

2. 树状拓扑

  • 协调器作为分层结构的根,路由器形成分支。

  • 每个分支可以有多个终端设备或额外的路由器,创建树状结构。

  • 通信依赖于分层路径,这会引入潜在的单点故障。

  • 主要特性

    • 适用于结构化环境。
    • 比网状网络更容易设置和管理。
    • 容易受到分支故障影响,可能导致整个子网络断开连接。

3. 星状拓扑

  • 所有设备直接与协调器通信。

  • 部署简单,但协调器是单点故障。

  • 最适合设备靠近协调器的小型网络。

  • 主要特性

    • 易于设置和管理。
    • 由于范围和设备容量限制,可扩展性有限。
    • 依赖协调器进行所有通信,降低了容错能力。
tip

我们接下来的演示也是这种类型的拓扑

NCS Zigbee 入门

硬件准备

您需要准备 3 块 XIAO nRF54L15 开发板。

Seeed Studio XIAO nRF54L15 Sense

按照图中所示的方式连接设备


软件准备

步骤 1. 安装 Zigbee R23 插件

  • 点击 NCS 插件图标 -> Create a new application 并选择模式为 Browse nRF Connect SDK Add-on Index
  • 搜索 R23,进入 Zigbee R23 nRF Connect -> V1.2.1


  • 选择最新版本 -> 选择工作区目录并创建

note

等待 Zigbee 插件完全安装,NCS 版本将自动切换到 v2.9.2。 由于插件相当大(超过 4 GB),下载过程将需要很长时间。请保持网络连接稳定,不要中途中断该过程。

  • 创建完成后将出现弹出提示。

步骤 2. 代码准备


  • 参考 Seeed Studio 官方仓库获取示例。

  • 或者,如果您已设置 Git 环境,可以直接将代码拉取到刚才指定的文件目录中。
git clone https://github.com/StarSphere-1024/XIAO_nRF54L15_Zigbee_Examples

获取示例代码后,让我们简要了解一下:

1.boards 目录包含板级配置文件,用于适配不同开发板之间的硬件差异(如引脚和外设):

  • 其中的 .overlay 文件是"设备树覆盖文件",用于修改芯片/开发板的默认硬件配置;
  • 例如,xiao_nrf54l15_nrf54l15_cpuapp.overlay 是专门为 XIAO nRF54L15 编写的配置(例如,将 D3 引脚映射到代码中的 LED 控制引脚);

  • 其他文件(例如 nrf54l15dk_xxx.overlay)是为 Nordic 官方开发套件(DK)准备的,因此您无需关心它们——只需关注以 xiao_xxx 为前缀的文件。
  1. include 目录是存储头文件的地方:
  • zb_dimmable_light.h 是 Zigbee 可调光灯的功能头文件,定义了灯节点的 Zigbee 协议相关功能和参数(例如亮度控制、状态报告)。
  1. src 目录是存储核心代码的地方:
  • main.c 是整个项目的入口文件,包含程序启动逻辑、Zigbee 网络初始化和 LED 控制逻辑(例如,在接收到开关命令后控制 D3 引脚的电平)。
  1. 根目录中的文件 这些是项目构建和配置文件(NCS/Zephyr 框架的标准文件):
  • CMakeLists.txt:CMake 构建脚本,定义项目需要编译哪些文件以及依赖哪些库;
  • Kconfig.sysbuild:配置项目的编译选项(例如是否启用 Zigbee 功能、调试日志);
  • prj.conf:项目的核心配置文件,设置芯片参数和 Zephyr 系统参数(例如启用 GPIO 功能、Zigbee 协议栈);
  • sample.yaml:NCS 示例配置文件,描述项目的基本信息(例如支持的开发板、功能描述)。

编译和烧录代码

本指南向您展示如何将现有应用程序(以 light_switch 为例)添加到您的 VS Code 环境中,并将其编译和烧录到目标硬件(以 xiao_nrf54l15 为例)。

步骤 1. 将应用程序添加到工作区

  • 找到 APPLICATIONS 面板:在侧边栏中,找到名为 "APPLICATIONS" 的面板。

  • 添加现有应用程序:点击面板右上角的 "+"(Add an existing application)图标,如下图红框所示。

  • 选择应用程序文件夹:在弹出的文件浏览器窗口中,导航到您的项目所在文件夹(例如 D:...\workspace)。从列表中选择您要烧录的应用程序文件夹——本例中为 light_switch——然后点击 "Open" 按钮。


步骤 2. 创建和配置编译选项

  • 添加构建配置:在 "APPLICATIONS" 面板中,您将看到新添加的 light_switch 项目。点击其下方的 "+ Add build configuration"。

  • 配置编译参数:在打开的 "Add Build Configuration" 页面中,进行以下设置:SDK 和工具链:您安装的 nRF Connect SDK 和工具链通常会自动选择——请验证版本是否正确。(如果您之前下载的插件完整,这里会自动选择 V2.9。)

  • 板目标:这是最关键的步骤。您需要选择代码将在其上运行的硬件。点击 "Browse" 或直接在输入框中搜索。如图所示,您需要选择的目标板是 xiao_nrf54l15/nrf54l15/cpuapp。您可以勾选 "Custom" 来快速过滤或查找不受官方支持的板。

  • 其他配置:除非有特殊要求,否则暂时将 Kconfig fragments 和 Devicetree overlays 等其他设置保持默认。


note

建议首先勾选 "Custom" 来快速过滤或查找不受官方支持的板,然后找到您需要选择的目标板:xiao_nrf54l15/nrf54l15/cpuapp。如果您直接搜索,故障排除过程可能会花费太长时间,并且可能找不到目标板。

note
  • 更新板级文件。如果您的文件长时间未更新,也建议您在使用前更新它们。

有关详细教程,您可以参考下面的链接。 入门指南

步骤 3. 编译和烧录

  • 连接硬件:确保您的目标硬件(例如 XIAO nRF54L15 开发板)通过数据线正确连接到您的计算机。

  • 打开终端:在 NRF CONNECT 扩展的 WELCOME 面板中,找到并点击 "Open terminal" 选项(图中红框标记)。


  • 导航到项目目录:在终端中,使用 cd 命令进入您的项目文件夹。
cd D:\code\nrf54115_zigbee\workspace\light_switch\.lbuild 
west flash
  • 请将此路径替换为您自己的实际项目路径。

  • 监控烧录过程:终端将输出详细日志,包括编译进度、连接到调试器(例如 CMSIS-DAP)、闪存擦除和数据写入过程。


  • 同样,按照相同步骤烧录其余两个代码项目。

  • 如果您担心代码是否已成功烧录,有以下方法来验证:

    • 通过串口连接到开发板并观察串口输出(此方法不仅验证烧录结果,还允许您直观地查看程序运行日志,使验证逻辑更清晰)。

连接到 Zigbee

步骤 1. 连接到 Zigbee

  1. 给加载了协调器程序的 XIAO 开发板上电并启动。
  2. 在串口助手中观察日志,等待协调器完成 Zigbee 协议栈初始化和网络参数配置,直到输出串口信息。
  3. 保持协调器上电以持续维护网络,这为后续设备加入网络提供了基础。

步骤 2. 灯泡端的网络加入配置

  1. 在上电的协调器网络准备就绪后,给加载了灯泡程序的 XIAO 开发板上电并启动。

  2. 灯泡端自动开始网络扫描以查找可用的 Zigbee 协调器网络。

  3. 检查串口日志以确认灯泡端已成功加入协调器网络。 核心日志参考:


步骤 3. 灯开关端的网络加入和设备发现

  1. 确认灯泡端成功加入网络后,给加载了灯开关程序的 XIAO 开发板上电并启动(根据需要通过板载按钮触发恢复出厂设置以确保重新扫描网络)。
  2. 灯开关端自动扫描并加入同一个协调器网络。 核心日志参考:

  1. 检查灯泡端的串口日志以确认命令已接收并执行,LED 完成开/关动作。核心日志参考:


Zigbee 网络重置程序

步骤 1. 协调器的网络重置

按下网络协调器的板载按钮以完成 Zigbee 网络重置。

步骤 2. 灯控设备(灯开关/灯泡)的重置和重新加入

  1. 按住灯控设备(灯开关/灯泡)的板载按钮;
  2. 按下设备的复位按钮;
  3. 释放板载按钮。设备将完成重置并自动加入新的 Zigbee 网络。
note

重要提示: 如果设备由电池供电,必须明确禁用串口;否则程序将无法启动。

结果

如果一切顺利,您将看到以下结果。

常见问题

  1. 不要使用过长的目录作为安装根目录。否则,在 Windows 上编译示例时,您会经常遇到由于目录名过长而导致的编译错误。

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...