远程医疗是网络科技与医疗技术相结合的产物,随着我国经济的发展、科技的进步以及进入老龄化社会的需要,发展远程医疗已成为一种必然趋势。远程医疗从使用对象上可分为:面向医院的远程医疗系统和面向家庭的远程医疗系统。面向家庭的远程医疗系统的功能包括:远程“看医生”、远程监护、远程医学信息查询/咨询等。
国外的远程家庭医疗更加注重远程“看医生”,个人/ 患者在家中就可与医生进行实时语音、图像信息交流,可实现在线检测人体生理信号并给出诊断。这种系统是以视频会议系统为核心,但目前还难以在我国普及,原因一是该系统的价格太贵,一般家庭承受不起;原因二是受到通信信道带宽的限制,国外一般使用综合业务数字网(ISDN),而我国现在普及到家庭的是普通电话系统(POTS),尽管通过这也可实现双向视频传输,但在图像分辨率、每秒传输图像桢数等方面,难以达到远程医疗的要求。作为远程医疗的重要内容之一的远程监护,其传输的只是人体生理信号,其所需的通信速度通过普通电话线就可以满足。因此,考虑到我国互联网用户呈逐年增长趋势,发展远程监护更加符合我国国情。
系统结构与功能
系统采用B/S(Browser/Server,浏览器/服务器)模式设计,使用该模式的最大好处是减少开发工作量、运行维护比较简便。将B/S模式引入嵌入式网络设计,改变了过去需要同时开发上位机和下位机软硬件的做法,现在只需要在下位机(服务器端)的嵌入式设备中集成一个微型服务器,利用HTML(超文本标记语言)设计网页模块,就可在上位机(浏览器端)使用IE等浏览器接收和解析此模板,从而为用户提供一个视觉效果好、操作方便的工作界面。
首先基于ARM9处理器S3C2410A和嵌入式Linux操作系统,设计出支持嵌入式Web Server的开发平台,再通过移植嵌入式Web Server—boa,配合数据采集和处理等模块,构造一套适用于家庭的便携式远程医疗监护终端。在监护终端,利用生物电引导电极采用标准三导联方式将人体心电信号拾取出,经导联线传输到信号调理模块,经该模块的滤波、放大后得到初级的生物电信号,再经由S3C2410自带的ADC引脚送入Web服务器模块,心电信号在此模块中经过各种运算分析后得到反映心脏特征的信号, LCD上实时的显示心电波形和病人的个人信息,同时将心电信号存储于片外Flash ROM中,终端通过以太网口接入以太网,以实现与监控中心的远程交互。系统框图如图1所示。
图1 系统框图
硬件电路设计
信号调理电路模块
心电信号的检测是属于强噪声背景下的微弱信号检测,信号具有微弱、低频、高阻抗、不稳定和随机等特点。此信号的主要频率范围为0.05~100Hz, 幅值范围为0.5~5mV。微弱的心电信号还受到多种干扰,其特征被淹没在复杂的信号之中。又由于生物电引导电极在拾取人体电信号时与人体接触会产生极化电压。因此,为了满足检测要求,信号调理电路必须要较好的抑制各种干扰、不失真的放大心电信号。本设计中,信号调理电路模块主要包括前端电路、信号放大电路和陷波电路。电路框图如图2。
图2 信号调理电路框图
前端电路
前端电路作为信号调理电路的第一级,其功能主要是为了抑制环境中的干扰噪声、提高前置放大器的共模抑制能力。缓冲放大器一般采用电压跟随器实现,其缓冲隔离作用减小了生物信号源对放大器的过高要求,提高了电路的输入阻抗,减少心电信号衰减和匹配失真。使用屏蔽层驱动电路可以较好的去除导联线屏蔽层分布电容的不等量衰减造成对放大器总CMRR(共模抑制比)的影响。由于人体本身可通过各种渠道从环境中拾取工频50Hz交流电压,在心电测量中形成交流共模干扰,这种干扰常在几伏以上,采用右腿驱动电路后能够使50Hz共模干扰电压降到1%以下。电路图如图3。
图3 前端电路
信号放大电路
信号放大电路采用两级放大,如图4,差动放大U805为前置级,同相放大U809构成第二级。根据心电信号检测的特点,通常要求放大器具有高输入阻抗、高共模抑制比、低噪声、低漂移、非线性度小、合适的频带和动态范围的性能。前置放大器的输入电阻一般要求>2兆欧,输入电阻越大,因电极接触电阻不同而引起的波形失真越小,共模抑制比就越高。由于极化电压的存在, 为防止前置放大器工作于饱和或截止区,前置级的增益不能太高,实验表明放大10倍左右效果较好。因此选用仪表放大器MAX4196,该芯片可采用单电源供电,其功耗最低达到8mA,共模抑制比为115dB,输入偏移电压为50mV,-3dB带宽可达250kHz,输入阻抗为1000MW,增益固定为10(V/V)。
图4 两极放大和滤波电路
前置放大器部分总的共模抑制比为:
其中:放大器闭环差模增益,Ac:共模增益,CMRRD:运放本身的值;CMRRR:外电路电阻匹配精度限定的CMRR,d:电阻精度。因此在电路中,要精确匹配外电路电阻R812=R813,以使共模输出变得更小。
主放大器采用MAX4197(特性与MAX4196一样),其增益固定为100(V/V)。信号调理电路的总放大倍数为1000倍。在图4中,电容C805具有去除极化电压功能,并与电阻R820构成高通滤波电路,用于抑制直流漂移和放大器通带外的低频噪声。
陷波电路
工频干扰是心电信号的主要干扰,虽然前端电路和前置放大器已对共模干扰具有较强的抑制作用,但有部分工频于扰是以差模信号进入电路的,且频率处于心电信号频带之内,加上电极和输入回路不稳定等因数,前级电路输出的心电信号仍然存在较强的工频干扰,因此必须将其滤除。本设计采用的是无限增益多路反馈型二阶陷波器,电路如图5。
图5 陷波电路
嵌入式Web服务器模块
考虑本系统定位于家庭使用,且系统需要连续长时间工作,又由于系统需要良好的人机交互环境、存储大量数据以及支持网络通信,所以要求处理器具有功耗低、成本低、丰富的接口和支持操作系统。本设计选用ARM9处理器S3C2410A,S3C2410A主要面向手持设备以及高性价比、低功耗的应用上。其CPU内核采用的是ARM公司的16/32位ARM920T RISC处理器。ARM920T实现了MMU、AMBA总线和Harvard高速缓存体系结构,该结构具有独立的16KB指令Cache和16KB数据Cache。S3C2410A集成的片上功能主要包括:1.8V/2.0V内核供电,3.3V存储器供电,3.3V外部I/O供电;外部存储器控制器;LCD控制器提供1通道LCD专用DMA; 8通道10位ADC接口,转换速率最大为500KSPS(Kilo Sample Per Second,千采样点每秒);117位通用I/O口和24通道外部中断源;电源控制模式包括正常、慢速、空闲和掉电4种模式;支持NAND Flash的启动装载。
对心电信号采样精度的考虑主要出于对ST段异常分析处理的要求,ST段电平变化约为0.05mV,因此采样精度至少为0.025mV。当采用10位A/D转换器工作在正极性、满刻度电压为2.5V时,可分辨的最小输入电压为2.5mV,而信号调理电路放大倍数为1000倍,则输入端的最小分辨率约为0.0025mV,故S3C2410A具有的10位A/D的精度完全满足系统需求。
为了使用户能够直观的观察心电和便于控制设备,设计采用东华公司的TFT彩屏YL-LCD35套件用于人机交互界面。为满足移植操作系统以及存储心电信号、网页等数据的要求,系统外扩了64M的NAND Flash(使用一片K9F1208UOB)和64M的SDRAM(使用两片HY57V561620)。为满足终端联网的需求,选用CS8900A用于设计网络适配器,CS8900A是一个真正的单芯片、全双工的以太网解决方案产品,更方便的是在Linux内核中提供有CS8900A适配器的驱动程序。
电源部分
为增加安全性、降低功耗、节省成本,设计采用9V碱性电池供电,通过电源转换芯片AS1117-3.3将9V转换为3.3V可供给放大器芯片和S3C2410使用。
软件设计
软件设计主要包括Linux的移植,嵌入式Web Server-Boa的移植,CGI(通用网关接口)程序的设计,功能程序的设计。
图6 系统软件框图
Linux的移植
本设计采用linux-2.4.18内核。正确进行Linux移植的前提是具备一个与Linux配套、易于使用的BootLoader,它能够正确完成硬件系统的初始化和Linux的引导。本系统中采用vivi,它是由韩国MIZI公司提供的一款针对S3C2410芯片的BootLoader。
Linux内核的目录/arch中包含了所有与硬件体系结构相关的内核移植代码,目录/arch中的每个子目录代表了一种Linux支持的处理器。移植Linux到S3C2410平台主要是修改/arch/arm目录及其子目录下相关的makefile文件和配置文件。例如:修改内核根目录下的Makefile文件,指明要移植的硬件平台为ARM:ARCH:=arm,指明使用的交叉编译器CROSS_COMPILE=/opt/host/armv41/bin/armv41-unknown-linux-;修改arm/arm目录下的config.in文件,配置S3C2410的相关信息;为初始化处理器,还需在arch/arm/boot/compressed目录下添加head-s3c2410.s文件。内核修改完成后,用命令make menuconfig配置Linux,再用make zImage命令编译内核,编译通过后则在目录arch/arm/boot下生成zImage内核文件,还需利用工具软件MKCRAMFS制作cramfs文件系统。最后,在minicom终端的vivi命令行下利用load命令将内核和文件系统下载到目标系统,至此移植完成。
Boa的移植和CGI程序设计
由于嵌入式设备资源有限,并且不需要同时响应多用户请求,因此一般使用一些专门的Web服务器用于嵌入式应用设计。Boa是单任务web服务器,源代码开放,性能高,支持CGI,能为CGI程序fork出一个进程来执行,其设计目标是速度和安全,可执行代码只有约60KB。移植Boa的过程如下:从sourceforge.net上下载 boa-0.94.13,在其解压目录下生成并修改makefile文件,然后运行make得到可执行程序,利用命令armv4l-unknown-linux-strip将调试信息剥去,然后修改Boa的配置文件boa.conf,使其能支持CGI程序的运行。最后将生成的可执行程序Boa挂载到目标系统,若能成功访问静态HTML网页和运行测试用的CGI程序,则表明配置成功。
通用网关接口CGI可将Web服务器连接到外部应用程序,它主要完成两件事情:一是收集从Web浏览器发送给Web服务器的信息,并将这些信息提供给外部程序利用;二是对提出请求的Web浏览器发送程序的输出。CGI具有平台独立性、语言独立性和层次感等优点。利用CGI程序则可以实时执行并输出动态信息,且其占用资源少。CGI程序的执行过程为:浏览器将表单数据以POST方法提交给Web服务器,服务器根据收到的数据设置环境变量,并新开一子进程来执行CGI程序,CGI程序从环境变量中读取所需要的数据,通过调用用户自定义的外部功能函数完成数据处理后,再读取相应的HTML模板文件,根据注释标记将对应的数据填充到HTML文件中,生成新的HTML页面经Web服务器返回给浏览器。
为快速开发符合应用要求的CGI程序,在设计时添加了CGIC库和gd库。CGIC是一个功能强大的支持CGI开发的开放源码的标准C库。Thomas Boutell编写的gd库是标准的C语言库,具有基本的绘图等功能。为实现在网页上动态显示心电波形,将每次采集的数据经过功能程序处理后存储的同时送给CGI程序,利用gd库提供的函数来创建图像。通过在网页模块上设定刷新时间(使用HTML语言的META标记),从而实现在网页上心电波形的动态显示。
主程序设计
主程序首先完成对系统的初始化,然后阻塞监听网络接口是否有连接请求,一旦客户端发出连接请求,则在服务器端产生中断;读取网络数据,然后对网络数据进行解析,这一步主要是解析HTTP协议,需要判断连接请求是否符合服务器规定的请求格式,判断是连接请求的请求方法,判断请求的文件是否存在服务器上,判断认证信息是否正确等等;在处理A/D采集的数据这一过程中,首先要将采集后的心电信号进行滤波处理,主要是抑制心电信号中的50Hz工频干扰,再完成滤波后,将数据送到本地的LCD上显示,同时将当前的数据以网页数据的格式发送到网口。
结语
本系统的设计定位于家庭医疗监护,通过在用于生理特征信息监测的嵌入式系统中集成Web服务器实现Internet的接入,从而实现用于远程家庭医疗的监护系统。其意义在于:设计出一套价格低且易于推广的远程家庭医疗监护系统,改变目前我国家庭医疗监护落后的状况;有效提高中老年人群心血管等慢性疾病的监护水平,有利于提高中老年人群突发疾病患者的整体救治率;为医疗机构提供大量有价值的我国中老年人群疾病的原始数据进行科研工作。