版本:v1.0.4
摘要
本文主要介绍了蓝牙协议背景知识,蓝牙协议栈的架构,各种profile和protocol之间的分类和关系,如何在不同平台下实现蓝牙,蓝牙在各种不同领域内的应用,进行蓝牙技术的开发时所涉及的通用的知识,以及详细解释什么是低功耗蓝牙BLE,以及BLE和标准蓝牙的区别和联系。
2015-05-25
修订历史 | ||
---|---|---|
修订 1.0.4 | 2015-05-25 | crl |
|
版权 © 2015 Crifan, http://crifan.com
插图清单
表格清单
摘要
下面对于各种不同版本的蓝牙规范协议的区别,内容,进行整理如下:
表 1.1. 蓝牙规范协议版本
蓝牙协议 | 支持的速度 | 备注 | |
---|---|---|---|
版本号 | 发布日期 | ||
Bluetooth v1.0和v1.0B |
|
||
Bluetooth v1.1 |
|
||
Bluetooth v1.2 | 实际:721Kb/s |
|
|
Bluetooth v2.0+EDR | 2004年 |
|
|
Bluetooth v2.1+EDR | 2007-07-26 |
|
|
Bluetooth v3.0+HS | 2009-04-21 |
|
|
Bluetooth v4.0 | 2010-06-30 |
|
|
Bluetooth v4.1 | 2013-12-04 |
|
|
Bluetooth v4.2 | 2014-12-02 |
|
蓝牙的信号的传输,物理上有多种协议实现。
详见:Controller_stack - List of Bluetooth protocols - Wikipedia, the free encyclopedia
蓝牙BD/EDR和蓝牙BLE之间的主要参数的区别和对比:
表 1.2. 蓝牙BD/EDR和蓝牙BLE主要参数对比
对比项 | 蓝牙BD/EDR | 蓝牙BLE |
---|---|---|
射频物理上的通道 | 79个频段,1MHz的通道步长 | 40个频段,1MHz的通道步长 |
发现/连接 | 查询/传呼 | 广播 |
微微网从设备数目 | 活动的7个/共255个 | 无限制 |
设备地址隐私性 | 无 | 仅私有地址寻址有效 |
最大数据率 | 1-3Mbps | 1Mbps(GFSK调制) |
加密算法 | E0/SAFER+ | AES-CCM |
典型覆盖范围 | 30米 | 50米 |
最大输出功率 | 100mW(20dBm) | 10mW(10dBm) |
不同无线技术的功耗对比,包括蓝牙,UWB,ZigBee,WiFi:
TODO:这里:Android 4.2蓝牙介绍 - Innost的专栏 - 博客频道 - CSDN.NET解释的貌似不错,抽空整理过来。
目录
蓝牙协议,也可以成为蓝牙规范,分为几大类:
所以你常会看到,某某Profile或规范,是定义在Core Specification中的。
比如v2.0的EDR是可选的,可以实现,也可以不实现
比如v3.0的HS也是可选的
蓝牙协议栈protocol stack,主要分成两类:
蓝牙的各种协议的分类:
表 2.1. 蓝牙的各种协议和profile的分类
蓝牙profile和protocol的分类 | profile缩写 | profile全名 | 典型应用举例 |
---|---|---|---|
强制性profile | LMP | Link Management Protocol | |
L2CAP | Logical Link Control and Adaptation Protocol | ||
SDP | Service Discovery Protocol | ||
最常见且通用的Profile | HCI | Host Controller Interface | |
RFCOMM | Radio Frequency COMMunication | ||
其他常见Profile | BNEP | Bluetooth Network Encapsulation Protocol | |
AVCTP | Audio/Video Control Transport Protocol | ||
AVDTP | Audio/Video Distribution Transport Protocol | ||
TCS BIN | Telephony Control Protocol – Binary | ||
AT commands | attention sequence (modem prefix) | ||
A2DP | Advanced Audio Distribution Profile | 无绳耳机 | |
ATT | Attribute Profile | ||
AVRCP | Audio/Video Remote Control Profile | ||
采纳的(别的,第三方的)协议 | PPP | Point-to-Point Protocol | |
TCP | Transmission Control Protocol | ||
UDP | User Datagram Protocol | ||
IP | Internet Protocol | ||
OBEX | Object Exchange Protocol | ||
WAE | Wireless Application Environment | ||
WAP | Wireless Application Protocol | ||
vCard | Virtual Card | ||
vCal | Virtual Calendar |
侧重不同profile的协议:
通用访问的profile
无线广播和数据报的蓝牙协议架构:
以及对应的针对音频profile的配置:
Android中的蓝牙协议栈,之前是Bluez,现在改用Bluedroid
TODO:关于BlueZ和BlueDroid的对比,抽空再整理。可参考:
具体应用时,包括蓝牙耳机和蓝牙手机或蓝牙电脑之间的连接,都属于蓝牙的主机端和设备端之间的协作,其整体架构,都可以用下图表示:
以及更加详细的说明,主机端和设备端之间,都是通过HCI的接口通讯的:
然后将蓝牙应用于音频时,官网给出的关系是:
对应的模型如下:
对应的模块关系是:
现场总线领域内的HART,新出了用蓝牙无线连接的HART猫,以及对应的Android的应用程序,可以通过蓝牙HART猫连接HART设备:
对应的Android的蓝牙app,详见:
基于BlueZ的蓝牙协议栈的PC端,比如常见的Ubuntu,(4.2版本之前的)旧版本的Android,则相关的测试工具有:
TODO:抽空去研究具体是如何使用的。然后把典型的使用,测试流程整理出来。可参考:
Resources/HowTo/SamsungBTInOrigen - Linaro Wiki
linux下使用蓝牙设备 bluetooth hciconfig hcitool
Bluedroid与BluZ,蓝牙测试方法的变动(基于bludroid和BlueZ的对比)
Android blueZ HCI(一):hciconfig实现及常用方法 - CLK - 博客频道 - CSDN.NET
Bluetooth Low Energy ==BLE
BLE有时候也被叫做Bluetooth Smart
BLE是标准的蓝牙(协议规范)的一个轻量级的子集
BLE是在蓝牙4.0的核心规范中引入的。
BLE,不仅是和标准的蓝牙规范是有重叠部分的,并且BLE是从骨子里就和标准规范不是一个血统的:
BLE是Nokia发起的,作为一个内部的名为Wibree的项目,后来被蓝牙组织SIG所采纳,才有了现在的BLE。
BLE之前的,临时用的名字有:Wibree,Bluetooth ULP (Ultra Low Power)
2011年下半年,改名为:
BLE,和标准蓝牙技术(比如蓝牙2.1+EDR/3.0+HS版本)一样,工作在免许可的2.4GHz ISM射频频段。
4.0以前的蓝牙,控制器和主机是分开的,而BLE中控制器和主机是在一起的。
BLE的相对于标准蓝牙的一些主要特点:
BLE的芯片实现有两种模式:
只实现了BLE
部分实现了单模的蓝牙的厂商:STMicroelectronics, AMICCOM, CSR, Nordic Semiconductor, Texas Instruments
成本降低后的单模的蓝牙芯片,支持整合到高度集成和紧凑的设备,带有一个轻量级的链接层Link Layer,
支持超低功耗的空闲idle模式操作,简单的设备发现,非常节能的单点对多点数据传输,以尽可能低的功耗下的安全加密连接。
专门针对ULP操作优化了。
将Bluetooth Smart即BLE集成到已有的经典的蓝牙协议中
部分实现了双模蓝牙的厂商:Qualcomm-Atheros, CSR, Broadcom and Texas Instruments
由于双模设备要求执行标准蓝牙和蓝牙低能耗任务,因此双模芯片针对ULP操作的优化程度没有像单模芯片那么高
单模芯片可以用单节钮扣电池(如3V、220mAh的CR2032)工作很长时间(几个月甚至几年)。
标准蓝牙技术(和蓝牙低能耗双模器件)通常要求使用至少两节AAA电池(电量是钮扣电池的10至12倍,可以容忍高得多的峰值电流),
并且更多情况下最多只能工作几天或几周的时间(取决于具体应用)
注意,也有一些高度专业化的标准蓝牙设备,它们可以使用容量比AAA电池低的电池工作。
实现蓝牙协议的芯片,由于蓝牙协议的特殊性,即之前的标准的蓝牙和后期的BLE的低功耗蓝牙是不完全兼容的,因此蓝牙芯片如果想要实现对两种模式都支持的话,则需要实现蓝牙的双模。 不过蓝牙双模和标准蓝牙以及蓝牙BLE,都是可以互相通信的。
用架构图表示如下:
BLE蓝牙协议栈的架构如下:
BLE中所有profile和应用都建构在GAP或GATT之上。
每一层的含义如下:
1Mbps自适应跳频GFSK(高斯频移键控),运行在免证的2.4GHz
控制设备处于准备(standby)、广播、监听/扫描 (scan)、初始化、连接,这五种状态中一种。
五种状态切换描述为:未连接时,设备广播信息(向周围邻居讲“我来了”),另外一个设备一直监听或按需扫描(看看有没有街坊邻居家常里短可聊,打招呼“哈,你来啦”),
两个设备连接初始化(搬几把椅子到院子),设备连接上了(开聊)。
发起聊天的设备为主设备,接受聊天的设备为从设备,同一次聊天只能有一个意见领袖,即主设备和从设备不能切换。
向上为主机提供软件应用程序接口(API),对外为外部硬件控制接口,可以通过串口、SPI、USB来实现设备控制
行李打包和拆封处,提供数据封装服务
提供配对和密匙分发,实现安全连接和数据交换
负责数据检索
出纳负责处理向上与应用打交道,而库房前台负责向下把检索任务子进程交给ATT库房去做,
其关键工作是把为检索工作提供合适的profile结构,而profile由检索关键词(characteristics)组成。
对上级,提供应用程序接口
对下级,管理各级职能部门,尤其是指示LL层控制室五种状态切换,指导保卫处做好机要工作
相对于标准蓝牙,BLE的功耗要低很多,此处被叫做超低功耗ULP(Ultra Low Power)。
BLE采用了许多手段,去最大限度地降低功耗:
首先要了解的是,如果无线开启的话,就是很费电的,所以BLE的设计理念就是要尽可能的降低无线开启的时间。
而此理念应用到最开始的搜索,找到别的蓝牙设备,建立沟通和连接,这部分的设计,就从标准的32个信道的蓝牙,变成了3个信道的BLE。
即,标准蓝牙一共有32个信道,而BLE只有3个信道。
> BLE搜索设备的时间大大缩短:BLE扫描其他设备只需要0.6ms~1.2ms,而标准蓝牙搜索其他设备要22.5ms。
> BLE定位其它无线设备所需的功耗要比标准蓝牙技术低10至20倍
值得注意的是,使用3个广告信道是某种程度上的妥协:
这是在频谱非常拥挤的部分对“开启”时间(对应于功耗)和鲁棒性的一种折衷(广告信道越少,另外一个无线设备在选用频率上广播的机会就越多,就越容易造成信号冲突)。
不过该规范的设计师对于平衡这种妥协相当有信心——比如,他们选择的广告信道不会与Wi-Fi默认信道发生冲突。
即,蓝牙低能耗技术的广告信道是经过慎重选择的,可以避免与Wi-Fi发生冲突:
一旦连接成功后,蓝牙低能耗技术就会切换到37个数据信道之一。
在短暂的数据传送期间,无线信号将使用标准蓝牙技术倡导的自适应跳频(AFH)技术以伪随机的方式在信道间切换(虽然标准蓝牙技术使用79个数据信道)。
要求蓝牙低能耗技术无线开启时间最短的另一个原因是它具有1Mbps的原始数据带宽——更大的带宽允许在更短的时间内发送更多的信息。
举例来说,具有250kbps带宽的另一种无线技术发送相同信息需要开启的时间要长8倍(消耗更多电池能量)
蓝牙低能耗技术“完成”一次连接(即扫描其它设备、建立链路、发送数据、认证和适当地结束)只需3ms。而标准蓝牙技术完成相同的连接周期需要数百毫秒。
通过这两种方式限制峰值功耗:
两种技术都使用高斯频移键控(GFSK)调制,但蓝牙低能耗技术使用的调制指数是0.5,而标准蓝牙技术是0.35。0.5的指数接近高斯最小频移键控(GMSK)方案,可以降低无线设备的功耗要求(这方面的原因比较复杂,此处暂不赘述)。
更低调制指数还有两个好处,即提高覆盖范围和增强健壮性。
标准蓝牙技术使用的数据包长度较长。在发送这些较长的数据包时,无线设备必须在相对较高的功耗状态保持更长的时间,从而容易使硅片发热。
这种发热将改变材料的物理特性,进而改变传送频率(中断链路),除非频繁地对无线设备进行再次校准。
再次校准将消耗更多的功率(并且要求闭环架构,使得无线设备更加复杂,从而推高设备价格)。
相反,蓝牙低能耗技术使用非常短的数据包——这能使硅片保持在低温状态。因此,蓝牙低能耗收发器不需要较耗能的再次校准和闭环架构。
标准蓝牙技术是一种“面向连接”的无线技术,具有固定的连接时间间隔,因此是移动电话连接无线耳机等高活动连接的理想之选。
相反,蓝牙低能耗技术采用可变连接时间间隔,这个间隔根据具体应用可以设置为几毫秒到几秒不等。
因为BLE技术采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),
此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链路。
正因为如此,才使得BLE的工作模式非常适合用于从微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控器等其它外设传送数据。
这些设备发送的数据量非常少(通常几个字节),而且发送次数也很少(例如每秒几次到每分钟一次,甚至更少)
蓝牙低能耗技术设计非常适合由于严格的功耗限制而无法使用标准蓝牙技术的应用场合。
针对于BLE,蓝牙技术联盟(Bluetooth SIG)发布了新的profile,比如:
比如手表
对应的领域可能有:距离感应告警和室内定位(有时也称为室内GPS)
距离感应告警方面的应用可能有:
比如手表将周期性地与手机进行通信,如果手机移到一定的范围之外——因而无法与用户佩戴的手表联系——它将自动锁死,同时手表发出告警。
这将防止手机意外丢失,并对任何潜在的小偷起到重要的震慑作用。
距离感应告警应用还可以延伸至便携式电脑,当用户移动到一定范围之外时将便携式电脑锁定(也许当靠近的用户按下手表上的某个键时也能解锁)。
这种应用还能用作儿童安全设备,当儿童与父母在一定范围内时他们手上的手表能保持正常通信,当儿童跑出设定范围时发出声音告警。
蓝牙低能耗传感器的低成本和低维护量(因为电池不需要频繁更换)将鼓励在公共场所的广泛使用。
另外一种关键应用是室内定位(在没有GPS信号的地方)
室内定位方面的应用可能有:
大型公共建筑(如机场或火车站)周围的传感器不断地广播它们的位置信息
装备了蓝牙低能耗技术的手机在这个范围内通过时就可以向它的主人显示这些位置信息。
传感器还可以发送其它信息,如航班起飞时间和登机口、娱乐场所位置或附近商店的特价商品等
其它健康和健身监视配置(如血糖仪和血压计、周期性节律仪和周期性奇异电源)将随后推出。
[9] 蓝牙低功耗设计简介