Zigbee快速入门第一章 – Zigbee预备课程
Zigbee快速入门第一节 – Zigbee预备课程
Zigbee快速入门第二节 – Zigbee基础介绍
Zigbee快速入门第三节 – EmberZnet和AppBuilder介绍
Zigbee快速入门第四节 – 由Light构建网络,并使用install code将Switch加入到这个网络
Zigbee快速入门第五节 – 在设备上使用API发送,接收和处理On-Off命令
Zigbee快速入门第六节 – 在Switch端用一个周期事件来执行自定义代码,在我们的实验中是控制LED闪烁。
Zigbee快速入门第七节 – 在Switch端使用非易失性存储器来存储自定义数据
1. 介绍
如果您是Silicon Labs开发环境和Zigbee解决方案的新手,那么我们建议您仔细阅读并完成此预备课程。该文档描述了如何使用EmberZNet PRO SDK和Simplicity Studio以及兼容的无线入门套件(WSTK)来进行Zigbee开发,以及在开始学习Zigbee Boot Camp系列课程之前应该了解的Zigbee基本知识。
并且提供了分步说明来演示如何创建基本的Zigbee项目,以检查开发环境是否已准备就绪。
下图说明了设置开发环境的工作流程。
2. 先决条件
2.1. 硬件要求
2.1.1 无线开发套件
在按照本指南中的步骤进行操作之前,您需要购买一套Zigbee开发套件。在Zigbee快速入门——新兵训练营系列实验中,你可以使用EFR32MG无线入门套件, EFR32xG21无线入门套件 或者 EFR32xG22无线入门套件。
然后,您需要在客户支持平台上创建一个帐户,并在KitRegistration上注册开发套件的序列号,以获取Zigbee SDK访问权限。有关更多信息,请参考KBA关于访问Silicon Labs无线网状网络协议栈。
以下是EFR32 Mighty Gecko无线入门套件的套件器件。
3 x无线入门套件 (WSTK) 主板
3 x EFR32MG12 2.4 GHz 19 dBm无线板
3 x EFR32MG12 2.4 GHz 10 dBm无线板
AA电池板(支持电池运行+19)
USB线缆
EFR32MG入门卡
你也可以使用Thunderboard Sense 2 套件,这个套件是一个相对精简的开发板. 需要注意的是这个套件不提供Zigbee SDK的下载权限, 如果您需使用Thunderboard Sense 2 套件,请确保您能通过其他方式下载Zigbee SDK。
注意:不同的无线入门套件包含有不同的器件,请确保你有至少两片无线入门套件主板,以及相应的无线板来完成我们的实验。
注意:如果您要参加Zigbee培训,所有硬件将由组织者提供。请直接与培训活动的组织者联系,他们将为您提供一个授予Zigbee SDK访问权限的临时帐户。
2.1.2 工作电脑
以下是Simplicity Studio v4对于工作电脑的要求,在进行无线项目开发时,我们强烈建议你准备一台至少具有8GB RAM内存的工作电脑。
操作系统 | 版本 |
---|---|
Windows | Windows 10 (x64) |
macOS | 10.14 Mojave |
Linux | x64 Kernel 3.13 and above tested with Ubuntu 18.04 LTS |
硬件配置 | 要求 |
---|---|
CPU | 1 GHz或更高 |
内存 | 无线项目开发要求至少8 GB RAM |
磁盘空间 | 无线项目开发要求至少7 GB可用磁盘空间 |
2.2. 软件需求
要开发Zigbee应用程序,您将需要通过安装Simplicity Studio,EmberZNet PRO协议栈软件和兼容的工具链来配置软件开发环境。
2.2.1. Simplicity Studio
Simplicity Studio是一个免费的基于Eclipse的集成开发环境(IDE),Silicon Labs在此基础提供了一系列的非常有用的工具。开发人员可以使用Simplicity Studio来开发,调试并分析其应用程序。
如果尚未安装Simplicity Studio V4,请连接到Simplicity Studio 4 以下载安装包,并运行Simplicity Studio安装程序。
注意:为获得更好的无线项目开发体验,请逐条确认如下信息。
- 请确保您的工作电脑具有8 GB或更多的RAM内存,以及超过7 GB的可用磁盘空间。
- 如果使用Windows(建议使用Windows 10),则强烈建议将Simplicity Studio安装到C: 盘。否则,你需要在Simplicity Studio v4的安装盘中,重新创建一个新的workspace,并切换到该workspace。
首次启动Simplicity Studio时,它将显示一个许可协议对话框。接受协议的条款,然后单击[Next]。
图 2‑1 Simplicity Studio许可协议
选择目标目录,单击[Next]>,然后单击[Install]。
应用程序启动时,将邀请您登录。请使用上面创建的支持帐户(或培训活动组织者提供的临时帐户)登录。尽管您可以在此处跳过登录,但是必须登录才能访问某些受保护的内容,例如EmberZNet PRO SDK。
图 2‑2 登录Simplicity Studio
注意:如果您还没有任何WSTK,请忽略下面的两段。
登录后,Simplicity Studio将检查连接的硬件。如果您通过USB线缆连接了WSTK,Simplicity Studio将检测USB线缆并提示您下载设备检查器。点击[Yes]。
图 2‑3 安装设备所需的软件包
如果已连接WSTK,则将启动Launcher视图,如下所示。连接的设备将被标识为J-Link设备,并在“Debug Adapters”选项卡中列出,如图所示。
图 2‑4 Simplicity Studio主界面
2.2.2. EmberZNet PRO Stack
Zigbee解决方案的实现,需要Zigbee无线收发和相关的微处理器(同时包含在单个芯片中或分开地),以及在Zigbee协议栈之上所开发的应用程序。EmberZNet PRO是Silicon Labs对Zigbee PRO协议栈的实现。借助Zigbee PRO协议栈,Silicon Labs既提供了基于Zigbee规范的标准网络API,同时也提供了应用程序框架,从而为客户提供了一种基于Zigbee应用协议和Zigbee cluster library(ZCL)来快速开发其应用程序的方法。
为了加快客户产品的上市速度,Silicon Labs在SDK中提供了许多演示和示例,涵盖了EmberZNet SDK中最常见的用例。
假设您已经购买了网状网络开发套件,并且还使用您自己的帐户注册了序列号。使用相同的帐户登录Simplicity Studio,然后即可通过Simplicity Studio下载EmberZNet PRO 协议栈。
注意:如果您还没有开发套件,也没有注册自己的帐户,请使用培训活动组织者提供的临时帐户登录Simplicity Studio。
如果您尚未安装EmberZNet SDK,请运行以下程序包管理器以安装最新的EmberZNet SDK,或者培训活动组织者所指定的EmberZNet SDK版本。
图 2‑5 安装最新的EmberZNet SDK
请参阅下图,以了解如何安装指定版本的EmberZNet SDK. 在安装完成之后,请将首选的SDK版本设定为该指定版本。
图 2‑6 安装指定版本的EmberZNet SDK
而且,如果您安装了旧版本的EmberZNet SDK,则强烈建议将其更新为最新版本或者培训活动组织者所指定的版本。其方法与上述类似。
成功安装SDK后,单击[Yes]以重新启动Simplicity Studio,以使更改生效。
如果已连接WSTK,请在launcher左侧的[Debug Adapters]选项卡中单击设备,然后Launcher视图将展示与你所选择硬件及协议栈相关的软件组件和功能。
图 2‑7 主界面视图
注意:如果还没有WSTK,则只需在Launcher视图左下角的“My Products”选项卡中键入WSTK名称“ BRD4162A”。如果列出了多个版本条目,则选择“ Rev A01”。
图 2‑8 手动选择开发套件
- Demos
Demos是预编译的应用程序示例,可以直接烧录到您的设备。 - Software Examples
软件示例提供了协议栈所需的默认配置以及基本应用程序框架。Silicon Labs建议您以基于用例的示例开始自己的开发,并根据需要对其进行修改。
如果没有一个基于用例的示例满足您的需求,则可以从ZigbeeMinimal示例开始。我们还将使用ZigbeeMinimal作为Zigbee快速入门——新兵训练营系列实验的起点。 - SDK Documentation
SDK文档列出了有关协议栈的文档,其中包括SDK版本说明,API参考等。
2.2.3. 编译器工具链:
2.2.3.1. GCC
Simplicity Studio提供了GCC(GNU编译器集合),它将在首次安装EmberZNet SDK时自动安装。
您可以通过从Launcher视图单击[Help]> [关于Simplicity Studio]> [Toochains and SDKs],检查已安装的GCC工具链(以及SDK)的版本信息。
图 2‑9 检测已安装的GCC工具链
2.2.3.2. IAR (非必需)
建议在新手训练营系列培训中使用GCC,当然您也可以使用IAR来编译项目。请参阅EmberZNet SDK发行说明,了解兼容的IAR版本。
对于Silicon Labs客户,您可以获得30天的IAR评估许可证:
•转到Silicon Labs支持门户,网址为https://www.silabs.com/support。
•向下滚动到页面底部,然后单击“Contact Support”。
•如果尚未登录,请登录。
•单击“Software Releases”选项卡。在视图列表中,选择开发工具。单击执行。结果是指向发行说明中命名的IAR-EWARM版本的链接。
•下载IAR软件包(大约需要1个小时)。
•安装IAR。
•在“ IAR许可证向导”中,单击“向IAR Systems注册”以获取评估许可证。
•完成注册,IAR将提供30天的评估许可证。
•一旦安装了IAR-EWARM,下次Simplicity Studio启动时,它将自动检测并配置IDE以使用IAREWARM。
2.3. Github 帐户
由于IoT-Developer-Boot-Camp是一个开源项目,因此我们使用github维护所有源代码和文档,参与其中的每个人都可以提供你自己对于它的评论(意见),提交你的bug修复,新的功能需求或改进文档请求。
3. Zigbee应用程序开发入门
作为准备课程,本节的目的是提供逐步说明,以演示如何开始使用ZigbeeMinimal示例项目,以验证您的开发环境是否已搭建完成。。
3.1. 连接您的硬件
注意: 如果您还没有开发套件,请在Launcher视图左下角的“My Products”选项卡中键入开发板名“ BRD4162A”。并跳至“ 创建并编译Zigbee项目”部分。
使用USB线将WSTK连接到已安装Simplicity Studio的PC。为了在Simplicity Studio中获得最佳性能,请确保WSTK左下方的电源开关位于“ AEM”(高级能量监控)位置。
Figure 3‑1 EFR32MG12无线入门套件
3.2. 使用Gecko Bootloader
Bootloader是存储在保留的闪存中的一段程序,可以初始化设备,更新固件image并可能执行某些完整性检查。如果怀疑应用程序没有运行,请先检查Bootloader,因为缺少Bootloader会导致程序无法运行。
有两种可能方法创建一个Bootloader的应用程序。
- 使用Silicon Labs的预编译的image(不适用于所有电路板)。
- 创建自己的Bootloader项目。
第一种选择是最简单的解决方案。每个Gecko SDK都包含用于不同开发板的预编译的Bootloader image。在本系统实验中,最适合Zigbee应用程序的是“Internal Storage Bootloader (single image on 1MB devices)”。它适合我们所选设备的闪存大小,此外还可以用于OTA固件更新。如果对Bootloader没有其他特殊要求,我建议您使用它。
该image可以在类似如下目录找到
c:SiliconLabsSimplicityStudiov4developersdksgecko_sdk_suitev2.6platformbootloadersample-appsbootloader-storage-internal-singleefr32mg12p332f1024gl125-brd4162a
打开Simplicity Commander,以将预编译的Bootloader image编程到设备。
图 3‑2 打开Simplicity Commander
单击‘adaptor’ 旁边的[connect]按钮连接到J-Link适配器,然后单击target旁边的[connect]连接到目标设备,然后Simplicity Commander将检测到该芯片的型号为EFR32MG12xxx。浏览预编译的image,然后单击[Flash]按钮开始烧录过程。
图 3‑3 烧录预编译的Gecko Bootloader image
注意: 如果已成功将预编译的Bootloader image烧录到radio board,则不需要以下第二种方法。您可以直接跳至“ 创建和编译Zigbee项目”部分。
第二种方法是使用AppBuilder创建,生成和编译自己的应用程序。可以自定义和添加新功能,当前实验没有详细介绍这种方法。
- 转到File-> New ->Project。这将显示“New Project Wizard”
- 选择“ Silicon Labs AppBuilder Project”。点击“ Next”。
- 选择“ Gecko Bootloader”。点击“ Next”。
- 选择最新版本。(Gecko Bootloader 1.9.2)。点击“ Next”。
- 选择“Internal Storage Bootloader(single image on 1MB devices)”。点击“ Next”。
- 为您的项目命名(任意名称)。点击“ Next”。
- 选择开发板和编译器。然后完成。
- 现在应该已经创建了新项目,并且已打开项目配置文件(.isc文件)。
- 点击“Generate”。注意项目文件出现在Project Explorer中。将会出现一个窗口,显示“Generation successful”。参见下图。
图 3‑4 创建、生成并编译Gecko Bootloader项目 - 在“Project Explorer”窗口中选择您的项目,然后单击[Build] 编译项目。确保编译完成没有任何错误。
输出bootloader-storage-internal-single-combined.s37文件应烧录到目标设备。我建议使用.s37或.hex,因为这些文件已经包含要烧录的地址。
像上面一样使用Simplicity Commander烧录输出文件到目标板。
3.3. 创建并编译Zigbee项目
通过连接WSTK,Simplicity Studio也将在Launcher视图中自动列出可用的示例应用程序,单击一个示例项目,Simplicity Studio将基于所选示例新建一个项目。
注意: 如果还没有WSTK,也可以只在Launcher视图左下角的“My Products”选项卡中键入WSTK名称“ BRD4162A”。Simplicity Studio还将在Launcher视图中自动列出可用的示例应用程序。
以下是分步说明。
- 在左侧的“Debug Adapters”或“My Products”选项卡中选择设备。
- 展开软件示例,找到并单击“ EmberZNet 6.6.xx GA SoC示例” 组下的 “ZigbeeMinimal”。
- 询问您是否要切换到Simplicity IDE,单击[Yes]。
- Simplicity IDE随即在AppBuilder视图中打开新项目。
- 在Simplicity IDE中,单击视图右上方的[Generate]。
- 如果收到任何警告“AppBuilder has determined..., All selected files will be overwritten”,请单击[OK]。
- 生成成功后,单击[OK]。
- 通过单击顶部工具栏中的[Build]来编译项目。
- 编译成功通过。
- 右键单击生成的hex文件,转到[Flash to Device ...],然后选择要烧录的目标设备。
图 3‑5 创建、生成并编译Zigbee项目
注意: 为了确保您已完成预备课程,我们准备了一个小测验,请将ZigbeeMinimal项目的编译日志提交到Zigbee预备课程反馈的第5项。
由于反馈表单的大小限制,请在编译控制台的编译日志末尾捕获如下所示的片段,然后提交。
Running size tool
arm-none-eabi-size "ZigbeeMinimalSoc.axf"
text data bss dec hex filename
195504 1324 50240 247068 3c51c ZigbeeMinimalSoc.axf
make --no-print-directory post-build
cmd //c 'C:UsersxxxxxxSIMPLI~1V4B9FD~1ZIGBEE~1/ZigbeeMinimalSoc-postbuild.bat' 'ZigbeeMinimalSoc' 'C:/Users/xxxxxx/SimplicityStudio/v4_workspace/ZigbeeMinimalSoc' '' 'C:SiliconLabsSimplicityStudiov4'
图 3‑6 提交编译日志
3.4. 测试你的项目
将image烧录到开发组件后,就可以与设备进行通讯了。为此,请打开Launch console,该控制台是Studio中的内置串行端口终端。
图 3‑7 测试你的项目
如果打开了串行控制台,则切换到“ Serial 1”并按“ Enter”,控制台将输出类似于“ ZigbeeMinimalSoc”的项目名称。
图 3‑8 串行控制台输出
4. Zigbee基础知识
Zigbee新手训练营系列培训将涵盖Zigbee基本知识,EmberZNet SDK和WSTK简介,如何编译和加入Zigbee网状网络,如何通过网络发送onoff命令,如何使用事件机制以及如何访问非易失性存储器。
尽管本系列培训是针对Silicon Labs Zigbee解决方案的新手而设计的,但强烈建议您在参加本系列课程之前先阅读以下文档。
UG103.2: Zigbee Fundamentals
5. 常见问题及解答
Simplicity Studio在我的电脑上无法运行
请确保你的工作电脑有至少8GB RAM内存,因为在无线项目开发时,Simplicity Studio要求至少8GB RAM。
为什么无法正确的创建/生成项目文件?
请检查在你的项目名称中是否包含有"-"或者中文字符。项目命令时,只允许使用下划线"_"来作为连字符。
为什么无法正确编译ZigbeeMinimal项目?
在无线项目中有非常多的链接文件,所以请确保你当前的workspace同Simplicity Studio的安装目录处在同一个磁盘。否则在项目编译时可能会出现错误。
Github无法访问,或者图片无法显示
如果在您所在的区域,因为网络原因导致无法访问github,可以参考网络上的一些解决方案。