【蓝牙系列】蓝牙5.4到底更新了什么(1)— PAwR
一、 背景
蓝牙技术联盟最近发布了蓝牙5.4的核心规范,蓝牙5.4规范的主要改进之一就是实现了单个接入点与数千个终端节点进行双向无连接通信, 这一特性主要是针对电子货架标签(Electronic Shelf Label,ESL)市场。
电子货架标签是一种带有信息收发功能的电子版的价签显示装置,它由显示屏(墨水屏)、通信模块和应用配件组成,除了显示基本的物品信息和价格之外,还可以显示条形码或二维码,甚至还有图片。它最大也是最关键的一个特点就是“功耗低和耐用”,通常情况下可实现几个月甚至数年以上的续航 。
蓝牙5.4规范中引入了一种新的逻辑传输“Periodic Advertising with Responses(PAwR)”,它能够支持无连接的双向应用程序数据通信。在这种技术支持下,ESL设备不需要经常性的切换接收模式,因此可以大大延长电池寿命,同时,基于PAwR的数据传输模式,保证数据传输与监听设备的相关性,从而减少能量的浪费,实现ESL设备接收数据并响应至发送器的能力。
另外,电子货架标签配置文件规范包括一个寻址方案和一系列命令和参数,AP可以在PAwR子事件期间发送的单个数据包中传输到一个或多个ESL设备。ESL设备网络中可能有128个组,每个组都有一个数字ID,同样每个小组最大可有255台ESL设备,每台设备也都有一个数字ID。整个网络中,单个ESL的唯一地址是组ID和ESL ID的组合,因此,这就意味着基于新标准的ESL网络最多可以包含32640个电子货架标签,且每个标签都可以从单个接入点进行控制。
1. 蓝牙5.4新特性
蓝牙5.4的新特性主要有以下四个方面:
-
支持带响应的周期性广播(PAwR)
PAwR是一个新的BLE逻辑传输层,是一种支持无连接的、双向的、一对多的、一种低功耗拓扑技术。
-
支持加密的广播数据(EAD)
该特性提供了一种标准化的方法来加密广播包中的数据,加密后的广播数据只能被拥有相同密钥的设备解密。 当然广播包的加密是需要两个设备建立gatt连接之后,才会生成加密广播包的密钥。
-
LE GATT 安全级别特征
设备现在可以使用GATT 安全级别特性来表示设备的安全模式和安全等级
-
广播编码选择
当发送BLE扩展广播的时候,现在可以选择使用哪种Codec编码方式来发送。
本篇文章我们主要来介绍PAwR特性,这也是蓝牙5.4最重要的一个特性。
二、 PAwR的产生背景
蓝牙核心规范中定义了几个组成蓝牙架构的概念。这些概念有物理传输,物理通道,物理连接,逻辑连接,逻辑传输等。 蓝牙BLE支持一些无连接的通讯方式,由一个广播者和一个或多个观察者构成。 广播者发送的广播数据可以是固定的间隔也可以是不固定的间隔。
2.1 扫描介绍
BLE有两种扫描方式:主动扫描和被动扫描。 被动扫描是接收方只到扫描广播数据包,不发送任何回复数据包。 而主动扫描,接收方接收到可扫描的广播包后,会回复一包Scan request PDU,来请求广播者发送更多的广播信息, 广播者收到后会继续广播scan response数据。
2.2 广播介绍
ble的广播模式根据支持的特性分为以下几种:
-
可连接的 vs 不可连接的
可连接的广播表示扫描方收到该广播后,可能会发起连接请求,这也是我们最常见的广播包。 而不可连接的广播最常见的就是蓝牙beacon包。
-
可扫描的 vs 不可扫描的
可扫描广播包表示扫描方设备扫描到该广播包后可以发送scan request,然后广播者会回复更多信息。
-
定向的 vs 不定向的
定向广播指的是该广播包只会被特定设备扫描到,其他的设备会忽略该广播包。 而不定向的广播包并不指定任何一个扫描设备,也就是可以被任何设备接收和处理。
-
不规则的 vs 固定间隔的周期广播
传统的ble广播使用的就是不规则的广播者式,虽然广播有固定的广播间隔参数,但是每次广播后,都会有一个10ms以内的延时,用来防止多个广播都在同样的间隔而引起的冲突。
而固定间隔的周期广播指的是蓝牙5.0之后,引入的一个周期广播概念,该广播使用的是固定时序的广播,并且也不仅仅使用传统BLE的三个广播信道,而是使用40个BLE信道来传输广播包。
2.2.1 传统BLE广播
传统BLE广播数据是在三个广播信道上进行轮流发送的。BLE广播有一个广播间隔的参数advInterval ,但是为了避免和其他相同广播间隔的广播设备冲突,广播中引入了一个advDelay的参数,该参数是一个0-10ms的随机值,每次广播完一次数据后,都会在广播间隔advInterval的基础上再延时advDelay, 如下图:
这样做确实可以避免的一些广播的冲突,但是每次广播后的随机延时,也导致观察者无法准确的知道下次广播的时间,所以观察者不得不一直扫描,导致功耗较大。 而且虽然传统BLE广播包里面可以包含一些应用数据,但是扫描端发送的scan request数据包,却不包含任何应用数据信息,也就是说广播者和扫描方的应用数据通讯是单向的。
2.2.2 扩展广播
扩展广播也分为两种模式,一种是不规则的,也就是广播的间隔不固定的。另一种是规则广播模式。
周期广播Periodic Advertising Broadcast (PADVB) 就是一种规则的扩展广播模式,使用了固定的广播时间调度表。
不规则的扩展广播和周期广播PADVB都使用了3个广播信道和37和通讯信道进行发送数据。
不规则的扩展广播
不规则的扩展广播和传统广播在某些方面是相似 的,因为不规则的扩展广播的某些类型是只在主广播信道上进行传输的。他们的不规则性也主要是由于每次广播后0 - 10ms的advDelay值导致的。不规则的扩展广播和传统广播差异在于特定的PDU类型的使用。一些PDU类型虽然在主广播信道上传输,但是PDU可能会被AuxPtr 指向次广播信道。长的数据包可以进行分包传输,然后连接起来,或者通过AuxPtr来链接。如下图所示:
周期广播 (PADVB)
周期广播periodic advertising (PADVB) 发送广播数据是通过一个固定的间隔和确定的时间表传输数据包,扫描设备可以发现广播者的传输时间表,然后同步自己的扫描时间, 这个操作可以通过查询AUX_ADV_IND PDU 中的SyncInfo field 字段的信息来完成, 也可以使用一个称为 Periodic Advertising Sync Transfer (PAST)的操作完成。
PAST 指的是设备通过建立GATT连接,将周期广播同步参数值传递给观察者。传递这些信息的可能是广播者自己,也可能是一个第三方的设备,第三方设备通过扫描广播者的AUX_ADV_IND PDUs 来获取广播同步参数值,然后同步给扫描方。这种方式可以避免扫描方的持续扫描,对于功耗要求比较高的扫描设备来说比较友好。
通过精确的同步广播者的广播时间表,扫描方可以使用最节省功耗的方式来扫描广播。
周期广播是使用BLE 40个信道进行发送的。首先 ADV_EXT_IND PDU 是再主广播信道上传输的,里面包含了AuxPtr 字段,该字段指向AUX_ADV_IND PDU , AUX_ADV_IND PDU 是再次广播信道上传输的,这个PDU里面包含了一个SyncInfo field 字段,通过该字段的信息,观察者可以将它的扫描和周期广播的AUX_SYNC_IND PDU 进行同步。 需要说明的是,观察者只需要接收上面SyncInfo field字段包含的需要同步的 ADV_EXT_IND PDU。 一旦观察者接收到该数据,后面就可以只再固定的时间段扫描 AUX_SYNC_IND PDU 了。
AUX_SYNC_IND PDU 是通过固定的间隔来发送的,由于观察者是不能回复PADVB 周期广播的,所以应用层的该数据通讯方向是单向的,也只支持单向的应用数据传输。
2.2.3 传统BLE广播和扩展广播的区别
下面是BLE传统广播和扩展广播的区别
介绍了这么多传统BLE广播和扩展广播(不规则广播和 PADVB),那它们跟本文要介绍的PAwR有什么区别和联系呢?
三、 PAwR 功能介绍
3.1 PAwR 与 PADVB的比较
相似点:
- PAwR 和 PADVB都是一种一对多的拓扑结构,一个广播者发送数据,一个或多个观察者接收数据。
- PAwR 和 PADVB都是一种无连接的通讯方式
- PAwR 和 PADVB都是通过周期广播来发送数据,广播包中间没有随机延时,所以广播时间表是确定的。
- 观察者都可以通过AUX_ADV_IND PDU 或者PAST方式来建议广播者的周期广播时间表。
不同点:
- PADVB 只能从广播者到观察者单向传递应用数据,而PAwR可以从观察者传递应用数据到广播者,PAwR是一种双向交互的无连接通讯机制。
- PADVB 的同步信息是包含在AUX_ADV_IND PDU 中的SyncInfo field 中,而PAwR 的同步信息是包含在AUX_ADV_IND PDU 的SyncInfo field 和 ACAD field两个字段中。
- PADVB 是在广播event中发送广播时间表的,而 PAwR是在一系列的event和subevent中来传输的。观察者可以通过这样的同步方式,只监听特定的子时间,已节省功耗。
- PAwR 可以在广播的过程中发送 AUX_CONNECT_REQ 到特定的设备来建立GATT连接, 而PADVB是没有这个能力的。
- PADVB 适用与应用数据是缓慢变化的应用场景, 而PAwR是用在应用数据频繁变化的场景。
- 在PADVB 中同一个的应用数据是发送给所有的观察者的。而PAwR 中,不同的数据可以发送给一个观察者或者多个观察者。
- PADVB可以支持PAST 也可以不支持, 但是对于PAwR,则必须支持PAST。
3.2 PAwR 的优势
-
**双向无连接:**PAwR 支持双向无连接的应用交互,这在之前的BLE中是做不到的。
-
**扩展性:**与BLE GATT连接方式相比,PAwR 创建了一个更具扩展性的、一对多的、双向传输的网络拓扑结构。在BLE GATT中,一个中央设备连接的从设备的数量是很有限的,而PAwR可以实现与数千个节点进行双向通讯。
-
低功耗: PAwR中一个广播者和一个观察者只占用一个subevent 事件, 所以观察者可以在广播者广播的时候,只需要只扫描很小一段时间。 subevent 子事件同步过程涉及到应用逻辑,所以接收到的数据包通常会包含与观察者相关的数据。这种低功耗的特性使观察者可以仅仅使用一节纽扣电池就可以让设备工作几年时间。
-
灵活的拓扑结构和并发接收: PAwR使用了一个灵活的拓扑结构,当一个广播者广播数据数据包时,数据包可以被一个观察者接收处理,也可以被某几个观察者处理,也可以被所有的观察者处理,这是由观察者应用层需要同步的数据逻辑决定的。
-
应用: PAwR 非常适合那些由一个中央设备和大规模的其他设备,根据应用场景的不同,通讯的数据可能是控制命令、传感数据、或者其他的消息。其中一个很重要的应用场景就是电子货架标签(ESL) , 还专门有一个ESL 的Profile, 规定了如何是用PAwR来进行数据的传输。 PAwR并不适合对实时性要求比较高的场景,PAwR是通过一个一个的时间槽,然后周期性的来发送应用数据包,观察者的数量是可以配置的,随着配置的观察者数量增多,广播数据需要的时间也会响应增加。因此,在向多个设备发送消息时,有时会出现明显的时间延时。根据配置的不同,延时时间从几毫秒到几十秒的时间不等。
跟PAwR 跟蓝牙Mesh相比,蓝牙Mesh也是使用特定的命令在网络内来发送和接收数据。不同的是,蓝牙Mesh提供的是一个实时响应的系统,发送的消息需要立即得到响应,这就导致设备需要一直不间断的进行扫描,这对功耗消耗是非常大的。而PAwR 只需要在特定的时间段进行扫描,大大降低了设备的功耗。
3.3 PAwR技术实现
理解 PAwR 如何划分和使用时间是理解这种逻辑传输的关键。
3.3.1 事件、 子事件、响应槽(Slot)概念介绍
与其他广播模式一样,PAwR广播活动发生在事件中,在 PAwR 模式下,这些事件被称为PAwR事件。这些事件以固定的时间间隔发生,在调度中没有随机延时的扰动,每个周期广播中产生一个事件。每个 PAwR 事件都包含几个子事件,并且在子事件期间传输广播数据包。主机配置每个事件的子事件数最多为 128。子事件在每个周期性广播子事件间隔开始的。Host使用HCI 命令 HCI_LE_Set_Periodic_Advertising_Parameters 来 配置每个事件的子事件数和定期广播子事件的间隔 。如下图所示:
在每个子事件中,Broadcaster 传输一个数据包,该数据包通常包含一个 AUX_SYNC_SUBEVENT_IND PDU 或者包含一个 AUX_CONNECT_REQ PDU。经过一段固定延时后,会在同一时间段内保留一系列时隙 用于接收来自观察者设备的响应的子事件。对 AUX_SYNC_SUBEVENT_IND PDU 的响应在 AUX_SYNC_SUBEVENT_RSP PDU 中发送。 Host 通过 HCI 命令 HCI_LE_Set_Periodic_Advertising_Parameters 来配置需要的回复间隙 数量。
3.3.2 通道选择
通道选择是使用频道选择算法#2 完成的,并且发生在每个周期性广播子事件中。对子事件中传输的 PDU 的响应使用相同的通道 这包括响应 AUX_SYNC_SUBEVENT_IND PDU 发送的 AUX_SYNC_SUBEVENT_RSP PDU 和响应AUX_CONNECT_REQ PDU 发送的 AUX_CONNECT_RSP PDU 。
3.3.3 同步
同步过程为观察者设备提供了有效扫描和接收广播设备传输的相关数据包所需的信息。就 PAwR 而言,这涉及三个方⾯:
- 观察者需要知道PAwR广播事件的发生频率 以及下一次事件何时发生。这些信息在定期广播间隔参数和syncPacketWindowOffset 的计算值中提供 。
- 观察者需要知道子事件的一些信息,包括子事件发生的频率和每个PAwR可容纳多少个子事件,以及与每个子事件内为响应传输时隙有关的某些细节。该信息包含在称为Subevent_Interval、Num_Subevents、 Response_Slot_Delay、 Response_Slot_Spacing和 Num_Response_Slots 的参数中 。
- 最后,观察者需要知道它应该扫描哪个子事件号,它应该使用哪个特定的响应时隙,以及在传输的响应数
据包中使用的访问地址。
在获得了(1)中描述的事件时序信息和(2)中的子事件信息后,Observer 对 PAwR 广播列车的事件和子事件的时序参数和结构有了完整的描述。但只有当它具有 (3) 中的信息时才可以进行扫描,以便它只接收那些预期包含相关数据的数据包,并可以传输响应数据包。
3.3.3.1 周期广播同步信息扫描
PAwR和PADVB都使用类似的过程通过扫描获取周期性广播同步信息 。
对于 PAwR 和 PADVB,观察者扫描在次广播通道上传输的 AUX_ADV_IND 数据包。这些 PDU 由在主要信道上传输的 ADV_EXT_IND PDU 中的 AuxPtr 字段中的信道索引、偏移和 PHY 信息指向。
AUX_ADV_IND 包括 SyncInfo 字段,该字段包含周期性广播间隔值和一些数据项,从中计算
syncPacketWindowOffset 变量。获得这两个值后,观察者可以计算何时会发生带有响应事件的周期性广播。
PAwR 还需要有关子事件和响应时隙的信息,然后才能完成同步过程。该信息可在同一AUX_ADV_IND PDU 中找到,从中获得周期性广播间隔,但在周期性广播响应定时信息的新 AD 类型中。新的 AD 类型在 AUX_ADV_IND PDU 的附加控制器广播信息 (ACAD) 字段中传输 。
3.3.3.2 周期广播同步传输(PAST)
使用 PAST 过程时,有时通过GATT连接传递同步参数的设备将首先通过其他设备进行扫描来获取它。而在 PAwR 的情况下,对PAST 的支持是强制性的,因此 PAwR 广播者可以通过 LE ACL 连接将所需的同步数据传递给观察者。如果采用这种方法,则两边设备都不需要扫描 AUX_ADV_IND PDU 。
上表显示的相同数据项在 LL_PERIODIC_SYNC_WR_IND 的新 PDU 类型中通过 BLE GATT连接来传递。
3.3.3.3 子事件同步和响应槽分配
子事件同步涉及向观察者设备指示它应该执行扫描的子事件。一个或多个观察者设备可以同步到同一个子事件。一个单独的观察者可以同步接收一个或多个子事件。 此外,对于能够发送响应 PDU 的观察者,它必须有一些基础来确定使用哪个子事件响应槽。 当然,这些事情都是由应用层来决定的。
如上图所示,PAwR 的主要优势包括应用程序数据通信是双向的,在拓扑选择和可用的接收器并发方⾯提供了很大的灵活性,每个广播者可以与之通信的设备数量可以达到数千个。
四、 电子货架标签和 PAwR
4.1 ESL Profile介绍
电子货架标签 (ESL) 配置文件定义了蓝牙 LE 在电子货架标签的控制和通信方⾯的标准化使用。
ESL Profile 同时使用 PAwR 和GATT来满足其完整的功能要求。例如图像通过BLE GATT 连接写入设备。但是大多数命令和响应都是使用 PAwR PDU 传输的 ESL 消息。
ESL 使用由 8 位 ESL ID 和 7 位组 ID 组成的设备寻址方案。 ESL ID 在由组 ID 标识的设备组中是唯一的。因此,ESL 设备网络最多可包含 128 个组,每个组最多包含 255 个属于该组成员的独特 ESL 设备。一个网络中总共可能有 32,640 个 ESL 设备。
ESL 配置文件处理子事件同步和响应槽分配如下:
-
PAwR 广播器,在ESL 配置文件规范中称为接入点(AP),通过在LE GATT连接上写入各种GATT 特性来配置电子货架标签设备。写入的数据包括由 ESL ID 和 Group ID 组成的 ESL 地址的分配。 Group是一个 ESL profile 概念,但它的值也用来表示 ESL 设备应该扫描的子事件的编号。
-
响应槽分配动态。 ESL 设备接收一个或多个阵列来自 PAwR AUX_SYNC_SUBEVENT_IND PDU 中 AP 的命令。请求数据包中的所有命令都指向相同的 ESL Group_ID。但是每个都使用其 ESL_ID5 寻址到组中的特定 ESL。命令在数组中的索引,从第一个命令的 1 开始计算,决定了要使用的响应槽。
4.2 ESL 和 1:1 设备通信
下图显示了当 AP 发出针对单个电子货架标签的命令时发生的 PDU 传输。该图说明了 PAwR 如何充当配置文件定义的 ESL 命令和响应的传输。
ESL 命令所针对的货架标签是 ESL 组 1 的成员。这意味着它与 PAwR 子事件 #1 同步。因此,AP 制定了 ESL 有效载荷,它可以包括一个或多个命令的数组,每个命令都寻址到同一组内的特定 ESL ID,并在 PAwR 子事件 #1 期间将其作为 PAwR AUX_SYNC_SUBEVENT_IND PDU 的有效载荷传输。
发送的数据包同时被组 1 成员的所有货架标签接收,因为它们都已同步并在子事件 #1 期间侦听。此 PDU 中的单个命令是针对 ESL ID #n 的,因此所有接收到该消息的货架标签都会丢弃它,但地址为 ESL ID #n 和组 ID #1 的设备除外。该设备根据 ESL 配置文件规范处理命令,然后在响应时隙 #0 期间在 AUX_SYNC_SUBEVENT_RSP PDU 中制定并传输响应。使用 #0 响应槽是因为响应的命令是请求中命令数组的第一个也是唯一一个成员 。
4.3 ESL 和 1:m 设备通信
下图 显示了当 AP 向多个货架标签发出命令时发生的 PDU 传输,每个货架标签都是 ESL 组 #1 的成员。接下来是发送寻址到属于ESL 组 #2 的单个设备的单个命令。
第一个 ESL 请求包含三个命令。该请求针对属于 ESL 组 #0 的三个货架标签,因此它被格式化并设置为
AUX_SYNC_SUBEVENT_IND PDU 的有效载荷,并在 PAwR 子事件 #0 中传输。
所有属于组 #0 成员的 ESL 货架标签同时接收 PDU,因为它们都在 PAwR 子事件 #0 上同步。 ESL 命令数组包含针对组中 ID #0、#1 和 #n 的货架标签的命令。这三个设备处理各自的命令。 ID #0 的设备在响应槽 0 中使用AUX_SYNC_SUBEVENT_RSP PDU 进行响应。ID #1 的设备在响应槽 1 中使用 AUX_SYNC_SUBEVENT_RSP PDU 进行响
应。
最后,具有 ID #n 的设备在响应槽 #2 中使用 AUX_SYNC_SUBEVENT_RSP PDU 进行响应,因为响应的命令是 ESL 命令数组中的第三个。其他具有不同 ID 的设备将忽略该请求。
在 PAwR 子事件 #1 中,传输的 AUX_SYNC_SUBEVENT_IND PDU 包含寻址到具有 ESL_ID=n 的单个 ESL的命令。作为 ESL 组#1 成员的所有 ESL 在 PAwR 子事件#1 上同步,因此接收此 PDU。 ESL_ID=n 的 ESL 处理有效载荷中的唯一命令并在 PAwR 响应槽 #0 中响应。
AP 没有命令发送到其他组中的其他 ESL,因此在剩余的子事件中,传输具有空负载的 AUX_SYNC_SUBEVENT_IND PDU 。
五 总结
通过蓝牙5.4的 PAwR功能,可以实现设备之间的无连接双向通讯, PAwR功能应用在电子货架标签领域,不仅可以实现电子货架标签和蓝牙网关的双向通讯,并且可以极大降低标签的功耗。文章来源:https://www.toymoban.com/news/detail-475770.html
但是仅仅有PAwR功能还是不够的,如何保证电子货架标签和蓝牙网关的通讯链路安全性? 如何动态的调节双方的RF射频 Codec方式,这就需要用到蓝牙5.4的其他几个特性。下篇文章将会继续介绍蓝牙5.4剩下的特性,希望大家收藏、关注。文章来源地址https://www.toymoban.com/news/detail-475770.html
到了这里,关于【蓝牙系列】蓝牙5.4到底更新了什么?(1)--- PAwR的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!