物联网BLE应用程序开发 -- (0)一些关于低功耗蓝牙的基本概念

一些关于低功耗蓝牙的基本概念

在开始进行低功耗蓝牙BLE开发之前,先来了解一些关于低功耗蓝牙的基本概念。这些基本概念在后续的BLE开发过程中会经常出现,对于某些概念,一开始看不懂没有关系,只要先阅读本篇文档,在心里面先形成一个大概的印象,在后续开发过程中如果再遇到类似的概念,再回来翻阅本文,就会加深对这些基本概念的认识。

 

 1、什么是低功耗蓝牙Bluetooth Low Energy(简称BLE) 

低功耗蓝牙是一种低成本,短距离,可互操作,强鲁棒性的无线通信技术,工作在免许可的2.4GHz ISM射频频段。低功耗蓝牙一开始设计的初衷就是为了低功耗,除了低功耗的特性之外,它还具有快速启动,瞬间连接的特性,数据报文均采用AES-128进行数据加密。低功耗蓝牙在以下领域均有广泛应用:医疗与健康设备如血糖仪,血压计,体温计。运动与休闲设备如计步器,心率计。智能家居设备如灯光控制,温度控制,以及各种高安全性解决方案。

 

2、低功耗蓝牙BLE与蓝牙4.0的关系

很多初学者搞不懂低功耗蓝牙BLE与蓝牙4.0的关系和区别。总的来说,低功耗蓝牙BLE是蓝牙4.0的一个子集,蓝牙4.0除了包含低功耗蓝牙之外,还包含了传统蓝牙和高速蓝牙。而低功耗蓝牙还包含了单模蓝牙和双模蓝牙,它们之间的包含关系,如下图所示。

物联网BLE应用程序开发 -- (0)一些关于低功耗蓝牙的基本概念_第1张图片

 

3、低功耗蓝牙BLE的体系结构

低功耗蓝牙的体系结构,描述了低功耗蓝牙协议栈的组织框架,建议把这个框架都熟记心中,这样便于以后理解蓝牙协议栈的工作原理与流程。整个体系主要分为应用层app、主机层Host,控制器层Controller,每个层里面又包含了不同的层次结构,整个协议栈的组织框架,如下图所示。

物联网BLE应用程序开发 -- (0)一些关于低功耗蓝牙的基本概念_第2张图片

从整个协议栈的框架来看,开发者接触得最多的是应用层,开发者也是在应用层进行代码编写开发。对于主机层和控制器层,Nordic官方把这两个层封装好,并以.hex文件提供出来。因此,要开发蓝牙相关的应用程序时,芯片除了要烧录开发者自己编写的应用程序之外,还要烧录Nordic官方提供的.hex协议栈文件。

接下来,从上而下简单描述一下各层的功能与概念。

(1)应用层APP,主要包括三种类型:配置文件Profile,服务Service,特征值Characteristic。这三者的关系,如下图所示。

物联网BLE应用程序开发 -- (0)一些关于低功耗蓝牙的基本概念_第3张图片

配置文件Profile,通常用来体现一个或多个设备,比如一个配置文件可以用来表示一个手环设备。配置文件描述了这个设备是如何进行发现和连接。对于设备被定义为客户端角色的时候,配置文件也可以用于发现服务和特性。一个配置文件通常包含一个或多个服务。

服务Service,顾名思义,是用来定义服务器端的行为和特性的,用来提供给客户端进行获取的某些数据的集合。比如:手环上的心率服务,用来提供心率数值。电池电量服务,用来提供电池电量数值。这些服务之间包含了主要和次要服务,取决于开发者如何进行定义。正是因为这些服务,用户才可以清楚了解这个设备是做什么用途的。一个服务通常包含多个特征值。

特征值Characteristic,是用一个固定的格式,并且以UUID作为唯一句柄的一个小数据块,被包含在服务里面。这个特征值主要在蓝牙数据相互通信时使用。比如心率计的心率值可以用一个特征值表示,电池电压值可以用一个特征值表示。这些数值在蓝牙通信交互的时候,都是以特征值作为数据块进行传输的。

特征值里面还包含属性attribute和描述符descriptor这两个概念,一个特征值至少包含两个属性,一个属性用于声明这个特征值是做什么用的,一个属性用于存放特征值的具体数值。描述符不是必须的,它可以归类为一个额外的属性。

关于服务Service,特征值Characteristic,属性attribute,这三者之间的包含关系,如下图所示。

物联网BLE应用程序开发 -- (0)一些关于低功耗蓝牙的基本概念_第4张图片

 

(2)主机层Host,主要包括了通用访问配置文件GAP,通用属性配置文件GATT,属性协议ATT,安全管理器SM,逻辑链路控制和适配协议L2CAP。

通用访问配置文件GAP,主要负责处理设备的连接方式以及连接过程,以及实现连接链路的建立,结束,还有是否需要进行配对绑定。在GAP层,主要定义了两种角色,分别是中央设备Central和外围设备Peripheral。中央设备的功能主要有扫描,请求连接,断开连接,等等。外围设备的功能主要有广播,接收连接请求,断开连接,等等。

通用属性配置文件GATT,这个层是在ATT层上进行工作的,简单地说,GATT层赋予了ATT层数据的具体含义和组织逻辑,没有GATT层,ATT层的数据将毫无意义。在GATT层,主要定义了两种概念,服务端Server和客户端Client。例如,我们通过手机读取手环信息。在这两个设备的关系里面,手环是提供各种数据服务的,是服务端角色。而手机是向手环请求数据的,手机是客户端角色。

属性协议ATT,主要是蓝牙通信时的一系列数据和命令,这些数据和命令都在这个层进行了打包,ATT层是开发者分析蓝牙数据的最上层,蓝牙通信过程的原始数据都可以在这个层进行分析。

安全管理器SM,这个层主要是负责蓝牙配对的管理工作的,提供蓝牙连接时的配对和秘钥分发。

逻辑链路控制和适配协议L2CAP,主要是为以上的层提供一个统一的数据封装服务。这个层提供了一个可以复用的,面向连接或者无连接的数据服务。

 

(3)控制器层Controller,主要包括主机控制器接口HCI,链路层LL,物理层PHY。

主机控制器接口HCI,主要为主机层Host和控制器层Controller提供一个标准化接口。控制器层通过HCI接口发送数据和事件给主机层,主机层通过HCI接口发送命令和数据给控制器层。

链路层LL,主要负责管理设备的五种状态,分别是:就绪态,广播态,扫描态,发起态,连接态。在链路层定义了两个角色,主机和从机。主机具有就绪态,扫描态,发起态,连接态这四种状态。从机具有就绪态,广播态,连接态这三种状态。

物理层PHY,主要负责进行高斯频移键控,使设备工作在2.4GHz ISM频段,频率范围是从2.400GHz ~ 2.4835GHz,总共划分了40个RF信道,间隔为2MHz。其中3个固定的广播信道为37/38/39信道,对应中心频率为2402MHz,2426MHz,2480MHz。其余37个信道为自适应跳频的数据通信信道。

注意:以上概念描述了:服务端和客户端,中央设备和外围设备,主机和从机等角色。这些角色之间是完全独立的,它们只有在各自的层里才有意义。例如,在LL层里,是没有服务端和客户端的概念的。也就是说,在LL层里,一个设备被定义为主机,这个设备在GATT层里面,可以是服务端角色也可以是客户端角色。

 

4、低功耗蓝牙的广播,扫描和连接事件

广播,这个概念是针对LL层的从机角色而言的,从机以固定的广播间隔(间隔取值范围为:20ms ~ 10.24S)不断在广播信道发送广播数据。从机只有不断进行广播才能被主机扫描发现。广播主要分为通用广播,定向广播,不可连接广播,可发现广播。

扫描,这个概念是针对LL层的主机角色而言的,扫描主要涉及两个参数:扫描窗口和扫描间隔。扫描窗口是指进行一次扫描的时间宽度,扫描间隔是指隔多久启动一次扫描。扫描窗口和扫描间隔的时间不能大于10.24S。扫描窗口的值不能大于扫描间隔的值。如果扫描窗口的值与扫描间隔的值相等的话,说明主机一直进行扫描。关于扫描间隔与扫描窗口的时间关系,如下图所示。

物联网BLE应用程序开发 -- (0)一些关于低功耗蓝牙的基本概念_第5张图片

连接事件,主设备和从设备之间的数据包交换,都需要基于连接事件进行。这些连接事件都是在通信信道(0信道 ~ 36信道)进行。当主设备和从设备连接成功后,无论是否有用户数据收发,连接事件都会依据初始化时的连接参数进行,直到任意一方停止响应。主从设备双方可以在一次连接事件里面进行多次数据传输。连接事件如下图所示。

物联网BLE应用程序开发 -- (0)一些关于低功耗蓝牙的基本概念_第6张图片

连接事件是基于一定的连接参数进行的,连接事件主要涉及以下参数:

A、连接间隔参数:是指两个连接事件之间的时间间隔。这个时间必须是1.25ms的整数倍,取值范围是 6 ~ 3200,也就是连接间隔可以设置为 (6 * 1.25ms) ~ (3200 * 1.25ms)。连接间隔参数包括最小连接间隔和最大连接间隔。

B、从机延迟参数:为了使设备可以工作在最低功耗的状态,对于一些没有用户数据传输的连接事件,从机可以进行跳过。这个参数用来设置从机可以跳过连接事件的次数,表示从机在没有用户数据传输的时候,从机可以忽略这些连接事件的次数。

C、监督超时参数:这个参数是指两个成功连接事件之间的间隔最大值。在这个时间之内,如果还没有出现一次成功的连接事件,设备将会变为断开连接状态。这个参数是10ms的整数倍,取值范围是 10 ~ 3200,即100ms ~ 32s。

 

5、低功耗蓝牙连接建立过程

蓝牙设备需要在建立连接后才能进行可靠的数据通信,蓝牙的连接建立过程主要经历设备发现、建立连接、配对和绑定(非必须)这几个过程,如下图所示。

物联网BLE应用程序开发 -- (0)一些关于低功耗蓝牙的基本概念_第7张图片

设备发现:在连接建立前,从设备不断发出广播信号(包括设备地址和设备名称之类的附加信息);主设备收到此广告信号后,向从设备发出扫描请求;当从设备回应扫描时,就完成了设备发现过程。

建立连接:设备发现过程完成后,主设备继续向从设备发出连接请求(包括连接间隔参数、从机延迟参数、监督超时参数),从设备回应连接,就完成了建立连接过程。

配对绑定:为了安全起见,一些数据的访问需要认证,它的完成是这样的:一方(可以是主设备,也可以是从设备)向另一方索要6位数字的密码,之后,两个设备彼此交换安全密钥用于加密和认证,此过程称为配对。认证的过程比较繁琐,BLE协议支持两个设备保存认证的安全密钥(一般是非易失性存储器中),以便于两节点下次连接后快速认证,这就是绑定技术。 

 

6、如何开发低功耗蓝牙应用程序

请点击这里

 

7、怎样高效学习nRF52系列芯片

请点击这里

 

感谢阅读!

 

物联网BLE应用程序开发 -- (0)一些关于低功耗蓝牙的基本概念_第8张图片

 

你可能感兴趣的:(物联网,BLE,应用开发)