张义红, 李永乐, 郝矿荣, 韦 方
(东华大学 a.信息科学与技术学院; b.数字化纺织服装技术教育部工程研究中心,上海 201620)
物联网是计算机、互联网之后,世界信息产业的第三次浪潮[1]。物联网专业作为一个典型的交叉学科,应用到通信、电子、计算机多个学科的专业知识,同时它也是一个基于工程应用的学科,是现有信息技术综合集成化的产物[2-3]。近年来,BLE技术以及智能终端的普及加速了物联网技术的发展,同时也催生出了各种智能硬件。随着智能硬件的发展,智能穿戴也成为了一项热门的课题。温湿度传感器是较为广泛运用的两种传感器。
本文以我校大唐移动物联网实验室智能家居实验开发平台设计了一款面向信息类研究生的创新型实验。实验的主要内容和技术是:利用物联网实验平台的温湿度传感器,采集到温湿度信息后,通过BLE技术将信息传输到用户智能手机中,并由对应的APP解析数据并判断当前温湿度传感器状态,可解决母婴和养老领域的智能穿戴中的技术关键问题。
本文的实验教学环节是基于新型物联网实训平台的,该平台相较于传统平台的最大特点在于功能模块十分完备,可扩展性强。平台实物图如图1所示。
实验所涉及的硬件资源:① Exynos4412 核心板。Samsung Exynos4412,2 GB DDR2内存,4GB NAND FLASH;② 17.78 cm(7 in)TFT LCD。分辨率为800×480,电容式触摸屏,支持校准;③ 调试串口、JTAG、复位、RTC 电池、DCDC电源等;④ BLE4.0开发套件;⑤ 板载温湿度传感器。系统框架如图2所示。
图2系统框架
温湿度传感器所采用的芯片为SHT11[6-7]。SHT系列单芯片传感器是一款含有已校准数字信号输出的温湿度复合传感器。传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14 bit的A/D转换器以及串行接口电路在同一芯片上实现无缝连接,具有品质卓越、超快响应、抗干扰能力强等优点。
将传感器芯片输出转换为物理量的过程遵循的公式如图3所示。图中,SORH和SOT分别为湿度传感器和温度传感器的数字输出,表示测量分辨率。默认的 测量分辨率分别为14 bit(温度)、12 bit(湿度),也可分别降至12 bit和8 bit[6-7]。
图3 温湿度转换公式
蓝牙通信协议包括多个服务(service),每个service由一个或多个特征组成,通信数据分数据(data)、命令(command)两类,支持手机端向设备的查询、设定命令、设备响应,设备主动上报消息及手机端响应等。每条命令和消息由命令名、命令内容构成[8-9]。
设定设备温湿度主动上报,每1 s上报一个数据,本实验仅使用命令帧传输,格式如表1所示。
表1 命令帧格式
举例:若接受数据为 0xDFB1D100020300D540。温度值: 0x00D5=213/10=+21.3 °C(默认1位小数点);湿度值:0x40=64%。
Android是Google公司开发的基于Linux平台的开源手机操作系统,遵循MVC框架模式。M层即Model层适合做一些业务逻辑处理[10-11]。数据库存取操作、网络操作、复杂的算法、耗时的任务等都在该层处理。V层即View层,应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果。 C层即Controller层,在Android中,Activity用以处理用户交互问题,因此可以认为Activity是控制器,Activity读取V视图层的数据,控制用户输入,并向Model发送数据请求。
应用程序视图层主界面采用经典Tab类型界面,实现方式为Fragment + FragmentManager,见图4。
图4主界面布局
FrameLayout作为Fragment的container主界面,顶栏为标题栏,底栏作为菜单栏,启动时默认fragment为显示温湿度信息的界面。
应用程序的工作流程如图5所示。
图5应用程序业务逻辑流程图
2.2.1BLE连接并解析数据
首先需要开启BLE权限,在manifest添加:android.permission.BLUETOOTH和android.permission. BLUETOOTH_ADMIN 两个权限。之后完成BLE Controller层的编写:
(1) 获取适配器mBlueAdapter并调用适配器方法mBluetoothAdapter.enable();方法开启蓝牙。
(2) 扫描蓝牙设备:mBluetoothAdapter.startLeScan(lescancallback); 搜索到设备后会回调LeScanCallback接口,此时可判断(本文依据预设的设备名“RLEIT_9430C”)是否为目标设备,若是则连接。
(3) 停止扫描,此时获得device对象,调用其 device.connectGatt(this, true, mGattCallback);进行连接,连接后会回调BluetoothGattCallback接口,此时可依照前文所述通信协议解析所接收到的数据。
2.2.2监测温湿度信息
将获取到的温湿度数据封装至Intent中,使用广播传递至主界面并以进度条的视图形式显示。
intent_18.putExtra("temperature", temperature);
intent_18.putExtra("humidity", humidity);
getBaseContext().sendBroadcast(intent_18)。
在主界面中响应广播,并得到温湿度数据:
temperature = intent.getStringExtra("temperature");
humidity = intent.getStringExtra("humidity")。
每1 s接受一次BLE数据,则每秒判断一次:
(Integer.parseInt(temperature, 16) / 10) > 25&& Integer.parseInt(humidity, 16)>70。
只要满足温度>25 °C并且湿度超过70%,弹出报警界面,并创建一个MediaPlayer类型的对象实现播放背景音乐的功能,使用工具类vibrator_util.Vibrate(new long[]{1 000, 1 000, 1 000, 1 000, 1 000, 1 000}, true)实现振动功能。
采用阈值进行判断是最基础的报警判断方式,实验中学生可通过温湿度信息随时间的变化率自行设计更为复杂和精确的算法。
2.2.3存储报警信息
Android在运行时(run-time)集成了SQLite,所以每个Android 应用程序都可以使用 SQLite 数据库[12]。本文所述应用程序的Model层即是使用SQLite数据库来存储数据的。所要存储的主要信息为每次报警的日期以及具体时间,由此可以统计婴儿的排尿频率,建表语句如下:
public static final String CREAT_DATABASE = "create table baby_data("
+ "_id integer primary key autoincrement,"
+ "date varchar(10),"
+ "time varchar(10))";
在满足报警条件时,首先执行存储数据命令:
new SqliteData(getApplicationContext()).insertData();
之后弹出报警窗口。
2.2.4附加功能设计
软件部分可进行附加功能的设计实验,将温湿度信息数据利用Android自定义控件制作成图形进度条显示,使信息显示更为直观,界面布局更为简洁美观。将数据库的存储信息调出,可在程序内制作图表界面,直观展示或查询数据库内容。扩展报警选项,增加报警铃声选项,增加铃声和震动选项(见图6)。
图6 应用程序功能界面
实验环境:实验室空调控制室温为25 °C左右,空气湿度为30%~40%。
启动图1所示物联网开发板。启动手机端的Android应用程序,打开蓝牙,并配对设备名称为“RLEIT_9430C”的蓝牙设备。配对成功后,应用程序主界面会将温湿度信息以进度条的形式显示在主界面上。测试数据传输的稳定性,将实验室温度升至30 °C,可观察到应用程序主界面显示信息的变化。
准备一小杯40 °C左右的温水,将纸巾蘸水后迅 速贴近温湿度传感器。片刻后,应用程序主界面弹出
报警窗口,同时手机振动并播放警报音乐。
按下报警界面的任意选项即可退出报警状态,至此智能尿不湿系统的实验基本成功。
结合大唐移动物联网实验室相关的软硬件实验设备与研究生课程体系,面向当今育婴或养老产业的应用需求,设计了一门创新性研究生实验课程。该实验的主要原理和功能室由温湿度传感器检测的物理信息通过BLE传输给智能手机终端,由Android应用程序解析数据并判定温湿度信息的变化,完成报警功能。
软件附加部分可设置多种创新内容,如改进温湿度信息预警判断的算法,以及搭建服务器已上传APP的数据库信息并分析。
参考文献(References):
[1]杨丹,吴建胜,王刚,等.“物联网技术及应用”实验教学环境构建[J].实验室研究与探索,2016(6):211-213.
[2]黄峥,古鹏.物联网实验室建设研究与探讨[J].实验技术与管理,2012(2):191-195.
[3]钱志鸿,王义君.物联网技术与应用研究[J].电子学报,2012(5):1023-1029.
[4]李德骏,卢晓波. 可手机监控的智能纸尿裤电子系统[J]. 电子质量,2015(7):35-38.
[5]张思云. 纸尿裤热湿舒适性的评价与研究[D].上海:东华大学,2014.
[6]Duane W J, Pepin N C, Losleben M L,etal. General characteristics of temperature and humidity variability on kilimanjaro, tanzania[J]. Arctic Antarctic & Alpine Research, 2016, 40(2):323-334.
[7]Patanen M. Creating Android application using BLE sensor: A knee rehabilitation monitoring system[J]. Astronomy Now, 2014, 17(11):1804-1814.
[8]韩悦文. 几种典型湿度传感器的原理和概要分析[J]. 江汉大学学报(自然科学版),2009(1):33-36.
[9]廖泽鑫. 温度传感器的设计与研究[D].上海:复旦大学,2012.
[10]李金桦,甄辉,黄海,等. 基于BLE的Android心电监护软件[J]. 计算机与现代化,2016(4):114-122.
[11]常敏,梅晓敏,崔永进,等. 基于BLE与Android的牧场温湿度智能监控系统设计[J]. 通信电源技术,2015(5):134-137.
[12]林培杰,朱安南,程树英. Android数据库SQLite性能优化[J]. 计算机系统应用,2014(4):193-196.
[13]潘月, 朱卉. 基于Android系统的蓝牙便携式血脂仪的设计[J]. 电子设计工程, 2013, 21(24):170-173.
[14]唐荣年, 曾雄梅. 基于北斗卫星和蓝牙技术的Android手机导航系统设计[J]. 武汉理工大学学报, 2015, 37(6):104-108.
[15]张驰程,周渊平. 基于Android的蓝牙通信头盔应用[J]. 计算机系统应用,2017(2):37-42.