你觉得这篇文章怎么样? 帮助我们为您提供更好的内容。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
你觉得这篇文章怎么样?
现如今似乎一切都支持无线并且“智能化”。当您的智能设备从 Brian Krebs 的 DDoS 攻击中抽身出来时,看看它的幕后工作原理将会充满趣味。在这一集的“一天时间您能做些什么”中,我们将享受一段蓝牙低能耗技术 (BLE) 所带来的(低成本)美妙时光。
蓝牙 4.2 低能耗技术 (BLE)
在家里,BLE(又称为蓝牙智能)意味着什么?如果您已经是一个资深蓝牙用户,您大可以跳过这一部分,往下一窥幕后;如果不是,就紧随我们了解 Executive Précis™ 吧。
BLE 第一个值得称赞的地方在于,虽然它和传统蓝牙一样免许可、以 2.4GHz 频带运行,但它实际上是一个具有异于核心规范(从诺基亚“Wibree”协议发展而来)“血统”的蓝牙 4.2 轻量子设备。因此,BLE 无法在短距离无线应用中与传统蓝牙兼容。
BLE 凭借其简便性(包括产品上市所需跳过的法律障碍少得多)和注重低功耗而深受设计师的喜爱。BLE 设备大多时候处于休眠状态。当它们被唤醒发送数据时会使用非常简单的链路层(专为快速连接而设计),传输长度可调整且占空比低至 0.1% 的消息只需耗时几毫秒(而传统蓝牙需耗时 100 毫秒)。这些造就了难以置信的低电流消耗和更长久耐用的电池:具体时间可以年计而非以小时或天进行计算。
图 1
BLE 利用高斯频移键控 (GSFK) 调制和自适应跳频将 2.4 GHZ 频段 (2402MHz - 2480Mz) 分为 40 个信道(3 个“广播”信道和 37 个数据信道),间隔为 2MHz。
BLE 连接
BLE 连接中有两个角色:外围设备和中央设备。外围设备(通常是某种传感器或监视器)指示其存在于任何通往可连接设备的广播信道中。外围设备是协议附属者,它运行服务器以分发其产生的数据。中央设备(通常是智能手机或平板电脑)扫描外围设备连接的广播信道。中央设备是协议发起人,它运行客户端以接收外围设备发出的数据。简而言之,在这一阶段,设备交互的方式由通用接入规范 (GAP) 定义。
建立连接后,该连接便是专用连接(外围设备一次只能连接一个中央设备),因此外围设备会停止推送其自身。中央设备将在其自身和外围设备之间建立连接参数。该交互由控制数据流的通用属性 (GATT) 定义。
图 2
服务、特征及其描述符统称为属性,并由通用唯一标识符 (UUID) 标识。
UUID 可以是 128 位的值(例如 126e4589-e87b-12d3-a456-926344550000),但也可以是 16 位(例如 e87b),适用于蓝牙 SIG 标准配置文件。
中央设备通过执行服务发现来查找外围设备提供哪些数据。中央设备返回的是配置文件,其本质上是用于一种或多种服务(所提供数据的类型)的包络,该服务又由特征(可以视具体情况具有描述符)组成。您可以将特征视为我们所追踪的数据的容器,而描述符是这些数据的标签。特征始终包括至少两个由其句柄寻址的属性:特征声明(提供关于实际数据的元数据)和特征值(实际数据)。不必担心,稍后我们看实际例子时这些内容将会更容易理解一些。
为了辅助提高互操作性,蓝牙特殊兴趣小组 (SIG) 已为不同的应用程序类型指定了多个标准配置文件。其中包括用于环境感应、心率、血糖测定和查找位置(用于定位恼人的丢失的钥匙等)等多种标准配置文件。当然,也可以创建自定义配置文件。
例如,让我们考虑下心率配置文件。该配置文件有两项服务:心率服务和设备信息服务。在心率服务中,您可以找到:心率测量特征、身体传感器位置特征和心率控制点特征。
一窥幕后
对于这次小小的试用,我们使用运行 Cypress CY5677 USB 加密装置的 LattePanda 作为我们的中央设备。我们的外围设备是 Sensirion SHT31 智能 Humigadget。
“为什么要使用 LattePanda?”我知道您会这样想。有两个原因:1. 我认为价值 100 英镑以内的 Windows 10 计算机很可爱;2. 我们稍微拓展的内容回答了有关 LattePanda 的常见问题:“是的,它很可爱,但我实际上能用它做些什么呢?”,以下就是我们的测试装置:
入门
我们要做的第一件事是从 Cypress 网站下载免费的 Cysmart 软件。
您需要在网站上注册并设置 Cypress 用作下载管理器的 Akamai NetSession 接口软件:
图 3
您还需要确保已启用 .NET Framework 3.5 才能运行该软件:
- 按键盘上的 [Windows 键] + [R] 键调出运行命令框。
- 在“打开”命令框中键入“appwiz.cpl”,然后按 [ENTER]。
- 在弹出的“程序和功能”窗口中,单击左上方标记为“打开或关闭 Windows 功能”的链接。
- 此时将打开“Windows 功能”框。检查是否已启用“.NET Framework 3.5(包括 .NET 2.0 和 3.0)”选项,然后单击“确定”。
安装 Cysmart 软件并将您的加密装置插入 USB 端口后就可以开始运行了。但是,您可能会发现(像我一样),您的加密装置正在运行一些旧的固件:
图 4
如果出现这种情况,您需要下载 PSoC 编程器软件并安装,以将加密装置固件重新编程为最新版本:
运行 PSoC 编程器。
- 单击“文件”>“加载”(或按 [F4])加载十六进制文件。
- 选择 C:\Program Files\Cypress\CySmart\1.2\dongle\CY5677\BLE_4_2_Dongle_CySmart_256K.hex 中的文件
- 单击“文件”>“编程”(或按 [F5])对固件进行编程。
完成所有操作后便可以看到 BLE 开始运转。
使用 Cysmart
第一次运行软件时,可以看到如下所示的窗口:
图 5
按“开始扫描”按钮查看可用的连接之前,应确保我们已设置 Sensirion SHT31 传感器设备以开始在 BLE 上宣告自身存在,方式是按下前面的按钮,直到可以在 LCD 显示屏上看到“rFon”字样。如果有多个设备,则还将显示一个 4 位数字,以帮助识别我们正在使用的设备。现在,让我们开始扫描吧:
图 6
显示可用设备的列表后便可以停止扫描。除了我们的外围设备,似乎周围还有几个其他蓝牙设备(通常是手机)。如果我们选择我们的智能 Humigadget,则可以看看它广播的内容。
图 7
查看右边的广播数据选项卡,可以看到一个“标志”数据字节,它能够让扫描设备知道哪些连接可用。在该案例中推送的是 0x06,查看下方描述时,其告诉我们 Humigadget 执行的是蓝牙 LE 通用发现模式且不支持 BR/EDR(基本速率/增强数据速率),即核心蓝牙规范。换句话说,设备指示:“我使用的是 BLE 而不是传统蓝牙”。
如果查看范围内的一部手机,我们可以看到其支持全系列的蓝牙规范(因为它支持同步 LE 和 BR/EDR 到可用的相同设备(控制器 + 主机)),它是一个中央设备,而不是像我们的 Humigadget 那样的低端外围设备:
图 8
返回查看 Humigadget 的“扫描响应数据”选项卡时,我们可以看到设备名称。在第一个字节中,我们可以看到“特征声明”— 这是用于告知中央设备在“完整本地名称”特征中有多少数据的元数据:0x11(十进制为 17)个字节。
图 9
如果现在按下“连接”按钮,便可以创建与 Humigadget 的专用连接:
我们可以从 Humigadget 的显示器上看到其已不再推送其自身。要从 Humigadget 获取配置文件,我们需要按“发现所有属性”按钮。这可能需要一些时间,但最后会为我们的 Humigadget 获取一个配置文件:
图 10
该屏幕显示配置文件的组成。我们可以在顶部看到配置文件中正在声明的第一个服务。这是管理设备权限的主要服务,并且(与以下通用属性服务一起)对于 BLE 设备来说是强制性服务。在该服务中,我们可以看到各个特征(每个特征都具有一个声明,后跟特征值 — 即数据)。
我们还可以看到,每个属性由递增句柄寻址并且具有一个 UUID(通用唯一识别码)。由于这些早期属性都是蓝牙 SIG 预定义属性的一部分,因此,它们的长度只有 2 个字节(16 位)。例如,您会注意到在我们的图片中多次出现的 UUID 0x2803。这是为 GATT 特征声明分配的 UUID 编号。
如果现在单击“配对”按钮,然后单击“启用所有通知”,则我们的中央设备将与外围设备配对。向下滚动页面时,我们会发现数据正在进行更新:
图 11
当然,我们的中央设备(蓝色突出显示)所接收的原始数据由调试器以十六进制格式显示。如果想让其为人们所使用,则需要在我们创建的应用程序中将其转换才能在手机或平板电脑上读取我们的数据。
使用自定义特征时,请注意我们服务数据的 128 位 UUID。每个特征都由 16 位服务 UUID 和基本 UUID 组成。在我们的例子中,基本 UUID 是 0000-xxxx-B38D-4985-720E-0F99-3A68-EE41,而我们所使用的服务 UUID 分别是 0x1235 和 0x2235。
结论
当然,从这一点出发您还可以进行更深入的研究 — 您可以轻而易举地获取支持 BLE 的开发套件并创建您自己的 BLE 应用程序。希望以上对 BLE 的简单介绍已激发起您探索这一新世界的兴趣。就所需技术专业知识和所涉及的成本而言,参与这项无线革命的障碍已显著降低。那么,您还有什么理由止步不前呢?
评论