当前位置: 首页 > news >正文

B站Miachael_ee——蓝牙教程笔记

B站Michael_ee蓝牙教程链接

一、蓝牙开篇介绍

1.蓝牙的最新资讯

  • 蓝牙官网链接
    在这里插入图片描述

(1)蓝牙概述

在这里插入图片描述

(2)蓝牙的分类及特点

在这里插入图片描述

(3)蓝牙的规范

在这里插入图片描述
在这里插入图片描述

(4)蓝牙学习资源

在这里插入图片描述

2.蓝牙的历史背景

  • 维基百科蓝牙介绍链接—>需要科学上网
    在这里插入图片描述
    在这里插入图片描述

二、蓝牙协议栈

1.ESP32中蓝牙协议栈

(1)ESP-IDF蓝牙协议栈分类

在这里插入图片描述

(2)蓝牙协议栈的架构

在这里插入图片描述

在这里插入图片描述

(3)ESP-IDF 5.0中蓝牙的目录

在这里插入图片描述

  • Controller
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • host
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

(4)ESP-IDF 5.0中蓝牙的示例

在这里插入图片描述
在这里插入图片描述

三、GAP,Generic Access Profile,通用访问配置文件

1.官网文件规范下载

  • Core Specification v5.0蓝奏云下载链接

在这里插入图片描述

2.GAP的介绍

(1)GAP作用

  • 不同的蓝牙设备厂商遵守相同GAP规范,那么不同厂商的蓝牙设备之间就可以建立连接进行通信;
    在这里插入图片描述

(2)BLE中设备的角色

在这里插入图片描述
在这里插入图片描述

四、GATT,Generic Attribute,通用属性规范

  • GATT是ATT的上层协议(ATT, Attribute ,属性规范)
    在这里插入图片描述

1.GATT中Client与Server

在这里插入图片描述

  • Command(命令):通常由主机(客户端,如手机)发送给从设备(服务器,如运动手环),用于控制服务器执行特定操作,如开启或关闭某个服务,设置服务器的工作模式等。服务器收到命令后会立即执行相应操作,一般不需要返回响应
  • Request(请求):由客户端向服务器发送,用于获取服务器上的特定数据或请求执行某个操作,如读取某个特征值、写入数据到特定位置等,服务器在处理请求后会返回一个Response
  • Response(响应):服务器对客户端Request的回复,包含了请求操作的结果或请求的数据。如果请求是读数据,响应中会包含相应的特征值;如果是写操作,响应会告知操作是否成功;
  • Notification(通知):服务器主动向客户端发送数据的一种方式,无需客户端确认,常用于实时性要求高但对数据可靠性要求相对较低的场景,如传感器数据的实时更新;
  • Indication(指示):类似Notification,但需要客户端确认,服务器发送Indication后,会等待客户端的Confirmation,确保数据可靠传输,适用于对数据准确性要求极高的场景;
  • Confirmation(确认):用于对Indication的回应,服务器发送Indication后,客户端需返回Confirmation,告知从设备数据已收到,以确保数据传输的可靠性;

总的来说,Command和Request是客户端发起的控制和获取数据的操作,Response是对Request的回应;Notification和Indication是服务器主动向客户端推送数据的方式,Confirmation是确保Indication数据传输可靠性的机制。

2.GATT中Server中数据的存储格式

在这里插入图片描述

  • GATT Profile指定了用于交换配置文件数据的结构。此结构定义了在配置文件中使用的诸如服务和特征等基本元素。所有这些元素都包含在属性中。属性协议中使用的属性是承载此配置文件数据的容器。
  • 层次结构的最顶层是配置文件。配置文件由一个或多个服务组成,这些服务是实现特定用例所必需的。每个服务由特征或对其他服务的引用构成。每个特征包含一个值,并可能包含关于该值的可选信息。服务、特征及其组成部分(即值和描述符)都包含在配置文件数据中,并存储在服务器的属性中。

(1)GATT中Attribute属性的数据结构

  • Attribute是GATT中最小的数据实体。每个Attribute由 属性句柄(Handle)、属性类型(UUID)、属性值(Value)和访问权限(如可读、可写、可通知)组成;
    在这里插入图片描述

    • Handle(句柄):Attribute在GATT数据库中的唯一数字标识符(16位无符号整数),由服务器在启动时动态分配,类似“内存地址”

      • 作用:设备间交互时,通过Handle快速定位目标属性,而非通过UUID或Value查找,提升效率;
      • 特点:同一连接中保持不变,断开连接后重新分配;
    • UUID(通用唯一标识符):用于标识属性的“功能用途”。格式为16位或128位;

      • 分类:
        • 标准UUID:蓝牙SIG官方定义,用16位表示;
        • 自定义UUID:开发者自行定义,用于私有协议或特殊功能;
      • 作用:客户端通过UUID判断属性的功能,决定如何处理Value;
      • UUID文档下载链接
        在这里插入图片描述
        在这里插入图片描述
    • Value(值):属性的实际数据内容,格式和长度由UUID类型决定;

      • 交互方式:
        • 读操作:客户端通过Handle读取Value;(客户端通过SDP,服务发现协议,获取句柄值
        • 写操作:客户端通过Handle修改Value;
        • 通知/指示:服务器主动向客户端推送Value变化;
    • Permissions(访问权限):控制属性Value的读写权限,由服务器在GATT数据库中预先配置

      • 常见权限类型:
        • 可读(Read):允许客户端读取Value;
        • 可写(Write):允许客户端写入Value(可能需要认证);
        • 可通知(Notify):允许服务器主动推送Value变化(无需确认);
        • 可指示(Indication):允许服务器主动推送Value变化(需客户端确认);

(2)Service的数据结构

在这里插入图片描述

  • Service Declaration Attribute(服务声明属性)
    在这里插入图片描述

    • 作用:表示服务的存在和类型,是服务的“入口”;
    • 属性类型,标识该属性是用来进行服务声明;
      • 0x2800:主服务;独立存在,不依赖其他服务,可被设备端直接发现和访问;
      • 0x2801: 次服务;依附于主服务的子功能模块,用于扩展主服务功能,不能独立被客户端发现。需通过主服务的包含属性(Included Service Attribute,UUID=0x2802)间接关联;
      • 例如:主服务为“健康检测”(UUID 0x181B)包含此服务“血糖检测”(UUID 0x2A3C)和血氧检测(UUID 0x2A57);
    • Value:
      • 对于主服务:Value是服务功能的UUID(如0x180F表示电池服务);
      • 对于次服务:Value包含服务的UUID和关联主服务的UUID(若有);
    • Permissions(访问权限) :通常为只读,客户端通过读取该属性值识别服务类型;
  • Included Service Attribute(包含服务属性)
    在这里插入图片描述

    • 作用:在主服务中声明所包含的次服务,建立主服务与次服务的层级关系;
    • 属性类型:标识该属性用于在主服务中引用和包含其他服务,固定为0x2802;
    • Value:包含三个关键信息
      • 被包含服务的起始句柄;
      • 被包含服务的结束句柄;
      • 被包含服务的UUID;
      • 一个Service可以包含多个Included Service Attribute;
    • Permissions(访问权限) :通常为只读;

(3)Characteristic特征值的数据结构

在这里插入图片描述

  • 1.Characteristic Declaration Attribute(特征声明属性)
    在这里插入图片描述
    • 作用:特征的“入口”,用于描述特征的基本信息;
    • 属性类型:固定为0x2803,标识该属性是特征声明;
    • Value:
      • 属性权限(Properties): 8位无符号整数,每一位代表一种权限或通信方式
        在这里插入图片描述
      • 特征值的句柄(Handle):指向特征值属性的句柄,客户端通过该句柄直接读写数据;
      • 特征值的UUID:标识特征的业务类型(如心率测量0x2A37、电池电量0x2A19);
      • 访问权限:只读;
  • 2.Characteristic Value Attribute,特征值属性
    在这里插入图片描述
    • 作用:
      • 特征值属性是特征的数据载体,用于存储和传输具体业务信息;
      • 客户端与服务器的数据交互(读、写、通知)最终都指向特征值属性;
    • 特征属性:UUID,用于标识数据类型,与特征声明属性Value中的特征值UUID一致;
      • 标准UUID :蓝牙SIG预定义;
      • 自定义UUID:开发者自定义;
    • 值:实际存储的数据内容,格式和长度取决于特征类型:
    • 访问权限:由特征声明中的属性权限字段决定;
  • 3.Characteristic Extended Properties Declartion 特征扩展属性声明
    在这里插入图片描述
    • 作用:特征的“增强补丁”,用于定义复杂的通信行为,如:
      • 可靠写入(Reliable Write):确保多次写入的数据被原子性处理;
      • 可靠辅助描述符(Reliable Auxiliaries):允许客户端修改特征的元数据(用户描述符);
    • 特征属性:UUID,固定为0x2900;
    • 属性值:一个字节的位域,每一位代表一种扩展功能;
    • 权限:只读;
    • 注意:特征声明属性中的Extended Properties(第7位)必须为1,才能启用特征扩展属性;
  • 4.Characteristic User Description Attribute,用户描述属性
    在这里插入图片描述
    • 作用:用于为特征提供人类可读的文本描述,向客户端解释特征的用途和含义;
    • 属性类型:UUID,固定为0x2901;
    • 值:通常是简短的描述,例如:Temperature in Celsius;
    • 权限:默认只读;
  • 5.Client Characteristic Configuration Attribute 客户端配置属性
    在这里插入图片描述
  • 属性类型:UUID,固定为0x2902;
  • 值:一个2字节的位域,每一位代表一种功能;
    在这里插入图片描述
  • 6.Server Configuration
    在这里插入图片描述
    • 作用:定义服务器处理通知或指示时的行为,例如:
      • 是否允许客户端通过客户端特征配置描述符(UUID 0x2902)启用通知/指示;
      • 服务端是否主动发送通知/指示;
    • 属性类型:UUID,固定0x2903;
    • 值:一个2字节的无符号整数;
      在这里插入图片描述
  • 7.Presentation Format显示属性
    在这里插入图片描述
    • 作用:特征的“数据说明书”,帮助客户端正确解析和显示数据;
    • UUID固定为0x2904;
    • 值:
      在这里插入图片描述
      在这里插入图片描述
    1. Aggregate Format 聚合格式属性
      在这里插入图片描述
    • 用于定义多个特征值如何聚合成一个聚合值;
    • UUID,固定为0x2905;
      在这里插入图片描述

3.蓝牙数据传输格式

在这里插入图片描述

相关文章:

  • 又是一年高考季
  • Redis 与 MySQL 数据一致性保障方案
  • 微服务架构实战:Nacos 单机版的安装与启动流程
  • 2.4 vcpkg 使用
  • Linux 文件系统与 I/O 编程核心原理及实践笔记
  • 关于队列的使用
  • 6.7本日总结
  • python打卡day47
  • 第1讲、包管理和环境管理工具Conda 全面介绍
  • 理想汽车5月交付40856辆,同比增长16.7%
  • 《开篇:课程目录》
  • 33、原子操作
  • Vue中渲染函数的使用
  • Java编程中常见的条件链与继承陷阱
  • 华为云Flexus+DeepSeek征文|华为云一键部署知识库搜索增强版Dify平台,构建智能聊天助手实战指南
  • 【PhysUnits】15.17 比例因子模块 (ratio.rs)
  • 【在线五子棋对战】二、websocket 服务器搭建
  • 僵尸进程是什么?怎么回收?孤儿进程?
  • Spring Cloud Hystrix熔断机制:构建高可用微服务的利器
  • 今天对C语言中static和extern关键字的作用认识又深刻了
  • 做展馆好的设计网站/西安百度网站快速优化
  • 网站系统下载不了文件/seo还有前景吗
  • 大连网站专业制作/真正免费的网站建站平台推荐
  • 享学课堂 移动互联网开发/昆明seo关键词排名
  • 佛山龙江做网站的/怎么写软文推广
  • 软件生成器/郑州网站制作选择乐云seo