基于Raspberry Pi的家庭健康监测网关①
2019-01-07王怀军高茜茜付静飞李军怀
王怀军,高茜茜,付静飞,李军怀,王 侃
1(西安理工大学 计算机科学与工程学院,西安 710048)2(陕西省网络计算与安全重点实验室,西安 710048)
随着我国人口老龄化的加速和亚健康人群的不断增多,人们对自己及家人的健康状况越来越重视,对健康监测服务的需求也不断增加.心率、血压、血糖等生理数据中包含了人体健康状况的重要病理信息,因此,需要通过健康监护模式对这些生理指标进行长期跟踪和监护.可穿戴设备、健康管理软件等为“互联网+医疗”提供了全新的技术手段,通过监测老年人生理数据,可帮助用户持续了解自身的健康状况,做好疾病预防,降低医疗机构压力.
欧美等发达国家早在上世纪七十年代就开始在健康监测领域进行研究,各大企业和研究机构相继推出健康监测方面的产品.MIT Media Lab 的 LiveNet[1]系统通过对帕金森和癫痫病患者的心电图、血压、血氧等生理数据进行长期的实时监测,使用建模和识别方法分析患者的健康状态,并及时将健康信息反馈给患者.LifeGuard[2]系统是21世纪初一个非常著名的健康监测系统.它主要使用可穿戴检测设备,监测船员生理健康数据.LifeGuard系统可持续监测并报告船员的血压、心率、血氧饱和度及体温等数据,此外还可实时监测和报告船员的身体姿势和心电图数据.该系统使用蓝牙方式将上述数据传输至固定的基站进行处理,若某项生理参数超过传感器预设生理参数阈值,可通过报警方式及时告知船员.CodeBlue[3]系统,设计并实现了硬件和软件平台,用于监测和报告病人生理数据.其监测的生理数据包括血氧、心率、心电图和肌电图.MyHeart[4]系统是一个欧盟的综合项目开发的,旨在预防和监测心血管状态的智能系统.与MyHeart系统类似,Wealthy[5]项目、Mermoth[6]项目同样将多种传感器放入特质的衣物中,来监测人体心电和呼吸数据,用于常见的健康监护.Miramontes R 等人[7]提出的PlaIMoS系统,使用可穿戴设备监测与慢性呼吸系统疾病相关的血氧饱和度、呼吸率、体温等参数,并通过蓝牙方式将数据传输至网关,之后通过无线网将数据传输至数据服务器进行处理,最终在Windows系统和Android 系统中进行实时显示.Serhani MA 等人[8]提出了一种端到端的移动监测架构SME2EM,该架构利用定制的头戴式设备采集生理数据实现对终生残疾的患者的自动监测和可视化监控,并在数据集成、移动资源优化以及数据可视化等方面进行了深入研究.
在网关方面,Emara KA[9]、Zhu Q 等人[10]提出了用不同协议(如ZigBee、蓝牙和以太网)将传感器网络连接到 Internet的网关.Rahmani AM 等人[11]提出了一种智能电子网关,该网关支持各种无线协议并负责设备间的通信,提供多个高级服务(如数据过滤、数据压缩、数据融合、数据分析等).Mittek M等人[12]开发了Angelos网关,为快速支持网络的应用程序开发提供了一个基于套接字的环境.
虽然在健康监测领域已有较多研究,但应用在家庭健康监测方面的研究较少.为实现对常见慢性病的长期监护和跟踪,并对监护对象的生理数据进行便捷的采集、处理、传输,本文研究并实现了家庭健康监测网关.本文章节安排如下:第一部分介绍了网关的总体设计.第二部分对系统进行实现与测试.最后对全文进行了总结.
1 家庭健康监测网关总体设计
家庭健康监测网关可以通过蓝牙心电仪、血压计、血糖仪和血氧仪等便携式生理检测设备采集人体生理健康数据.系统基于 Raspberry Pi硬件平台,实现对生理数据的自动采集和对健康检测设备的统一管理.
Raspberry Pi(简称 RPi,或者 RasPi/RPi)是一块基于ARM芯片的微型计算机主板,它由以埃本·阿普顿(Eben Epton)为首的英国慈善组织“Raspberry Pi 基金会”开发,并于2013年3月正式发售.由于其拥有与PC机相似的基本功能,且价格便宜、外形较小,能较好的满足基本需求,因此本文基于Raspberry Pi开发家庭健康监测网关.
1.1 总体结构
家庭健康监测网关主要功能包括:使用蓝牙方式与便携式生理检测设备进行通信,获取人体生理健康数据;对生理检测设备发送的数据包进行解析、处理;对生理数据进行封装,使用TCP协议将数据发送至数据通信服务器,并将其存储至数据库.根据以上功能需求,设计家庭健康监测网关总体结构如图1所示.
图1 健康监测网关总体结构
由图1可知,家庭健康监测网关主要包含蓝牙通信、数据解析、数据传输和存储、以及网关主程序四个模块.蓝牙通信模块主要负责与蓝牙心电仪、血压计、血糖仪和血氧仪等生理数据检测设备进行通信,包括蓝牙设备的扫描、配对,蓝牙服务匹配以及数据的接收和发送等功能.数据解析模块主要用于解析不同类型的生理数据和控制消息.由于不同的生理检测设备使用的数据格式(协议)的差异(主要体现在其携带的具体的生理数据格式差异),因此需要对不同设备发送的数据包进行单独解析.数据传输和存储模块主要负责将人体生理数据封装成特定的数据传输协议格式,并使用TCP方式将数据发送至数据通信服务器进行处理.在此过程中,若家庭健康监测网关未接入网络,或数据传输过程发生错误,则会将封装完成的数据包保存至本地缓存文件中,待设备接入网络后进行传输.网关主程序模块主要负责对上述功能模块进行调度,以确保家庭健康监测网关为监护对象提供便捷的生理数据采集和传输服务.
下面对网关应用的主要技术进行介绍.
1.2 网关主程序模块
家庭健康监测网关主程序模块是整个网关应用程序的核心,负责使用蓝牙通信模块扫描生理检测设备,接收监护对象生理健康数据.当生理数据解析完成后,使用事件管理器触发数据传输模块上传生理健康数据.
网关详细流程图,如图2所示.
图2 主程序模块流程
当网关程序启动后,首先,通过 binding_event()方法,将upload_data()方法注册为数据上传事件处理函数,负责上传生理健康数据;之后,启动蓝牙服务线程,利用start_bt_srv()方法中扫描蓝牙设备,发现蓝牙服务,并获取生理健康数据;最后,当接收到监护对象采集的生理健康数据后,使用send_event()方法触发数据上传事件,并上传生理健康数据.
1.3 蓝牙通讯模块
蓝牙通信模块是整个家庭健康监测网关最基础的部分,主要负责使用蓝牙方式与生理检测设备进行数据通信.蓝牙通信模块包括设备配对、服务发现、数据传输等.数据传输模块详细的流程图如图3所示.
图3 蓝牙模块数据处理流程图
上述过程中,生理检测设备使用串行方式接入网关,主要依据是:4种蓝牙设备当数据准备就绪后,若无网关接入,将等待 1 分钟时间;同时,设备数据采集时间均大于等于30秒,而数据传输和上传的总时间均小于 15 秒.因此,若 4 台设备同时进行数据采集,则仍可在有效时间内传输至网关设备.
1.4 数据传输模块
在家庭健康监测网关对接收到的用户生理数据进行解析后,需将该数据上传至数据通信服务器进行处理.数据传输模块主要功能是按设计的数据传输协议,使用TCP方式传输生理数据.此外,若网关设备未接入网络,则需对数据进行本地存储.
在数据传输模块中,首先,会对生理数据按照与数据通信服务器约定的协议格式进行封装.之后,判断网络状态,若当前网关设备未接入网络,则会将封装完整的数据包写入本地缓存文件;若已接入网络,则进入数据传输过程.
在进行数据传输时,会首先检查本地文件是否有缓存数据,若有数据,则将优先发送缓存数据,之后传输当前数据包;若无缓存数据,则直接对数据进行发送.在数据发送过程中,若发生错误导致传输过程终止,网关会将未发送的数据保存至文件中.最后,当数据上传结束后,将等待一小段时间,以接收服务器的错误重传消息,若接收到重传请求,则将重新发送指定的数据记录;若未接收到该消息,则断开与服务器之间的TCP 连接.至此,整个传输过程结束.数据传输模块处理示意图如图4所示.
图4 数据处理模块示意图
数据传输模块的实现主要分数据组装、本地缓存和数据传输三个部分.
(1)数据组装
数据组装分为生理数据组装和传输数据包组装两个过程.针对不同的生理数据类型,其组装的格式也不同.以心电数据为例,生理数据组装基本格式如图5所示.
图5 生理数据组装格式
如图5中,Type字段用于标识设备类型,该字段与蓝牙通信协议格式中LQI字段对应.MAC字段为蓝牙设备物理地址,系统使用该地址进行用户识别.Length字段对数据长度进行标识,该长度仅表示数据体中包含多少个数据区域,用于数据通信服务器进行数据解析.Datetime字段用于记录该条生理数据的采集时间.Data字段为真正的有效生理数据区域,该字段包含数据编号UUID和生理数据区域.UUID是36位唯一识别码,用来标识每条数据记录,该字段可用于在发生错误时进行数据重传.生理数据区域针对不同类型的生理数据,其表示格式不同,如血氧数据仅包含血氧饱和度一个字段,而心电数据包含心率和心电波形两个字段.
当对生理数据部分组装完成后,还需将数据组装成与服务器约定的通信协议数据包格式,该部分协议格式主要由服务器端约定.
(2)本地缓存
该部分功能主要用于家庭健康监测网关在未接入网络的状态实现对用户生理数据的存储.当需发送的数据包组装完成后,首先判断网关的网络状态,若未接入网络,则将数据包写入本地文件中.当网关接入网络并进行数据传输时,将首先检查缓存文件有无待发送数据,若有缓存数据,则将优先发送缓存数据,再进行之后的数据传输.当缓存数据被读取之后,该文件将会被置空.此外,在数据上传过程中,若出现传输错误,未被发送的数据将写回缓存文件中.
(3)数据传输
数据传输部分,使用TCP协议与服务器进行通信,上传用户生理数据.当网关采集到用户的生理数据并进行上传时,需要与服务器建立新的TCP连接,之后再进行数据传输.在进行数据传输时,网关会首先发送“开始上传”命令,之后进行生理数据传输;当生理数据传输结束后,会发送“上传结束”命令,告知服务器数据传输完成.当数据传输结束后,网关设备将等待10秒,接收服务器发送数据重传命令,若等待超时,网关设备将直接断开与服务器的TCP连接.
2 系统实现与测试
网关使用Raspberry Pi的蓝牙模块与多种便携式生理数据检测设备进行数据通信,并使用有线/无线模块与服务器进行数据传输,上传生理检测数据.
2.1 软硬件开发环境
(1)硬件环境
网关主要基于 Raspberry Pi硬件平台,在Raspbian操作系统中使用Python语言进行开发.为方便家庭健康监测网关的开发,本系统选择使用蓝牙方式进行数据传输的生理检测设备,包括蓝牙心电仪、血压计、血糖仪和血氧仪等设备.网关及健康检测设备实物如图6所示.
图6 Raspberry Pi健康网关及健康检测设备
(2)软件环境
家庭健康监测网关设备应用程序开发所使用的软件开发环境如表1所示.
表1 健康监测网关软件开发环境
2.2 系统功能测试
由于健康监测与服务系统功能较多,本部分将以监护对象的心电数据采集、传输及展示过程为例,对系统整体进行功能性测试.
(1)家庭健康监测网关
该系统的测试过程如图7~图10.首先保证各部分连线正确,同时蓝牙模块正常工作.打开蓝牙心电仪,双手持卡,倒计时6秒后开始测量,采集过程中保持自然呼吸.采集结束后启动家庭健康监测网关,进行自动搜索设备,如图7所示.
图7 设备搜索
网关搜索到设备后,自动接收数据并进行解析,如图8所示.
图8 获取数据
解析结束后,在界面上显示用户生理数据测量结果,同时,网关自动将用户的测量结果上传至通信服务器,如图9、图10所示.
图9 测量结果
图10 数据上传
(2)健康监测与服务应用软件系统
应用软件系统分为Web应用和Android APP两个部分,本次功能性测试将以监护对象使用APP,健康医生使用Web应用系统分别查询采集的心电数据.其中APP部分测试界面如图11(a)、图11(b)所示.
Web部分测试界面如图12所示.
经测试,Web应用和 Android APP应用程序中数据的查询、统计分析等功能都可正常响应.
图11 Android APP 运行截图
图12 Web 运行截图
3 结束语
本文主要实现了家庭健康监测网关.该网关使用蓝牙协议与监测设备进行通信,实现了对监护设备的集中管理和对生理数据的自动采集,使监测过程更加便捷.实验表明,该网关可以正常完成数据采集和数据通讯等工作,为“互联网+医疗”应用至千家万户提供了必要的终端支持,在关注独居老人健康、减轻社会医疗压力等方面具有重要的意义.