腕带式生命体征监测预警装置的设计与开发

2017-04-08 08:24黄善登
电脑知识与技术 2017年5期
关键词:可穿戴设备Android系统

黄善登

摘要:处于老龄化时期的中国,患有心脏病、痴呆疾病的老年人数呈上升趋势,研究具有老年病自动检测和及时预警的可穿戴设备,具有很大的市场前景。本文以ARM为核心,Android系统为软件平台,设计开发腕带式生命体征监测预警装置,包括体温监测,脉搏检测,通信和报警模块组成,通信模块负责提供携带者地理位置,并将携带者的体征信息发送给家属,在穿戴者出现危机情况时,家属可以通过手机获取到携带者的脉搏、体温的实时体征信息,并准确定位,及时发出响亮的语音呼救信号。

关键词:生命体征监测;可穿戴设备;ARM;Android系统

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)05-0249-04

1 引言

据《中国老龄事业发展报告》指出,我们迎来了第一个老年人口增长高峰,在2015年末,中国大陆人口共达136782万人,其中60周岁及以上人口21242万人,占总人口的15.5%,65周岁及以上人口13755万人,占总人口的10.1%,中国已处于老龄化时期。与此同时,老龄化人群带来的一些困扰就体现出来了,并且患有心脏病、痴呆疾病的老年人数还呈上升趋势[1],应该给予高度重视。

目前,具有自动检测,及时预告的可穿戴设备是备受关注的。因可穿戴设备的便携带、智能化等特性,具有很大的市场前景[2]。根据《2015-2020中国可穿戴设备行业发展深度调研和投资趋势预测研究报告》[3]的内容概括,2014年的可穿戴设备行业可以用四个字来概括“激情澎湃”,到2015年虽然趋于理性,但是从技术层面来讲,带有传感器的人工智能手环肯定会在医疗类大放异彩[4]。

现在子女因上班繁忙,大多数老人独留家中,生命体征的信息无法实时监测,也无法及时告知家人。本项目试研发一款可穿戴式的生命体征检测预警器[5],该仪器是一个腕带式可穿戴的装置,在穿戴时出现危机情况后,家属可以通过手机或者电脑随时随地的获取到携带者的脉搏、体温的实时体征信息[6],并可以获取携带者的行走路线与准确定位[7],及时的做出应对措施;并且该装置能发出响亮的语音呼救信号,利于及时出动120急救。对于及时诊治、降低医疗及护理费用、提高生命质量、延长寿命、减少独生子女对父母的健康的忧虑有重大的经济和社会效益[8]。

2 系统框架

本文主要研究腕带式生命体征监测预警装置,包括ARM控制模块、通信模块和终端软件模块三大部分,其中关键内容包括硬件模块和终端APP设计。

1)硬件模块设计

采用ARM控制芯片,编写可靠完善的控制程序,作为整体控制核心。此部分主要考虑的问题有:①脉搏和体温的实时准确采集;②GPS的精确定位,将携带者地理位置传送给远程终端;③自动判别携带者疾病的症状,携带者出现心律失常、休克、心脏停博、体温过高过低等紧急情况时,立即发出呼救信号,提醒周围人及时施救;

2)监测终端APP软件设计

以手机为远程监测终端,与穿戴式设备实时通信获取生命体征与预警信息,為了对老年人的身体状况有动态掌握,设计图形化的界面用以显示所在地以及生命体征信息。

3 硬件模块设计

系统硬件模块包括脉搏模块设计、体温模块设计、报警器模块设计、GPS模块、GPRS模块。

3.1 脉搏模块设计

脉搏模块是采用松恩公司的son1303模块。该模块通过系统的时钟计数器和中断对I/O口的数据进行处理,而后得到该I/O口波形的频率,从而上层应用可通过读取频率而计算出携带者的心率。

主程序在初始化创建窗口界面时,会构造脉搏模块对象,在其中配置脉搏模块对应I/O口的模式,配置为输入和外部中断模式,系统检测到输入信号发生跳变时(上升沿、下降沿),会触发中断,在每次中断函数中,记录系统时间计数器的值,因半个周期会进入中断函数两次,所以可以计算出输入信号的频率,从而得到对应信号所表示的心率。

3.2 体温模块设计

体温模块是采用DS18b20传感器实现的。DS18B20有3个引脚,只需要一个I/O口硬件资源。通过携带者与产品的接触点,检测出数据,再通过一根数据线用串行传输方式,将数据传输到连接的I/O口上。该模块需要编写一个read函数,将温度传感器通过特定的时序所得到的数据保存到形参,上层应用只需要调用对应的read函数就能够得到数据,再通过一定的数据转换,就能得到温度值[9]。

在QT调用read函数后,系统自动调用驱动中的readAPI,先进行I/O电平复位和置位,实现温度传感器DS18b20的复位,然后写指令(write_byte(0xcc):写跳过读ROM指令,write_byte(0x44):写温度转换指令),再一次传感器复位,写指令(write_byte(0xcc),write_byte(0xbe):读暂存器),最后读取温度数据。

3.3 报警器模块设计

蜂鸣器是一种一体结构化的电子讯响器,采用直流电压供电的电磁式蜂鸣器。蜂鸣器有3个引脚,只需要一个I/O口,该模块通过控制I/O的高低电平,使三极管Q6处于导通或关闭状态,从而使得Speaker两个引脚产生电势差,就能使蜂鸣器发出声响。

该模块提供一个API来接收上层应用传下来的不同频率、不同占空比的信号,以此来驱动蜂鸣器发出声响,以达到报警的效果。

在QT中调用API,通过传递的参数(宏定义常数PWM_IOCTL_SET_FREQ设置频率,PWM_IOCTL_STOP关闭预警器)来判断执行。在设置频率中,通过设置寄存器S3C2410_TCON、S3C2410_TCNTB、S3C2410_TCFG1及S3C2410_TCFG0的值,可以在I/O引脚产生对应频率的信号(可通过对S3C2410_TCMPB寄存器设置占空比);若是上层传来参数是PWM_IOCTL_STOP,则是准备关闭预警器,可将I/O口设置为输出模式,配置关闭电平即可关闭预警器。

3.4 GPS模块

利用GPS卫星定位,在全球范围内实时进行定位、导航,检测出携带者的地理位置。

该模块使用的是系統自带的串口驱动,通过模块将从卫星上得到的数据存放到串口设备对应的设备文件中,程序只需要打开设备文件读取里面的字符即可。

在主程序初始化界面时,创建GPS模块对象,在其中对要使用的串口设置参数,控制当前波特率、数据大小、数据流控等等。系统调用read时,将收到在设备文件中的数据读取到一个缓冲区buf中,再根据你需要的哪些数据找到在buf对应的位置,取出来再转换为你所需的数据[10]。

3.5 GPRS模块

GPRS是GSM移动电话用户可用的一种移动数据业务。GPRS是以封包(Packet)式来传输,因此使用者所负担的费用是以其传输资料单位计算,并非使用其整个频道,理论上较为便宜。GPRS的传输速率可提升至56甚至114Kbps。

该模块使用的是系统自带的串口硬件资源,在主程序编辑好需要发送数据,通过GPRS模块发送短信到指定号码。

在主程序初始化界面时,创建GPS模块对象,在其中对要使用的串口设置参数,控制当前波特率、数据大小、数据流控等等。主程序中,脉搏或是体温出现异常,就会调用send函数,该模块将异常数据及地理位置发送给指定号码的家属。

本设计针对传统的数据通信传输中存在的干扰问题以及点对点错误传输问题,引用计算机领域流行的Hash算法,应用Hash的加密功能,为每一个腕带生成一个“身份证”——特征码,远程监测终端输入特征码后,就可以实时获得该腕带佩戴者的检测信息。将Hash算法的错误纠正应用于腕带与监护人终端的通信传输中,确保检测到的脉搏与体温信息准确无误地传输,并保证传输信息完整,避免遗漏报警或误报警情况的发生,在携带者出现异常情况时,及时立马的将携带者的生命体征数据以及事发地点发送给指定用户(界面可选择)。以便对方及时知道情况,做出相应措施。

4 程序设计

软件设计包括软件设计流程、QT界面设计、主程序设计、Android APP设计。

4.1 软件设计流程

本次软件设计的主要流程[11]:

(1)在Linux下驱动编写,到ARM板调试;

(2)烧写驱动到内核,并配置好内核的其他资源(适当裁剪);

(3)编译内核生成Zimage镜像文件;

(4)文件系统、Uboot、Zimage3个镜像文件一起加载到ARM;

(5)配置好ARM的QT运行环境;

(6)配置好Linux下的交叉编译环境、QT编译环境;

(7)QT编写,生成执行文件烧写到ARM板查看并调试;

(8)编写脚本,使QT界面在开机后直接运行。

软件设计的流程图如图1所示。

4.2 QT界面设计

QT是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架[12]。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。QT是面向对象的框架,使用特殊的代码生成扩展以及一些宏,易于扩展,允许组件编程。

QT具有如下特性:

(1)优良的跨平台性质,支持多个平台开发.有:Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD等;

(2)面向对象,良好的封装机制使得QT的模块化程度非常高,元件工作协调变得简单;

(3)丰富的API接口,多大250+的C++类,还包括正则表达式的处理功能;

(4)支持2D/3图形渲染,支持openGL。

本设计是通过C++的思想[13],将每个模块封装成一个类,再在每个cpp文件中将对应模块中读取的数据提取出来,再通过QT的UI设计出一个界面,将得到的数据填充到对应的位置,最后在执行脚本,将界面显示到液晶屏上。显示设计布局及实物图如图2所示。

4.3 主程序设计

(1)初始化界面:调用ui的API(setText、setValue、setRange以及insertItem)对不同的编辑框填充数据;

(2)读取数据:都是打开硬件对应的设备文件,调用read函数,系统自动调用驱动的read函数获得数据;

(3)解析数据:

1)GPS:根据数据解析协议将读取到的字符串,在对应的数据位置将字符数据转换为数字,得到相应的数据;

2)体温:在得到的两个字符数buf[2]中,高八位buf[1]中高五位为符号位,低八位buf[0]中低四位为小数位,参考公式:tem=(buf[1]&0x7)*16 + buf[0]*0.0625,符号位单独判断;

3)脉搏:直接读取数据即可;

(4)界面显示:同初始化界面一样,调用对应的API将解析得到的数据填充到编辑框里面;

(5)异常:读取数据超出设定范围值(通过界面设置);

(6)发送数据到手机:将需要发送的信息写(write)到GPRS所对应的串口设备文件,在此之前,需要写入一些协议类的字符串。

4.4 Android APP设计

在创建android应用[14]之前,先将android开发环境配置好。

在界面的调整上,一方面可以通过图形界面,拖动图形框到相应的位置,不过这样会因为鼠标的移动单位距离和认为因素影响,可能会达不到理想的效果;另一方面,可以通过图形界面生成的文件中,找到对应图形框的那段代码,修改图形的大小,位置等其他参数,达到理想效果。

这次设计因为在ARM的内存因素影响,没能在ARM板上调用百度API将经纬度转换为具体的地理位置,不過通过GPRS将数据发送给手机后,可在手机上调用百度API将接收到的经纬度数据转换出来,用地图的形式在手机界面上显示。

AndroidAPP编写流程图包括:接收信息API编写,继承百度地图类,重写类中的API,对图形布局的XML文件进行修改等。

(1)接收信息API:继承BroadcastReceiver,重写onReceive函数[15],处理接收到的信息(地点、时间、体温、心率);

(2)继承百度地图类:OnGetGeoCoderResultListener,该类将接收到的经纬度信息转换为实际地址;

(3)重写对应API:重写activity类中的onCreate(初始化实例对象)、onGetGeoCodeResult(查询是否有匹配地址)

(4)Xml文件修改:activity_main.xml文件中有各个小图标的详细参数(位置、标签、大小),androidManifest.xml文件是系统清单文件,可控制android应用的名称、图标、访问权限等整体属性。

5 总结

本系统实现了对携带者的脉搏、体温数据的采集以及所处位置的定位,能够在数据超出设定范围时,立刻向指定的用户手机发送信息,并且蜂鸣器响起,用以告知路人,有利于及时对携带者急救。对于及时诊治、降低医疗及护理费用、提高生命质量、延长寿命、减少独生子女对父母的健康的忧虑有重大的经济和社会效益。

参考文献:

[1] 胡国海.可穿戴生命体征检测仪及监测方法[P].中国专利,CN201410491676.5.2015.2.18.

[2] 滕晓菲,张元亭.移动医疗:穿戴式医疗仪器的发展趋势 [J].中国医疗器械杂志(ISTIC),2006,30(5):13-15.

[3] 赵蕴博.一种腕式生命体征监测装置及其监测方法[P].中国专利,CN10341720202A.2013.12.4.

[4] 俞渺.腕表式生命体征监测报警装置及方法[P].中国专利,CN201210368660.6.2012.12.26.

[5] 杨龙频,周林,陈阳阳,等.依托无线物联网技术的实时医疗健康监测系统[J].中国卫生信息管理杂志,2013(6),23-28.

[6] 西藏民族学院.基于GPS/GPRS的移动式生命体征远程监测装置[P].中国专利CN201220574926.8.2013.4.24.

[7] 鲍淑娣,张元亭.远程医疗:穿戴式生物医疗仪器 [J].中国医疗器械信息,2004,10(5):34-36.

[8] 陈柏炜,刘静.浅析可穿戴式治疗系统[J].科技导报,2008,26(11):42-46

[9] 郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009:20-45.

[10] (林登).C专家编程[M].北京:人民邮电出版社,2008:247-250.

[11] (美)里科.C和指针[M].北京:人民邮电出版社,2008:325-343.

[12] (加)布兰切特,(英)萨摩菲尔德.C++GUI QT4[M].北京:电子工业出版社,2013:23-45.

[13] (美)普拉达.C++Primer Plus第六版[M].北京:人民邮电出版社,2012:340-419.

[14] 王峰, 宣伯凯,杨鹏.基于Android的家庭移动医疗监护系统的设计[J].计算机测量与控制,2015,23(5):3-41.

[15] 余志龙.Google Android SDK开发范例大全.北京:人们邮电出版社,2009:47-65.

猜你喜欢
可穿戴设备Android系统
基于汽车用户行为研究的矫正司机开车姿势穿戴设备设计