1. 简介
蓝牙的命名来源于一个丹麦国王的名字。
蓝牙的核心是短距离无线电通讯,它的基础来自于跳频扩频(FHSS)技术。
频率:[2.4GHz, 2.4GHz + 83.5MHz]
物联网领域需要研究Bluetooth + Mesh。
分类
两种:
- 经典/传统蓝牙(< 4.0版本);
- BLE低功耗蓝牙。
在IoT中,ble更常见一些;经典蓝牙常用于手机和耳机的通信。
芯片模式有两种:
- 双模,就是支持以上两种,应用有降噪耳机、电视语音遥控及按键;
- 单模则是只支持一种,通常是支持BLE。
发展
开始于爱立信在 1994 年提出的无线通信方案,以解决用户间互不兼容的移动电子设备的通信问题,用于替代 RS-232 串口通讯标准。
第一代蓝牙(传输率0.7Mbps):
- 1999 年,蓝牙 1.0A 版,确定使用 2.4GHz 频段, 蓝牙硬件地址叫做
BD_ADDR
; - 2001 年:蓝牙 1.1,蓝牙 1.1 版正式列入 IEEE 802.15.1 标准,定义了物理层和MAC层;
- …
第二代蓝牙:
- 2004 年,蓝牙 2.0,新增的 EDR(Enhanced Data Rate)使得蓝牙设备的传输率可达 3Mbps;支持双工,可以边电话边传输数据;
- 2007 年,蓝牙 2.1,支持 NFC ,新增SSP(Secure Simple Pairing)安全配对,新增SniffSubrating省电功能;
2009 年,3.0(比较稳定了),可调用 802.11 WiFi,传输速率高达 24Mbps。蓝牙 3.0 的核心是 AMP(Generic Alternate MAC/PHY)。代表作是蓝牙适配器。
第四代:
- 2010 年,4.0,支持BLE(Bluetooth Low Energy,基于 NOKIA 开发的 Wibree 技术)低功耗功能,传输距离提升到100米以上。代表作,iphone 4s;
- 2013 年,4.1支持云功能(可以用于iot了),支持IPv6,支持区中心(例如智能手表和计步器可以绕过智能手机,直接连接);
- 2014年,4.2,可以抛弃wifi,iot设备完全用蓝牙;
4.0之前的都是经典蓝牙,>=4.0的才支持BLE。
2016 年,蓝牙 5.0,iot入场,速度上限为 2Mbps,传输距离理论上可达 300 米,结合 WiFi 可以实现精度小于 1 米的室内定位;针对 IoT 物联网进行底层优化;引入Mesh网络。
说下Mesh。
Mesh 网状网络能够将蓝牙设备作为信号中继站,数据覆盖广,兼容蓝牙 4 和 5 系列的协议。
传统的蓝牙连接是通过 配对 实现的,即 [一对一] 或 [一对多] 的微型网络关系。
Mesh 网络能够使设备实现「多对多」的关系。
产品架构
3种:
- 蓝牙芯片(含蓝牙协议栈host)直接与外设通信,这类芯片可作MCU,如蓝牙耳机、蓝牙音响、蓝牙手环;
- 蓝牙芯片(含蓝牙协议栈host)—MCU—外设,一般用于外设功能复杂的场景,
- 蓝牙芯片(controller)—MCU(含host)—外设,是蓝牙最复杂的方案,客户需要使用很多蓝牙协议,比如车载蓝牙、手机蓝牙。
组成
蓝牙设备:
-
硬件层,即Controller蓝牙模块(由低到高排序):
- 无线射频单元Radio,一种微带天线;
- 基带BaseBand或链路控制单元LinkController,进行射频信号与数字或语音信号的相互转化;
- 链路管理单元LinkManager,管理蓝牙设备之间的通信;
- 主机控制器Host Controller
-
TRANSPORT层,实现HOST跟CONTROLLER的交互,有H2(USB使用), H4/H5/BCSP(UART使用)协议。5种数据:
- HCI COMMAND:由蓝牙协议栈发送给芯片的命令
- HCI EVENT:由蓝牙芯片上报给蓝牙协议栈的事件
- HCI ACL:蓝牙协议栈跟蓝牙芯片双向交互的普通数据
- HCI SCO:蓝牙芯片跟蓝牙协议栈双向交互的通话/语音识别等音频数据
- HCI ISO(这部分是在core5.2才添加):LE audio用的数据包格式
-
HOST层,即蓝牙协议栈,或者说蓝牙主机,:
- 主机控制接口(HCI),透过transport把协议栈的数据发送给蓝牙芯片;
- 高层协议Higher Layer Protocol;
- Application
一些蓝牙模块:
JDY-10M模块,含底板+蓝牙模块,十几块钱,供电建议5V。两种接法:
- 连接UART-TTL转换器,再连接PC;
- 直接连MCU。
M是Mesh的意思,JDY-10就是不支持组网的版本.
2. 协议
初学者先学蓝牙host(蓝牙协议栈),再学controller(蓝牙芯片)里面的协议。
可以参考《吐血推荐历史最全的蓝牙协议栈介绍_Wireless_Link的博客-CSDN博客_蓝牙协议栈》
蓝牙协议有很多,蓝牙电话(HFP),蓝牙音频(A2DP),蓝牙音乐控制(AVRCP),蓝牙电话本(PBAP),蓝牙短信(MAP),BLE,HID…
蓝牙协议分为传输协议、中介协议和应用协议:
- 传输协议:互相确认对方的位置,建立和管理物理链路;
- 底层传输协议,包括Radio, Baseband&Link Controller, Link Manager Protocol等;
- 高层传输协议,包括L2CAP, HCI;
- 中介协议:为应用提供不同标准接口;
- 应用协议:协议栈之上的应用软件所涉及到的协议。
2.1 传输协议
L2CAP
Logical Link Control and Adaptation Protocol,逻辑链路控制与适配协议。
位于基带之上
2.2 中介协议
SDP
Service Discover Protocol,服务发现协议,发现哪些服务可用,并确定这些可用服务的特征
RFCOMM
Serial Port Emulation,串口仿真协议,为建立在串口之上的传统应用提供环境接口,用于蓝牙电话,蓝牙透传SPP等。
AT指令
AT指令是区分大小写的ascii码,以\r结束。
像mesh那样,要在组网中实现通信,就不能用at那样的ascii指令了,而要用特定的二进制协议格式。
只能在透传模式下工作(设备连接手机后进入透传模式,手机是服务端)。
2.3 其它(分类不太确定)
HFP
Hands-Free,蓝牙免提协议,用于蓝牙耳机。还有一个已经基本废弃的HSP,蓝牙耳机协议。
OBEX,对象交换协议,用于蓝牙电话本,蓝牙短信,文件传输等。
SPP(SERIAL PORT PROFILE):蓝牙串口协议。
IAP:苹果的特有协议,用于Carplay。
PBAP(Phone Book Access):蓝牙电话本访问协议。
MAP(Message Access Profile):蓝牙短信访问协议。
OPP(Object Push Profile):对象推送协议.
A2DP(Advanced Audio Distribution): 蓝牙音乐协议.
…
3. 参考资料
https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900
一文让你彻底了解市面蓝牙架构,无忧蓝牙产品选型_Wireless_Link的博客-CSDN博客
吐血推荐历史最全的蓝牙协议栈介绍_Wireless_Link的博客-CSDN博客_蓝牙协议栈
pybluez/pybluez: Bluetooth Python extension module (github.com)