Skip to main content
shopping_basket 购物车 0
登录

Cypress CYBT-213043-MESH 加快蓝牙 Mesh 开发

Andrew Back
0

Cypress 评估套件硬件、SDK 及蓝牙 Mesh 基础知识一览。

上一篇文章中,我们探讨了 Cypress CYW20819 蓝牙 5 SoC (186-0727) 及其评估套件,并介绍了单芯片解决方案如何支持蓝牙 Mesh 1.0。在本文中,我们将详细探讨蓝牙 Mesh 网络,并了解在 CY20819 SoC 基础上特别为此目的而设计构建的多节点 Cypress 套件 - CYBT-213043-MESH (187-4661)

快速入门

该套件由四个完全相同的电路板组成,这些电路板提供了在示例应用中建立并运行蓝牙 Mesh 网络所需的一切功能。电路板上带有正常运行的传感器和输出,对于常见的评估用例应该有用。

除 USB 外,这些电路板还可以通过放入 PCB 下方支架中的电池(不提供)来供电。这种结构比较便利,因为在评估和原型设计中,通常需要测试解决方案的范围并使用多块电路板,在这种情况下,电源线的系缆操作可能会带来不便。

可通过跳线来选择电源。

也可以取下另一个跳线来测量电流。这种便利的设计对开发由电池供电的低功耗解决方案特别有用。

软件支持包括代码示例,例如:

  • RGB 灯
  • 调光器
  • 运动传感器
  • 温度传感器
  • 智能开关

这些都是使用基于 Eclipse IDE 的 Modus Toolbox 构建和开发的应用。如前所述,SDK 提供了外设驱动器和 API、支持多个配置文件的蓝牙堆栈,以及设备无线 (OTA) 升级支持。

模块的便利性

这些 Mesh 电路板没有采用直接安装的方式,而是借助 CYBT-213043-02 模块来安装 CYW20819 SoC。因而将 SoC 与晶体无源组件、PCB 天线以及射频匹配功能相结合,封装在一个便捷的 12x16 毫米模块中,该模块还具有屏蔽功能并采用蝶形焊接垫进行安装。它还通过了蓝牙 SIG 认证以及 FCC、ISED、MIC 和 CE 认证,从而有效减少在集成到解决方案时所花费的工作量。

SDK 设置

接下来,我们来了解一下如何设置开发环境。

首先,我们需要安装 Modus Toolbox。在 Linux 系统中,只需下载其存档文件,解压缩,然后执行 eclipse/ModusToolbox 文件。我们也可以选择使用捆绑提供的 Bluetooth SDK v1.0,但建议您最好下载最新版本

执行 ModusToolbox 后,为工作空间选择存储位置(用来存储项目等信息),然后继续更新 SDK。如果我们选择帮助 > 更新 ModusToolbox SDK...,将会收到错误消息,更新 ModusToolbox 窗口随即打开。我们可以在该窗口中选择删除 SDK 1.0,然后单击“安装自定义 SDK”并浏览至从下载的 ZIP 存档文件中解压缩出来的 .cysk 文件。

蓝牙 Mesh 101

低能耗蓝牙 (BLE) 技术广泛应用于众多的 IoT 应用中,但鉴于这是一种点对点的应用,因此覆盖范围有限。而 Mesh 技术则不然,每个节点都能与同一网络中的其他所有节点进行通信,因而可以显著扩大有效覆盖范围。在此过程中,不是在简单的某一对设备之间建立一对一的连接,而是通过“广告传播”或广播的方式传送数据包和节点,然后将这些数据包和节点传递到其他节点上。

蓝牙 Mesh 网络由以下节点类型构成:

中继节点

中继节点能够将该节点上的数据包转发到其他节点,除非是低功耗节点,否则大多数节点都具有此功能。中继节点的示例包括智能灯泡或开关等。

低功耗 (LPN) 节点

低功耗节点主要是在低负载周期内运行,可配合代表它们来收集消息的朋友节点一起使用。电池供电的设备通常都属于低功耗节点。

朋友节点

朋友节点按预定义的时间间隔与 LPN 进行通信,这意味着后者可以节约能源,而朋友节点因要执行存储和转发功能会需要更多内存。

代理节点

代理节点可以在各类型的网络之间传递消息。例如,您的智能手机可能支持 BLE,但所在端没有 Mesh 网络,而另一端有 Mesh 网络。

调配程序

调配程序类型的节点,负责将未调配的节点加入到 Mesh 网络中,以及处理密钥交换等事务以确保安全通信。

BLE Mesh 使用“托管式泛源操作”来传送消息,简单地说,这是一种多路径的实施方式,使用诸如存活时间 (TTL) 等度量标准来确保消息在传递后不会在网络中再次传递。

按着 MQTT 等的思路考虑,发布和订阅 (pub/sub) 消息也是可行的,因为您有一个发布器节点,它可以将消息仅发送给那些订阅了消息的用户。

BLE Mesh 中还涉及其他一些关键概念,包括:

  • 元件。一个节点可包含一个或多个元件,而元件由负责定义元素功能的实体构成。例如,可调光灯泡可能具有两个元件:一个用于照明功能,另一个用于占用传感器。
  • 模型。节点上可能包含用于定义节点功能的服务器、客户端或控制模型。仍然参照上例,服务器模型可能会显示可调光灯泡元件的状态,以供客户端读取或控制。
  • 状态。状态可能是 ON 和 OFF 或量表上的一些值。
  • 安全性AppKeys 用于分隔应用程序;NetKeys 用于分隔网络和子网络;DevKeys 对于设备是唯一的。

最终,我们拥有了一个基于蓝牙技术构建的网络,因其出色的网状架构扩大了覆盖范围和恢复能力,支持由始终在线的主电源供电的节点辅助的低功耗设备,还实现了多级安全性以及与非 Mesh 处理设备的互操作性。

示例

通过复制以下 GitHub 存储库或选择下载 ZIP 存档文件,可以获得该套件的最新示例:

https://github.com/cypresssemiconductorco/Code-Examples-BT-SDK-for-ModusToolbox.git

如果要构建示例,请选择文件 > 新建 > ModusToolbox IDE 应用程序,然后在系统提示时选择 CYBT-213043-MESH 目标硬件。在编写 SDK 时随附了四个示例,接下来我们选择其中一个示例作为我们的起始应用程序。项目列表的正下方有一个导入...按钮,我们可以选择此按钮来浏览至所复制的 GitHub 存储库中的项目。

即便您对 SDK 随附的示例感兴趣,但也建议您最好使用 GitHub 存储库中提供的示例版本,因为该版本可能比随附示例的版本更新。

将项目加载至 IDE 中之后,我们可以在浏览器左上方的“项目”中选择该项目的名称,然后右键单击并选择更改应用程序设置...来设置设备地址等选项。最上面的是可用于“传感器运动”应用程序的选项。

IDE 的左下方有一个快速面板,提供了一些针对常见任务的便捷链接,例如启动构建,然后对电路板进行编程。请注意,如果运行的是 Linux 系统,您的用户帐户必须是 dialout 组的成员才能对电路板进行编程。

MeshController

这是特别为 Android、iOS 和 Windows 提供的助手应用程序。这些应用程序通过提供的源代码以及预建的二进制文件来促进评估和开发。它们作为 BT SDK 的一部分提供,位于下面的目录下:

ModusToolbox_1.1/libraries/bt_sdk-1.1/components/BT-SDK/common/apps/snips/mesh/peerapps/

要在 Android 上安装 MeshController 应用程序:

  1. 将 Android 设备插到笔记本电脑/台式机上,然后启用 USB 文件传输
  2. 将 MeshController.apk 文件复制到该设备上
  3. 打开 Android 设备上的文件应用程序,导航至要安装的程序包

阅读更多

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.

Recommended Articles

DesignSpark Electrical Logolinkedin