Seeed Studio XIAO nRF52840 在 Amazon Sidewalk 上的应用

介绍
Seeed Studio 很荣幸成为 Amazon Sidewalk 生态系统合作伙伴的一员,提供支持 Sidewalk 的产品和解决方案,在 Sidewalk 网络上实现多样化的物联网用例。
Amazon Sidewalk 是一个安全的无线社区网络,使用 Amazon Sidewalk 网关(也称为 Sidewalk 桥接器),如兼容的 Amazon Echo 和 Ring 设备,为物联网终端设备提供云连接。
Amazon Sidewalk 使用蓝牙低功耗进行短距离通信,使用 900MHz 频率的 LoRa 和 FSK 无线协议覆盖更长距离,在家庭内外实现低带宽和长距离连接。Sidewalk 网关共享用户互联网带宽的一小部分,然后用于将终端连接到网络。Amazon Sidewalk 网络的强度随着网关数量的增加而增强。了解更多关于 Amazon Sidewalk 的信息。
Amazon Sidewalk 目前在美国可用。开发者被允许在美国以外地区使用 Sidewalk 网关功能,仅用于其支持 Sidewalk 的终端开发和测试目的。此外,我们建议您咨询当地监管机构并验证网关是否被允许在您的地区操作其无线电,因为美国免许可频段设备仅用于开发目的。
Amazon Sidewalk 的差异化特点
Sidewalk 与当今可用的其他网络的不同之处:
-
持续连接
Amazon Sidewalk 网络由数百万参与的 Amazon Echo 和 Ring 设备作为 Amazon Sidewalk 桥接器提供支持,为物联网设备提供云连接。这确保了超出家庭 Wi-Fi 网络范围或依赖移动应用程序或专有网关进行云连接的设备的持续连接。
-
连接多样性
Amazon Sidewalk 允许智能设备通过蓝牙低功耗(BLE)和 900MHz/亚 GHz 波等无线协议进行通信。这提供了安全、可靠和多样化的连接,以支持广泛的物联网用例。
-
自动设备入网
Amazon Sidewalk 无接触注册过程在 Sidewalk 网关和未注册终端彼此接近时自动启动。客户可以将其支持 Sidewalk 的设备连接到 Amazon Sidewalk 网络,无需任何复杂配置。这种简便的设置增强了整体用户体验。
-
成本
Amazon Sidewalk 是一个免费连接的网络,为超过 90% 的美国人口提供覆盖。您无需构建或管理单独的网络基础设施,这有助于降低资本投资和运营成本。
-
简单的开发体验
支持 Sidewalk 的设备预配置了与 AWS IoT Core 建立加密连接所需的安全证书。这使您能够创建物联网解决方案,快速将边缘设备连接到 AWS,为客户提供无缝的即插即用设置体验。
-
隐私和安全
Amazon Sidewalk 设计了多种隐私和安全功能来保护在网络上传输的数据,确保客户数据和隐私保护。
Seeed Studio XIAO nRF52840 用于 Amazon Sidewalk
XIAO nRF52840 是一个通过 Amazon Sidewalk 认证的无线模块,通过 Amazon Sidewalk 网络上的蓝牙低功耗无线电技术为物联网设备提供连接。
该型号采用强大而紧凑的 SoM(系统级模块)设计,用于 Amazon Sidewalk 集成。凭借其内置的 nRF52840 芯片组,该模块提供 BLE 功能,为物联网应用实现无缝连接。Seeed Studio XIAO 拥有小巧的外形尺寸,非常适合空间受限的部署。凭借其可靠的性能和对 Amazon Sidewalk 的支持,它简化并加速了安全可靠的物联网解决方案的开发。
有关模块技术规格的更多详细信息,请点击这里。
本文档将指导您完成:
-
安装和配置 Amazon Sidewalk 的开发环境。
-
配置您的云服务并管理您的 XIAO nRF52840。
-
运行 Amazon Sidewalk 的 BLE 示例程序。
完成后,您将能够运行示例应用程序并使用 Amazon Sidewalk 进行测试。
硬件准备
本教程的内容将最大限度地减少焊接或额外布线的需要。因此,我们将使用两个目前可用的扩展板来帮助我们尽快完成项目。当然,如果您不想额外花费,您也可以选择通过面包板或杜邦线直接将设备连接到 XIAO。也就是说,必需品中的设备是您必须拥有的基本硬件,可选项不是必需的。
必需品
要完成本示例教程的内容,可能需要准备以下物品。
为了便于在美国东部-1(北弗吉尼亚)地区之外工作的非美国开发人员进行 Amazon Sidewalk 测试和端点开发,需要设置 VPN。这样可以实现无缝访问并确保高效参与开发过程。
可选项
为了便于布线和 Grove 扩展,或者便于通过 JLink 连接到 XIAO,您可能需要以下扩展板。
配置 Amazon Sidewalk 的开发环境
nRF Connect SDK 快速安装的原始教程可以在这里阅读。
Nordic Semiconductor 的 Amazon Sidewalk 解决方案基于 nRF Connect SDK v2.3.0。您可以通过以下安装方法之一来设置开发环境:
- 自动安装(工具链管理器)
- 手动安装
本节将重点介绍如何通过工具链管理器安装 nRF Connect SDK,即自动安装方法。系统基于 Windows 11。
完成以下步骤,使用工具链管理器应用程序自动安装 nRF Connect SDK。该应用程序安装 nRF Connect SDK 的完整工具链,包括 nRF Connect for VS Code 扩展和 nRF Connect SDK 源代码。
安装先决条件
在开始设置工具链之前,请为您的操作系统安装可用的更新。有关支持的操作系统和 Zephyr 功能的信息,请参阅要求。
此外,请确保安装 SEGGER J-Link 的通用版本。这是 SEGGER J-Link 与 Intel 和 ARM 程序集正常工作所必需的。
安装工具链管理器
工具链管理器可从 nRF Connect for Desktop 获得,这是一个跨平台工具,提供不同的应用程序来简化 nRF Connect SDK 的安装。该工具和应用程序都适用于 Windows、Linux 和 macOS。
步骤 1. 为您的操作系统下载 nRF Connect for Desktop。

步骤 2. 在您的机器上安装并运行该工具。
步骤 3. 在 APPS 部分,点击 Toolchain Manager 旁边的 Install。

步骤 4. 应用程序安装在您的机器上,Install 按钮变为 Open。
步骤 5. 在 nRF Connect for Desktop 中打开工具链管理器。
在导航栏中点击 SDK ENVIRONMENTS 来指定您想要安装 nRF Connect SDK 的位置。

步骤 6. 在 SDK ENVIRONMENTS 中,点击您想要安装的 nRF Connect SDK version 旁边的 Install 按钮。
您选择的 nRF Connect SDK 版本将安装在您的机器上。Install 按钮变为 Open VS Code。

安装时间与您环境中的网络相关,预计安装需要大约一小时。在此期间软件可能不会有任何动作,所以请不要认为出现了卡顿,您可以通过日志检查安装进度。

下载 Amazon Sidewalk 仓库
安装完成后,您可以通过两种方式构建应用程序:
- 使用 Visual Studio Code 和 nRF Connect for VS Code 扩展
- 使用命令行
步骤 7. 对于我们的项目,使用命令行就足够了。点击您安装版本旁边的向下箭头,然后选择 Open bash。

您的目录结构应该如下所示:
.
|___ .west
|___ bootloader
|___ modules
|___ nrf
|___ nrfxlib
|___ zephyr
|___ ...
步骤 8. 从 sdk-sidewalk 仓库克隆 Amazon Sidewalk 应用程序仓库到 nRF Connect SDK 文件夹,并将其命名为 sidewalk
,运行以下命令:
git clone https://github.com/nrfconnect/sdk-sidewalk.git sidewalk
步骤 9. 为 Amazon Sidewalk 安装 Python 要求。
pip install -r sidewalk/requirements.txt
如果您的计算机尚未安装 Python 环境,请阅读这里的教程在您的计算机上安装最新的 Python 3。
步骤 10. 设置 Amazon Sidewalk 应用程序清单并更新。
检查当前清单路径:
west manifest --path
返回的路径应该类似于以下格式。
> /path-to-ncs-folder/nrf/west.yml
将清单路径设置为 Amazon Sidewalk 仓库:
west config manifest.path sidewalk
更新所有仓库:
west update

根据您的连接情况,更新可能需要一些时间。
验证新的清单路径:
west manifest --path
返回的路径应该类似于以下格式。
> /path-to-ncs-folder/sidewalk/west.yml

请保持 Bash 窗口打开,我们几分钟后会回来。
配置您的 AWS 云服务
设置 Amazon Sidewalk 产品的原始教程可以在这里阅读。
接下来我们需要配置 AWS 云服务,以便设备通过密钥连接到您的 AWS 账户。
步骤 1. 将 Amazon Sidewalk 示例 IoT 应用程序存储库下载到您的本地机器。打开一个新的终端(如果您使用的是 Windows,则打开一个新的 Powershell)并输入以下命令来克隆存储库。
git clone https://github.com/aws-samples/aws-iot-core-for-amazon-sidewalk-sample-app.git
步骤 2. 如果您是第一次使用 Amazon IoT Core,那么您可能需要注册一个根账户,或者如果您已经有根账户或 IAM 账户,请登录到 Amazon IoT Core 控制台。

步骤 3. 获取账户密钥。
登录后,在控制台的右上角,点击您的用户名并选择安全凭证。

然后请创建一个新的凭证并保存您的访问密钥 ID 和秘密访问密钥。我们将在后续步骤中使用它们。

步骤 4. 在您的本地机器上配置 credentials 文件。
如果您还没有安装 AWS CLI,那么您可能需要安装它。
如果您已经安装了 AWS CLI,那么您可以使用 aws configure 命令来配置您的凭证文件。如果您使用的是 Windows 系统,您需要在具有管理员权限的 CMD 窗口中执行命令。
aws configure
然后窗口会要求您输入您的密钥,请分别输入它们并按回车确认。
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
接下来是选择国家和地区,这里我们需要选择 us-east-1。
region=us-east-1
对于其余部分,我们只需按回车并保留默认设置。

步骤 5. 添加用户权限以创建资源。
如果您的用户具有管理员权限,则已满足先决条件,您可以跳过此步骤。
本教程默认使用管理员权限账户,如果您使用的是 IAM 账户,请联系您的管理员为您的账户启用特定权限。
- 运行
python aws-iot-core-for-amazon-sidewalk-sample-app/ApplicationServerDeployment/policies/generate_policy.py
脚本,这将在 ApplicationServerDeployment/policies/ 目录中生成个性化的策略文档 - 转到 IAM 控制台,使用 DeployStackPolicy.json 内容创建策略
- 将创建的策略分配给您的用户 请参考 IAM 教程:创建并附加您的第一个客户管理策略 获取进一步指导。
确保 Simplicity Commander(用于 SiLabs)存在于您的系统 PATH 环境变量中。
尝试在终端中调用 commander --version
以确保 Simplicity Commander 可用。
运行 Amazon Sidewalk 的 BLE 示例
Template Bluetooth LE 的原始教程可以在这里阅读。
配置生成
步骤 1. 前往 AWS IoT Core for Amazon Sidewalk 工具。
打开我们之前克隆的 aws-iot-core-for-amazon-sidewalk-sample-app 文件夹。
步骤 2. 填充 config.yaml
配置文件。设置 NORDIC 硬件平台。
打开文件夹中名为 config.yaml 的文件(使用合适的编辑器,例如 VS Code)。粘贴以下内容并保存。
Config:
AWS_PROFILE: default # Name of your AWS profile from .aws/credentials
DESTINATION_NAME: SensorAppDestination # Sidewalk destination used for uplink traffic routing
HARDWARE_PLATFORM: NORDIC # Available values: NORDIC, TI, SILABS or ALL
USERNAME: null
PASSWORD: null
INTERACTIVE_MODE: True
Outputs:
DEVICE_PROFILE_ID: null
WEB_APP_URL: null
_Paths:
PROVISION_SCRIPT_DIR: tools/provision
SILABS_COMMANDER_TOOLS_DIR: null # Not needed if Silabs Commander is already in system Path. Only needed for SILABS.

步骤 3. 为配置工具设置 Python 虚拟环境:
cd aws-iot-core-for-amazon-sidewalk-sample-app
python -m pip install --user virtualenv
python -m venv sample-app-env
sample-app-env\Scripts\activate.bat
pip install pip==22.3.1
python -m pip install -r requirements.txt
python -m pip install pyjwt -t .\ApplicationServerDeployment\lambda\authLibs
步骤 4. 此时您可能想要运行 helper env_check.py
脚本来对您的环境进行健全性检查,以防止最常见的错误。
python env_check.py
如果出现如图所示的消息,则说明您的环境安装进展顺利。

步骤 5. 运行设备配置脚本:
python EdgeDeviceProvisioning/provision_sidewalk_end_device.py
您应该看到以下输出:

我们需要这里生成的 Nordic_MFG.hex
文件,它最终将被烧录到 XIAO nRF52840 中。
Nordic_MFG.hex 是设备与您的 Amazon IoT Core 建立通信链路的唯一凭证,每个设备或账户都不同。
您的配置文件位于 EdgeDeviceProvisioning
目录中。设备按设备配置文件的子目录分组,如下面的结构所示:
EdgeDeviceProvisioning \
- DeviceProfile_<profile-id> \
- DeviceProfile.json
- WirelessDevice_<device-id>\
-- Nordic_MFG.bin
-- Nordic_MFG.hex
-- WirelessDevice.json
请复制 Nordic_MFG.hex 文件并将其保存在您可以轻松找到的地方。
步骤 6. 退出 Python 虚拟环境:
deactivate
将 MQTT 添加到目标
对于本教程的这一部分,您可以阅读 Sidewalk 提供的官方教程。
示例概述
该示例演示了 Amazon Sidewalk 终端节点应用程序的模板。它针对蓝牙 LE 进行了优化。
该示例支持以下开发套件:
硬件平台 | PCA | 开发板名称 | 构建目标 |
---|---|---|---|
nRF52840 DK | PCA10056 | nrf52840dk_nrf52840 | nrf52840dk_nrf52840 |
由于 Amazon Sidewalk 尚未合并我们的 PR 提交,我们目前将通过修改支持的 nRF52840 DK 平台来支持 XIAO nRF52840。
硬件平台 | 开发板名称 | 构建目标 |
---|---|---|
Seeed Studio XIAO nRF52840 | nrf52840dk_nrf52840 | nrf52840dk_nrf52840 |
该示例展示了蓝牙 LE 传输协议的 Amazon Sidewalk API 实现。这是一个内存优化的 Amazon Sidewalk 配置示例,其中仅支持蓝牙 LE 传输协议。由于占用空间较小,应用程序的两个引导加载程序分区都放置在支持的 SoC(nRF52840)的内部闪存中。
用户界面
当您释放按钮时会触发按钮动作。要使用长按动作,请按住按钮 2 秒或更长时间,然后释放。
按钮分配如下:
-
按钮 1(长按)-- D1:
恢复出厂设置 - 应用程序通知 Amazon Sidewalk 堆栈恢复出厂设置事件。Amazon Sidewalk 库从非易失性存储中清除其配置。成功重置后,设备需要再次向云服务注册。
-
按钮 2 -- D3:
切换连接请求 - 设备请求 Amazon Sidewalk 网关在设备通过蓝牙 LE 广播时发起连接。连接断开后,用户必须再次设置信标状态。网关可能并不总是能够处理此请求,因为这取决于连接到它的设备数量。
-
按钮 3 -- D4:
发送 Hello - 此操作将向云端排队一条消息。如果 Amazon Sidewalk 未准备就绪,它将简单地显示错误而不发送消息。队列最终将被处理,所有排队的消息都将被发送。
-
按钮 4(短按)-- D9:
设置虚拟电池电量 - 该操作设置模拟电池电量。
-
按钮 4(长按)-- D9: 进入 DFU 状态 - 此操作禁用 Amazon Sidewalk 堆栈并启动蓝牙 LE SMP 服务器。您可以使用 nRF Connect 移动应用程序更新固件映像。要退出 DFU 状态,请对您的设备执行电源循环。
LED 指示灯代表应用程序的当前状态(尚未实现):
-
LED 1 -- D0:
应用程序连接成功。
-
LED 2 -- D2:
应用程序注册成功。
-
LED 3 -- D5:
应用程序时间同步成功。
-
LED 4 -- D8:
应用程序链路已建立。
准备示例固件
此示例使用 Amazon Sidewalk 提供的 BLE 示例程序,硬件驱动程序的固件对所有 XIAO nRF52840 都是通用的,如果您不想执行本节中的步骤,也可以直接下载我们提供的 merged.hex 文件。
以下是要遵循的具体步骤。
步骤 1. 从 Github 下载为 XIAO nRF52840 编写的程序。
步骤 2. 下载完成后,请将文件夹解压到 ncs 目录中。默认路径如下:
C:\ncs\v2.3.0\zephyr\boards\arm\nrf52840dk_nrf52840
该文件目录原本存放的是 nRF52840 DK 的开发文件。为了简化操作,我们通过重命名 XIAO nRF52840 程序来覆盖开发板。
因此您只需要用压缩包中的所有文件覆盖原始文件 nrf52840dk_nrf52840 中的所有文件即可。
步骤 3. 让我们回到 nRF Connect SDK 的 Bash 窗口。输入以下命令来执行固件生成。

cd sidewalk/samples/template_ble/
west build -b nrf52840dk_nrf52840
如果执行顺利,您将看到以下输出。

此时我们已经获得了示例固件,它的名称是:merged.hex
,存储在默认位置:
C:\ncs\v2.3.0\sidewalk\samples\template_ble\build\zephyr
您可以先将此文件与我们之前准备的 Nordic_MFG.hex 文件放在一起,稍后我们将一起使用它们。
为 XIAO nRF52840 烧录固件
步骤 1. 打开 nRF Connect for Desktop,在 APPS 中找到 Programmer 并安装它。

步骤 2. 通过 JLink 连接 XIAO nRF52840。
请通过 SWD 接口将 XIAO nRF52840 连接到 JLink。
Seeed Studio XIAO nRF52840 | JLink(非教育版) |
---|---|
3V3 | Vterf |
GND | GND |
SWDIO | SWIO |
SWCLK | SWCK |

如果您不打算使用 XIAO 扩展板,那么您可以参考 XIAO nRF52840 Wiki 中关于使用 SWD 接口的内容,额外焊接双工线到 JLink。
步骤 3. 打开 Programmer 并将两个固件烧录到 XIAO nRF52840。
点击软件左上角的 Add file 按钮,分别添加本文中准备的 merged.hex 文件和 Nordic_MFG.hex。


然后将 JLink 连接到您的计算机,点击左上角选择您的设备。

连接后,点击左侧的 Read 按钮获取 XIAO 的内存分区。

接下来点击 Erase & write 将固件烧录到 XIAO 中。

完成后,您可以点击 Read 查看内存形状是否近似,这可以让您检查闪存是否成功。

步骤 4. 组装 Amazon Sidewalk 设备并使其工作。
在示例预览中,我们已经标记了 LED 和按钮连接的引脚位置。接下来我们需要使用四个 Grove LED 按钮,这不仅允许我们控制 XIAO 的工作,还可以通过按钮上的 LED 显示不同的工作状态。
Seeed Studio XIAO nRF52840 | LED | 按钮 | USB 转 UART |
---|---|---|---|
D0 | LED1 | ||
D1 | Button1 | ||
D2 | LED2 | ||
D3 | Button2 | ||
D4 | LED3 | ||
D5 | Button3 | ||
D8 | LED4 | ||
D9 | Button4 | ||
RX (D7) | TX | ||
TX (D6) | RX |

XIAO 通过 USB 供电,然后使用按钮控制 XIAO nRF52840,并通过 UART 获取 XIAO 操作日志。

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