一种实现蓝牙信标beacon和app uart双服务的方法

文档序号:118339 发布日期:2021-10-19 浏览:23次 >En<

阅读说明:本技术 一种实现蓝牙信标beacon和app uart双服务的方法 (Method for realizing Bluetooth beacon and app uart dual services ) 是由 余旭 王军 吴春 陈军慧 赵飞 马超 于 2021-06-10 设计创作,主要内容包括:本发明公开了一种实现蓝牙信标beacon和app uart双服务的方法,包括:初始化融合beacon和app uart的融合广播并开启融合广播;若达到蓝牙信标电量更新周期则获取最新的蓝牙信标电量并更新到融合广播;否则若蓝牙信标与主机设备断开连接则读取主机设备下发的指令,若指令为设置功率命令,则关闭融合广播,根据设置功率命令更改发射功率,初始化融合广播并再次开启;若指令为设置广播间隔命令,则关闭融合广播,根据设置广播间隔命令更改广播间隔,初始化融合广播并再次开启。本发明所发出的融合广播可作为定位信标使用,且无需周期性切换广播类型即可实现广播参数的修改。(The invention discloses a method for realizing dual services of a Bluetooth beacon and an app uart, which comprises the following steps: initializing a fusion broadcast of the fusion beacon and the app uart and starting the fusion broadcast; if the Bluetooth beacon electric quantity updating period is reached, acquiring the latest Bluetooth beacon electric quantity and updating the latest Bluetooth beacon electric quantity to a fusion broadcast; otherwise, if the Bluetooth beacon is disconnected with the host equipment, reading an instruction issued by the host equipment, if the instruction is a power setting command, closing the fusion broadcast, changing the transmitting power according to the power setting command, initializing the fusion broadcast and starting again; if the instruction is a broadcast interval setting command, closing the fusion broadcast, changing the broadcast interval according to the broadcast interval setting command, initializing the fusion broadcast and starting again. The fusion broadcast sent by the invention can be used as a positioning beacon, and the modification of the broadcast parameters can be realized without periodically switching the broadcast type.)

一种实现蓝牙信标beacon和app uart双服务的方法

技术领域

本申请属于蓝牙技术领域,具体涉及一种实现蓝牙信标beacon和app uart双服务的方法。

背景技术

在室内蓝牙定位系统中,蓝牙信标在定位系统中作为位置信息提供的主要来源,需大量部署在定位环境中。而定位环境中存在信标部署位置的电磁环境不一致性现象,如信标附近的大面积的玻璃、金属等特殊物质会对电磁信号产生干扰,因此需根据定位算法对蓝牙信标的信号强度一致性的需求来更改特殊位置处信标的发射功率。同时,在满足定位需求的前提下,需尽可能延长信标设备的工作年限,因此会调整信标广播的间隔。还存在指定信标设备名的需求,对于这些需求,可通过手机连接信标设备并修改其工作参数。

目前,为了实现蓝牙beacon广播的可配置有以下两种方式。其一,通过设备上的NB-IoT模块获取服务器的配置信息后转发到蓝牙MCU以实现BLE广播信息修改的方法;其二,采用beacon广播和服务广播周期性切换的方式来实现,当设备周期性切换到服务广播时和手机建立连接,以达到工作参数修改目的。。

普通的可连接服务广播主要用于被主机扫描发现,其广播内容相对较少,当主机扫描到服务广播后可发起连接请求,待广播方收到请求后便可快速建立连接,成功后二者即可数据交换,此时可通过主机修改信标设备的工作参数,但这种服务广播数据帧结构信息内容有限,其广播帧数据结构中的各字段为自定义,非标准的beacon广播结构。因此,不适合在蓝牙定位系统中作为通用蓝牙信标技术的实现。

蓝牙标准beacon广播,只使用了广播通信信道,没有BLE后续的连接步骤。在beacon的系统框架下,消息推送十分便捷,不同公司蓝牙芯片的广播帧格式基本一致,对不同的公司的主机扫描具备兼容适配。但这种广播一般为非连接类型,无法修改其工作参数。

前面两种修改蓝牙beacon广播的方式,存在两个缺点。其一,修改信标设备参数不及时,方法一中服务器下发数据到蓝牙设备,由于低功耗设备在接收数据会有时延性,而且还需借助其他通信模组配合使用。方法二中周期性广播切换不能及时与设备建立连接,连接成功的速度慢;其二,信标设备在正常beacon广播定位数据过程中会周期性的切换到appuart服务广播模式,导致正常beacon广播的时间被占用,beacon广播周期被打断、不连续,因此主机不能及时扫描到附近范围内的信标设备。

发明内容

本申请的目的在于提供一种实现蓝牙信标beacon和app uart双服务的方法,所发出的融合广播可作为定位信标使用,且无需周期性切换广播类型即可实现广播参数的修改。

为实现上述目的,本申请所采取的技术方案为:

一种实现蓝牙信标beacon和app uart双服务的方法,所述实现蓝牙信标beacon和app uart双服务的方法,包括:

步骤1:初始化融合beacon和app uart的融合广播并开启融合广播,其中初始化融合beacon和app uart的融合广播,包括:

步骤11、设置广播数据结构体ble_advdata_t中的广播标志字段、名称类型分别为不支持BR/EDR、无名称;

步骤12、对广播数据结构体ble_advdata_t中的制造商特定数据结构体ble_advdata_manuf_data_t进行初始化,使融合广播具备beacon广播固有的广播帧字段;同时,对广播参数结构体ble_gap_adv_params_t进行初始化,设置广播类型为无方向可连接类型;

步骤13、设置app uart服务广播的相关参数;

步骤14、通过扫描回应的方式设置广播时的设备名称;

步骤2:判断是否达到蓝牙信标电量更新周期,若是则执行步骤3,否则跳转步骤4;

步骤3:获取最新的蓝牙信标电量并更新到融合广播的广播数据内容中;

步骤4:判断当前蓝牙信标是否与主机设备断开连接,若是则执行步骤5,否则跳转到步骤2;

步骤5:读取主机设备下发的指令,判断指令是否为设置功率命令,若是则执行步骤6,否则跳转到步骤7;

步骤6:关闭蓝牙信标当前的融合广播,根据所述设置功率命令更改发射功率完成广播参数更新,初始化融合广播并再次开启融合广播;

步骤7:判断指令是否为设置广播间隔命令,若是则执行步骤8,否则跳转到步骤2;

步骤8:关闭蓝牙信标当前的融合广播,根据所述设置广播间隔命令更改广播间隔完成广播参数更新,初始化融合广播并再次开启融合广播,执行完成后返回到步骤2。

以下还提供了若干可选方式,但并不作为对上述总体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。

作为优选,所述蓝牙信标与主机设备建立连接的步骤如下:

步骤1:接收主机设备发出的连接请求;

步骤2:向主机设备发送安全请求,提示主机设备输入符合要求的配对密码;

步骤3:判断是否收到来自主机设备的正确的配对密码,若是则执行步骤4,否则跳转至步骤8;

步骤4:向主机设备回复配对请求;

步骤5:判断是否与主机设备配对成功,若是则执行步骤6,否则跳转至步骤8;

步骤6:与主机设备进行数据交换,接收主机设备下发的数据帧;

步骤7:完成数据交换后,执行对应的断开流程,并设置断开标志;

步骤8:结束当前整个连接过程。

作为优选,所述蓝牙信标接收主机设备下发的数据帧时,融合广播产生一次appuart服务中断,所述app uart服务中断的具体流程步骤如下:

步骤1:判定接收到主机设备的数据帧是否合格,若是则执行步骤2,否则跳转到步骤3;

步骤2:解析数据帧并提取数据帧中的指令,提取后标记该数据帧为已接收;

步骤3:向主机设备返回命令提示;

步骤4:中断返回,结束中断。

本申请提供的一种实现蓝牙信标beacon和app uart双服务的方法,使得蓝牙信标所发出的融合广播与普通beacon广播具备同样的广播结构,可作为定位信标使用,并且随时可与主机设备建立连接,因无需周期性切换广播类型,其连接速度快,获取到主机设备下发命令后即可改变蓝牙广播参数。

附图说明

图1为本申请的蓝牙信标的功能框图;

图2为本申请实现蓝牙信标beacon和app uart双服务的方法的流程图;

图3为本申请蓝牙信标与主机设备连接的流程图;

图4为本申请app uart服务中断的流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本申请。

其中一个实施例中,提供一种实现蓝牙信标beacon和app uart双服务的方法,本实施例提供的蓝牙信标所发出的广播融合beacon广播和app uart服务广播,既可及时与主机设备(例如手机)建立连接并进行数据交换,实现对广播内容或工作参数的修改;又可保持广播帧结构为标准的beacon广播内容,无需周期性切换广播方式,确保beacon广播周期始终不变,主机设备可及时发现附近信标设备。

本实施例中蓝牙信标所有功能由Nordic公司nrf52832蓝牙芯片基于官方的SDK15蓝牙工程包实现。并且其功能框图如图1所示,主要由蓝牙beacon广播、app uart服务广播以及系统电池电量检测三部分组成。其中,蓝牙beacon广播信息中需携带电池电量、设备名、MAC地址、发射功率以及广播间隔等基本信息;app uart服务广播则负责发送可连接广播并需密码配对(连接配对passkey),供主机设备连接,连接成功后可对信标设备的工作参数进行修改,主机设备发送命令错误时则返回错误提示;电池电量检测通过蓝牙MCU的ADC采样内部VDD电压值获取,并周期性更新采样。

具体的,如图2所示,本实施例的一种实现蓝牙信标beacon和app uart双服务的方法,包括以下步骤:

步骤1:初始化融合beacon和app uart的融合广播并开启融合广播。

现有技术中对于beacon广播而言,其标准的广播数据结构能够在不同设备(不同厂家)间通用,一般为不可连接类型。在开启beacon广播前,需在广播初始化中对广播参数初始化,SDK提供函数ble_advdata_set对广播参数进行配置。

实际是对三个结构体初始化:

1)广播数据结构体ble_advdata_t规定了所有选项设置以及编码和设置的广播数据。

2)制造商特定数据结构体ble_advdata_manuf_data_t用于设置广播公司ID和制造商信息数据,实为广播数据结构体ble_advdata_t成员,所有要广播的数据都存放在该结构体内,有其特殊的数据字段规范。如电池电量更新数据,设备识别编号等信息都可存放在此字段中。

3)GAP广播参数结构体ble_gap_adv_params_t用于设置广播类型和广播参数,此结构体只有在使用beacon广播时才会初始化,其他类型蓝牙广播并未使用。该结构体参数的初始化使得不同设备间必须符合GAP的相关定义,以确保不同设备间的基本互操作性和共存,这使得标准beacon广播与其他蓝牙服务广播存在差别。

在所有广播结构体初始化完成后,先通过函数ble_advdata_encode把设置的广播数据放入beacon广播中,然后协议栈底层函数sd_ble_gap_adv_set_configure配置广播射频模式,即完成beacon广播初始化操作。需要说明的是,以上提及的结构体和函数是Nordic公司对于beacon广播初始化时规定好的结构体和函数,由底层协议栈统一提供,这里就不具体展开描述。

而现有技术中的app uart服务广播是在创建蓝牙app uart功能的过程中实现的,从而利用蓝牙空中属性实现从机和主机之间的数据交换。数据交换的前提是蓝牙信标设备与手机建立连接,并在连接前发出蓝牙广播待手机发现。

在初始化app uart服务广播时主要是对广播参数结构体ble_advertising_init_t初始化,该结构体下的关键成员有两个:其一是&advdata广播数据结构体,其二则为&config配置选项结构体。前者在标准beacon广播初始化中也使用到,这里同样初始化了该结构体下名称类型、外观包含以及广播数据标志字段。但不同之处为服务广播初始化没有使用制造商特定数据结构体ble_advdata_manuf_data_t,即没有广播数据内容。第二个结构体用来配置广播模式以及设置广播参数,与beacon广播初始化项中GAP广播参数结构体有着类似作用,如广播间隔设定操作。

相关结构体初始化完成后先通过函数ble_advertising_init对广播参数进行设置,然后使用函数ble_advertising_conn_cfg_tag_set设置广播识别号,即完成app uart服务广播的初始化工作。

本实施例为解决现有技术中蓝牙广播存在的问题,提出融合以上两种广播的方案,使得蓝牙信标发出的融合广播兼具以上两种广播的特点,将两种广播都需初始化的结构体先提出作为融合广播的初始化必要条件,而差异化部分则按条件需求处理,即根据蓝牙协议栈主协议层的GAP规范进行取舍配置。

因此,本实施例中初始化融合beacon和app uart的融合广播的过程为:

第一步,需对广播数据结构体ble_advdata_t种广播标志字段、名称类型作统一处理,即不支持BR/EDR、无名称。由于广播数据长度有限,此处必须作无名称处理。该步骤即为作为融合广播初始化的必要条件,而以下步骤则为针对差异化部分进行各自按需的设置。

第二步,需对结构体ble_advdata_t中制造商特定数据结构体ble_advdata_manuf_data_t进行初始化,确保蓝牙广播具备beacon固有广播帧字段,如设备类型、数据长度、128位UUID值、Major值、Minor值、beacon测试的TX功率值等字段。同时,广播参数结构体ble_gap_adv_params_t也需初始化,但其广播类型必须设置为无方向可连接类型,与普通beacon广播设置有区别。

第三步,设置app服务广播相关参数,如广播间隔,广播超时等参数。

第四步,设置广播时的设备名,由于广播数据长度有限,需通过扫描回应的方式设置设备名称,回应的广播数据同样使用ble_advdata_t结构体,但此时设备名类型必须为全名称显示。所有初始化参数设置完后,使用函数ble_advdata_set和ble_advertising_init对参数进行配置,等待开启广播时便发送广播。

步骤2:判断是否达到蓝牙信标电量更新周期(本实施例中设置蓝牙信标电量更新周期为6小时),若是更新则执行步骤3,否则跳转步骤4。

步骤3:获取最新的蓝牙信标电量并更新到融合广播的广播数据内容中。

步骤4:判断当前蓝牙信标是否与主机设备断开连接,若是则执行步骤5,否则跳转到步骤2。

本实施例中的融合广播,通过app uart服务广播与主机设备进行数据交互,以获取广播相关设置参数。因此需要定时判断蓝牙信标与主机设备的连接情况,当判断到蓝牙信标与主机设备由断开变为连接,则表示主机设备向蓝牙信标下发相关指令,当判断到蓝牙信标与主机设备由连接变为断开,即表示主机设备已完成相关指令的下发。

其中,所述蓝牙信标与主机设备建立连接的步骤如下:

步骤1:接收主机设备发出的连接请求。

步骤2:向主机设备发送安全请求,提示主机设备输入符合要求的配对密码。

步骤3:判断是否收到来自主机设备的正确的配对密码,若是则执行步骤4,否则跳转至步骤8。

步骤4:向主机设备回复配对请求。

步骤5:判断是否与主机设备配对成功,若是则执行步骤6,否则跳转至步骤8。

步骤6:与主机设备进行数据交换,接收主机设备下发的数据帧。

步骤7:完成数据交换后,执行对应的断开流程,并设置断开标志。

步骤8:结束当前整个连接过程。需要说明的是,以上步骤1~8为蓝牙信标与主机设备建立连接的步骤,为了避免与实现蓝牙信标beacon和app uart双服务的方法的步骤混淆,也可采用例如步骤101~108等相关表述方式。

蓝牙信标与主机设备的连接可发生在融合广播开启后的任意时刻,并且在蓝牙信标与主机设备连接的状态下,当主机设备向蓝牙信标传输一次数据帧时,蓝牙信标就会产生一次app uart服务中断,以接收数据帧。

本实施例中app uart服务中断的具体流程步骤如下:

步骤1:判定接收到主机设备的数据帧是否合格,若是则执行步骤2,否则跳转到步骤3。

步骤2:解析数据帧并提取数据帧中的指令,提取后标记该数据帧为已接收。

步骤3:向主机设备返回命令提示。例如若接收成功则返回接收成功的命令提示;若数据帧不合格则返回数据帧不合格的命令提示。

步骤4:中断返回,结束中断。需要说明的是,以上步骤1~4为app uart服务中断的步骤,为了避免与实现蓝牙信标beacon和app uart双服务的方法的步骤混淆,也可采用例如步骤201~204等相关表述方式。

本实施例以app uart服务中断的方式接收主机设备下发的指令,在与主机设备建立连接后由蓝牙协议栈自动关闭融合广播,待连接断开后协议栈自发开启融合广播。

步骤5:读取主机设备下发的指令,判断指令是否为设置功率命令,若是则执行步骤6,否则跳转到步骤7。

步骤6:关闭蓝牙信标当前的融合广播,根据所述设置功率命令更改发射功率完成广播参数更新,初始化融合广播并再次开启融合广播。

步骤7:判断指令是否为设置广播间隔命令,若是则执行步骤8,否则跳转到步骤2。

步骤8:关闭蓝牙信标当前的融合广播,根据所述设置广播间隔命令更改广播间隔完成广播参数更新,初始化融合广播并再次开启融合广播,执行完成后返回到步骤2。

本实施例基于融合beacon和app uart后的融合广播,在蓝牙信标初次上电后广播是可正常运行,也可与手机建立连接,但连接后蓝牙信标获取到新的广播参数后需先关闭当前蓝牙广播然后再次初始化广播参数和重启蓝牙广播方可更改生效,相比周期性切换两种广播的方法,本申请的融合广播可避免工作时beacon广播的不连续性,防止app uart广播占用有效广播时长。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:蓝牙数据的传输方法、装置、设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类