蓝牙BLE技术

简介: 蓝牙BLE技术

蓝牙低功耗无线电的调制速率由规范规定为恒定的1Mbps(兆比特每秒)。当然,这是理论上的上限。在实践中,根据所使用设备的限制,您可以期望每秒5- 10kb。就距离而言,BLE专注于非常短的距离通信。可以创建和配置一个BLE设备,该设备可以可靠地传输30米或30米以上的视线范围内的数据,但典型的操作范围可能更接近2到5米。当然,续航里程越高,电池消耗就越多,所以在调整你的设备以适应更高的续航里程时要小心。

蓝牙BLE组成


BLE由三个主要构建模块组成:应用程序、主机和控制器。顾名思义,应用程序块是与蓝牙协议栈交互的用户应用程序。主机覆盖蓝牙协议栈的上层。控制器覆盖下层。主机可以通过添加一个我们称为HCI的东西与BLE模块通信——主机控制器接口。显然,HCI的目的是将控制器与主机接口,而这个接口使控制器与各种主机接口成为可能。在本例中,单片机运行应用程序,与连接设备进行通信,连接设备由主机和控制器组成。为此,我们使用SPI进行通信,但是也可以使用不同的接口。


网络拓扑机构


BLE设备可以有两种不同的设备,一种是中心设备,另一种是外围设备。中央设备通常是移动电话或个人电脑,它们具有更高的CPU处理能力。而外围设备通常是一些连接到中心设备的传感器或低功耗设备。


BLE设备可以发送两种类型的数据:广告包和扫描响应数据。


广告包是必要的,并且不断地从外围设备传输,以便被其他设备看到。当其他设备接收到这些数据时,它们可以从外围设备请求额外的数据,然后外围设备发送扫描响应数据。


BLE设备可以通过两种方式与附近的设备通信:广播和连接。


广播是向所有收听设备发送数据的行为。在谈到广播时,我们定义了两个角色:广播员和观察者。广播公司定期向任何愿意接收的人发送不可连接的广告包。而观察者则反复扫描该区域以接收数据包。然后,当观察者收到广告包时,它可以请求扫描响应数据。需要注意的是,广播是设备一次向多个对等点传输数据的唯一方式。


连接是两个设备之间永久的、周期性的数据包交换。主设备(中央设备)扫描可连接的广告包的频率,当合适时,启动连接。一旦建立连接,中央设备就会管理时间并开始周期性的数据交换。从设备(外围设备)定期发送可连接的广告信息包,并接收传入的连接,一旦建立连接,外围设备遵循中央的定时,并定期与它交换数据。连接时,这两个设备通常定义连接事件。连接事件是在特定时间点上的周期性数据交换。这是节省电能的关键好处之一——两个设备可以通电、交换数据,然后进入休眠状态,直到下一次连接事件。


BLE的不同的层次和他们的目的


BLE和许多其他无线技术一样,由许多层组成。每一层都有其作用,对BLE器件的正常工作起着重要作用。所有的层和定义看起来都很复杂,但是我们将逐步使用它,并覆盖使用BLE开发成功项目所需的所有必要领域。


让我们再来看看BLE设备的3个构建模块:应用程序、主机和控制器:


应用程序是最高级别的,它负责包含与应用程序实现的实际用例相关的所有逻辑、用户界面和数据处理。应用程序的体系结构高度依赖于使用BLE开发的项目,所以我们将把这一部分留给第二部分,我们将使用BLE P Click构建项目。


主机包含以下层:


l 通用访问配置文件(GAP)


l 通用属性配置文件(GATT)


l 逻辑链路控制和适配协议(L2CAP)


l 属性协议(ATT)


l 安全经理(SM)


l 主机控制器接口(HCI),主机端


控制器包括以下层:


l 主机控制器接口(HCI),控制器端


l 链路层(LL)


l 物理层(PHY)


物理层(PHY)


物理层包含用于调制和解调模拟信号并将其转换为数字符号的模拟通信电路。BLE可以通过40个信道从2.4000 GHz到2.4835 GHz进行通信。这些信道中的37个用于连接数据,后三个信道(37,38和39)用作广告信道以建立连接和发送广播数据。BLE使用称为跳频扩频的技术,其中无线电在每个连接事件上的信道之间跳跃。建立连接时传递跳的值,因此每个新建立的连接都不同。该技术最小化了任何无线电干扰的影响。


链接层


链路层是直接与物理层接口的部分,通常实现为自定义硬件和软件的组合。链路层根据逻辑组为其设备定义以下角色:


广告


发送广告包的设备,以及 扫描器 - 扫描广告包的设备。


Master


一个启动连接并在以后管理它 的设备,Slave - 一个接受连接请求并遵循主设备时序的设备。链路层还负责处理蓝牙设备地址。一个48位数字,用于在对等体中唯一标识设备。 您可以将BDA视为与IP中的MAC地址类似的内容。


链路层还负责建立连接, 它根据蓝牙地址或基于数据本身过滤掉广告数据包。并且还管理 连接间隔 - 两个连续连接事件开始之间的时间。 链路层还可以配置加密,这在许多设备存在于相同范围内时是非常需要的。


主机控制器接口(HCI)


如前所述,HCI允许更强大的CPU通过串行接口(通常是UART或USB)控制BLE设备。此配置的典型示例包括大多数智能手机,平板电脑和个人计算机,其中主机(和应用程序)运行在主CPU,而控制器位于通过UART或USB连接的单独硬件芯片中。由于我们没有这种配置,我们不会再进一步讨论HCI。


现在我们可以转到BLE设备的主机部分。


逻辑链路控制和适配协议(L2CAP)


L2CAP负责两项任务:1、它需要来自上层的多个协议,并将它们封装成标准的BLE数据包格式(反之亦然)。2、分段和重组:它从上层获取大量数据包并将其分解为适合发送端BLE数据包的27字节最大有效载荷大小的块,反之亦然,它接收多个已经分段并重新组合的数据包将它们分成一个大的数据包然后发送到上层


L2CAP层负责或路由两个主要协议:属性协议(ATT)和安全管理器协议(SMP)。ATT构成了BLE应用程序中数据交换的基础,而SMP提供了一个框架,用于在对等体之间生成和分发安全密钥。我们将SMP排除在本教程之外,因为它现在对我们的项目并不重要。


属性协议(ATT)


属性协议(ATT)是基于设备呈现的属性的简单客户端/服务器协议。客户端从服务器请求数据,然后服务器将数据发送给它的客户端。重要的是要记住,如果仍有待处理的请求,则在响应到达之前不能再发送任何请求。每个服务器都包含以属性形式组织的数据,每个属性都分配有16位属性句柄,通用唯一标识符(UUID),一组权限和值。属性句柄只是用于访问属性值的标识符,而UUID用于指定值中数据的类型和性质。客户端发送适当的写入或读取请求,服务器根据它们进行响应。


当客户端想要从服务器读取或写入属性值时,它会使用句柄向服务器发送读取或写入请求。然后,服务器使用属性值或确认响应进行响应。在读取操作的情况下,客户端必须解析该值并基于该属性的UUID理解数据类型。另一方面,在写入操作期间,期望客户端提供与属性类型相对应的数据,并且如果不是这种情况,则服务器可以自由拒绝操作。


通过ATT执行的操作集如下:错误处理,服务器配置,查找信息,读取操作,写入操作,排队写入,服务器启动


通用属性配置文件(GATT)


GATT是ATT的基础。它添加了数据模型和层次结构,它定义了数据在不同应用程序之间的组织和交换方式。


GATT的数据在服务部门进行。 每个服务包含一个或多个 特征,每个特征是用户数据与元数据(描述性信息)的联合。与GAP一起,GATT构成了蓝牙低功耗协议栈的主要接口。


GATT服务按我们称为GATT配置文件的方式组织, 每个配置文件可以包含多个服务。使用16位UUID区分服务。可以在Bluetooth Developer Portal 的“ 服务”页面上找到已采用服务的完整列表 。


特征还包含UUID,它们通常表示数据端点。例如,如果我们测量温度,则特征部分将包含一些元数据(例如,如果它是华氏温度或摄氏温度),然后是温度值。


通用访问配置文件(GAP)


GAP层控制广告和连接,它指定设备如何执行控制过程,例如设备发现,连接,安全性建立等。


它的主要焦点是:


•角色和它们之间的相互作用


•跨越这些的操作模式和转换


•实现一致且可互操作的通信的操作过程


•安全方面,包括安全模式和过程


•非协议数据的附加数据格式


如前所述,设备可以具有Broadcaster或Observer以及Central或Perihperal设备的角色。


目录
相关文章
|
物联网
低功耗蓝牙(BLE)设备常用的4种角色
对于主从设备的其它说法,大家需要了解一下。对于Central和Peripheral有多种说法,上面我们说的是主从,还有客户端/服务端,中心设备/外围设备,我们这里简单介绍一下,客户端(Client)对应上面的Central,接收数据;服务端(Server)对应上面的额Peripheral,提供数据,这个需要和网站的服务器/客户端区别一下;中心设备(Central)和外围设备(Peripheral),其实上面叫中心设备和外围设备。上面主设备(Master)和从设备(Slave)应该对应主/从。这个根据个人习惯,主/从用的比较多,如果在蓝牙中提到这些知道就行了。
813 0
|
7月前
|
传感器 物联网 芯片
低功耗蓝牙(BLE) 和 经典蓝牙(SPP) 的区别
如何选择适合的蓝牙协议以实现最佳的无线通信效果。
535 0
|
传感器 物联网 Android开发
Android蓝牙使用详解(低功耗蓝牙(BLE))
Android蓝牙使用详解(低功耗蓝牙(BLE))
|
物联网 UED
【BLE】蓝牙BLE传输到底有多快?
我们在开发蓝牙产品的时候,经常会被问到,这个文件传输用蓝牙可以做吗?多长时间可以传完?蓝牙的传输速率是多大?很多人对蓝牙的传输速率可能只有一个大概的概念几KB?几十KB?下面就来看一下蓝牙的传输速率到底有多快?众所周知,对于无线连接,链路维护和数据包冗余会产生一定的传输成本,以保持蓝牙连接的健壮和高效。因此,连接的低功耗蓝牙数据吞吐量的公式为:使用这个公式,我们将在建立连接时计算从 4.0 到 5 的数据吞吐量。
920 0
【BLE】蓝牙BLE传输到底有多快?
|
物联网 芯片
|
安全 IDE 物联网
|
编解码
【经典蓝牙】蓝牙AVRCP协议分析
蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议。定义了音频/视频的控制、浏览、查询、通知等一系列的命令集。常用来蓝牙耳机对手机的音乐进行控制,以及获取手机的音乐信息等场景。AVRCP协议有两个角色,分别是controller(CT)和 target(TG)。CT: 发送控制命令到对端,控制对端媒体播放器的设备,例如蓝牙耳机,蓝牙遥控器等。TG:接收对端的控制命令,并执行操作,进行回复的设备,例如手机,电脑等。
2933 0
【经典蓝牙】蓝牙AVRCP协议分析
|
编解码 物联网
【BLE】蓝牙5.2新特性 LEPC简介
LEPC是LE Power Control的简称,是蓝牙5.2引入的用来优化功耗的一个普惠性的新特性,它既可以优化LE Audio的功耗,还可以优化现有ble的功耗。虽然在BLE中,LEPC是一个全新的概念,但经典蓝牙BR/EDR中却很早就引入了该特性。LEPC是什么?一句话概括,LEPC是一个让蓝牙设备在建立连接后可以协商双方发射功率的机制。
543 0
【BLE】蓝牙5.2新特性 LEPC简介
|
Android开发
STM32+HC05串口蓝牙设计简易的蓝牙音箱
STM32+HC05串口蓝牙设计简易的蓝牙音箱
550 0
STM32+HC05串口蓝牙设计简易的蓝牙音箱