简介
低功耗蓝牙(BLE),有时也称为“蓝牙智能”,是经典蓝牙的轻量子集,是蓝牙4.0核心规范的一部分。尽管与经典的蓝牙有一些重叠,但BLE实际上具有完全不同的沿袭,并且由诺基亚作为内部项目“ Wibree”启动,然后被蓝牙SIG采纳。
有很多无线协议。对于工程师和产品设计师来说,使BLE如此有趣的是,这几乎肯定是设计可以与现有的任何现代移动平台(iOS,Android,Windows手机等)通信的东西的最简单方法。 Apple设备是唯一的硬件设计选项,不需要您无休止地钻研,即可合法地为iOS设备销售产品。
本指南将为您提供BLE的快速概述,特别是数据的处理方式
,以“蓝牙低功耗”的方式进行组织,以及设备如何宣传它们的存在,以便您可以连接到它们并开始来回传递数据。
BLE平台支持以下列出的大多数主要平台均支持蓝牙4.0和低功耗蓝牙(BT 4.0的子集):
iOS5 +(首选iOS7 +)
Android 4.3+(4.4+中的许多错误修复)
Apple OS X 10.6+
Windows 8( XP,Vista和7仅支持蓝牙2.1) )
GNU/Linux Vanilla BlueZ 4.93 +
GAP
GAP是通用访问配置文件的缩写,它控制蓝牙中的连接和广告。 GAP使您的设备对外界可见,并确定两个设备如何(或不能)彼此交互。
设备角色 GAP定义了设备的各种角色,但是要记住的两个关键概念是 Central 设备和 Peripheral 设备。
外围设备设备是小型,低功耗,资源受限的设备,可以连接到功能更强大的中央设备。外围设备是诸如心率监视器,启用了BLE的接近标签之类的东西。
中央设备通常是您连接的具有更大处理能力的手机或平板电脑和记忆。
和扫描响应数据。通过GAP发送广告有两种方法。 广告数据 有效载荷和扫描响应有效载荷。
两个有效载荷是相同的,最多可以包含31字节的数据,但是只有广告数据有效负载是强制性的,因为这是不断从设备传输出去的有效负载,以使范围内的中央设备知道它的存在。扫描响应有效负载是中央设备可以请求的可选辅助有效负载,并允许设备设计人员在广告有效负载中添加更多信息,例如设备名称字符串等。
广告过程下图应说明广告过程以及广告有效载荷和扫描响应有效载荷的方式
外围设备将设置一个特定的广告间隔,并且每经过此间隔,它将重新传输其主要广告包。如果设备仅每2秒而不是每20ms发布一次广告,则较长的延迟可以节省功率,但响应速度会变慢。
如果侦听设备对扫描响应有效负载(并且在外围设备上可用)感兴趣,则可以选择请求扫描响应有效负载,外围设备将使用其他数据进行响应。
广播网络拓扑外设通告自己,以便可以建立连接并可以使用GATT服务和特征(这允许双向交换更多数据),在某些情况下,您只想通告数据。
这里的用例是您希望外围设备一次将数据发送到多个设备。这只能通过广告数据包实现,因为在连接模式下发送和接收的数据只能被这两个连接的设备看到。
通过在31字节广告或扫描响应有效载荷中包含少量自定义数据,您可以使用低成本的蓝牙低功耗外设,可将数据单向发送到侦听范围内的任何设备,如下图所示。这在低功耗蓝牙技术中被称为广播。
例如,这是Apple的iBeacon所使用的方法,它使用 Manufacturer Specific数据字段。
一旦您在外围设备和中央设备之间建立了连接,广告过程通常将停止,并且通常将不再能够发送广告包,并且您将使用GATT服务和特性在两个方向上进行通信。/div》
GATT
GATT是“通用属性配置文件”的缩写,它定义了两个低功耗蓝牙设备使用称为服务的概念来回传输数据的方式。 》和特征。它使用称为属性协议(ATT)的通用数据协议,该协议用于在表中的每个条目使用16位ID的简单查找表中存储服务,特征和相关数据。 。
一旦在两个设备之间建立了专用连接,GATT就开始起作用,这意味着您已经完成了GAP规定的广告流程。
GATT和连接要记住的最重要的一点是连接是排他的。这意味着 BLE外围设备一次只能连接到一个中央设备(移动电话等)!外围设备一旦连接到中央设备,它将立即停止广告本身,其他设备将无法再看到它或连接到它,直到现有的连接断开。
建立连接也是允许双向通信的唯一方法,其中中央设备可以发送有意义的数据到外围设备,反之亦然。
拓扑下图应说明蓝牙低能耗设备在连接环境中的工作方式。外围设备一次只能连接到一个中央设备(例如移动电话),但是中央设备可以连接到多个外围设备。
如果需要在两个外围设备之间交换数据,则需要在所有消息都通过中央设备的地方实现自定义邮箱系统。
一旦外围设备与中央设备之间建立了连接,通信就可以双向发生,与仅使用广告数据和GAP的单向广播方法不同。
GATT交易与GATT一起理解的一个重要概念是服务器/客户端关系。
外围设备称为 GATT服务器,其中包含ATT查找数据,服务和特征定义,以及 GATT客户端(电话/平板电脑),向该服务器发送请求。
所有交易均由主设备GATT客户端启动,该设备从从设备GATT接收响应服务器。
何时建立建立连接后,外围设备将向中央设备建议一个“连接间隔”,并且中央设备将尝试重新连接每个连接间隔,以查看是否有新数据可用,等等。务必牢记此连接间隔不过,这实际上只是一个建议!您的中央设备可能无法满足请求,因为它正忙于与另一个外围设备通信,或者所需的系统资源不可用。
下图应说明外围设备(GATT服务器)与外部设备之间的数据交换过程。中央设备(GATT客户端),主设备启动每个事务:
服务和特征 GATT BLE中的事务基于称为 Profiles , Services 和 Characteristics 的高级嵌套对象,如下图所示:
配置文件
配置文件实际上不在BLE外围设备本身上,这很简单,已定义的已定义服务集合由蓝牙SIG或外围设计人员堆积。例如,心率配置文件将心率服务和设备信息服务结合在一起。可以在此处查看正式采用的基于GATT的配置文件的完整列表:配置文件概述。
Services
Services用于将数据分解为逻辑实体,并包含称为特征的特定数据块。服务可以具有一个或多个特征,并且每个服务都通过称为UUID的唯一数字ID与其他服务区分开,UUID可以是16位(对于正式采用的BLE服务)或128位(对于自定义服务) )。可以在Bluetooth Developer Portal的“服务”页面上查看正式采用的BLE服务的完整列表。例如,如果您查看心率服务,我们可以看到此正式采用的服务具有16位UUID 0x180D,并包含多达3个特征,尽管只有第一个是必选的:心率测量,身体传感器位置和心率控制点。
特征
GATT事务中最底层的概念是“特征”,它封装了一个数据点(尽管它可能包含一系列相关数据数据,例如来自3轴加速度计的X/Y/Z值等)。
与服务类似,每个特性通过预定义的16位或128位UUID进行区分。可以免费使用Bluetooth SIG定义的标准特性(确保跨BLE启用的硬件/软件之间的互操作性),也可以定义自己的自定义特性,只有外围设备和软件可以理解。
例如,心率测量特性对于心率服务是必选的,并且使用0x2A37的UUID。它以一个描述HRM数据格式的单个8位值开头(无论数据是UINT8还是UINT16等),然后继续包含与该配置字节匹配的心率测量数据。
特征是重点是您将与BLE外设进行交互,因此了解这一概念很重要。它们还用于将数据发送回BLE外设,因为您也可以写入特征。您可以实现一个具有自定义“ UART服务”和两个特征的简单UART类型接口,一个特征用于TX通道,一个特征用于RX通道,其中一个特征可能被配置为只读,而另一个则具有写特权。/p》
责任编辑:wv
-
蓝牙
+关注
关注
114文章
5835浏览量
170662
发布评论请先 登录
相关推荐
评论