ESP32学习笔记_Bluetooth(1)——蓝牙技术与 BLE 通信机制简介

发布于:2024-11-27 ⋅ 阅读:(11) ⋅ 点赞:(0)

摘要(From AI):
这篇笔记详细讲解了蓝牙技术的分类、核心架构和通信流程,重点介绍了低功耗蓝牙(BLE)的协议栈、角色划分及连接机制,结合拓扑示例清晰阐述了蓝牙网络配置和操作过程

前言:本文档是本人在《ESP32-C3 物联网工程开发实战(乐鑫科技著)》进行学习时所做的学习笔记,可能存在疏漏和错误,如有发现,敬请指正。

参考资料:
《ESP32-C3 物联网工程开发实战(乐鑫科技著)》

Brief Introduction

蓝牙是一种支持设备短距离通信的无线通信技术,能够实现在短距离范围内实现信息的自由分享和传输,具有安全性高、自由连接等特性,工作在 2.4GHz ISM(工业、科学、医学) 频段
蓝牙可分为经典蓝牙和低功耗蓝牙

The classification of Bluetooth

Classic Bluetooth
经典蓝牙(BR/EDR)泛指支持蓝牙协议在 4.0 以下的模块,一般用于大数据量的传输(如语音、音乐),其协议包含个人局域网的各种规范,如:

  • Advanced Audio Distribution Profile (A2DP) 适用于音频
  • Hands-Free Profiles/Hand-Set Profiles (HFP/HSP) 适用于免提设备
  • Serial Port Profiles (SPP) 使用于文本串口透传(可用于蓝牙调试)
  • HFP/HSP、HID 等

Bluetooth Low Energy
一种超低功耗无线通信技术,主要针对低成本、低复杂度的无线体域网和无线各域网设计

Bluetooth terminology

Core Architecture

蓝牙的核心系统

  • Host 主机 实现各种业务场景需求,大部分的开发工作基于此
  • Controller 控制器 用于蓝牙报文的收发、蓝牙物理连接等功能,由芯片厂商负责实现
  • Host Controller Interface(HCI) 主机控制接口 Host 和 Controller 通过 HIC 进行通信

BLE 协议栈
在这里插入图片描述

Controller

  • Physical Layer(PHY) 物理层 指定低功耗蓝牙所用的无线频段、调制解调方式等
  • Link Layer(LL) 链路层 负责数据发送和接收,但不负责数据解析,是蓝牙协议栈的核心

Host Controller Interface(HCI) 主机控制接口 Host 和 Controller 之间的通信接口,可以是物理形式的(UART、USB 等,常见于双芯片架构),也可以用 API 实现(常见于单芯片架构)

Host

  • Logical Link Control and Adaptation Protocol(L2CAP) 逻辑链路控制和适配协议 向上层协议(协议复用、分段、重组操作)提供连接导向和无连接的数据服务,并按通道进行流量控制和重传
  • Attribute Protocol(ATT) 属性协议 用来定义用户命令以及命令操作的数据(如读取或写入);BLE 协议栈引入了 Attribute 概念,用于描述一条条的数据。ATT 除了定义数据,也定义该数据可以使用的 ATT 命令
  • Security Manager Protocol(SMP) 安全管理器协议 负责管理 BLE 连接的加密和安全,在保证连接安全的同时不影响用户的体验
  • Generic Attribute Profile(GATT) 通用属性配置文件 规范 Attribute 中的数据内容,并运用分组(Group)的概念对 Attribute 进行分类管理
  • Generic Access Profile(GAP) 通用访问配置文件 对 LL 的有效数据包进行了一些规范和定义,是解析 LL 负载数据最简单的一种方式,一次 GAP 的功能及其有限,主要用来进行广播、扫描和发起连接等

Bluetooth Roles

蓝牙的角色有以下几种:

  • Advertise 广播者
  • Scanner 扫描者
  • Initiator 发起者

蓝牙通信是指两个或多个蓝牙设备之间的通信,通信双方必须一个是主机,另一个是从机,从机和从机之间不能直接通信,其中:

  • Master 主机(主设备)从 Scanner 和 Initiator 转化而来
  • Slave 从机(从设备)从 Advertise 转换而来

Master 工作在 Master 模式的设备,可以与一个 Slave 进行连接,在此模式下可以对周围的设备进行搜索并选择需要的 Slave 进行连接

  • 一个具备蓝牙通信功能的设备,可以在 Master 和 Slave 之间进行切换,平时工作在 Slave 模式,等待其他 Master 的连接;在有需要时可以转换为 Master,向其他设备发起呼叫
  • 一个设备以 Master 发起呼叫时,需要知道对方的蓝牙地址(Bluetooth Address(BD_ADDR))、配对密码(Pairing PIN)等信息,配对完成后可直接发起呼叫

Slave Slave 模式下的设备只能被 Master 搜索,不能主动搜索

Bluetooth Network Configuration

根据拓扑结构,蓝牙网络可分为:

  • Piconet 微微网
  • Scatternet 散射网
  • Mesh

Piconet 微微网
每次简历的蓝牙无线链路,都处于微微网中,一个微微网由两个或更多占用相同物理信道的设备组成(表示这些设备是按照共用时钟和跳频序列进行同步的),其拓扑结构如下:

                                  从机3
                                   /
                                  /   
                                 /
								/
   从机1 -------------------- 主机
                                \
                                 \
                                  \
                                  
                                   \
                                  从机2

拓扑结构(Topology Structure)是指系统中各个节点及其连接关系的组织方式或布局。它广泛应用于网络、工程、数学等领域,用来描述元素之间的连接模式,而不关注实际的物理位置或距离

Scatternet 散射网
如果多个网存在重叠的区域,就可以构成散射网。其中各个 Piconet仍然具有自己的主机,但一个 Piconet 的主机可以同时是另一个 Piconet 的从机,这样该设备就具有双重身份
如下图,此时左侧的主机同时也是右侧的从机

                     从机1.3              从机2.1
                        /                 /
                       /                 /
                      /                 /
				     /                 /
从机1.1 ---------- 主机/从机 ---------- 主机
                    \                   \
                     \                   \
                      \                   \
                       \                   \
                    从机1.2             从机2.2

Mesh
蓝牙 4.0 之后诞生了蓝牙 Mesh,用于建立多对多设备通信的低能耗蓝牙网络,允许创建基于多个设备的大型网络,可以包含数十台、数百台甚至数千台蓝牙 Mesh 设备,设备之间可以相互进行数据传输

Bluetooth Connection Process

蓝牙首先需要通过广播或扫描发现周围设备,其次创建连接,最终组建网络传输数据

1. 从机端广播
在大部分情况下,外围设备 (Peripheral,从机) 通过广播自己来让中心设备 (Central,主机) 发现自己,并建立 GATT (通用属性配置文件)连接,从而进行更多的消息交换

也有些情况是不需要连接的,只需要外围设备(外设)广播自己的信息即可,这种方式的主要目的是让外设把自己的消息发送给多个中心设备

  • Peripheral 在进行广播时不断发送广播包,每发送一次广播包称为广播事件;每一次发送之间有长度为 t 的广播间隔,也称为广播事件间隔,每次广播事件都会持续一段时间,只有在此期间蓝牙芯片才会打开射频模块发送广播包,功耗较高,其余时间都处于空闲待机状态
  • 当广播事件时,每一个事件包含三个广播包,分别在 37、38、39 三个信道同事广播相同的消息

2. 主机端扫描
扫描是在一定范围内用来寻址其他 BLE 设备的过程,扫描者在扫描过程中会使用广播信道,但扫描并没有严格的时间定义和信道规则,其过程按照主机设定的扫描定时参数进行

  • 被动扫描 扫描者仅仅监听广播包,而不向广播者发送任何数据
    • 在扫描过程中,如果控制器接收到符合过滤策略或其他规则的的广播包, 则向主机发送一个报告时间,其中包括广播者的设备地址、、广播包中的数据、信号接收强度
  • 主动扫描 Central 在扫描捕获广播包的同时捕获扫描响应包,并作出区分

广播包和扫描响应包
广播包:主要用于设备发现和提供基本信息,适合所有设备接收
扫描响应包:用于增强广播包,满足需要获取更多信息的主动扫描设备需求

3. 主机端连接
连接过程如下
Peripheral(外设,外围设备)开始广播,在发送完一个广播包的T_IFS内,开启射频窗口接收来自中心设备的数据包

Central 接收到广播,在接收后的 T_IFS 内如果开启了 Central 的扫描回复,则 Central 将向 Peripheral 发送回复

Peripheral 收到中心设备的回复后,做好接收准备并返回 ACK 包

如果 Peripheral 发送的 ACK 没有被中心设备接收到,则 Central 将一直发送回复知道超时为止,在此期间内只要外设返回过一次 ACK 就算连接成功

开始建立通信,Central 以接收到外设广播的时间为原点,以连接间隔为周期向 Peripheral 数据包,数据包用于同步两个设备的时钟和建立主从模式的通信,其过程如下:

  • 同步两个设备的时钟 Peripheral 每收到 Central 发送的一个数据包,就会重新设置自己的书序原点,以便于 Central 同步
  • BLE 通信在建立成功后变成主从模式,Central 变成主机模式,Peripheral 变成从机,从机只能在 Central 向它发送一个数据包后才能在规定时间内把自己的数据回传给 Central
  • 连接建立成功
  • 外设自动停止广播,其他设备无法再查找到此外设
  • 在中心设备发送数据包的间隔内,外设可以发送多个数据包

T_ISF 、 ACK 和同步时钟
T_ISF:Inter Frame Space 同一信道上连续传输包之间的时间间隔


ACK
ACK在通信中是接收方对发送方的反馈,用于确认数据包已成功接收。如果没有ACK,发送方无法知道数据是否到达目标,从而无法保障通信的可靠性。ACK机制还可检测数据错误并触发重传,确保数据传输完整无误


同步时钟
同步时钟在通信中用来协调双方的时间基准,确保数据的发送与接收按预期时序进行。如果没有同步时钟,数据可能因时序错乱而丢失或解析错误。在 BLE 中,同步时钟还能优化设备能耗,让设备在需要时准确唤醒,保持高效运行

断开连接

  • 在需要断开连接时,只要 Central 停止连接(停止发送数据包)即可

重新连接

  • 中心设备可以将外设的 MAC 地址写入 Flash 或是 SRAM 等存储器件,并保持监听此 MAC 地址,当再次收到 Peripheral 发送的广播包时就可以建立通信
  • 从机为了省电,当一段时间没有数据要发送时,可以不在发送广播包,双方就会因为连接超时(Connection Timeout)而断开,此时需要 Central 启动监听

MAC地址(Media Access Control Address)是一个设备的唯一硬件地址,用于标识蓝牙设备。每个蓝牙设备在出厂时都会分配一个全球唯一的MAC地址,一个48位(6字节)的数字,通常用16进制表示,格式为 XX:XX:XX:XX:XX:XX,例如 A1:B2:C3:D4:E5:F6


网站公告

今日签到

点亮在社区的每一天
去签到