基于安卓平台的心电远程监控系统
2016-05-14李莹刘炳言李昱钊杨丽芳
李莹 刘炳言 李昱钊 杨丽芳
摘 要本文设计了一种便携的基于安卓平台的心电监护系统。该系统由心电采集模块、单片机模块、蓝牙模块、安卓APP显示模块组成。心电采集模块采集到的数据通过单片机模块进行AD转换之后经由蓝牙模块将数据传输至安卓手机显示和分析,从而实现对心电图的观察,提供了一个可靠的家用健康监护平台。
【关键词】心电 AD转换 蓝牙 安卓
随着科技的发展和人们生活习惯不断变化,心脏类疾病的发病率越来越高且呈年轻化趋势发展,同时,患者需要能够进行日常康复工作、减少高额且不必要的医院监护。而目前的心电监护设备成本高,体积大,使用场所局限于医院。考虑到这些因素并结合目前智能终端设备迅猛发展的趋势,我们研发了基于安卓平台的心电远程监控系统,它具有低功耗、小体积、低成本,可便携等优点。
1 心电信号采集模块
心电信号采集模块主要是完成心电信号的采集和处理,对心电信号进行放大滤波之后传输给单片机。我们采用的是ADI公司新推出的一款用于心电及其他生物电测量的集成信号调理模块——AD8232芯片。主要是提取、放大及过滤微弱的生物电信号。因其低成本、低功耗、小尺寸等优势被广泛应用在便携式健身设备、远程医疗监护终端、等多种电子设备上。
AD8232芯片采用三电极单导联的方式完成信号的采集,采集信号包括左臂驱动,右臂驱动,大腿驱动(本文中不采用此电极,此电极主要用于改善系统的共模抑制性能)。通过连接到左臂驱动电极+IN和右臂驱动电极-IN贴在人体上进行心电信号的采集,在芯片外围电路添加电阻、电容等元器件并通过调试实现芯片内部功能部件的功能,从而实现模块滤波等信号处理等功能,最终将处理后心电信号通过OUT端即运算放大器输出端输出,连接到单片机AD转换引脚的输入端。
实验过程中根据实际情况适当调节电阻电容以更好的实现心电信号的采集及滤波等处理。
2 单片机模块
单片机应用程序的设计主要包括各端口和寄存器声明、各参数初始化、串口初始化、ADC初始化、读取模数转换结果、发送串口数据、PC显示结果、软件延时和主函数。STC15F2K60S2芯片可实现10位模数转换。主要实现过程如下:经过初始化串口和ADC来设置串口并对单片机进行初始化,此后进入主循环,即单片机从所选信号输入通道读取数据,利用函数对数据进行ADC转换后返回ADC结果,当前一个数据发送完毕后,输出当前数据。
3 蓝牙无线传输设计
3.1 蓝牙硬件模块的选择
我们选择BMX-03A作为蓝牙硬件模块,它是一款蓝牙转串口模块,可以通过串口来和单片机以及主控芯片连接,版本为2.0。该模块采用CSR BlueCore芯片,配置有8Mbit的软件存储空间,支持AT指令,用户可根据需要更改设备名称、主从模式、配对密码、串口波特率等参数,使用起来非常的灵活。
3.2 安卓环境下蓝牙模块连接的设计
安卓平台的蓝牙系统是基于BlueZ实现的,支持GAP、SDP和RFCOMM规范。由于我们是串口通信,所以主要利用蓝牙的RFCOMM协议来完成数据的传输。
其主要开发步骤如下:
(1)设置权限:在文件AndroidManifest.xml中声明使用蓝牙的权限,代码如下
(2)启动蓝牙:通过bluetooth.enable()打开蓝牙,并获取蓝牙适配器对象。
(3)搜索蓝牙:通过startDiscovery()方法搜索附近的蓝牙设备,为连接做准备。
(4)建立连接:通过蓝牙设备的MAC地址来建立连接。我们选择的是蓝牙串口协议SPP,其对应的UUID为00001101-0000-1000-8000-00805F9B34FB。
4 安卓手机端的应用程序设计
4.1 安卓平台的搭建及实现
Android是一个多任务的操作系统,可以多线程同时运行,以便能同时处理不同的功能。在本设计中,应用程序包含1个主线程和2个独立进行的子线程——读写线程和绘图线程。
4.2 读写线程的设计
在蓝牙连接之后,需要进行数据的通信。蓝牙上的数据读写主要是通过socket.getInputStream()和socket.getOutputStream()来实现的,构造方法如下:
publicReadWriteThread(BluetoothSocket socket, Context context) {
Log.i(MainActivity.TAG, "构造ReadWriteThread");
mmSocket = socket;
this.context = context;
InputStreamtmpIn = null;
OutputStreamtmpOut = null;
// 获得bluetoothsocket输入输出流
try {
tmpIn = socket.getInputStream();
tmpOut =socket.getOutputStream();
} catch (IOException e) {
Log.e(MainActivity.TAG, "创建sockets不成功", e);
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
4.3 绘图线程的设计
主要步骤如下:
(1)初始化画笔,画布:
Paint p = newPaint();
p.setColor(Color.BLACK);// 画笔颜色为蓝色
p.setStrokeWidth(linewidth);// 画笔的粗细
p.setAntiAlias(true);// 设置抗锯齿
p.setDither(true);//抖动处理
(2)绘制坐标线:
canvas.drawLine((counterAllPre-1)*width,indexTemp,counterAllPre* width,dataDraw[0], p);
canvas.drawLines(pts, p);
(3)将存储数据的数组转化成坐标(数据长度为4,即每四个数据刷新一次):
pts = newfloat[4 * (dataCount.length - 1)];
for (inti = 0; i if (i % 4 == 0) { j1++; pts[i] = (counterAllPre + j1) * width;} if (i % 4 == 1) pts[i] = dataDraw[j1]; if (i % 4 == 2) pts[i] = (counterAllPre + j1 + 1) * width; if (i % 4 == 3) pts[i] = dataDraw[j1 + 1]; } 5 心电信号监测结果显示 按照以上的步骤我们可以得到最终结果如图1所示。 6 结论 本文成功实现了Android 6.0平台下的心电远程监控系统的设计。使得日常生活中的心电检测监护成为可能。未来可以针对该系统进行更多有关心电监护的拓展诸如心脏问题预警、实时传送给医生进行病情分析等。随着人们对疾病和自身健康的日益重视以及手机app的不断发展,在移动互联网的不断推动下,各类生物信号检测及病情监控必将得到更加长足的发展,从而发挥出更加深远的作用。 (通讯作者:王振中 张祥雪) 参考文献 [1]刘一,任占兵.基于安卓手机的远程心电测量系统的设计[J].电子器件,2015,38(1):194-197. [2]彭保基.基于蓝牙及 Android 的便携式心电仪的设计与实现[D].吉林大学(硕士学位论文),2014. [3]卢潭城,刘鹏,高翔等.基于AD8232芯片的便携式心电监护仪设计[J].实验技术与管理,2015,32(3):112-117. [4]唐曙,罗武胜,鲁琴等.基于Android平台的USB通信技术研究[J].计算机测量与控制,2015,23(12):4123. 作者单位 北京林业大学理学院 北京市 100083