一文认识蓝牙(验证基于Aduino IDE的ESP32)

news2024/10/1 17:27:41

1、简介

        蓝牙技术是一种无线通信的方式,利用特定频率的波段(2.4GHz-2.485GHz左右),进行电磁波传输,总共有83.5MHz的带宽资源。

1.1、背景

        蓝牙(Bluetooth)一词取自于十世纪丹麦国王哈拉尔HaralBluetooth。一位来自英特尔的工程师 Jim Kardach将“蓝牙”与后来的无线通讯技术标准关联在一起的。他在一次无线通讯行业会议上,提议将“Bluetooth”作为无线通讯技术标准的名称。蓝牙的 LOGO 则是来自后弗萨克文的符文组合,将哈拉尔国王名字的首字母 H 和 B 拼在一起,成为了今天大家熟知的蓝色徽标。

蓝牙技术开始于爱立信联合在 1994 年创制的方案,该方案旨在研究移动电话和其他配件间进行低功耗、低成本无线通信连接的方法。发明者希望为设备间的无线通讯创造一组统一规则(标准化协议),以解决用户间互不兼容的移动电子设备的通信问题,1999年在爱立信联合IBM、英特尔、诺基亚及东芝公司等公司在1999 年 7 月 26 日正式公布 1.0A 版,确定使用 2.4GHz 频段。从此之后,蓝牙就开始了迅速发展的历程。

1.2、发展历程

版本时间PHY极限速率主要技术更新
1.0A/1.0B19990.7Mbit/s最早期的蓝牙 1.0 A 和 1.0B 版存在多个问题,有多家厂商指出他们的产品互不兼容。.
2.0+EDR20041Mbps(3Mbps with EDR)

新增的 EDR(Enhanced Data Rate)技术通过提高多任务处理和多种蓝牙设备同时运行的能力,使得蓝牙设备的传输率可达 3Mbps。蓝牙 2.0 支持双工模式:可以一边进行语音通讯,一边传输文档/高质素图片。同时,EDR 技术通过减少工作负债循环来降低功耗,由于带宽的增加,蓝牙 2.0 增加了连接设备的数量。

3.0+HS20091Mbps(3Mbps with EDR,24Mbps over 802.11 WIFI)High Speed 可以使蓝牙调用 802.11 WiFi 用于实现高速数据传输,传输率高达 24Mbps,是蓝牙 2.0 的 8 倍,轻松实现录像机至高清电视、PC 至 PMP、UMPC 至打印机之间的资料传输。
4.0+BLE20133Mbps with EDR ,1Mbps LE蓝牙 4.0 是迄今为止第一个蓝牙综合协议规范,将三种规格集成在一起。其中最重要的变化就是 BLE(Bluetooth Low Energy)低功耗功能,提出了低功耗蓝牙、传统蓝牙和高速蓝牙三种模式。
5.020172Mbit/s LE

有效传输距离是蓝牙 4.2 的四倍

(理论上可达 300 米)更低的功耗,低速率下保持几个uA,增加了信标、MASH组网、扩展广播、 室内定位等等新的技术。

        

当前的蓝牙技术主要分为BR/EDR(Basic Rate /Enhanced Data Rate)和低耗能(LE)两种技术类型。其中BR/EDR型是以点对点网络拓扑结构创建一对一设备通信;LE型则使用点对点(一对一)、广播(一对多)和网格(多对多)等多种网络拓扑结构。

        低功耗蓝牙不能向后兼容原有的蓝牙协议(经典蓝牙协议),所以它们之间是不能互通的。蓝牙4.0规范允许设备同时支持经典与低功耗蓝牙协议。

2、工作方式

广播模式、主从模式、主从一体模式、扫描模式、透传模式、AT指令模式

3、分类(蓝牙规范)

在介绍蓝牙协议之前,我们可以先复习一下TCP/IP5层网络模型和它所对应的网络协议集

可能不同应用的只需要关注在不同层次上的网络协议就可以满足日常工作使用了,像应用开发的程序猿,一般只关注应用层的协议,http,https等等;网络的程序猿可能只需要关注TCP协议、IP协议以及ARP协议等;WiFi的程序猿主要focus在802.11协议上。但蓝牙技术不同,它并不处于TCP/IP5层模型中的任何一层,而是覆盖了整个5层TCP/IP模型。有了这个概念之后,让我们来看看下图

在图中我们可以看到,蓝牙的架构分为HostController两个模块。在开发过程中,我们一般把蓝牙的架构分为这两个模块,

Host主要是各种业务场景需求的实现

Controller部分主要负责的是蓝牙报文的收发以及蓝牙物理连接的管理这些基本功能

        通常绝大部分的开发工作都是在Host端进行,Controller部分的工作大都是由专门的蓝牙芯片厂商来负责;Host和Controller分模块的最初设计理念是想让这两个模块单独运行在两颗不同的芯片甚至系统上,之间通过硬件通信端口(串口,USB)使用HCI协议进行连接和通信,这样可以方便替换和升级,例如对于不带蓝牙功能的电脑,我们可以买一个USB蓝牙接收器插到电脑上,就可以支持了蓝牙功能,这个场景下,HOST模块就是运行在电脑系统上,Controller模块就是运行在USB蓝牙接收器上。现在虽然有不少芯片把Host和Controller模块都放在了一颗芯片上,但是基本还是遵循这样的层次结构,只是将HCI协议从硬件通信端口换成了软件端口。
        从应用场景来说,蓝牙规范针对了我们日常生活中会碰到的非常多的场景分别定义了不同的场景规范(Profile)来支持这些场景下的需求

在图中我们可以看见:

HFP(Hands Free Profile):来支持蓝牙耳机通话场景

SPP(Serial Port Profile):用于串口传输

OPP(Object Push Profile):用于设备之间的文件传输场景

A2DP(Advanced Audio Distribution Profile):用于蓝牙耳机收听音乐场景

AVRCP(A/V Remote Control Profile):用于蓝牙耳机音乐播放控制场景

PAN(Personal Area Networking Profile):可以让手机作为蓝牙热点提供上网服务

HOGP(HID Over GATT Profile):低功耗蓝牙鼠标键盘,充一次电可以用三个月到半年。

蓝牙其实还有其他的像打印(Basic Printing Profile),心率(Heart Rate Profile),寻物(Find Me Profile)等等一系列场景规范(Profile)来支持不同的应用场景

传统蓝牙和低功耗蓝牙虽然都是蓝牙技术,但两种之间有非常大的差别,一个简单的区分就是看版本,版本低于4.0的都是经典蓝牙,高于4.0的才能支持低功耗蓝牙。在这里我们简单介绍一下两种蓝牙技术的概念

3.1传统蓝牙

        泛指支持蓝牙协议在4.0以下的模块,一般用于数据量比较大的传输,如:语音、音乐等较高数据量传输。 经典蓝牙模块可再细分为:传统蓝牙模块和高速蓝牙模块。传统蓝牙模块在2004年推出,主要代表是支持蓝牙2.1协议的模块,在智能手机爆发的时期得到广泛支持。高速蓝牙模块在2009年推出,速率提高到约24Mbps,是传统蓝牙模块的八倍,可以轻松用于录像机至高清电视、PC至PMP、UMPC至打印机之间的资料传输。

3.1.1、协议架构

蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙应用层协议(Bluetooth Application)

蓝牙核心协议

Bluetooth Core由两部分组成,Host和Controller。这两部分在不同的蓝牙技术中,承担角色略有不同,但大致的功能是相同的。Controller负责定义RF、Baseband等偏硬件的规范,并在这之上抽象出用于通信的逻辑链路(Logical Link);Host负责在逻辑链路的基础上,进行更为友好的封装,这样就可以屏蔽掉蓝牙技术的细节,让Bluetooth Application更为方便的使用。

在一个系统中,Host只有一个,但Controller可以一个,也可以有多个。一个常见的例子是蓝牙耳机与手机之间的通信。在这种情况下,手机充当蓝牙主设备(Host),负责管理整个蓝牙连接。手机内部可能搭载了一个或多个蓝牙控制器(Controller),用来处理和管理蓝牙信号的发送和接收。当用户使用蓝牙耳机时,手机会与蓝牙耳机进行配对并建立连接。手机作为主设备发送音频数据到蓝牙耳机,而蓝牙耳机的控制器接收并处理这些数据,然后将音频播放出来。在这个例子中,手机是唯一的主设备(Host),但可能搭载一个或多个蓝牙控制器(Controller),以实现音频数据的传输和处理。

蓝牙应用层协议

定义了蓝牙设备之间进行数据传输和通信所需的协议和规范。

蓝牙应用层协议包括多个子协议,其中最常用的是串口配置协议(SPP)、对象交换协议(OPP)、电话簿访问协议(PBAP)、音频/视频远程控制协议(AVRCP)等。

SPP协议用于在蓝牙设备之间建立虚拟串口通信,可以实现数据的双向传输。

OPP协议用于在蓝牙设备之间进行对象(如照片、音乐等)的传输和共享。

PBAP协议用于在蓝牙设备之间共享电话簿数据,方便用户在蓝牙设备上查看和管理联系人信息。

AVRCP协议用于在蓝牙设备之间进行音频/视频播放控制,例如播放、暂停、下一曲等操作。

除了上述常用的应用层协议外,蓝牙还支持一些其他的应用层协议,如蓝牙打印协议(BPP)、蓝牙键盘协议(HID)等,这些协议都为不同类型的蓝牙设备之间的通信和数据传输提供了标准化的解决方案。通过应用层协议,蓝牙设备可以实现各种不同类型的功能和应用,为用户提供更加便利和丰富的蓝牙体验。

SPEC中蓝牙协议分为四个层次:物理层(Physical Layer)、逻辑层(Logical Layer)、L2CAP Layer和应用层(APP Layer)

3.1.1.1、物理层

        物理层负责提供数据传输的物理信道,蓝牙的物理层分为Physical Channel和Physical Links两个子层。一个通信系统中通常存在多种类型的物理信道,BR/EDRLE AMP 在物理层的实现就较大的差异。

相同点

BR/EDR、LE和AMP的RF都使用2.4GHz频段,频率范围是2.400-2.4835 GHz

不同点

分类频率信道备注
BR/EDR(经典蓝牙)分成79个channel,每一个channel占用1M的带宽5种物理信道(跳频信道)
LE(低功耗蓝牙)分成40个channel,每一个channel占用2M的带宽2种物理信道
AMP(高速数据传输)直接采用802.11(WIFI)的PHY规范一个AMP Physical Channel

3.1.1.2、逻辑层

        主要功能是在已连接(的蓝牙设备之间,基于物理链路,建立逻辑信道。所谓的逻辑信道,和城市道路上的车道类似:一条城市单行道路可以看做一个物理链路,该物理链路根据行车用途,可以划分为多个逻辑信道,如直行车道、右转车道、左转车道、快速车道、慢速车道等等。如图

AMP ACL基于AMP技术的、面前连接的、异步传输链路,为AMP-U提供服务
BR/EDR ACL基于BR/EDR技术的ACL链路,为ACL-C、ACL-U提供服务
SCO/eSCO基于BR/EDR技术的、面向连接的、同步传输链路,为stream类型的Logical Link提供服务
ASB、PSB基于BR/EDR技术的、面向连接的广播传输链路,为ACL-U、PSB-U、PSB-C提供服务
CSB基于BR/EDR技术的、无连接的广播链路,为PBD提供服务。
LE ACL基于LE技术的、面前连接的、异步传输链路,为LE-U、LE-C提供服务
ADVB基于LE技术的、广告/广播链路,为ADVB-U、ADVB-C提供服务
3.1.1.3、L2CAP

L2CAP是逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol)的缩写,负责管理逻辑层提供的逻辑链路。基于该协议,不同Application可共享同一个逻辑链路,类似TCP/IP中端口(port)的概念。通过L2CAP层可以将ACL数据分组交换为便于高层应用的数据分组格式,并提供协议复用和服务质量交换等功能。L2CAP提供多路复用角色,允许许多不同的应用程序共享ACL-U,ASB-U,LE-U或AMP-U逻辑链接。通过协议多路复用、分段重组操作和组概念,向高层提供面向连接的和无连接的数据服务,L2CAP还屏蔽了低层传输协议中的很多特性,使得高层协议应用开发人员可以不必了解基层协议而进行开发。

3.1.1.4、应用层

基于L2CAP提供的channel,实现各种各样的应用功能。。Profile是蓝牙协议的特有概念,为了实现不同平台下的不同设备的互联互通,蓝牙协议不止规定了核心规范(称作Bluetooth core),也为各种不同的应用场景,定义了各种Application规范,这些应用层规范称作蓝牙profile。更新一下图

核心规范

Core Specifications,定义了蓝牙技术最核心的内容。覆盖了从物理层一直到传输层的内容。
Protocol规范

Protocol Specfications,在核心规范之上针对某一大类场景(例如音视频传输,线缆通信传输,网络通信传输)的数据通信需求来定义的传输协议,属于应用层协议,只在经典蓝牙中存在。
Profile规范

包含经典蓝牙的Traditional Profile Specifications和低功耗蓝牙的GATT Specifications。这类规范是针对某一个特定场景需求(例如听音乐,打电话)来对核心规范和protocol做出更细化的定义和对这些协议无法满足的一些细化需求做了补充协议。
蓝牙mesh规范

Mesh Networking Specifications,这是蓝牙最新的mesh规范。只使用了低功耗蓝牙的 

 3.1.2、代码(待更新)

待更新

3.2低功耗蓝牙

        指支持蓝牙协议4.0或更高的模块,也称为BLE模块,最大的特点是成本和功耗的降低,应用于实时性要求比较高的产品中,比如:智能家居类(蓝牙锁、蓝牙灯)、传感设备的数据发送(血压计、温度传感器)、消费类电子(电子烟、遥控玩具)等。

3.2.1、协议架构

BLE的协议可分为Bluetooth ApplicationBluetooth Core两大部分,Bluetooth Core又包含BLE Controller和BLE Host两部分(在传统蓝牙的协议架构的时候讲过)。Bluetooth Application主要调用API实现上层功能,本质上来说不属于协议层,重点了解GAP、ATT、Link Layer,其它有个简单认识即可

PS:传统蓝牙和低功耗蓝牙区别

PS.1、Controler端

在经典蓝牙的定义里,将这83.5MHz总共分为80个频道每个频道是1MHz带宽,蓝牙连接管理是用连接管理协议(Link Manager Protocol LMP)。低功耗蓝牙里,空中只有40个频道,每个频道是2MHz带宽,连接管理使用的是连接层(Link Layer),空中数据包的结构也完全不同。我们可以看到,Controler部分的功能完全是两个独立的路径,也就是说,经典蓝牙和低功耗蓝牙的controller可以独立存在,互相不依赖,所以目前市面上有只支持经典蓝牙的芯片,也有只支持低功耗蓝牙芯片,当然,也有两种蓝牙模式共存的芯片。

PS.2、Host端

        在经典蓝牙协议里,在逻辑链路控制与适配协议层(Logical Link Control and Adaptation Protocol L2CAP)之上,还根据不同的应用场景定义了不同的传输协议,例如RFCOM, AVDTP,AVCTP,在不同的传输协议之上才定义了不同的Profile,层次结构比较复杂,开发人员学习成本高。

        低功耗蓝牙就比较简单,只定义了一个属性协议(Attribute Protocol ATT),基于属性协议定义了一个通用属性场景规范(Generic Attribute Profile GATT)和其他的针对特定业务的场景规范(Profile),开发起来比较简单,整体框架也比较容易实现私有场景的开发。

PS.3、应用和功耗

应用区别:

        BLE低功耗蓝牙一般多用在蓝牙数据模块,拥有极低的运行和待机功耗,使用一粒纽扣电池可连续工作数年之久;

        BT经典蓝牙模块多用在蓝牙音频模块,音频需要大码流的数据传输更适合使用。
 
在功耗上:

        传统蓝牙有3个级别的功耗,class1、class2、class3分别支持100m、10m、1m的传输距离;

        低功耗蓝牙没有功耗级别,一般发送功率在7dbm。低功耗BLE5.0模块可支持蓝牙Mesh技术。

3.3蓝牙Mesh(待更新)

待更新

参考资料

三张图带你入门蓝牙规范

Bluetooth 蓝牙介绍(一) :基础知识

 蓝牙

深入浅出讲解低功耗蓝牙(BLE)协议栈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1484777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[技巧]Arcgis之图斑四至点批量计算

前言 上一篇介绍了arcgis之图斑四至范围计算,这里介绍的图斑四至点的计算及获取,两者之间还是有差异的。 [技巧]Arcgis之图斑四至范围计算 这里说的四至点指的是图斑最东、最西、最南、最北的四个地理位置点坐标,如下图: 四至点…

SCP命令行向服务器端上传文件或下载文件

环境要求 使用scp(Secure Copy Protocol)命令在本地和远程系统之间安全地复制文件和目录,需要满足以下环境要求: SSH服务:scp依赖于SSH(Secure Shell)协议来安全地传输文件。因此,…

第四十八回 解珍解宝双越狱 孙立孙新大劫牢-Python模块和包概念与使用

吴用对宋江说,有个人,他是石勇的关系,与祝家庄的峦廷玉关系好,还是杨林、邓飞的老相识,他有一计.... 原来在宋江攻打祝家庄的时间段,山东海边登州也发生了一件事。登州山下有一家猎户,弟兄两个…

下载github项目到pycharm

一、下载git 1.下载git链接 https://git-scm.com/ 2.一路点击next,最后finish 二、使用git 1.安装成功后在开始菜单栏会找到如下内容,其中常用的是Git Bash 2.点击Git Bash 3.这里就可以克隆github上的代码了 点击复制,在命令行输入…

《猛兽派对》好玩吗值得买吗?苹果电脑也能装《猛兽派对》吗?猛兽派对好友通行证 动物派对 猛兽对战游戏

目录 一、《猛兽派对》好玩吗? 游戏玩法: 物理引擎: 关卡设计: 游戏特色: 评价: 荣誉: 二、苹果电脑也能装《猛兽派对》吗? 第1步:下载并安装CrossOver这款软件…

备战蓝桥杯---线段树基础2

今天我们把线段树的另一个模板看一下: 在这里,我们注意到乘的操作,因此我们用两个懒标记来分别表示加和乘,这时我们面临了一个问题,就是当我们把标记往下传时,它的儿子怎么知道是先乘还是先加? …

存储型xss案例

一、环境 DWVA网上自己找 二、开始闯关 先随便写看看 看看源码,数据是被插入到数据库里面了,魔术开关关闭了 数据最后插入显示到index.php 看一下我们目前的cookie值是 看了源码之后也没进行过滤那么我们试着直接插,看是否过滤 之后用户每…

详解如何保证消息队列不丢失消息(以kafka为例)

✨✨祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 一、引言 二. 持久化存储 2.1持久化存储原理: 2.2使用示例: …

递归法解决多重背包问题

多重背包问题同样是01背包问题的变种,同样可以通过修改01背包部分代码来求解。 方法一:修改递归函数,根据题目新的限制条件——使用次数扩充状态参数个数,将同一个物品选用的次数同样作为参数传递到栈空间中,同时也对…

赖迪思软件 lattice Diamond

问题1:工程编译好后,git上传,变更分支又切换回来,再次编译有时候失败,所以配置好的管脚变成默认的,生成的IP核变成名变粗(顶部文件,管脚配置显示IP核输入输出信号配置)。…

PHP设计模式初探 以前写的完整PPT!!!!!

幻灯片 1: 初探PHP设计模式 copyright CSDN 白毛大侠 幻灯片 2: 我们说别人代码写的烂&#xff0c;烂在哪&#xff1f; 反思我们平时是怎么写代码的&#xff1f; 非开发者如何转开发&#xff08;业务&#xff09; &#xff1f; 一.过程与对象 幻灯片 3: <?…

17.来自Sora的夺舍妄想——享元模式详解

OpenAI 的 Sora 模型面世之后&#xff0c;可以说人类抵御AI的最后阵地也沦陷了。 在此之前&#xff0c;人们面对AI交互式对话&#xff0c;AI制图&#xff0c;AI建模之类的奇迹时&#xff0c;还可以略微放肆的说&#xff1a;“的确很神奇&#xff0c;这毕竟还是比人类世界低了一…

抖音视频评论数据挖掘软件|视频批量下载工具

这款基于C#开发的抖音视频评论数据挖掘软件是一款功能强大、易于使用的工具。它不仅支持通过关键词进行搜索抓取&#xff0c;还能够通过分享链接进行单个视频的抓取和下载。主要功能模块如下&#xff1a; 批量视频提取 操作模块&#xff1a;用户可以输入要搜索的关键词&#…

python:pyecharts 画基金净值 月K线图

pip install pyecharts1.9.1 pyecharts-1.9.1-py3-none-any.whl 我想在本地&#xff08;PC) 画出 基金净值 月K线图&#xff0c;不想每次看图都需联网。 cd my_dir mkdir echarts cd echarts curl -O https://assets.pyecharts.org/assets/echarts.min.js 修改一下开源代码 …

【飞桨EasyDL】飞桨EasyDL发布的模型转换onnx(附工程代码)

一个愿意伫立在巨人肩膀上的农民...... 一、paddle转onnx转rknn环境搭建 paddle转onnx和onnx转rknn两个环境可以分开搭建&#xff0c;也可以搭建在一起。这里选择分开搭建&#xff0c;先搭建paddle转onnx。 1.1、创建环境 选择python3.8.13包进行创建环境 conda create --nam…

Ubuntu22.04下在Spark2.4.0中采用Local模式配置并启动pyspark

目录 一、前言 二、版本信息 三、配置相关文件 1.修改spark-env.sh文件 2.修改.bashrc文件 四、安装Python3.5.2并更改默认Python版本 1.查看当前默认Python版本 2.安装Python3.5.2 2.1 下载Python源码 2.2 解压源码 2.3 配置安装路径 2.4 编译和安装 2.5 验证安装…

走进SQL审计视图——《OceanBase诊断系列》之二

1. 前言 在SQL性能诊断上&#xff0c;OceanBase有一个非常实用的功能 —— SQL审计视图(gv$sql_audit)。在OceanBase 4.0.0及更高版本中&#xff0c;该功能是 gv$ob_sql_audit。它可以使开发和运维人员更方便地排查在OceanBase上运行过的任意一条SQL&#xff0c;无论这些SQL是成…

最近半年博客产出的反思

最近完善boss资料的时候&#xff0c;我认为自己在大学期间学习过程中经常用博客记录学习内容以及在学习过程中写博客笔记是个不错的好习惯&#xff0c;在询问了师傅的意见之后决定把CSDN的主页也挂上去。 非常荣幸平台上今天有一位老师看见我的简历之后主动和我交流。对我的博客…

Sora来袭!机器人+Sora落地性如何?

2022年底&#xff0c;OpenAI正式推出ChatGPT&#xff0c;这款由人工智能技术驱动的自然语言处理工具能够通过学习和理解人类的语言来进行对话 。ChatGPT是OpenAI迈出的第一步&#xff0c;这款让所有人都能体会到人工智能潜力的现象级产品&#xff0c;展现出了文字对于过去人工智…

Xcode15与苹果ios17适配以及遇到的问题

大家好&#xff0c;我是你们的好朋友咕噜铁蛋&#xff01;最近&#xff0c;苹果发布了全新的iOS17系统&#xff0c;而作为开发者&#xff0c;我们需要确保我们的应用程序能够与这个新系统完美适配。因此&#xff0c;今天我将和大家分享一些关于Xcode15与苹果17系统适配的经验&a…