文献标识码: A
DOI:10.16157/j.issn.0258-7998.2017.03.018
中文引用格式: 方天恩,漆晶,马金辉,等. 基于Android的智能蓝牙温度计的研究与设计[J].电子技术应用,2017,43(3):73-76.
英文引用格式: Fang Tianen,Qi Jing,Ma Jinhui,et al. The research and implementation of smart Bluetooth thermometer based on Android[J].Application of Electronic Technique,2017,43(3):73-76.
0 引言
随着无线传感网络技术的飞速发展及智能家居概念的不断普及,人们对生活品质的追求也在不断提高,各种各样的无线智能设备开始融入大家的生活,引领人们进入了智能时代。传统的PC监测设备温度已经满足不了现代生活的需求,为此,本文根据需求设计了一套利用智能移动平台和蓝牙通信实现温度数据的实时传输显示系统,同时在进行一对多通信时,在Android App端采用了一种基于能量优先级的通信调度算法。本设计主要用于测量葡萄酒的储藏温度,但同样适用于测量工程设备以及各种生产现场。
1 总体架构
本文设计的无线温度采集系统结构如图1所示。热敏电阻与CC2541节点设备连接,由CC2541节点设备内部A/D转换器进行温度数据采集,然后通过蓝牙BLE协议将数据传输至Android设备,进行图形化温度显示,并通过Android设备的3G/4G网络将温度数据传输至服务器进行存储,同时也可以通过3G/4G网络下载查看历史数据。
2 系统设计
2.1 硬件系统设计
本系统硬件主要有以下模块:电源模块、MCU控制模块、蓝牙数据传输模块、LED驱动模块。硬件系统框图如图2所示。
2.1.1 处理器单元
CC2541是由TI公司设计并生产的基于2.4 G蓝牙无线低功耗单片SOC,该芯片支持蓝牙4.0BLE(蓝牙低功耗)[1]协议,并通过配置可实现最高2 Mb/s的数据传输速率。由于该芯片具有低功耗,外围原件较少,电路设计简单,且内部集成最多8通道的12 bit ADC,以及采用QFN封装的特点,非常适合便携式无线移动节点应用,因此,本设计采用CC2541芯片作为无线节点的设备主控。
由于该无线节点设备应用于便携式场景,采用电池供电,需要保证功耗尽可能低,因此在设计中,需要采用休眠唤醒功能,必须应用RTC(实时时钟控制器)时钟唤醒模块,故设计中加入32.768 kHz实时时钟震荡电路作为RTC时钟的振荡源。
2.1.2 天线与巴伦滤波电路
考虑到尽可能降低设计成本,并保证系统工作的稳定性,尤其是在无线传输部分数据传输可靠性,本设计采用了分立器件设计的巴伦滤波器代替成本较高的单片式集成巴伦滤波器,同时为在器件不一致性较大情况下可对滤波器进行微小调节,在电路设计中预留器件接口,具体射频电路如图3所示。图3中C15为调节元件,在节点设计生产中,可在调试不理想情况下焊接电容元件进行微调。同样,为保证系统设计成本尽量低,本设计采用板载倒F蜿蜒天线作为射频发射接口,保证了数据传输的稳定性和可靠性,并保证了在应用中的传输距离。天线尺寸参数如表1所示。
2.2 软件系统设计
利用Android移动终端对数据进行读取并显示,相比于传统的PC监测,Android移动终端更加方便、快捷。软件设计部分的主要内容是:在Android移动设备与BLE设备之间通过蓝牙建立稳定可靠的通信,同时提供一个可视化良好的人机交互界面。
(1)为了让应用运行在支持BLE的Android设备上,需要添加以下蓝牙的响应权限[2]:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN " />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
(2)集中器和BLE设备建立通信流程如图4所示。具体细节如下:
集中器开启蓝牙,开始对外围正在广播的设备进行扫描,扫描到广播设备后,集中器发送扫描请求,外围设备响应请求[3]。在集中器与外围设备通信过程中需要使用唯一识别码UUID(Universally Unique Identifier)。在数据传输过程中,若移动终端定义的UUID与BLE广播中GAP(Generic Access Profile)定义的UUID相同,一旦移动终端的连接请求通过,集中器与BLE设备即可进入连接状态[4]。发现服务后,集中器通过指定的UUID向BLE设备发送设置指令,随后BLE设备将UUID相对应的地址返回给集中器,返回地址中包含集中器需要的最终数据。
(3)App软件具体工作流程如图5所示,蓝牙4.0之前都是通过Socket套接字来进行连接通信的,同时在实现一点对多点时,大多采用轮循的机制。假如6个外围设备,则设12 s一个周期,每个设备通信时长2 s,这样大大增加了通信设备双方的功耗,而且很容易受到外界诸多因素的干扰,导致通信不可靠。而本文采用广播包的形式来通知主机,将温度、电量等信息写入广播包字节中,以获取广播包的方式来获取温度、电量、设备名字等信息,很容易实现一对多的通信。而且在不进行数据通信时,会进入休眠状态,只有当需要对设备发送设置指令时,才进行连接,大大降低了功耗,提升了设备的工作时长,这也是低功耗蓝牙最大的特点。
(4)考虑到一点对多点的通信情况,即一个移动设备同时与多个BLE设备通信,本文在软件端提出了一种基于能量(电量)优先级的通信调度算法,可以在一定程度上降低功耗。电压与电量百分比转换的基本原理是通过ADC(模数转换器)计算电池电压。以CC2540芯片用一钮扣电池为例,电池电压从2.0 V~3.0 V,即电量的0%~100%。电量转换关系图如图6所示。
具体算法如下:
(1)初始状态时,每个BLE设备都处于待机状态,具有相同的优先级,人们的手机自然而然作为主设备,主动发起扫描周围存在的设备,并将扫描到的设备添加到扫描列表中[5];
(2)获取每个从设备的当前电量百分比,按照电量高低分为M个等级;
(3)根据步骤(2)优先级从高到低的顺序将设备ID添加到一个优先级队列中;
(4)主设备按优先级顺序依次向列表中的设备发起连接并传送数据;
(5)当队列中的设备为空时,由主设备进行下一轮的扫描,并将扫描到的新设备添加到设备列表中,然后跳转到步骤(2)继续执行。
3 系统测试
3.1 通信距离测试
测试要求:在空旷的环境下,有效通信距离为20 m以上;当温度计放置于冰箱里面,有效通信距离为4 m。
测试结果:经过测试,空旷地通信距离可达40 m;放置于家庭冰箱内通信距离可达6 m,完全满足了工业上的设计要求。
3.2 温度计量测试
测试内容:常温到冰箱的温度随时间的变化和冰箱到常温的温度随时间的变化。本次测试对比采用市面上比较成熟的Digitron 温度计,测试结果如图7、图8所示。
4 结束语
针对当前对温度监测精度较高的设备(主要以PC为主),研究了基于Android系统的蓝牙温度计,精确有效方便地分析判断当前设备的温度,解决了传统PC监测移动性不高的缺点,同时也解决了传统设备测温的局限性,方便了人们的生活。该系统设计所需硬件简单易用、稳定可靠、成本低廉,具有较好的扩展性;软件依附于的Android平台软件具有通用性,易于移植。产品目前已经批量生产,有广阔的市场应用价值。
参考文献
[1] 蓝牙技术联盟.Core_V4.0[EB/OL].[2012-10].http://www.bluetootn.org/Technical/Specifications/adopted/htm.
[2] 李刚.疯狂Android讲义[M].北京:电子工业出版社,2015.
[3] 王宏志,曲超,吕洪武.基于蓝牙4.0温湿度的监测[J].吉林大学学报(信息科学版),2016,34(2):296-302.
[4] 陈子龙,张红雨,李俊斌.CC2540和SHT11的无线温湿度采集系统设计[J].单片机与嵌入式系统应用,2013,13 (4):41-44.
[5] 廖辉,陈庆奎,高丽萍,等.基于博弈论的蓝牙4.0协同通信策略[J].广西大学学报(自然科学版),2014,39(5):1090-1095.
作者信息:
方天恩1,漆 晶1,马金辉2,刘德庆1,张朝阳1
(1.重庆邮电大学 移动通信技术重庆市重点实验室,重庆400065;2.重庆邮电大学 无线传输技术研究所,重庆400065)