从应用场景可以看到,蓝牙设备的物联网属性越来越强,从下图可以看到蓝牙技术在众多物联网无线技术中的定位越来越清晰明确:
蓝牙技术联盟(SIG: Bluetooth Special Interest Group)由爱立信和IBM 牵头成立于1998年,初始成员共有五个:爱立信、英特尔、诺基亚、东芝和 IBM。
“蓝牙”(Bluetooth)这个名字是斯堪的纳维亚语中 Blåtand / Blåtann(即古挪威语blátǫnn)的一个英语化版本,该词是十世纪的一位国王Harald Bluetooth的绰号,他将纷争不断的丹麦部落统一为一个王国。以此为蓝牙命名的想法最初是Jim Kardach于1997年提出的,Kardach开发了能够允许移动电话与计算机通讯的系统,他的灵感来自于当时正在阅读的一本由Frans G. Bengtsson 撰写的描写北欧海盗和Harald Bluetooth 国王的历史小说The Long Ships,意指蓝牙也将把通讯协议统一为全球标准。
蓝牙的第一个正式标准是2002年发布的Bluetooth 1.1(Bluetooth 1.0 版本问题较多,基本不能用),使用的是BR(Basic Rate)技术,此时蓝牙的理论传输速率为721 Kbps(2005年发布的Bluetooth 1.2 标准的速度),那个年代这个速度可以说很快了(当时PC 上网的Modem 速度才56 Kbps)。但是科技变化太快了,BR技术转眼就过时了,那怎么办呢?
EDR(Enhanced Data Rate)技术应运而生,SIG 在2005年发布的Bluetooth 2.0 支持增强数据速率的EDR 技术,用来加快数据传输速率。EDR 的比特率可以达到3 Mbps,实际最大的数据传输速率为2.1 Mbps,EDR 相比BR 采用了什么新技术来增强数据传输速率呢?
EDR 改进了传输数据的调制方式,BR 技术采用GFSK(Gaussian Frequency-Shift Keying) 高斯频移键控对传输数据进行调制,EDR 技术则使用PSK(Phase-Shift Keying)相移键控来提高调制码率(EDR 采用了两种调制方式 π/4-DQPSK 和 8-DPSK),EDR 通过采用更高效的调制方式可以获得先前3 倍传输速率的提升。随着科技的发展,EDR 技术又落伍了,看看人家Wi-Fi 11g/11a 的传输速率都达到54 Mbps了,EDR 的2.1Mbps 显得太寒酸了,这次蓝牙该如何应对Wi-Fi 的竞争呢?
HS(High Speed) 技术来救场了,SIG 在2009 年发布的Bluetooth 3.0 引入的HS 技术,可以提供高达 24 Mbps 的理论数据传输速度,这么高的速率提升是如何做到的呢?蓝牙组织想到个主意,直接把WIFI 的PHY层和MAC层拿来使用,这就是AMP (Alternate MAC and PHY layer extension) 技术。不过呢,由于蓝牙自身的PHY + MAC层和AMP 技术差异太明显了,这次扩展只能是交替使用(Alternate)的,也就是BR/EDR 和 HS-AMP 不能同时使用(从Wi-Fi 11g 拿来的AMP 有54 Mbps 的传输速率,因为交替使用只能达到24 Mbps),蓝牙链路的协商建立依然使用BR/EDR 技术,高数据速率传输采用AMP 技术(AMP 不能单独使用,只是BR/EDR 的可选项补充),两套技术交替使用就显得不够简洁高效了,因此HS-AMP 技术并没有大规模普及。
蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙应用层协议(Bluetooth Application)。蓝牙核心协议关注对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何使用这些机制;蓝牙应用层协议,是在蓝牙核心协议的基础上,根据具体的应用需求,百花齐放,定义出各种各样的策略,如FTP、文件传输、局域网等等。
Bluetooth Core 由Host和Controller 两部分组成,这两部分在不同的蓝牙技术中比如BR/EDR、AMP、LE,承担角色略有不同,但大致的功能是相同的。Controller 负责定义RF、Baseband 等偏硬件的规范,并在这之上抽象出用于通信的逻辑链路(Logical Link);Host 负责在逻辑链路的基础上,进行更为友好的封装,这样就可以屏蔽掉蓝牙技术的细节,让Bluetooth Application 更为方便的使用。在一个系统中,Host只有一个,但Controller可以一个,也可以有多个。
上面介绍的蓝牙BR/EDR/HS 技术的进化路线,就是传输速率的加快、加快、再加快。但能量是守恒的,你想传的更快,代价就是消耗更多的能量。而有很多的应用场景,并不关心传输速率,反而非常关心功耗,这就是Bluetooth LE(称作蓝牙低功耗)产生的背景。
2010年蓝牙技术联盟发布了Bluetooth 4.0,新增了BLE 蓝牙低功耗协议,伴随着物联网潮流的兴起,SIG 也逐渐将重心从向高速率发展转移到向低功耗发展(也可以说高速率方向上已经与Wi-Fi 拉开较大差距,二者从直接竞争转为差异化发展)。BLE 专注的低功耗领域也同样有竞争对手(比如ZigBee),BLE 在与ZigBee 相互竞争的同时,也不断从ZigBee 身上获得借鉴,发展出了自组网Mesh 技术和基于6LoWPAN 的IP 组网技术。
Bluetooth LE技术相比BR技术,差异非常大,可以说就是两种不同的技术,凑巧都加一个“蓝牙”的前缀而已,二者的协议层结构对比如下:
BR/EDR技术,侧重“点对点”通信,但随着物联网的发展,业务对简单的、不需要连接的多播或广播通信的需求越来越迫切,因此BLE 技术在RF 和Baseband 协议中修改原有的79 个channel 的跳频方式,将channel 个数减少为40 个,并保留了3 个固定 channel(37,38,39 信道)用于广播通信,在 Bluetooth 5 中又引入了扩展广播信道,可以临时使用37 个数据信道中的某些信道用作广播或多播通信。
蓝牙技术联盟在2014年发布了Bluetooth 4.2,进一步完善了BLE 协议,以便其满足物联网设备的需求。得益于BLE 低功耗技术,蓝牙设备在数据传输领域的增长逐渐加快,并追赶上其在音频传输领域的普及度。因为Bluetooth 4.x BLE 侧重于低功耗,实际最大传输速率只有约 700 Kbps(稳定连续传输的速率更低),无法满足音频传输的速率需求(CD 音质所需最小带宽为1.41 Mbps = 44.1 KHz(采样率)X 16 bit(位深度) X 2 声道),这导致蓝牙设备在后面很长一段时间都并行使用两套协议栈(BR/EDR 协议栈与BLE 协议栈),这就显得不够简洁高效,在一定程度上影响了蓝牙设备的应用普及。
在Bluetooth 5 之前,由于BLE 的最大传输速率只有700 Kbps,无法满足音频连续稳定的传输需求,只能并行使用两套协议栈(蓝牙音频传输使用BR/EDR 协议栈,蓝牙低功耗数据传输使用LE 协议栈)。2016年,Bluetooth 5 为LE 提供了2 Mbps 的PHY 支持,为BLE 协议支持音频传输提供了基础,最大数据传输速率可以达到接近1.4 Mbps。2019年,SIG 发布的Bluetooth 5.2 协议规范正式支持LE Audio 协议,也即在LE 协议上提供了对音频数据流传输的支持。至此,蓝牙协议终于可以摆脱老旧低效的BR/EDR 协议,只需要使用LE 协议就可以满足数据传输和音频传输的需求,前言部分介绍的位置服务和设备网络也承载在LE 协议上。Bluetooth 5.2 协议架构图示如下(包括BR/EDR/AMP和LE 协议):
从上面的Bluetooth 5.2 协议架构图可以看出,蓝牙数据传输常使用ACL 异步数据通道传输数据,蓝牙音频传输则使用SCO 同步数据通道传输音频数据流,LE 协议通过新增 Isochronous Adaptation Layer 来支持等时同步传输的音频数据流。上面的蓝牙协议架构图包括了蓝牙支持的所有协议类型,看起来比较复杂,如果只取中间LE Core 部分的协议就简单很多了,考虑到BR/EDR 将逐渐退出历史舞台,后续主要介绍BLE 协议部分。
LE Audio 解决了最近流行的AWS 真无线耳机的很多问题,比如左右耳等时同步传输问题,虽然不同蓝牙芯片厂商提供了不同的解决方案,但受限于专利限制和标准不统一,徒增了蓝牙音频设备的成本。Bluetooth 5.2 提供的 LE Audio 采用 Isochronous Adaptation Layer 解决了左右耳等时同步传输的问题,而且可以扩展到多个音频设备在广播通道上等时同步传输音频数据流,比如多人会议可以借助蓝牙耳机等时同步音频数据流,配合蓝牙耳机的降噪技术可以让会议语音更清晰。
LE Audio 虽然可以借助2 Mbps 的PHY 传输音频数据,其最大传输速率仍与EDR 有一定差距,为了保证蓝牙音频设备的音质,SIG 提供了一种新的音频编码方案 LC3 (Low Complexity Communication Codec),该编码方案作为SBC (Sub-bandcoding Codec) 的继承者,可以在比SBC 更低的码率下超过SBC 的音质,让 LE Audio 即便在较低的传输速率下也能保证音质。除了 LC3 编码,SIG 还提供了可选的 LC3plus 编码来提供高分辨率的音频数据传输,可以传输24 bit / 96 kHz 的音频数据流,这已经达到aptX-HD、LDAC、LHDC 等高分辨率编码方案的水平了,由于LC3plus 是一个开放的标准,这将让高分辨率的蓝牙音频设备成本大幅下降,同时解决不同编码方案支持带来的兼容性问题。
蓝牙位置服务算是近几年才出现的新服务,GPS全球定位包括同类的Galileo、GLONASS 和北斗定位系统都已经比较成熟了,为什么SIG 还要为蓝牙新增位置服务呢?
我们熟知的GPS 类全球定位系统靠跟卫星通讯获得位置数据,卫星信号比较弱、容易受到建筑遮挡,因此常用于室外定位,对于室内定位就非常受限了。我们会发现在室内有时也能通过GPS 信号完成定位,这主要是借助基站获得GPS 卫星的部分信息,降低对GPS 卫星信号的依赖,也就是AGPS (Assisted GPS)技术。AGPS 技术仍然需要少量的卫星数据,也需要附近基站的支持,对于完全接收不到GPS 信号的室内就无能为力了,且GPS 和AGPS 系统在室内的定位精度较差(大概在10米级别),无法满足室内精准定位的需求,各种室内定位技术就应运而生了。
蓝牙的室内定位技术最早是苹果于2013 年推出的 iBeacon,蓝牙信标技术是各大公司为了满足室内定位市场需求自己实现的技术,并不是 SIG 推出的官方标准。Beacon技术主要利用 LE 提供的广播或多播通信功能,其基本原理是蓝牙设备在广播信道上定时广播beacon 信号,接收机处理这些beacon 信号并实现距离估算和准确定位。
Beacon 信号中包含发射信号功率,接收机可以获得接收信号强度RSSI 和beacon 信号发射功率,有了信号发射功率和接收功率,就可以利用蓝牙信号在自由空间传播的路径损耗公式计算出接收机与发射机之间的距离,计算公式如下:
路径损耗=发射功率-接收功率
蓝牙信号在自由空间传播的路径损耗计算公式如下(2.4e3是指蓝牙工作频率2.4e3 MHz,d是传输距离单位 km):
路径损耗(dB) = 32.45 + 20lg(2.4e3) + 20lg(d)
Beacon 定位的基本原理是根据需要定位的目标与多个信标发射设备距离画圆找交叉点。通过一个蓝牙 Beacon 发射设备的信标数据可以计算出接收机与Beacon 发射设备之间的距离,要想在平面空间实现精确定位,需要至少 3 个Beacon 发射设备广播的信标数据(两个信标设备画圆会有两个交叉点,无法判断哪个交叉点是对的)。
由于蓝牙信号在实际传播中会遇到遮挡,并不是完全在自由空间中传播,因此需要对上面公式的计算结果d 做适当的修正,由于蓝牙信号在室内传播路径容易受外界条件影响,这种Beacon 定位技术的误差也不够高(大概在1 米级别)。值得一提的是,WIFI 室内定位技术也采用了类似Beacon 定位技术的原理,定位精度也跟蓝牙Beacon 差不多处于同一级别,WIFI 室内定位的优势是可以使用现成的AP(Access Point,也即路由器),不需要重新布置定位Beacon 发射设备。
物联网需要更精准的室内定位技术,SIG 想要在室内定位技术上压过WIFI,在2019年发布的Bluetooth 5.1 标准中新增了Direction Finding 寻向技术,该技术可以让蓝牙的定位精度达到厘米级,是室内精准定位市场抢占先机和话语权。Direction Finding 技术是如何实现厘米级的定位精度呢?
蓝牙BLE 5.1提供两种不同定位方法,“Angle of Arrival”(AoA)到达角和“Angle of Departure”(AoD)出发角,两种方法的基本原理都是发射机发射正弦波信号(CTE: Constant Tone Extension signal),接收机接收CTE 信号并计算相位。AoA方法要求接收机含多天线阵列,AoD方法要求发射机含多天线阵列,如下图所示:
Direction Finding 寻向技术根据无线电波传输过程中的基本特性,通过信号相位计算信号方向。蓝牙发射机发射正弦波信号,以发射机为圆心,信号的相位会随距离延伸呈周期性变化,在同一半径圆上不同位置P1、P2 接收到的正弦信号相位是一致的,如果P1和P2 不在同一半径圆上且半径差值不是波长的整数倍,那么两者接收到的正弦波信号相位是不一样的,如下图所示:
本文以AoA Method 为例继续分析(AoD Method 原理类似),该方法接收机含多天线阵列(以两个接收天线为例),接收机能从两个天线接收到的正弦波信号获得各自的相位值,已知两个接收天线之间的距离,再计算出两个天线接收到正弦波信号的相位差,就可以通过公式计算出到达角AoA,计算公式图示如下:
从上面的图示可以看出,一组简单的天线阵列(比如线性阵列)可以计算出一个方位角 Azimuth,一组复杂的天线阵列(比如矩形阵列或环形阵列)可以计算出一个方位角 Azimuth 和一个海拔角 Elevation(比如下图立体空间中Point B 相对Point A 的Azimuth 和 Elevation 共同定义两点之间的相对寻向角度)。
如果要定位平面空间中的某点,只需要两个方位角即可,如果要定位立体空间中的某点,再加上一个海拔角就可以了,这种通过多个寻向角度定位目标点的技术,至少需要两个接收机/发射机及其天线阵列,精度可以达到亚米级(大概10 厘米级别)。如果对精度要求不高,还可以使用一个相对寻向角度再加一个估算距离(通过前面介绍的Beacon 技术获得)获得定位目标点,这种方案只需要一个接收机/发射机及其天线阵列,但定位精度下降到跟Beacon 相近的级别。
蓝牙技术联盟从2010 年推出低功耗蓝牙LE 协议后,就不断拥抱物联网浪潮,为物联网设备的需求提供相应的解决方案。物联网,顾名思义要接入 Internet 互联网,SIG 于2014年发布的Bluetooth 4.2 规范中就迫不及待的新增了接入IPv6 的功能,BLE 设备是如何接入Internet 的呢?
Bluetooth SIG 为支持基于BLE 的IPv6,仅仅做了一件事情:发布了一份总页数为14页、有效内容不足5页的Profile规范 ---- Internet Protocol Support Profile,用于支持Internet Protocol(IPv6),该Profile在BLE 协议栈中的定义如下:
物联网设备要接入Internet 离不开TCP/IPv6 协议(IPv4 地址已告罄),为了让处理能力有限的低功耗无线个域网设备(比如Zigbee、BLE等设备)接入IPv6 网络,IETF (Internet Engineering Task Force) 于2007 年发布了6LoWPAN(IPv6 over Low -Power Wireless Personal Area Networks)协议规范(RFC4944)。最初 6LoWPAN 是为IEEE 802.15.4 协议(比如Zigbee)开发的,在BLE 协议规范发布后 6LoWPAN 也开始支持BLE 协议上承载IPv6 网络(IPv6 over BLE 规范RFC7668),BLE 设备就可以借助6LoWPAN 协议层来承载TCP/IPv6 协议栈了。
BLE 的应用服务需要符合相应的Profile,承载6LoWPAN 协议层处理IPv6 packet 也是一种服务场景,因此也需要设计相应的Profile,于是SIG 就发布了IPSP (Internet Protocol Support Profile),IPSP 实现的 IPv6 over BLE 服务主要包括下面几步:
从BLE 协议发布,SIG 将重心放到低功耗物联网设备上,相当于侵入了Zigbee 的市场,开始与Zigbee 直接竞争。ZigBee 是基于802.15.4标准衍生出的无线标准,有4大杀手锏:低功耗、低成本、IP组网(基于6LoWPAN)和自组网(Mesh network)。蓝牙在2010 年推出BLE 之后,低功耗和低成本方面,已经旗鼓相当了,2015年发布IPv6 over BLE 规范后,基于6LoWPAN 的IPv6 组网也丝毫不落下风,剩下的就是自组网Mesh network 没法跟Zigbee 竞争了。蓝牙的自组网络拓扑结构是怎样的呢?蓝牙与Zigbee 的自组网Mesh network差距在哪呢?
蓝牙设备是分主从角色的,传统蓝牙最常使用点对点连接,当有多个从设备连接到同一个主设备,这一主多从的星型拓扑结构就构成了一个蓝牙散点网(piconet)。这些处于同一个散点网中的设备共用同一个物理信道通信,一个主设备与多个从设备之间就只能靠分时复用共享的物理信道通信了,星型拓扑和分时复用限制了一个主设备最多能同时连接的从设备数量(BR/EDR 最多支持 7个从设备)。
BLE 虽然也采用一主多从的星型拓扑结构,连接到同一主设备的多个从设备使用不同的物理信道与主设备通信,相当于每对主从设备构成一个独立的散点网。而且BLE 新增了广播通信模式,无连接的广播模式可以支持比面向连接的散点网更大规模的通信,但广播通信是不安全的,广播距离受限也难以满足物联网大规模自组网的需求。下图展示了BR/EDR 和LE 的自组网络拓扑结构,图中每个圈表示一个散点网,右图中的星形节点C/D/H/K/R 表示广播设备,实线箭头由主设备指向从设备,虚线箭头表示发起连接请求:
物联网设备在部分场景下是需要大规模自组网才能提供更完善的场景服务的(比如楼宇自动化、传感器网络等),现有的蓝牙协议自组网规模受到星型拓扑结构的限制(只能主从设备间通信,从设备间不能通信),难以大规模扩展。Zigbee 使用的mesh network 支持上万节点的接入,这个差距只能靠新的网络拓扑结构来弥补了,SIG 于2017 年发布了Bluetooth mesh networking 规范,同样使用了mesh 网格拓扑结构实现大规模自组网,BLE mesh 网络拓扑结构图示如下:
BLE mesh network 采用网状网络取代星型网络,可以实现大规模自组网,也能支持上万节点的接入。从上图可以看出,BLE mesh 网络定义了四种连接和五种节点来构成mesh 网络,这四种连接与五种节点的功能描述如下:
BLE mesh四种连接 | 功能描述 |
---|---|
ADV(Not Relayed) | 两个节点之间可以互相收发广播消息,但是由于不是中继节点,不能中继转发数据包。 |
ADV(Low power) | 用于low power node与friend node之间收发数据包,如上图中的J与P、L与O之间的连接。 在该连接上,low power node会主动发起请求建立friendship以及从friend node查询是否有自己的数据。 |
ADV Bearer | 两个节点之间可以基于advertising bearer 收发广播消息,并且可以作为中继转发数据包。 |
GATT Bearer | 让没有ADV bearer 能力的节点也能参与MESH网络, 比如节点T可以使用代理协议与其它节点在GATT连接上收发代理数据包。 |
BLE mesh五种节点 | 功能描述 |
---|---|
Node | 网络边缘的节点,没有relay功能。 |
Low power node | 由于有friend node的存在,low power node不需要一直在广播信道发送或者监听数据包,可以更节省功耗。 Low power node只需要定期的从它的friend node查询是否有数据到达就可以。 |
Relay node | 是网络层扩展网络覆盖范围的核心节点,在接收到其它节点发送的数据包之后,根据网络的设定条件判断是否需要转发。 |
Friend node | 作为low power node的代理节点功能,当有low power node节点的数据下达时,可以在friend node缓存,等待low power node查询并且获取。 |
Friend feature (not used) | 上图中节点N具有friend feature,但是它没有相应的low power node,所以friend feature没有使用。 |
要定义这些连接和节点的属性与功能,离不开协议层的支持,就好比前面介绍的BLE IPv6 组网就需要在协议栈中承载TCP/IPv6 协议,下面看看BLE mesh 网络设备的协议栈新增了哪些层级用于支持mesh 自组网:
可以将BLE mesh network 协议栈与IPv6 Over BLE 协议栈做个对比,不难发现二者有不少相似之处,都需要网络层用于寻址,都需要传输层管理连接并保障应用数据的安全可靠传输。由于BLE mesh 自组网改变了传统的网络拓扑结构,使用Bearer layer 代替L2CAP layer 来支撑新的mesh 网络拓扑结构。更上层的访问层和模型层类似于TCP/IPv6 协议栈中的表示层和应用层,分别定义应用数据的格式和mesh 网络的状态、消息、模型等信息。
BLE mesh 网络主要用于大规模自组网,类似于局域网,如果BLE mesh 网络中的节点需要访问Internet,可以借助IPv6 Over BLE 协议栈通过6LoWPAN border router 接入Internet,满足物联网设备大规模自组网和接入Internet 的需求。至此,BLE 协议在与Zigbee 协议的竞争中就不落下风了,得益于蓝牙技术在手机上的普及,BLE 技术将在短距离低速率物联网无线技术中占据绝对优势的位置。