基于Android的低功耗移动心电监控系统的设计方案
1.引言
随着当前信息技术和医疗水平的不断发展以及人们生活水平的不断提高,越来越多的人们对个人及家庭的健康护理提出了更高的要求,希望能够随时了解自己的身体健康状况,并尽早发现病症、解决问题。目前传统的Holter系统体积大,使用不便的缺点也给人们的日常使用带来了很大不便。因此,利用最新的无线传感网与微处理器技术,设计实现一个可长期在线且具有无线移动监控能力的移动心电信息采集监控系统具有很高的实用价值和市场潜力。
本文通过研究人体心电信号的各项主要特征和实际监测应用需求,设计开发了一套无线传感心电信息监测系统,该系统通过嵌入内衣穿戴的智能电极对心电信号进行采集处理,并通过目前已成为移动设备标配的蓝牙无线数据网络将心电数据发送至Android智能监控终端进行接收数据的存储、管理和分析。
2.系统设计的总体结构
系统总体结构框图如图1所示,包括嵌入内衣的心电图导联、智能电极信号处理电路模块、以及配置有蓝牙的智能Android终端应用,其中智能电极信号处理模块包括模拟信号调理电路、微处理器电路和无线蓝牙网络模块以及可在模块上扩展体温传感器和血氧探头等,进而扩展生命健康监测参数。
图1 系统总体结构
本系统首先将嵌入内衣的导联电极采集的心电信号送往智能电极中信号处理电路模块中,由模拟信号调理电路进行滤波放大。
信号经调理之后经A/D转换送给主控微处理器分析预处理。之后经无线蓝牙网络通过无线信道送给配置有蓝牙的智能Android终端应用进行诊断分析以及监控显示。当发现异常时,终端应用发出警报并可将结果通过移动互联网发送至远程医疗中心。
由于智能电极中模拟信号调理电路不是本文对系统设计所要重点阐述的部分,所以本文主要对数据分析预处理、无线蓝牙通信和Android终端应用程序设计做介绍。
3.智能电极控制软件设计
本系统采用TI公司MSP430G2553超低功耗微处理器构建中心处理单元。MSP430单片机在低功耗方面表现出色,支持快速休眠,大量节省系统能耗,并且在恶劣条件下工作性能稳定。所采用的G2553型号单片机加载有自主设计的危急特征提取算法,能够满足设计的需求。
如图2所示为智能电极控制软件流程图。
图2 智能控制软件流程图
主要过程为在信号调理电路预处理心电模拟信号之后,超低功耗微处理器通过内置的10位AD转换模块(采样精度为3mV)对模拟数据进行采集和转换,采样周期为5ms,并将转换后的数据取高8位后通过与异步串口(UART)交由蓝牙模块通过无线蓝牙网络发出。
4.Android终端应用程序设计
4.1蓝牙数据接收模块设计
现代社会智能移动终端已经成为人们生活中不可或缺的一部分,而目前大部分以手机为代表智能移动终端都是以Android系统为操作平台并配置有蓝牙装置,因此为了满足人们日常生活使用的需求以配置有蓝牙的智能Android移动终端为数据处理和诊断平台来开发应用程。该应用程序以Java语言为主来进行开发。如图3所示为Android设备蓝牙数据接收模块设计。
图3 Android设备蓝牙数据接收模块框图
4.2 Android设备蓝牙传输的实现方案
蓝牙通信采用C / S通信模式。在设计时将接收端(Android设备)的蓝牙作为客户端,发送端(智能电极)蓝牙作为服务器端。
在蓝牙进行相互连接时,利用了数据通信中常用的Socket(套接字)机制。当两端的套接字相互连接好以后,收发双方的应用就可以将数据发送给自己的套接字,并从套接字处获取数据,双方的套接字则作为连接中转站一样,相互收发数据。下面对Android设备上蓝牙接收软件实现过程详细阐述。
首先开启A n d r o i d终端的蓝牙功能,Android终端蓝牙设备作为客户端需要主动搜索周围的蓝牙设备。这个搜索过程需要用到广播机制,即搜索发起端需要一个广播接收器,用于接收搜索信息。其建立的具体步骤为,首先定义一个继承BroadcastReceicer的类,用这个类生成的实例就具备了对接收信息的操作能力,可以获取需要的信息,比如蓝牙设备名称和MAC地址。经过设置,该广播接收器只对发现了蓝牙设备这一消息和蓝牙搜索结束这两条消息响应,并且完成了广播接收器在本应用中的注册。用户在使用时,只需要点击“搜索”按钮,终端设备开始搜索周围蓝牙设备,整个搜索过程将耗时12秒。这个过程中,本地蓝牙适配器会搜索到周围所有可以连接的蓝牙设备,将这些搜索结果以列表的形式呈现在屏幕上,供选择。连接开始前,首先关闭蓝牙搜索功能。
在系统库中有BluetoothSocket类,利用这个类生成相应的实例便是接收端蓝牙的套接字,如果该蓝牙是作为服务器来连接的,则利用系统类BluetoothServerSocket来生成套接字对象。在连接之前需要预先设置好UUID,然后由Android智能终端发起连接请求,这里需要调用BluetoothSocket类中的connect()方法,作为服务器端的蓝牙设备监听到连接请求后会验证其UUID是否与自己的一致,验证通过后便可以完成连接了。需要特别注意的是,在这个过程中,连接过程是一个阻塞调用过程,为不影响主线程的工作,需要一个单独的线程来进行连接工作。
等待蓝牙连接完成后,便可以进行数据传输。在蓝牙间的数据传输是由蓝牙模块自动按照蓝牙协议栈的要求进行的,而在智能电极端从微控制器到蓝牙模块以及在Android终端从蓝牙设备到应用程序的数据传输都是按照URAT异步串口通信方式进行的数据传输。在设计中所设置的数据传输格式是以一个字节长度为一帧来传输的,其中有7位数据位和1位奇偶校验位共同组成。所以接收端所接收的数据都是以字节为单位来存储的。在这个通信系统中,还加入了对接收数据的另一数据检错方案。数据的收发并不是将采集数据直接转换成二进制的串行数据进行传输的,而是将这些数据转换成所对应的ASCII码再转成串行数据再进行数据的发送,这样在接收端接收到数据后,会将这些数据转为ASCII码,如果这些ASCII对应的不是数字或是已超出ASCII码范围,则认为是错误的数据,将其丢弃。这样做了之后,结合奇偶校验,只有低三位同时有两位都传输错误的数据不能被监测出来,出现这种情况的概率比较小,并且蓝牙传输距离短,传输环境并不算恶劣,这样的检错能力已经足够了。数据接收过程也是一个阻塞调用的过程,所以同样需要一个单独的线程来完成。
接收到的数据,全部转换为数字的形式(振幅信息)存储起来,供心电图的显示提供数据支持。Android蓝牙传输软件流程如图4所示。
图4 Android蓝牙传输软件流程图
评论