【翻译】BLE简介

Introduction to Bluetooth Low Energy

简介

Bluetooth Low Energy (BLE),也经常被称为Bluetooth Smart,它是传统蓝牙的子集,在Bluetooth 4.0 core specification中被引入。虽然BLE和传统蓝牙有很多重叠的地方,但是它是有自己独特的历史血统的,BLE被Bluetooth SIG即蓝牙标准纳入之前,一直是诺基亚发展的一个叫做Wibree的室内项目。

对工程师们来说虽然有很多种的无线协议可供选择,但是BLE是实现和现代移动平台通信的最简单的方式,尤其是对于苹果设备而言,BLE可以说是唯一的可以避免为了成功的提交苹果商店的硬件设计选择。

以下的简介将使你有一个快速对BLE的总体的了解,尤其是数据如何组织,以及设备如何通过广播来告之其存在,让你可以连接他们并进行数据的传输。

BLE平台支持

以下列出的设备和平台均支持蓝牙 4.0和BLE:

  • iOS5+ (iOS7+ preferred)
  • Android 4.3+ (numerous bug fixes in 4.4+)
  • Apple OS X 10.6+
  • Windows 8 (XP, Vista and 7 only support Bluetooth 2.1)
  • GNU/Linux Vanilla BlueZ 4.93+

GAP

GAP是Generic Access Profile的缩写,它控制着蓝牙的连接和广播过程。GAP协议使得设备可以被其他设备识别,并决定两个设备如何交互。

设备角色

GAP为设备定义了各种各样的角色,但两个最关键的概念是中心设备(Central devices)和周边设备(Peripheral* devices)。

周边设备是指那些体积较小,功耗较小,资源有限的设备,它可以连接更加强大的中心设备,例如各种手环,手表,心跳检测器等;中心设备通常指的是手机或者平板等拥有更强大的计算和存储的设备。

下图可以详细的说明了整个广播的过程,以及广播负载和扫描回复负载是如何工作的。
周边设备会设置一个特定的广播的时间间隔(Advertising Interval),每个时间段的开始,它会发送其广播数据包,时间间隔越长节省电量,但是不能及时被扫描到。这是很明显的道理。

周边设备的广播包括两种,一种是Advertising data,一种是scan response data,广播数据就是上面所说的,是必选,每一广播间隔开始都会不间断发送,通过它来告诉中心设备自己的存在;扫描回复则是可选的,它包含了设备的基本信息,比如设备的名字和地址等,只有当中心设备对他感兴趣,发送扫描回复请求时,周边设备才会发送扫描回复数据包作为反馈。

广播示意图
广播网络拓扑

尽管大多数情况下,周边设备广播自己都是为了建立连接后使用GATT services、characteristics完成更多的双向的数据交换,但也有些情况是不需要连接的,只需要周边设备将数据广播出去即可。

这种情况主要存在于需要周边设备同时给多个中心设备发送数据,而一旦建立连接,数据的收发就只对在建立连接的两台设备间可见。

周边设备可以发送一段包含少量自定义数据的31字节的广播或者扫描回复包给在监听范围的所有设备,这就是典型的BLE广播的过程。

通俗点的讲就是BLE的广播有两种作用,一种是告诉中心设备自己的存在然后等待连接;另一种就是单纯的对外广播信息,苹果的iBeacon就是后者的定性应用,它在广播包Manufacturer Specific Data中插入了一段自定义的数据,用来完成特定的功能。

microcontrollers_BroadcastTopology

周边设备和中心设备一旦建立连接,周边设备的广播过程就停止了,也不能再发送广播包了,接下来就要通过GATT services和characteristic进行通信。

GATT

GATT全称Generic Attribute Profile,中文名叫通用属性协议,它定义了servicescharacteristic两种东西来完成低功耗蓝牙设备之间的数据传输。它是建立在通用数据协议Attribute Protocol (ATT),之上的,ATT把services和characteristic以及相关的数据保存在一张简单的查找表中,该表使用16-bit的id作为索引。

一旦两个设备建立了连接,GATT就开始发挥作用,同时意味着GAP协议管理的广播过程结束了。但是必须要知道的是,建立GATT连接必要经过GAP协议。

最重要的事情,GATT连接是独占的,也就意味着一个BLE周边设备同时只能与一个中心设备连接。一旦周边设备与中心设备连接成功,直至连接断开,它不再对外广播自己的存在,其他的设备就无法发现该周边设备的存在了。

周边设备和中心设备要完成双方的通信只能通过建立GATT连接的方式。

网络连接拓扑

下图展示了BLE设备如何工作的。一个周边设备只能同时连接一台中心设备,但是中心设备可以连接多台周边设备。

如果两个周边设备需要进行数据的交换的话,就必须经由中心设备的中转。
一旦周边设备和中心设备建立了连接,通信就是双向的了,对比前面的GAP广播的网络拓扑,通信是单向的,只能由周边设备往中心设备广播数据。

GATT网络拓扑
GATT事务

GATT是基于典型的C/S模式,其中周边设备通常扮演GATT Server,它保有services、characteristic以及查找表,也就是数据的存储是在GATT Server中;而例如手机平板等中心设备通常是GATT Client,他们向GATT Server发送请求。一切都是主设备GATT Client发起,然后接受来自从设备GATT Server的相应。

当连接建立之后,周边设备会给中心设备建议一个连接间隔(Connection Interval),然后中心设备每个时间间隔都会重连查看是否有新数据可以获取。但是这个连接间隔只是一个建议,因为中心设备可能忙于与其它周边设备通信或者系统资源不可得而并不能完全遵循。

下图展示了周边设备和中心设备的数据交换的流程,可以看出每一次事务都是由中心设备发起的,而周边设备只负责应答。

通信事务流程
  • Services and Characteristics

BLE GATT通信是基于嵌套的Profiles, Services andCharacteristics结构之上的,下图是其框架:

GATT数据存储结构
  • Profiles

Profile并不是真实存在的一种结构,而是多个完成某一特定功能services的集合,或者说是对这个特定结合的功能的描述,或者名称。以Heart Rate Profile为例,它包括Heart Rate Service 和 Device Information Service,他们都是为了完成测量心率这个功能而存在的service。

更详细的可以查看Profiles Overview

  • Services

每个service拥有一个唯一标识UUID,可以是官方认证的16bit的id,也可以是128位的自定义id。service是GATT数据的逻辑分类,它包含一个或者多个characteristic。

官方通过了一些标准 Service,完整列表在这里。以 Heart Rate Service为例,可以看到它的官方通过 16 bit UUID 是 0x180D
,包含 3 个 Characteristic:Heart Rate Measurement, Body Sensor LocationHeart Rate Control Point,实现该service第一个Heart Rate Measurement是必选的,其他两个是可选的。

  • Characteristics

Characteristic也拥有一个16-bit 或者128-bit的UUID,它是GATT通信中的最小的逻辑数据单元,它封装了一个单一的数据点,当然这个数据点可能包含一组相关的数据,比如加速度传感器的x/y/z三个坐标轴的数据。

实际上,和 BLE 外设打交道,主要是通过 Characteristic。你可以从 Characteristic 读取数据,也可以往 Characteristic 写数据。这样就实现了双向的通信。你可以使用Characteristic实现一个类似串口(UART)的 Sevice,这个 Service 中包含两个 Characteristic,一个被配置只读的通道(RX),另一个配置为只写的通道(TX)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容