蓝牙学习系列(一):从零认识蓝牙技术体系
目录
一、什么是蓝牙(Bluetooth)
二、蓝牙的发展版本
三、Classic Bluetooth 与 BLE
3.1 Classic Bluetooth(经典蓝牙)
3.2 BLE(Bluetooth Low Energy)
四、蓝牙设备角色
4.1 Classic Bluetooth
4.2 BLE 角色
五、蓝牙通信方式
5.1 广播:公开喊话
5.2 连接:私人热线
六、BLE 的数据结构(核心概念)
6.1 Service(服务)
6.2 Characteristic(特征)
6.3 Descriptor(描述符)
七、蓝牙 UUID
八、BLE 通信流程(典型流程)
8.1 设备广播
8.2 Central 扫描
8.3 建立连接
8.4 服务发现
8.5 数据通信
九、蓝牙协议栈结构
十、本系列后续内容
十一、结语
一、什么是蓝牙(Bluetooth)
蓝牙(Bluetooth)是一种短距离无线通信技术,主要用于设备之间的数据交换。
其特点包括:
- 工作在2.4GHz ISM 频段
- 支持设备自动发现与连接
- 支持点对点和广播通信
蓝牙最初的设计目标是替代短距离有线连接,例如:
- 用无线耳机替代有线耳机
- 用无线鼠标替代 USB 鼠标
- 手机与设备之间无线传输数据
二、蓝牙的发展版本
蓝牙技术经历了多次版本升级,不同版本带来了不同能力。
| 版本 | 发布时间 | 主要特点 |
|---|---|---|
| Bluetooth 1.0 | 1999 | 最早版本 |
| Bluetooth 2.0 | 2004 | 引入 EDR,提高数据速率 |
| Bluetooth 3.0 | 2009 | 引入 HS(High Speed) |
| Bluetooth 4.0 | 2010 | 引入 BLE(低功耗蓝牙) |
| Bluetooth 4.2 | 2014 | 提升安全性和数据容量 |
| Bluetooth 5.0 | 2016 | 提升距离、速度、广播能力 |
| Bluetooth 5.1 | 2019 | 引入方向定位 |
| Bluetooth 5.2 | 2020 | 引入 LE Audio |
| Bluetooth 5.3 | 2021 | 改进低功耗通信 |
综上,无线通信的简单原理是什么?工作在2.4G频段是什么意思?你可以把无线通信想象成两个人之间“扔小球”:
- 你有数据(比如一段音乐) → 转换成一种看不见的“波” → 发射出去
- 对方设备接收到这个“波” → 重新转换成音乐
蓝牙用的频段是2.4GHz 左右,这数字你可能也在Wi-Fi、微波炉上见过。
把空中传递的无线信号想象成一条“大马路”,2.4GHz就像是城市里一条免费、大家都能用的公共道路。
蓝牙在这条路上开车,一辆车只占很小的车道(带宽窄),适合短距离、小数据量传输,比如音频、鼠标移动信号。
Wi-Fi 也走这条路,但它的车大得多(带宽宽),一次能拉很多数据,适合上网、看视频。
微波炉 也“路过”这条路(微波炉频率约2.45GHz),但它不是来“通信”的,而是用这个频段的波去震动水分子,产生热量。
正因为这条路是公共的,所以有时候设备多了会“堵车”(干扰)。蓝牙的聪明之处在于,它会在这条2.4G的大街上快速跳换车道(跳频技术),一会儿在这个小频点发,一眨眼又换到另一个,从而尽量避开拥堵,稳定连接。这种“波”就是电磁波,和收音机、Wi-Fi用的本质上是同一种东西,只是频率、编码方式不同。
三、Classic Bluetooth 与 BLE
蓝牙技术主要分为两种模式:
3.1 Classic Bluetooth(经典蓝牙)
经典蓝牙(本篇不做过多阐述)主要用于持续数据传输场景。
例如:
- 蓝牙耳机(A2DP)
- 蓝牙音箱
- 蓝牙串口
- 蓝牙键盘鼠标(早期)
特点:
- 数据速率较高
- 功耗相对较高
- 连接保持时间长
常见 Profile:
- A2DP(音频)
- HFP(通话)
- SPP(串口)
3.2 BLE(Bluetooth Low Energy)
BLE 是 Bluetooth 4.0 引入的一种低功耗通信技术。
BLE 的设计目标是:
在保证通信能力的前提下,大幅降低功耗。
BLE 特点:
- 极低功耗(睡眠状态下可达平均几uA电流)
- 支持广播模式
- 数据量相对较小
- 非常适合 IoT 设备
典型应用:
- 智能手环
- 蓝牙遥控器
- 体温计
- 心率设备
- Beacon
目前绝大多数 IoT 设备都使用BLE。
四、蓝牙设备角色
在蓝牙通信中,设备通常分为不同角色。
4.1 Classic Bluetooth
经典蓝牙通常采用:
- Master(主设备)
- Slave(从设备)
4.2 BLE 角色
BLE 的角色更细化:
| 角色 | 说明 | 通俗比喻 |
|---|---|---|
| Broadcaster(广播者) | 只广播数据 | 只说不听的“公告牌” |
| Observer(观察者) | 只扫描广播 | 只听不说的“侦察兵” |
| Peripheral(外围设备) | 提供服务 | 被动的“信息提供者”或“执行者” |
Central(中心设备) | 主动连接设备 | 主动的“询问者”或“指挥官” |
中心设备:智能手机是最常见的中心设备,它主动扫描并连接你的耳机、手环等设备。
外围设备:像蓝牙耳机、智能手环这类产品,就是外围设备,它们广播自身并等待被手机连接和控制。
广播者:蓝牙防丢器或商场导航信标是典型的广播者,它们只循环发送自己的位置信号,不接受任何连接。
观察者:在商场里,你手机上的导航App就充当观察者,它只接收各个信标的广播信号来实现定位,而不去连接它们。
五、蓝牙通信方式
蓝牙通信主要有两种方式。
5.1 广播:公开喊话
- 是什么:设备单向对外发声,任何在接收范围内的设备都能听到,但“听”不等于“聊”。
- 两种模式:
- 可连接广播:“我是耳机,可以连我!---> 连接成功后对应ble角色中的外围设备
- 纯广播:“我是信标,位置在A1。”(只发不收,不连接)--->ble角色中的广播者
- 特点:一对多、单向。
- 用途:设备被发现、室内定位、简单信息发布。
5.2 连接:私人热线
- 是什么:两个设备在“喊话”认识后,建立一条独占、稳定的双向通话通道。
- 过程:手机扫描到耳机的“可连接广播” → 发起配对 → 建立连接。
- 特点:一对一、双向、稳定可靠。
- 用途:传输音频、文件、实时操控等所有需要可靠交互的场景。
六、BLE 的数据结构(核心概念)
BLE 使用一种叫GATT(Generic Attribute Profile)的数据模型。
其层级结构如下:
Device
└── Service
└── Characteristic
└── Descriptor
下面逐个简单介绍,后续会详细解释。
6.1 Service(服务)
Service 用来表示一个功能模块。
例如:
- 电池服务
- 心率服务
- 设备信息服务
每个 Service 都有一个UUID。
示例:
Battery Service
UUID: 0x180F
6.2 Characteristic(特征)
Characteristic 是实际的数据项。
例如:
电池服务中有一个特征:
Battery Level
数据内容:
电池电量百分比
Characteristic 具有以下属性:
- Read
- Write
- Notify
- Indicate
6.3 Descriptor(描述符)
Descriptor 用于描述 Characteristic。
例如:
Client Characteristic Configuration Descriptor (CCCD)
它用于:
- 开启 Notify
- 关闭 Notify
七、蓝牙 UUID
在 BLE 中,每个对象都有一个UUID(Universally Unique Identifier)。
例如:
标准服务:
Battery Service
UUID = 0x180F
自定义服务通常使用:
128-bit UUID
示例:
12345678-1234-5678-1234-56789abcdef0
UUID 的作用是:
唯一标识服务和特征。(记住服务和特征都有uuid)
八、BLE 通信流程(典型流程)
一个典型 BLE简单通信流程如下:
8.1 设备广播
Peripheral 周期性发送 Advertising。
8.2 Central 扫描
Central 设备扫描到广播。
8.3 建立连接
Central 发起连接请求。
8.4 服务发现
Central 读取设备的 Service / Characteristic。
8.5 数据通信
通过 Characteristic 进行:
- Read
- Write
- Notify
九、蓝牙协议栈结构
蓝牙协议栈通常分为几层,如图9-1所示。
简单理解:
PHY(物理层):最底层,负责在2.4GHz频段收发无线电波。
Link Layer(链路层):管理广播、扫描、建立连接、跳频等空中接口时序。
HCI(主机控制器接口):连接“控制器”(PHY+LL)和“主机”(以上所有层)的通信桥梁。
L2CAP(逻辑链路控制与适配协议):负责数据包的分片重组和多路复用。
SMP(安全管理协议)— 负责配对、密钥分发和加密管理
ATT(属性协议):定义数据如何被查找、读、写、通知的底层协议。
GATT(通用属性配置文件):基于ATT,定义数据如何组织成“服务”和“特征值”的结构。
GAP(通用访问配置文件):定义设备角色、广播、扫描和连接过程的规范。
Application(应用层):最上层,开发者基于GATT和GAP实现的具体功能。
在嵌入式开发中,很多 SDK 已经实现了协议栈,开发者通常只需要处理:
- 广播与扫描
- Service
- Characteristic
- 数据交互
十、本系列后续内容
本蓝牙系列文章将继续深入以下内容:
后续计划(持续更新中):
1️⃣ BLE 协议栈详细解析
2️⃣ BLE Advertising 机制详解
3️⃣ BLE GATT / ATT 深入理解
4️⃣ BLE Service 与 Characteristic 开发
5️⃣ BLE Notify / Indicate 机制
6️⃣ BLE 连接参数与功耗优化
7️⃣ BLE 实际开发流程
8️⃣ BLE 抓包分析(Ellisys / nRF Sniffer)
十一、结语
本篇从无线通信的基础“波”与2.4G频段讲起,梳理了蓝牙的角色、通信方式、数据结构和协议栈分层,希望能帮助你建立起对蓝牙技术的系统性认识。
由于个人水平有限,文中若有任何疏漏或表述不清之处,欢迎在评论区指正与交流。
后续更新预告:我将持续更新ble系列的技术科普,下一篇计划《BLE 协议栈详细解析》。如果本文对你有帮助,欢迎点赞、收藏、关注,这是对我最大的鼓励!
