基于J2ME的脉搏波测量系统设计
扫描二维码
随时随地手机看文章
摘要:为降低成本、提高便携性和二次开发性,设计了一种基于J2ME的脉搏波测量系统。与传统设备昂贵且笨拙的有创测量脉搏信号系统的仪器相比,该方案采用了无创光电容积脉搏波法,使用简易、低成本、通用性高的C8051F330单片机作为信号采集控制单元,在蓝牙手机上使用J2ME显示和存储脉搏信号。结果表明,系统数据误差控制在10%以内,并且系统的成本降低50%以上、体积减少5%以上、二次开发程度高。
关键词:J2ME;蓝牙;C8051F330;光电容积;脉搏波
在我国传统医学中,脉诊在中医诊断中占有重要地位,脉诊就是从脉搏信号中感知人体的病理信息。随着现代科技的发展,特别是信号检测处理技术及计算机技术等信息技术的发展,人们对脉搏信号的检测分析进行了很多有意义的研究。脉搏波可看成主要是由心脏的收缩与舒张以及血液在沿血管的流动过程中所遇到的各种阻力相互作用而形成的,其中包含了丰富的人体内各器官的生理和病理信息,具有干扰强、频率低、采集困难等特点。准确地检测脉搏信号对于预防心血管系统疾病的发生以及对诊治过程给予科学合理的指导、提高人们身心健康水平、提高人民生活质量均具有重要的科学和社会意义。
传统检测血氧脉搏信号普遍采用大型医疗设备,这类设备一般由传感器有创采集信号,有线传输显示在仪器面板上,受测者感觉痛苦并且仪器成本昂贵且携带不方便,无法做到随时随地进行监测。该系统采用无创光电容积脉搏波描记法配合J2ME开发检测程序,不仅成本低廉、便于携带,而且还开发了数据库存储功能,将血氧脉搏信号通过蓝牙技术无线传输,手机端接收并记录每次检测的脉搏数据便于用户对比判断自身一段时间内的健康状况,同时在手机端实时显示数据。其通用性和实用性以及便携性都有很大的提高。
1 系统基本原理
光电容积脉搏波描记法(Photo Plethyamo Graphy,PPG)是借光电手段在活体组织中检测血液容积变化的一种无创检测方法。当一定波长的光束照射到指端皮肤表面时,光束将通过透射或反射方式传送到光电接收器。在此过程中由于受到指端皮肤肌肉和血液的吸收衰减作用检测器检测到的光强度将减弱。其中皮肤肌肉组织等对光的吸收在整个血液循环中是保持恒定不变的,面皮肤内的血液容积在心脏作用下星搏动性变化,当心脏收缩时外周血容量最多,光吸收量也最大,检测到的光强度量小,而在心脏舒张时正好相反,检测到的光强度量大,使光接收器接收到的光强度随之呈脉动性变化。在恒定波长的光源的照射下,通过检测透过手指的光强将可以间接测量判人体的脉搏信号。
2 系统硬件设计
系统由指端采集器和具有蓝牙传输数据功能的手机构成。指端采集器由Silcon Labs公司的C8051F330作为主控芯片,采集端使用940 nm红外发射管和光敏电阻,传输模块采用广州汇承信息科技有限公司生产的HC-05蓝牙串口通讯模块,显示与存储设备为含有蓝牙模块的手机。
整体设计结构图如图1所示。
2.1 采集与放大电路设计
人体血液中的氧合血红蛋白(HbO2)和没被氧合还原血红蛋白(Hb)对于不同波长光的吸收系数是不同的。在波长600~700nm的红光范围内,Hb的吸收系数比HbO2的大,而在波长800~1 000 nm的红外光范围内,Hb的吸收系数比HbO2的小,在805 nm处两者相同,在红光660nm和红外光940nm处吸收系数差异较大,目前,均采用该波长附近的红光和红外光进行双谱定量分析检测,并且在红光660 nm和红外光940nm附近,Hb和HbO2的吸收系数变化曲线都比较平坦,受二极管发光波长误差影响也较小,所以系统采用940 nm光源进行脉搏波的检测。采集及放大电路如图2所示。
光电传感器拾取的脉搏信号十分徽弱,仅为毫伏量级,所以要求前置放大电路满足下述要求:1)高输入阻抗。光电信号是不稳定的内阻变化的微弱信号,为了减少信号源内阻的影响,必须提高放大器输入阻抗,所以要求放大器具有高的输入阻抗;2)低噪声、低漂移。可以减小信号源的影响,增强信号的拾取能力,使输出稳定。R6为光敏电阻,用于接收来自红外管发射的脉搏信号。正常人体脉搏信号频率约在0.3~3.33Hz之间,电路中C4与R8、C3与R9分别构成RC高通滤波器,高通截止频率为约为0.33Hz,C2与R2构成低通滤波器截止频率约为3.4Hz,将有效频率范围外的工频干扰和其他高频干扰滤除。放大器采用LM358,其内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。第一级运算放大器从LM358的第5脚输入微弱脉搏信号,在其第7脚获取放大信号,根据运算放大器公式计算可知一级放大8.5倍,然后通过0.3 Hz的高通滤波器,消除第一级放大产生的噪声,进入二级放大,可以计算出二缓放大100倍,因此获取850倍的放大能力,获取到3 V之内的脉搏波信号,且其处于放大而不是截止状态。
2.2 主控电路和蓝牙模块电路设计
主控芯片采用PDIP-20封装的C8051F330单片机,易于焊接,其使用Silicon Labs的专利CIP-51微控制器内核。CIP-51与MCS-51TM指令集完全兼容,可以使用标准803x/805x的汇编器和编译器进行软件开发。CIP-51内核具有标准8052的所有外设部件,包括4个16位计数器/定时器、一个具有增强波特率配置的全双工UART、一个增强型SPI端口、768字节内部RAM、128字节特殊功能寄存器(SFR)地址空间,仅使用简单的外部电路便可以搭建系统。
HC-05模块采用的是CSR BC417143B蓝牙芯片,同时内置8 M Flash。具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(MASTER)、从(Slave)和回环(Loopback)3种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行AT命令。通过控制模块外部引脚(PIO11)输入电平,可以实现模块工作状态的动态转换。
这里使用其P0.4与P0.5口作为UART传输口,与蓝牙模块的UART口通信。
Sout为经过采集和放大电路输出的脉搏信号,输入到C8051F330的P1.7进行A/D转换,C8051F330与HC05的UART口对接,将采样和滤波以后的信号传输给蓝牙模块。开关S1用于蓝牙模块复位,二极管D2用于显示蓝牙模块状态。当没有数据传输时D2熄灭,当有数据传输时D2闪烁。电路如图3所示。
3 系统软件设计
整体系统软件设计包括单片机端的输入信号采样滤波和蓝牙程序、手机端的J2ME蓝牙客户端程序设计两大部分。
3.1 单片机端滤波设计
由于人体呼吸、电极移动会产生脉搏信号中的基线漂移干扰,频率较低,一般在0.7 Hz以下,属于低频干扰,为了获取较好的效果必须尽量消除其影响。人体脉搏波信号为准周期的时间序列,在不同周期的同一相位,其脉搏波的幅值近似不变。如果局部脉搏波在某一时刻发生突变,则这一时刻其幅度必不等于其临近脉搏波同一相位幅度,根据这一思路,中值滤波的方法处理效果比较好。中值滤波法能有效克服因偶然因素引起的波动干扰,对温度、液位变化缓慢的被测参数有良好的滤波效果,因此首先采用中值滤波法尽量消除突发扰动。其基本方法是连续采样N次(N取奇数),把N次采样值按大小排列然后取中间值为本次有效值。
移动平均滤波对快速周期性运动干扰有较强的抵御能力,是对模拟滤波补充的低通滤波器,用于实时检测,只要采样率足够高,就能得翻较为理想的测量结果。因此系统在中值滤波后再加一级移动平均滤波对数据进行二次滤波。
具体算法是:
y(i)=c1y(k)+c2y(k-1)+…+ciy(k-m+1) (1)
式中,y(k)表示第k次采样时刻的滤波输出,各y(i)表示第i次采样时刻的信号输入,括号中的数字i代表第i次采样时刻,c1、c2、…、cm是加权系数。
上式意义是将本次输入数据连同以前共m次的数据进行加权平均。如果各ci值相同且等于1/m时,就成为m项算术平均运算。
3.2 蓝牙设计
蓝牙协议栈提供了一组高层协议和API以完成发现服务和模拟串行I/O,还有一个关于包分割和重组的低层协议以及多路技术协议和质量服务。蓝牙协议栈如图4所示。
应用层(Application):这一层运行的是蓝牙通信的J2ME通信程序,通过调用蓝牙无线层的API,就可以直接书写相应的通信功能的程序。
蓝牙无线层(JSR-082):所有开发的API均在该层调用,与下层交互。
服务发现协议层(SDP):用于在远程蓝牙设备上寻找服务。服务器维护一张服务记录列表,每个服务记录都包含服务器上一个服务的信息,每个服务对应一个服务记录。客户端访问服务器时,首先要获得服务器的访问记录,然后通过服务记录建立连接。
逻辑链接控制器适配层协议(1.2CAP):为上层协议提供面向连接和无连接的数据服务,并提供多协议功能和分割重组操作,可传输和接收最大长度64 KB的L2CAP数据包。
虚拟串口协议(RFCOMM):基于L2CAP协议的虚拟串口协议,因为它允许蓝牙设备模拟串口的功能,所以采用它进行数据传输。
对象交换(OBEX):可以用来传输文件或者交换对象数据,OBEX协议是基于RFCOMM实现的。
主机控制器接口(HCI)层:这一层是主机和控制器之间的接口,其他所有的层都要经过HCI。
3.2.1 单片机蓝牙设计
单片机使用UART接口和蓝牙模块进行通信。HC-05为蓝牙透明传输模块,专为具有异步串口的用户提供快捷蓝牙点对点通讯。用户不需任何协议,就像有线电缆连接一样,只需对串口写入数据,就可以将数据传输到远端用户设备。上电后蓝牙主机模块复位、读蓝牙模块地址、设置状态参数和初始化模块,与远端的手机连接成功后,可以通过UART异步串口与从机通信。这里将HC-05设置为主机模式,经过初始化后提供蓝牙服务,等待手机端蓝牙客户端连接。
3. 2.2 手机端J2ME设计
J2ME(Java2 Platform,Micro Edition)是Sun专门为小型的资源受限的消费性电子设备的应用程序开发所提供新的Java版本,它广泛的使用于移动电话、PDA(个人数字助理以及电视机顶盒等众多小型资源受限设备中。对于J2ME来说,由于其得天独厚的跨平台性与良好的可移植性,使得其在设备繁多、平台异常混乱的手机与PDA市场更显得如鱼得水。
J2ME平台是由配置(Configurations)和简表(Profile)构成的。配置是提供给量大范围设备使用的最小类库集合,在配置中同时包含Java虚拟机(JVM)。简表是针对一系列设备提供的开发包集合。在J2ME中还有一个重要的概念:可选包(Optioual Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能,J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。程序流程图如图5所示。
设计过程如下:
1)构建基于MIDLet的Mobile主类,实现按钮监听,在其监听消息中响应手机左控制键退出(Cmd_Exit)和右控制键显示脉搏波(Cmd_Show)的命令。部分代码如下:
2)建立派生于GameCanvas实现按钮监听的Show类,画脉搏的函数名为DrawPulse用于将接收到的脉搏数据动态显示在屏幕上。部分代码如下:
3)建立Record类,通过RecordStore的方法addRecord,deleteRecord,getRecord存储,删除和显示收到的脉搏数据。至此整个J2ME的界面搭建完成。部分代码如下:
4)建立新类使其实现Punnable(多线程)。由于需要发送连接请求和接收数据,必须要将发送和接收过程使用多线程实现。导人输入输出数据流包循环接收数据。部分代码如下:
4 数据昱示与结果分析
考虑到自然光对测量的影响,将整个电路放置在不透光的小型圆柱形密封容器内(直径约5cm,高度约5 cm),中间打1.5 cm直径的孔,用于固定受测者手指姿态,顶部打0.5 cm的孔用于反向放置光敏电阻。分别将采集电路板、蓝牙传输电路板叠放并用泡沫固定。测试时用手指的指尖按住光敏电阻的表面,受测者可以较长时间保持稳定的姿态。受测过程中有时出现部分毛刺和基线漂移现象,但是不影响整体测量效果。测量结果为:脉搏波形平滑,噪声抑制良好,长时间观测达到稳定后能提供使用者健康状态评价参数,如图6所示。
5 结论
系统采用C8051F330单片机和J2ME蓝牙研制便携式脉搏波测量仪,相比传统的检测设备,采取了光电容积脉搏波描计法,结果误差控制在10%以内、成本降低了50%以上、体积减少50%以上,配合J2ME可方便地进行二次开发。同时系统在部分细节还有待提高,比如采用更加有效的滤波方法滤除脉搏波中的基线漂移等噪声、构建更加人性化的手机界面等等。在系统基础上使用J2ME二次开发邮件系统或者CPRS,构建远程社区医疗保健系统,将人体生理信号使用手机发送给医生进行远程诊断,会给用户带来极大的便利,显示出良好的使用前景。