admin管理员组

文章数量:1566355

2024年5月1日发(作者:)

34

卷第

3

浙江万里学院学报

Vol.34

No.3

May

2021

2021

5

Journal

of

Zhejiang

/

1

University

基于

NoRTOS

框架的蓝牙信标设计与开发

刘政雳

戴玲

刘高平

(

浙江万里学院

浙江宁波

315100

)

蓝牙信标作为识别系统的重要组成部分,

目前在众多领域被广泛应用

,降低信标运行功耗有利于提高整

个识别系统效益

$

文章通过硬件底层驱动中无线电操作命令

设计了一种基于

NoRTOS

框架的蓝牙信标

,

并与传

统带有蓝牙协议栈的信标进行对比

测试与对比结果表明

设计的信标通信有效可靠

功耗比传统方式更低

$

蓝牙信标

;

无线电操作命令

NoRTOS

#

蓝牙协议栈

功耗

中图分类号

:

TP3

文献标识码

:

A

文章编号

1671-2250

(

2021

)

03-0088-07

随着智能手机的普及

蓝牙通信的优势逐渐显现出来

$

蓝牙信标是基于低功耗蓝牙技术的通讯设备

广泛应用于室内定位

仓库存储

运输管理等领域典型的蓝牙信标都带有蓝牙协议栈

依靠外围独立

电源供电

一旦供电不足

信标将无法正常工作

导致信息识别系统中出现数据错误

因此进一步降低蓝

牙信标运行功耗具有重要的研究意义

$

文章首先阐述目前带有协议栈的蓝牙信标设计方案

然后提出一种基于

NoRTOS

框架通过无线电底

层驱动实现蓝牙信标的方案

最后对两种方案分别测试

并对比分析

1

协议栈实现蓝牙信标方法

1.1

低功耗蓝牙协议栈

低功耗蓝牙协议栈是蓝牙技术联盟

(

Bluetooth

Special

Interest

Group,

SIG

"

在经典蓝牙协议基础上

为实现低功耗

低成本提出的通信标准叫不同芯片制造商在该协议下提供可实现低功耗蓝牙通信的软件

开发包

(

Software

Development

Kit,

SDK

)

文章选用德州仪器

(

Texas

Instrument,

TI

)

simplelink_cc2640r2

_sdk_3_20_00_21

版本的

SDK

1.2

协议栈实现蓝牙信标

TI

的蓝牙协议栈由实时操作系统

(

Real

Time

Operation

System,

RTOS

)

应用镜像和堆栈镜像组成

其中

RTOS

是实时

抢占式多线程操作系统

,

可同步运行多个任务

应用程序和堆栈之间使用间接调用

(

ICall

)

的消息框架来实现两个模块的线程同步

基于蓝牙协议栈设计信标

首先应对

SDK

SimpleBLEBroadcaster

工程进行分析

然后遵循特定帧格式修改信标广播参数以实现数据包能被手机端

有效接收

SimpleBLEBroadcaster

工程中

信标广播操作在任务函数

SimpleBroadcaster_taskFxn

0

中执行

该函

数在

main.c

中由

SimpleBLEBroadcaster_createTask

0

创建

通过

BIOS_start()

启动

SYS/BIOS

内核调度程序

后运行

任务函数运行后

首先调用

SimpleBroadcaster_init()

进行应用程序初始化

然后程序进入不断处理

收稿日期

2020-12-27

基金项目

浙江省基础公益研究计划项目

(

LGF19F010002

)

宁波市公益类科技计划项目

(

202002N3136

)

工业控制技术国家

重点实验室

(

浙江大学

)

开放课题资助

(

ICT2021B29

)

作者简介

:

刘政雳

(1997-)

江苏靖江人

浙江万里学院

2019

级物流工程研究生

研究方向

物流信息技术应用

指导老师

:

刘高平

(1964-)

江西南昌人

浙江万里学院智能与信息工程学院教授

博士

,研究方向:物联网技术

-

88

-

刘政雳

刘高平

基于

NoRTOS

框架的蓝牙信标设计与开发

3

事件的死循环中

在循环中调用

用于等待各任务的信号

,

通过判断接收信号是协议栈任务还

是应用程序任务

调用对应协议栈处理函数

SimpleBroadcaster_processStackMsg

()

和应用程序处理函数

SimpleBroadcaster_processAppMsgO

如果

ICall_wait(

)

超时没有接收到信号

则处理内部自定义事件

协议

栈中任务处理函数整体框图如图

1

所示

1

SimpleBLEBroadcaster

工程中任务处理整体框图

信标广播类型

广播数据及广播间隔可通过调用

GAPRole_SetParameter(uintl6_t

param,

uint8_t

len,

void

*pValue

+

设置

调用

HCI_EXT_SetTxPowerCmd()

可实现对信标发射功率的修改

,

最终实现遵循特定帧

格式的蓝牙信标

限于文章主题

带有协议栈的蓝牙信标设计方案作简略阐述

读者可查阅文献⑹

该方

法实现的信标测试结果将在第

3

节给出

,

以作为文章基于

NoRTOS

框架的蓝牙信标比较对象

2

底层驱动实现蓝牙信标方法

2.1

NoRTOS

框架

NoRTOS

框架提供底层驱动用于执行寄存器中断等接口

允许开发者在无操作系统的情况下使用底

层驱动程序进行开发兀

相对于

RTOS

,

系统在

NoRTOS

框架下不需要考虑任务阻塞

任务异步

任务闲置

问题

o

当通过驱动程序暂停应用程序运行时

应用程序会立即进入空闲状态

o

该框架整体上能提高微处理

器的工作效率

然而要求开发者熟悉通信协议

2.2

无线电操作命令

无线电操作命令是对系统直接管理的命令

通过命令寄存器

(

Command

Register,

CMDR

)

发出命令后

无线电处理器将检查并运行

开始

:

*

命令

TI

在底层驱动中规定了两种无线电操作命令

:

专用模式命令和低

功耗蓝牙模式命令

文章设计的信标使用低功耗蓝牙模式命令中的

RF_cmdBleAdvScan

命令

该命令设置信标为可被扫描

不可连接非定

|无线电操作命令指针指向数组

I

获得无线广播权限

I

设置广播频率

向广播模式

其中包含指向命令特定参数结构的指针

*pParams

该指针

指向

RF_s

结构体中各项广播参数

2.3

底层驱动实现蓝牙信标

蓝牙设备之间实现互联通信不仅需要遵循一致的广播协议

同时

I

发送一个广播包

I

I

关闭无线广播

*

也需要驱动硬件的各种程序

处理器通过调用底层驱动接口函数实现

对设备的特定操作

TI

将底层无线电

(

RF

)

驱动接口函数库集合在

SDK

*

I

睡眠

2

蓝牙信标软件流程图

目录下

drivers

文章设计的蓝牙信标软件流程图如图

2

所示

-

89

-

2021

5

浙江万里学院学报

⑴初始化

在程序运行开始阶段

按照对应的广播规范依次创建信标的广播内容数组

广播

MAC

地址数组

描应答数组

广播间隔时间

无线电操作命令的句柄参数及无线电驱动配置参数

⑵无线电操作命令指针指向数组

初始化完成后

将无线电操作命令

RF_cmdBleAdvScan

中的指针

:

pParams

指向各数组

系统读取数

组中信标广播参数

$

关键代码如下

RF_s->advLen

=

PAYLOAD_LENGTH;

//

指向广播内容长度

RF_s->scanRspLen

=

SCANRSP_LENGTH;

//

指向扫描数组长度

RF_s->pScanRspData

=

scanRspBeaconData;

〃指向扫描应答数组

RF_s->pAdvData

=

packet;

//

指向广播内容数组

RF_s->pDeviceAddress

=

deviceAddress;

//

指向广播

MAC

地址数组

⑶获得无线广播权限

通过创建

rfHandle

句柄获得无线电操作权限

即创建底层

RF

驱动实例

$

关键代码如下

rfHandle

=

RF_open(TrfObject,

&

RF_ble,

(RF_RadioSetup*)&RF_cmdBle5RadioSetup,

rfParams);

//

取无线广播权限

其中

(RF_RadioSetup*)&RF_cmdBle5RadioSetup

表示指针指向结构体

RF_cmdBle5RadioSetup

的内

$

RF_cmdBle5RadioSetup

中设置信标传输速率为

1Mbps

为确保实验结果的有效性

,

设置两种信标

发射功率都为

+5dBm

$

关键代码示例如下

:

rfc_CMD_BLE5_RADIO_SETUP_t

RF_cmdBle5RadioSetup

=

{

.

=

0x0,

〃设置蓝牙传输速率

1Mbps

.txPower

=

0x9330,

〃设置发射功率+5dBm

};

(4)

设置无线电发射频率

低功耗蓝牙工作在

2.4GHz~2.4835GHz

频段

该频段分为

40

个频道

其中

37

38

39

频道

(

2476MHz

2478MHz

"

2480MHz

)

对应蓝牙广播频道

用于设备之间识别连接

[8]

$

通过对结构体

RF_cmdFs

.

frequency

赋值设置信标广播频道为

37

频道

(

2476MHz

)$

调用RF_postCmd()函数

,

将频道值传递到底层

RF

驱动的

命令队列等待无线电处理器执行

同时返回传递是否成功信息

$

关键代码如下

rfc_CMD_FS_t

RF_cmdFs

=

.frequency

=

0x0962,

//37

频道

};

RF_postCmd(rfHandle,

(RF_Op*)&RF_cmdFs,

RF_PriorityNormal,

NULL,

0);

(5)

发送蓝牙广播包

调用

RF_runCmd

()

函数

将初始化过程中设置的数组内容添加到

RF

驱动的命令队列中

同时返回命

令执行结果

$

关键代码如下

RF_EventMask

terminationReason

=

RF_runCmd

(rfHandle,

(RF_Op*)&RF_cmdBleAdvScan,

RF_PriorityNormal,

NULL,

0);

其中句柄

rfHandle

在步骤

(3)

中创建

RF

内核在完成对

RF_runCmd

()

调用后启动

目的是通过节省系

统资源降低信标运行功耗

$

-

90

-

刘政雳

刘高平

基于

NoRTOS

框架的蓝牙信标设计与开发

3

(6)

关闭无线广播

调用

RF_yield()

函数

,

结束对无线电的控制

关闭无线电处理器从而减少信标在睡眠中的功耗

⑺睡眠

调用

usleepO

函数

使信标进入睡眠状态以实现间段广播

睡眠时间已在初始化中设置完成

信标结

束睡眠后将转至步骤

(5)

继续发送广播包

实现循环广播

3

测试结果及分析

3.1

蓝牙信标硬件

文章实验使用的蓝牙信标是以

CC2640R2F

芯片为核心

由电源供电电路

巴伦滤波电路

晶振电路以及

外围接口电路组成

可以根据实际开发过程中不同需求添加各类传感器

信标的结构框图如图

3

所示

3.2

两种实现方法采用广播数据帧格式

蓝牙信标广播类型是非定向不可连接广播类

型%文章信标广播数据帧格式如表

1

所示

表中第

一行表示广播字节数范围

第二行表示字节数范围

对应内容

o

为确保两种方法实现的信标广播内容一

将广播数据帧中第

5

7

字节的制造商标识设

置成苹果公司标识

10

25

字节的

UUID

设置

3

蓝牙信标结构框图

$

111111

11-1133-4444-5555-666677778888

,

26

27

字节的

Major

设置成

4369

28-29

字节的

Minor

设置成

8738

1

信标广播数据帧

字节

1-4

5-7

制造商标识

8-9

信标类型

10-25

26-27

Major

28-29

Minor

内容

标志位

UUID

3.3

软件运行测试结果

文章实验测试工具是

CC2540

USB

Dongle

蓝牙抓包设备和支持蓝牙

4.0

以上版本的安卓智能手机

使用

CC2540

USB

Dongle

抓取带有协议栈的蓝牙信标广播包和底层驱动实现的蓝牙信标广播包

,通过

TI

SmartRF

Packet

Sniffer

解析广播包

分别如图

4

5

所示

图中主要分析广播包类型

(

Adv

PDU

Type

)

广播

MAC

地址

&

AdvA

)

及广播内容

(

AdvData

'

三个部分

易知两种方法实现的信标广播包类型都

ADV_DISCOVER_IND

表示该信标类型是非定向不可连接

可被发现信标

广播

MAC

地址是蓝牙设

备在传输数据过程中标记广播者的特有属性

由图

5

可知底层驱动实现的蓝牙信标广播

MAC

地址是

B0

91

22

69

F5

F9

广播内容中第

5

7

字节是

0xFF

0x4C

0x0

0

,

表示苹果公司的制造商标识

UUID

Major

字段和

Minor

字段都和上文

3.2

节中设置的内容一致

抓包结果表明文章设计的蓝牙信标与带有协议栈的蓝牙信标广播数据相同

即能够有效的广播信息

Channel

Access

Address

Adv

PDU

Type

AdvData

Adv

PDU

Header

AdvA

Type

TxAdd

RxAdd

PDU-Length

02

DI

06

1A

FT

4C

0Q

02

11

11

jl

M.

11

3$

6

0

0

36

0xB0912269F5fS

44

44

55

55 66

66

77

U

SE

1

1A

22

22

05

4

协议栈实现的蓝牙信标广播包

AdvData

ime

(us|

Channel

Access

Address

Adv

PDU

Type

Adv

PDU

Header

.

T

+29800

AdvA

Type

TxMd

RxAdd

PDU-Length

02

01 06

1A

EE

4C

00 02

15

11

11

11

11

11

33

=242917

0x25

0x8E39BEEe

ADV

DISCOVER

IND

6

0

0

36

0xB09122€9F5F9

44

44

55

55

6€

6€

77

77

88

83

11

11

22

22

05

5

底层驱动实现的蓝牙信标广播包

为验证所设计的蓝牙信标能够被终端准确扫描接收

在手机端运行蓝牙调试

APP

$

nrf

Connect%

10

依次扫描两种方法实现的信标

结果如图

6

7

所示

°

7

中底层驱动实现的蓝牙信标

UUID

字段

Major

字段

Minor

字段和带有协议栈的蓝牙信标广播内容一致

°

图中

T

y

Power

Level

表示信标发射功

91

2021

5

浙江万里学院学报

,

易知两种信标发射功率都为

+5dBm

满足对比实验一致性要求

综上所述

该实验测试表明文章设计

的蓝牙信标达到设计要求

WiF

B0

91

22

69:F5:F9

NOT

BONDED

A

-50

dBm

w

501

ms

Beacon

(iBeacon)

■J

B0

91

22

69:F5;F9

NOT

BONDED

J

-51

dBm

0

503

ms

Beacon

(iBeacon)

Device

type:

LE

only

Advertising

type:

Legacy

Flags:

GeneralDiscovera

ble,

BrEdrNotSupported

Beac

on:

Company:

Apple,

Inc.

<0x004C>

Type:

Beacon

<0x02>

Length

of

data:

21

bytes

UUID:

11111111-1133-4444-5555-666677778888

Major:

4369

Minor:

8738

RSSI

at

1m:

5

dBm

Complete

Local

Name:

Beacon

Tx

Power

LeveL:

5

dBm

CLONE

RAW

MORE

Device

type:

LE

only

Advertising

type:

Legacy

Flags

GeneralDiscoverable,

BrEdrNotSupported

Beacon:

Company:

Apple.

Inc.

Type:

Beacon

<0x02>

Length

of

data:

21

bytes

UUID:

11111111-1133-4444-5555-666677778888

Major:

4369

Minor:

8738

RSSI

at

Im:

5

dBm

Complete

Local

Name:

Beacon

Tx

Power

Level:

5

dBm

CLONE

RAW

MORE

7

被扫描到底层驱动实现的蓝牙信标

6

被扫描到带有协议栈的蓝牙信标

3.4

两种实现方法工程文件比较

文章实验开发软件是

TI

CCS

(

Code

Composer

Studio

)

CCS

在编译过程中生成

.out

可执行文件

该文

件可通过

TI

UniFlash

直接烧录程序到设备

因此比较

.out

C&

rfDrivers_nortos_

R

simple

broadcaster

件能间接反映工程文件占存储空间大小

724

KB

2,593

KB

依次编译两种方法实现信标的工程

生成

.

out

文件如图

8

所示

其中

simple_broadcaster_

是由带有协议栈的工程

8

两种方法生成的

.

out

文件

生成

文件大小为

2593KB

,

rfDriver_nortos_

是由底层驱动实现的工程生成

文件大小为

724KB

由于

CC2640R2F

芯片自身存储空间较小

因此在实现相同功能情况下

文章设计的信标工程能有效

的减少代码冗余性

节省芯片内存空间

3.5

两种实现方法功耗比较

信标的电池使用寿命主要是由广播和待机两种模式下的平均电流决定

由于信标在待机模式下处于

睡眠状态

此时消耗的电流远小于广播模式下消耗的电流

因此信标在待机模式下电流直接选用

TI

官方

手册数据问

故课题组只需要测量信标在广播模式下的电流

测量方案是采用

3.3V

直流电压作为电源

电阻串联到信标电源输入端

示波器并联到电阻两端

观察并记录示波器输出波形

先后测量两种信标的

电流

示波器输出波形如图

9

10

所示

10

中底层驱动实现的信标广播峰值间隔与上文

3.3

节中

APP

测量结果一致

均为

500ms

o

9

带有协议栈的蓝牙信标输出波形图

10

底层驱动实现的蓝牙信标输出波形图

将信标在广播状态下测得的波形放大

如图

11

图12

所示

11

是带有协议栈的蓝牙信标输出波

图中峰值依次对应信标在

37

&

38

&

39

频道上三次广播

图12

是底层驱动实现的蓝牙信标输出波形

中峰值对应信标在

37

频道上广播

虽然重复广播能够保证通信质量

然而却会增加信标的电流消耗

相对稳定的环境下

,

信标工作时长会明显减少

-

92

-

刘政雳

刘高平

基于

NoRTOS

框架的蓝牙信标设计与开发

3

505/

2

ilk

1*

-300.0^

5.000S/

停止

f

11

带有协议栈的蓝牙信标输出波形放大图

根据测得波形

可计算出信标广播时长与广播电流消耗

将输出波形二次放大

,

通过削峰填谷估算出

两种信标的平均电压

如图

13

14

所示

13

带有协议栈的信标广播波形二次放大图

由图

13

14

分析可知

带有协议栈的信标广播时间为

5.2ms

平均电压为

79m

V

底层驱动实现的

信标广播时间为

3.5ms

,

平均电压为

58mV

o

根据欧姆定律

分别计算在广播状态下带有协议栈的信标的

平均电流

"#

1

和底层驱动实现的信标的平均电流厶

2

i

=79mV

/

10

Q

=7.9mA

Z

6

#

2

=58mV

/

10

Q

=5.8mA

不同工作模式下信标消耗的平均电流厶可通过以下公式得出

0111

(

T

c

+

T

br

)

I

st

/

T

)

其中

&

"#

表示信标在广播状态下消耗的电流

T

)

表示广播周期

I

*"

表示信标在待机状态下消耗的电流

CC2640R2F

芯片在待机状态下处于睡眠模式

,

参照文献⑺得知信标在该模式下电流消耗

I

s4

=1.1

x

10

-

3

mA

o

综上所述

得出带有协议栈的信标消耗的平均电流几

1

和底层驱动实现的信标消耗的平均电流几

2

I

a

%

1

=[7.9mA

x

5.2ms+1.1

x

10

-3

mA

x

(500ms-5.2ms)]/500ms=0.0832mA

I

a

%

2

=[5.8mA

x

3.5ms+1.1

x

10

-3

mA

x

(500ms-3.5ms)]/500ms=0.0416mA

信标在使用过程中一般采用纽扣电池供电

选用电池容量为

300mAh

3V

纽扣电池

CR2432

作为

电源

分别计算出带有协议栈的信标理论工作时长

T

1

和底层驱动实现的信标理论工作时长

T

2

T

1

=(3.0V

x

300mAh)/(3.3V

x

0.0832mA

x

24h)

«

136d

T

2

=(3.0V

x

300mAh)/(3.3V

x

0.0416mA

x

24h)

273d

结果表明

在相同电源供电的情况下

底层驱动实现的信标工作时间更久

,

拥有更低的运行功耗

有一定的应用价值

-

93

-

2021

5

浙江万里学院学报

4

结语

文章通过对蓝牙协议栈和底层驱动分析

设计并实现了一种基于

NoRTOS

框架的蓝牙信标

通过无

线电操作命令对信标广播参数进行设置

,

并最终实现信标循环广播

测试与对比结果表明文章设计的蓝

牙信标能有效减少工程的代码量

且能和智能手机稳定通信

在同等供电情况下

比带有协议栈的蓝牙信

标具有更长的运行寿命

参考文献

[1]

Gomez

C,Oller

J,Para8ells

J.

Overview

and

Evaluation

of

Bluetooth

Low

Energy:

An

Emerging

Low

-Power

Wireless

Technology[J].

Sensors,2012,12(9):11734-53.

[2]

陈锐志

陈亮

.

基于智能手机的室内定位技术的发展现状和挑战

[J].

测绘学报

,2017,46(10):1316-1326.

[3]

张广宇

.

一种基于

iBeacon

的物流仓储智能定位系统

[J]

.

计算机应用与软件

,2019,36(1):185-190.

[4]

张倬胜

艾浩军

,

马方方

.

基于

iBeacon

定位技术的智慧图书馆

[J].

电子产品世界

,2015,22(01):31-35.

[5]

程琳琳

.

蓝牙技术联盟发布

mesh

标准

将提供多点互联的工业级解决方案

[J].

通信世界

,2017,

000(021):49-49.

[

6

]

Texas

Instruments.

CC13x0,CC26x0

SimpleLink?

Wireless

MCU

Technical

Reference

Manual

[EB/OL].

[2020-6].

/lit/ug/swcu1

17i/swcu1

.

[7]

Texas

Instruments.

TI

Drivers

Runtime

APIs[EB/0L].[2020-10].

/tirex/explore/node

[8]

钟志豪

.

基于能量收集和

BLE

的低功耗有源标签设计

[D].

成都

:

电子科技大学

,2016.

[9]

Texas

Instruments.

Blutooth?

low

energy

Beacons[EB/OL].[2019-10].

/lit/an/swra475a/

[

10]

Nordic

Semiconductor.

nRF

Connect

Bluetooth

Low

Energy

v2.3.1[EB/OL].[2019-09].

infocenter

.

/

pdf/nRFConnect_BLE_User_Guide_.

[11]

铁欢欢

张王明,

吴耀辉

.

基于

CC2640

的低功耗有源电子标签设计

[J].

浙江万里学院学报

,2018,31(

2):81-86.

Design

and

Development

of

Bluetooth

Beacon

Based

on

NoRTOS

Framework

LIU

Zheng-li,

DAI

Ling,

LIU

Gao-ping

(

Zhejiang

Wanli

University,

Ningbo

Zhejiang

315100

$

Abstract

As

an

important

part

of

the

identification

system,

Bluetooth

beacons

are

currently

widely

used

in

many

fields.

Reducing

the

operating

power

consumption

of

the

beacon

is

propitious

to

improve

the

efficiency

of

the

entire

identification

system.

This

paper

designs

a

Bluetooth

beacon

based

on

the

NoRTOS

framework

through

the

radio

operation

commands

in

the

underlying

hardware

driver,

and

compares

it

with

the

beacon

with

bluetooth

protocol

stack.

The

test

and

comparison

results

show

that

the

designed

beacon

communication

is

effective

and

reliable,

and

the

power

consumption

is

the

lower

than

that

of

traditional

methods.

Key

Words

bluetooth

beacon;

radio

operation

command;

NoRTOS;

bluetooth

protocol

stack;

power

consumption

(

责任编辑

:

刘阳雄

)

94

本文标签: 信标蓝牙广播实现协议