基于Android系统的心电采集系统研究
2015-05-30戴初举杨炎祥林玉霓
戴初举 杨炎祥 林玉霓
【摘要】 由于近来电子技术的迅速发展,便携性医疗电子需求逐渐增大,促进了移动医疗系统的发展。基于Android系统移动终端因其灵活的自定功能、较强的运算处理能力,推动了医疗电子的便携化和智能化,而智能终端的迅速普及更是为移动健康医疗系统带来了很大的发展想象空间。我们项目小组在心电(ECG)数据采集前端的基础上设计添加BLE蓝牙模块CC2451,移动智能端采用自身蓝牙,通过BLE协议通信,实现在 Android手持端显示心电图和数据储存。
【关键词】 Android 医疗电子 BLE 心电(ECG)
引言
中国经济的惊人增长速度,使中国国民更加关注自身健康状况,现代信息技术用来改善健康监测系统已是必然。与此同时,基于手机等移动智能设备的移动医疗健康系统,因其灵活、便携带原因,更是加速了医疗和移动通信产业的有效结合,将使得移动医疗设备不断增多。
而心电的检测有助于在急救中及时对突发的病症进行治疗。并且生理数据的长期监测可以为用户提供宝贵的护理信息,不仅有一定的临床参考价值,还为未来的远程医疗的实现提供可能。
一、系统结构
本文提出的ECG采集系统可分为Android设备终端和采集模块。
心电检测采集模块由前置放大、四阶低通、一阶高通和主放大四部分组成。采集到的数据通过蓝牙BLE 4.0传输给Android设备,并在Android智能端蓝牙Socket接口得到数据并进行处理。再经过应用软件开发完成信号波形的显示。如图1。
1.1数据采集处理
心电信号有波形小、噪声干扰大等特点,因此采集的心电信号须经放大和多次过滤处理[1]。本文采用ADS1298R芯片,是TI公司专门为生理信号采集而设计的芯片,其集成了8个独立的模数转换模块,同时还集成了8个程控差分输入放大器、右腿驱动、Wilson电阻网络等,通过结合高精度的模数转换和将基线漂移、工频干扰等噪声处理放到模数转换后的数字处理部分,可以简化数据采集前端的设计。一般心电信号的幅值在10μV-4mV,若放大倍数不够,就要求系统的电压分辨率较高。
倘若分辨率不够,则通常要对信号进行20000倍左右放大;正常的心电信号频率范围为 0.05-100Hz,采集心电时,高频干扰有很大影响,那么需要放大器具有较高共模抑制比(CMRR),前置放大电路将传感器采集到的心电信号低失真放大,得到高共模抑制比、低漂移的电信号,即可满足设计要求;四阶低通滤波电路消除50Hz频率的工频信号;另外从抑制基线漂移和带外噪声以及保护器件考虑,需要对输入信号进行限幅与滤波,高通滤波电路消除频带意外的肌电等信号。
再经A/D转换,得到心电数字信号,再通过蓝牙BLE协议传输给Android移动端,并对接收到的心电数据进行分析处理、存储。心最后对通过开发的APP对心电的波形进行显示。
1.2 蓝牙4.0协议栈介绍与开发
本系统使用的是TI的BLE4.0 CC2541蓝牙芯片,其使用高性能,低功耗的8051内核,刚好解决了便携式设备的低功耗问题要求。BLE协议栈结构如图2。
1)物理层(PHL):即射频和电路部分,进行IEEE地址分配。
2)链路层(LL):可以通过对寄存器的设置控制物理层,并控制设备协议栈的状态。设置主机或从机角色。
3)主/控接口层(HCI):提供标准蓝牙的事件和命令接口以及上下层通信。
4)逻辑链路控制和适配层(L2CAP):负责逻辑链路连接和数据分发。
5)安全管理层(SM):负责配对及加密等安全性工作。
6)GAP层:用于设备查找、连接建立、广播发送接收的一些控制。
7)ATT层:将数据暴露给其他设备,所有数据传输都是通过它实现。
8)GATT层:基于ATT层的Profile,用来具体实现数据传输。
连接过程为:Peripheral开启广播—>Central扫描从机广播—>Peripheral接收到Central的扫描请求,Peripheral向Central发送扫描回应数据—>Central向Peripheral发起连接-->开始通信。
蓝牙作为低功耗、低成本的无线标准,Android提供了大量可以管理蓝牙通信的API,通过这些API可以实现蓝牙设备间的无线连接,建立点到点、点到多点通信模式。
二、软件设计
Android操作系统在4.3以上版本中添加BLE4.0的功能,本方案采用5.0版本智能设备作为开发平台。Android系统的结构主要分为四层[2],从低到高分别为Linux内核层、系统运行库层、应用框架层和应用层。
本文采用的是window7系统,系統开发所需要的软件为:JDK , Eclipse, Android SDK, ADT。Android应用程序由四个模块组成:Activity 、Intent 、Content 和Service[3]。软件流程如图3。
Android智能端通过蓝牙接收到心电数据后,就可以对数据进行初步处理,首先利用File文件存储心电数据,之后进行波形绘制和心率计算,本研究使用选择定时器TimeTask、多线程的技术来实现波形的绘制,波形绘制和心率计算分别在不同的线程中实现。TimeTask属于Java自带的定时器类,需用的两个包是:Java.uti.Timer;Java.uti. TimerTask,本文就用Java.uti.Timer来实现接收心电数据流,再分给不同的线程来进行数据处理。
2.1 智能端通信实现
Android平台通过三种网络接口进行通信,本研究选择标准的Java接口来实现Socket通信和HTTP通信,标准的Java接口中Java.net*提供与联网有关的类,包括流和数据包套接字、Internet协议、常见HTTP处理。
本文采用面向连接的Socket通信,这种方式Socket可以是一个流接口进行开关和读写操作,所有发送的数据在另一端同步被接收。Java在Java.net包中提供了两个Socket和ServerSocket,前者为双向链接中的客户端,后者为服务器。在建立连接后,利用Socket提供的getInputStream()和getOutputStream()得到对应的输入和输出流,就可以进行读写数据操作:
OutputStreamoutStream=socket.get.getOutputStream();
RandomAccessFile fileOutStream=new RandomAccessFile(u ploadFile.”r”);
While((len=fileOutStream.read(buffer)) !=-1)
outStream.write(buffer,0,len); fileOutStream.close(); outStream.close();
上面程序中设置采集到的生理参数数据文件为uploadFile。通过Socket类中的getOutputStream()得到输出流。
三、研究结果
以上详细介绍了基于Android平台心电监测系统的设计,经过实际测试,可以成功采集心电信号,下图4,图5为心电采集系统采集到的心电信号在Android平板电脑诺基亚N1上显示的实际波形。
从检测结果可以看出,显示的心电图包含历史记录,便于用户对比查询,图形较为准确,有一定的临床参考价值。
四、总结与展望
本系统设计采用TI公司的蓝牙4.0超低功耗CC2541作为控制芯片,配合Android操作系统的智能移动设备来处理、显示和存储数据,测量数据准确可靠能实现对病人的长期监测和有效治疗。随着智能移动医疗产业的发展,将来会有更多的智能监测系统诞生,在未来的云计算和云存储的技术背景下,各种医疗设备将借助大数据来实现长期监测以分析各
种病症的变化趋势[4-5]。
参 考 文 献
[1] Chin-Teng Lin, Fellow, IEEE, Kuan-Cheng.An Intelligent Telec –ardiology System Using a Wearable and Wireless ECG to Detect Atrial Fibrillation[C].IEEE TRANS ACTIO -NS ON INTOFMATION TECHNLOGY IN BIOMEDICINE. 2010:726-733
[2] Ed Burnette.Hello, Android:intro-ducing Google`s mobile development platform [M].北京:人民郵电大学出版社;2009:1-4
[3] 杨丰盛. Android应用开发揭秘[M].北京:机械工业出版社;2010:7
[4] Jun S J,Myllya R, Chung WY. Wireless machine-to-machine healthcare solution using Android in global network [J].Sensors Journal , IEEE, 2013, 13(5): 1419-1424.
[5] Chung WY , Yau C, Shin KS. A cell phone based health monitoring system with self-analysis processor using wirless sensor network technology[A]. Engineering in Medicine and Biology Society[C]. Lyon,France .2007:3705-3708