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

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)协议栈

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux的通信方案(SYSTEM V)

文章目录 共享内存(Share Memory)信号队列(Message Queue)信号量(semaphore) 进程间通信的核心理念:让不同的进程看见同一块资源 linux下的通信方案: SYSTEM V 共享内存(Share Memory) 特点:1.共享内存是进程见通信最…

使用 Docker 部署 Answer 问答平台

1)介绍 GitHub:https://github.com/apache/incubator-answer Answer 问答社区是在线平台,让用户提出问题并获得回答。用户可以发布问题并得到其他用户的详细答案、建议或信息。回答可以投票或评分,有助于确定有用的内容。标签和分…

笨办法学 Python3 第五版(预览)(二)

原文:Learn Python the Hard Way, 5th Edition (Early Release) 译者:飞龙 协议:CC BY-NC-SA 4.0 练习 19:函数和变量 现在你将把函数与你从之前练习中了解到的变量结合起来。如你所知,变量给数据片段一个名称&#x…

数据挖掘入门项目二手交易车价格预测之数据分析

文章目录 1. 相关库的引入2. 数据的加载3. 数据概况3.1 统计值查看3.2 查看数据类型 4. 判断缺失值4.1 统计每一列空值的数量4.2 可视化缺失值数量 5. 判断异常值5.1 异常值检测 6. 了解预测值的分布6.1 统计各预测值的分布6.2 总体分布概况6.2 查看预测值的具体频数6.3 查看sk…

基于ssm旅社客房收费管理系统+vue

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

Git 如何上传本地的所有分支

Git 如何上传本地的所有分支 比如一个本地 git 仓库里定义了两个远程分支,一个名为 origin, 一个名为 web 现在本地有一些分支是 web 远程仓库没有的分支,如何将本地所有分支都推送到 web 这个远程仓库上呢 git push web --all

【ArcGIS超级工具】基于ArcPy的矢量数据批量自动化入库工具

最近,有很多做规划的朋友私信我,想让我帮忙开发一款ArcGIS自动化脚本工具,实现点、线、面的自动化入库操作,帮他们在平时的内业数据处理工作中减少机械式重复性的工作,提高工作效率。为此,我详细了解了下目…

车辆维护和燃油里程跟踪器LubeLogger

什么是 LubeLogger ? LubeLogger 是一个自托管、开源、基于网络的车辆维护和燃油里程跟踪器。 LubeLogger 比较适合用来跟踪管理您的汽车的维修、保养、加油的历史记录,比用 Excel 强多了 官方提供了在线试用,可以使用用户名 test 和密码 123…

Covalent Network(CQT)将链下收入引入链上,在全新阶段开启 Token 回购

Covalent Network(CQT),是 Web3 领域跨越 225 个链的领先数据索引服务商,通过统一 API 的方式提供结构化数据可用性服务,并正在成为 AI、DeFi、分析和治理等多样化需求的关键参与者。为了支持去中心化技术的采用&#…

Java快读

java的快读 (1)BufferedReader BufferedReader br new BufferedReader(new InputStreamReader(System.in));//定义对象String[] strings br.readLine().split(" ");//读取一行字符串,以空格为分隔转化为字符串数组int n Integer.parseInt(strings[0])…

NUC980 Linux(4.4.289)内核配置SD卡相关参数,设备启动后插入后SD卡没反应

现象:SD卡插入,设备识别不到 原因:1.内核配置问题;2.硬件没有接地; 解决: 1.内核配置 2.硬件上SD卡接地

Java面试——Redis

优质博文:IT-BLOG-CN 一、Redis 为什么那么快 【1】完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中。 【2】数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的。 【3】采用单线…

IEEE754标准的c语言阐述,以及几个浮点数常量

很多年前,调研过浮点数与整数之间的双射问题: win7 intel x64 cpu vs2013 c语言浮点数精度失真问题 最近重新学习了一下IEEE754标准,也许实际还有很多深刻问题没有被揭示。 计算机程序设计艺术,据说这本书中也有讨论。 参考&…

双周回顾#007 - 前端与后端

前端的问题不是难,而是它面对最终用户。只要用户的喜好和口味发生变化,前端就必须跟上。 这导致前端不得不快速变化,因为用户的口味正在越来越快地改变。 后端不需要面对最终用户,需要解决的都是一些经典的计算机科学问题&#…

8、Redis-Jedis、Lettuce和一个Demo

目录 一、Jedis 二、Lettuce 三、一个Demo Java集成Redis主要有3个方案:Jedis、Lettuce和Redisson。 其中,Jedis、Lettuce侧重于单例Redis,而Redisson侧重于分布式服务。 项目资源在文末 一、Jedis 1、创建SpringBoot项目 2、引入依赖 …

114.龙芯2k1000-pmon(13)- 串口如何用

本文是讲原理图的部分,跟pmon的关系不大!! 参考手册:《龙芯2K1000处理器用户手册.pdf》 刚刚看数据手册,让我是有点惊讶,但是也让我迷惑。(一个串口复用为4个是啥意思?)…

MYSQL的优化学习,从原理到索引,在到事务和锁机制,最后的主从复制、读写分离和分库分表

mysql的优化学习 为什么选择Mysql不选择其他的数据库?还有哪些,有什么区别? Mysql:开源免费版本可用,适用于中小型应用 Oracle:适用于大型企业级应用,复杂的业务场景和大量数据的处理&#xf…

ctf_show笔记篇(web入门---命令执行)

目录 命令执行 29:有很多种方法可以使用内联法例如system(cat ls)或者像它提示的一样echo nl fl""ag.php 30:这里与29题原理相同只不过多禁用了一个system和php####请通过29题举一反三 31:这一题有多种解法看自身理解&#xff0…

关于阿里云oss的冗余存储类型问题

不得不说一个问题,阿里云服务方便我们的同时 ,他们的文档写的是真的差劲。 东一块,西一块的。非常不好系统的阅读,文档结构比较散。 关于阿里云oss的冗余存储类型问题,这里说一下,简直是个坑。 首页阿里…

基于springboot+vue的在线考试与学习交流平台

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…