当前位置:首页 > 通信技术 > 通信技术
[导读]Beacon系列的前两篇文章中我已经介绍了Beacon应用开发的概念和AltBeacon广播形式,并详细讲解了如何利用AltBeacon安卓API开发博物馆导览APP原型。在今天的最终篇里,我将向大家介绍如何测试这一博物馆导览APP。选择蓝

Beacon系列的前两篇文章中我已经介绍了Beacon应用开发的概念和AltBeacon广播形式,并详细讲解了如何利用AltBeacon安卓API开发博物馆导览APP原型。在今天的最终篇里,我将向大家介绍如何测试这一博物馆导览APP。

选择蓝牙开发板,启动你的专属Beacon!

我们暂时还没有现成采用AltBeacon形式的Beacon,但手上有不少蓝牙开发板。蓝牙开发板是具有智能蓝牙功能的微控制器(MCU),其内部一般都内置了蓝牙协议栈。由于开发板一般都具有丰富的外设接口和引线,因此开发板通常用来搭建产品的原型可以将编译生成的固件直接烧入到开发板当中,甚至可以直接做成产品功能展示,或是单纯用于试验或学习。我决定用自己手上既有的几块开发板来创建Beacon应用,然后测试一下安卓博物馆导览APP。

我使用的是Bluegiga DKBluetooth Low Energy开发套件和英特尔Edison开发板。Bluegiga开发板的编程采用BGScript脚本语言。英特尔Edison运行的是则Linux,编程语言有多项选择。我习惯用由JavaScript框架驱动的Node.js,这样能找到适用的智能蓝牙的功能包或是库文件。

Bluegiga变身AltBeacon

Bluegiga的BGScript脚本语言简单易懂,且配有Bluegiga框架所提供的丰富的功能库。用BGScript创建Bluegiga应用涉及用文本编辑器创建脚本文件和其他项目配置文件。通过Bluegiga SDK中的软件更新工具,就可以直接通过USB将编译生成的固件烧入到开发板上。

脚本包括变量和数组声明、事件处理器回调函数。回调是编程模型的重要部分,调用标准Bluegiga功能函数会促发相关的回调函数。同样,框架也可以调用事件处理器,以回应脚本之外的情况。

在任何平台上实现Beacon都涉及与通用访问配置文件(Generic Access Profile, GAP)协作,要求设置广播数据包内容、配置广播参数。

Bluegiga AltBeacon实施的要素如下图:

先从变量声明开始。

 

 

本文引用地址:http://www.eepw.com.cn/article/278059.htm

图1 – 数组声明

广播的设置可以在Bluegiga标准事件处理器“system_boot”中完成,开发板接通电源或重置之后,系统会调用“system_boot”。我先设置了包含Flags字段数组,Flags字段包括许多位,从每一位都能看出Bluetooth Smart和/或Bluetooth BR/EDR的支持方式。

广播数据包中可能包含的字段称为广播数据类型(ADV data types),蓝牙核心规格附录的A部分(数据类型规格)对其有明确定义。广播数据类型的标准结构,包括一个单一字节长度字段 (它的值不包括长度字段本身占有的字节)、一个单一字节数据类型字段。GAP编号文档中定义了数据类型值。

下面是初始过程的首部分代码:

 

 

图2 –在system_boot事件处理器中定义flags广播类型

在本系列文章的第一篇中,我介绍了AltBeacon形式并解释了GAP 制造商特定数据广播字段中编码的数据。我在同一数组内的后20字节中填入了这些数据。

 

 

图3 – 定义制造商特定数据字段中的AltBeacon数据

然后为Beacon设备设置名称,这一名称今后可以显示在Central设备(主要是智能手机)返回的扫描结果中。它的值是另一个广播类型,因此我将它设立在它自己的数据里。可以看到,指定的本地名称就是AltBeacon。

 

 

图4 – 建立用于扫描响应的本地名称

配置广播参数包括调用Bluegiga的一些功能、数组。

 

 

图5 – 配置GAP 广播

这样,我的Bluegiga定制AltBeacon准备就绪。

 

 

图6 –蓝兆科技DKBLE上的AltBeacon

另一种选择:英特尔Edison上的AltBeacon

Node.js是模块化设计,有多种用途的模块供选用。对于Node.js来说,模块与库类似。“Bleno”模块能够为担任蓝牙GAP外设的应用提供诸多功能,如GATT配置文件的定义和实施。它是开源的,由Sandeep Mistry创建。SandeepMistry还创建了Noble模块,可以用来创建GAP中央模式设备的相关软件。Bleno和Noble都位于github上。

Bleno的标准分布不支持AltBeacon形式,但却支持iBeacon。因此,我复制了Noble github 仓库并改写了Bleno,这样就可以生成AltBeacon形式的GAP广播了。下面就跟大家介绍一下是怎么改写的。

我在标准的bleno.js源文件上添加了新功能,然后就可以根据node.js应用的一系列既设参数启动广播了。新功能代码就长以下这个样子:

 

 

图7 –bleno/lib/bleno.js中的新功能

这一代码基本上就是将必须的AltBeacon数据填充到缓冲区,然后调用添加至Linuxbindings.js源文件中其他功能。Bleno可以与Linux上的BlueZ蓝牙协议栈协作,当在基于Linux的平台上执行功能时,Bleno所引出的用于多种应用的功能最终被映射到针对BlueZ功能的调用。我只好对Bleno中Linux相关的部分作一些修改,这样才能支持AltBeacon。

 

 

图8 –bleno/lib/linux/bindings.js中的新功能

 

 

图9 –bleno/lib/linux/hci-ble.js中的新功能

这些功能所作的就是准备一个和Bluegiga开发板类似、包含所有必需广播数据的缓冲区,然后将其传递至、并通过Bleno API层,最终到达BlueZ的主机控制接口(Host Controller Interface,HCI)。

AltBeacon Node.js 应用

Bleno经修正之后就可以支持AltBeacon了, 剩下的就是使用新的bleno模块来创建node.js应用,然后使用AltBeacon形式开始广播。整个应用就是下图中的7行代码。

 

 

图10 –AltBeacon node.js 应用

为运行AltBeacon APP,我使用Putty通过SSH或是telnet建立了与英特尔Edison的终端会话,然后运行命令行里的node app.js。

 

 

图11 – Putty建立终端对话

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭