蓝牙开发 基础知识

devtools/2025/1/15 14:43:08/

文章目录

  • 前言
  • 一、蓝牙广播
    • 1:广播信道
    • 2:广播的数据结构
    • 3:用户广播结构
    • 4:广播包的内容:
    • 广播事件:
  • 二、蓝牙状态切换
      • 蓝牙从机(Peripheral)的状态
      • 蓝牙主机(Central)的状态
  • 三、蓝牙服务和特性
    • 1.蓝牙服务(Bluetooth Service):
    • 2.蓝牙特性(Bluetooth Characteristic):


前言


蓝牙协议官网
在这里插入图片描述

一、蓝牙广播

1:广播信道

广播间隔 (Advertising Interval):通常范围从20毫秒到10.24秒之间。(依次在37,38,39信道发送相同的广播数据包)
在这里插入图片描述

2:广播的数据结构

广播包的格式和内容受到严格定义,以确保不同厂商的设备之间的互操作性。
在这里插入图片描述

3:用户广播结构

在这里插入图片描述

4:广播包的内容:

广播包的内容

  1. Flags : 提供关于广播者的一些基本信息,例如是否支持BR/EDR、是否在进行非连接模式下的广播等。
  2. Service UUIDs : 告诉外面本设备所支持的服务,分为3个类型:16bit 32bit 128bit , 每个类型又有两个类别 完整和非完整 。
  3. Local Name : 设备名称,可以是完整0x08 的也可以是简短缩写 0x09 的版本。
  4. Manufacturer Specific Data (0xFF): 厂商自定义的数据,允许制造商添加专有的信息到广播包中。
  5. TX Power Level (0x0A): dBm 发射功率级别,帮助接收方估算距离,iBeacon 室内定位技术的原理。
  6. Appearance (0x19): 描述设备外观特性的值,如手表、心率监测仪等。
  7. Service Data (0x16): 关联特定服务的数据,比如温度传感器可能广播当前温度。
    在这里插入图片描述

广播事件:

可连接、可扫描的非定向广播事件
可连接的非定向广播事件
可连接的定向广播事件
不可连接、不可扫描的非定向广播事件
不可连接、不可扫描定向广播事件
可扫描非定向广播事件
可扫描定向广播事件

二、蓝牙状态切换

在这里插入图片描述在这里插入图片描述
状态转换图
从机: Standby -> Advertising -> [Initiation] -> Connection -> Disconnection -> Standby
主机: Standby -> Scanning -> [Initiation] -> Connection -> Disconnection -> Standby

蓝牙从机(Peripheral)的状态

  1. 待机(Standby): 设备处于空闲状态,没有进行任何广播或连接活动。
  2. 广播(Advertising):从机发送广播包以宣告自己的存在,并等待来自主机的连接请求。根据广播模式的不同,它可以是可连接、不可连接、可扫描或定向广播。
  3. 初始化(Initiation): 当从机接收到一个有效的连接请求时,它会进入这个短暂的状态,准备建立连接。
  4. 连接(Connection): 一旦连接建立,从机和主机之间就可以开始交换数据。在这个状态下,从机可以接收和发送数据给主机。
  5. 断开连接(Disconnection): 连接终止后,从机会回到待机状态,等待新的广播或连接周期。

蓝牙主机(Central)的状态

  1. 待机(Standby): 主机处于空闲状态,没有正在进行的扫描或连接活动。
  2. 扫描(Scanning): 主机监听周围的广播包,以发现可用的从机。扫描可以是被动的(仅监听)或主动的(监听并请求额外信息)。
  3. 初始化(Initiation): 在检测到感兴趣的从机后,主机会发起连接请求,此时它进入初始化状态。
  4. 连接(Connection): 成功建立连接后,主机和从机之间可以双向通信。主机负责管理连接参数和数据传输。
  5. 断开连接(Disconnection): 当连接被有意或无意地中断时,主机会返回到待机状态,等待下一次操作。

三、蓝牙服务和特性

1.蓝牙服务(Bluetooth Service):

服务是蓝牙设备提供的一组功能的集合。每个服务都有一个唯一的标识符(UUID),用于区分不同的服务。服务可以是标准的(如心率监测、温度传感器)或是自定义的。通过服务,设备能够进行特定类型的数据交换。例如,一个心率监测设备可能会提供一个心率服务,用于传输心率数据。

2.蓝牙特性(Bluetooth Characteristic):

特性是服务的组成部分,每个特性也有一个唯一的UUID。特性定义了具体的数据格式和属性,包含了设备可以读取、写入或者通知的具体数据。例如,在心率服务中,心率特性可能包含心率值、测量单位等信息。特性可以具有不同的权限,例如可读、可写、可通知等。

简单来说,服务是功能的集合,而特性是具体的数据项。蓝牙设备通过这些服务和特性进行通信,交换信息,实现各种应用场景,如音频传输、健康监测、智能家居控制等。



http://www.ppmy.cn/devtools/150699.html

相关文章

ucharts写的小程序如何解决Y轴小数点问题

去除小数点 在yAxis的data中添加 formatter: (value) > { // console.log("formatter", value, typeof (value)) return value > 0 ? Math.floor(value) : value; } yAxis: {gridType: "dash",dashLength: 2,data: [{unit: &qu…

scala概念

val声明变量和var声明变量的不同? val修饰不可变变量,var修饰可变变量 trait与class的相同点和不同点? 它们的相同点在于都能包含抽象和非抽象成员,且不能直接实例化。 区别在于抽象类的构造方法可传参,而特质的构…

【2025最新】机器学习类计算机毕设选题80套,适合大数据,人工智能

【2025最新】机器学习类型计算机毕设选题 1-10套 基于Spring Boot的物流管理系统的设计与实现 基于机器学习的虚假招聘信息的分析与预测 基于机器学习的影响数据科学家职业变动因素的分析与预测 基于Spring Boot的历史文物交流平台的设计与实现 基于机器学习的肥胖影响因素的分…

平台介绍-快速开发上手指南

1、平台及其之上的应用限定了4个开发语言:: 业务后台:Java AI/大数据/爬虫等:Python PC前端:VueElmentUI 移动前端:UniApp 平台不推荐上述之外的语言、组件等。平台卖给甲方后,甲方可能会放开这个限制,这个我们无…

YOLOV8涨点技巧之MCA多维协作注意力模块

1. 算法设计:基于 MCA 的 YOLOv8 优化 1.1 总体架构 YOLOv8 的优化算法在原有架构的基础上,引入了 MCA 模块,以增强特征提取能力和目标定位精度。MCA 模块被嵌入到 YOLOv8 的主干网络(Backbone)和特征金字塔网络(FPN)中,用于捕捉多维度的上下文信息。 1.2 MCA 模块设…

Android硬件通信之 USBManager通信

一 简介 1.1 USB是一种常见的设备端接口,在PC端,移动端等上面应用非常的广泛,这就涉及到USB设备与主机端的通信。下面就讲下Android设备上的USB通信流程。 1.2 在android提供了USBManager接口来管理USB设备,USBManager类是Andro…

「蓝桥杯题解」数字接龙

前言 这个是我的 ac 代码,里面的注释是用自己的话写的。因为我看蓝桥杯官方题解文字和代码分离,代码部分没有注释,看着巨难受,所以自己写了一版。感觉他们的视频解析也挺水的(小声 题目链接 代码 import java.util…

openmetadata二次开发之前端汉化

目录 1.背景 1.1 设置默认的语言为中文,应该如何修改代码 1.2 将未做国际化的页面做汉化,应该如何修改代码 1.3 配置连接信息的指导教程,应该如何汉化 2. 设置默认的语言为中文 2.1 查看源码当前项目为react构建的项目,使用的国际化插件为react-i18next和i18next 2.…