远程医疗监控系统
远程医疗监控系统
一、设计目的
随着电子信息的飞速发展,近年来,远程医疗监控技术也渐渐成为医疗界的一个热点。重要生命参数的远程监控给年老体弱者带来了方便,也给现代医疗界的发展做出了很大的贡献。
远程医疗监控系统,它是一种集成信息科学、计算机技术和通信应用技术于医疗卫生领域的高科技产业品。系统主要组成部分为:基于微控制器和传感器节点组成体征采集模块,基于GPRS/GSM的无线收发模块,基于FPGA 的上位机监控模块。体征采集模块利用各类专用传感器采集人体体征,并由微控制器进行处理打包,经由GPRS/GSM通信网络上传至上位机监控中心,远程医生/监护人可定时/实时监控病患。该系统测量准确,实用创新性强,性价比高,具有很好的推广价值。
二、设计要求
设计一个远程医疗监控系统。要求:
1. 通过各传感器节点准确采集各项体征信号并交于89c51单片机进行处理,计算出各项体征信息(包括体温、血压、脉搏、心率),组成体征采集子模块,完成各项体征信息采集,并上传到GPRS/GSM无线模块。
2.GPRS/GSM无线模块将接收到体征信息,并准确地送往上位监控机。 3. 基于FPGA 的上位监控机接收到下位机信息,并进行分析处理及控制。
三、设计器材:
1. 各类体征传感器(ASDX100压力传感器、HK-2000B 脉搏传感器、DS18B20温度传感器);
2. 微控制器、GPRS/GSM模块、FPGA 开发箱; 3. 镊子、钳子、电阻电容电位器导线等若干、焊锡若干。
四、设计原理及设计方案
1. 设计原理
远程监控系统可以定义为通过无线通信技术将远端的体征生理信息和医学信号传送到上位机监控中心进行分析并给出诊断意见的一种技术手段。 (1) 医疗监测原理
重要生命参数的远程监护是年老体弱者口常监护的一个重要内容,检测的生理信息主要包括:体温、脉搏、血压、心率、心电图、呼吸、血气(氧分压和二氧化碳分压) 、血氧饱和度、血糖等。这类生理参数在远程监控系统中一般要求无创或微创检测。本文以温度、脉搏、血压及心率信号为采集对象,选择了简单方便的传感器和无创测量的方法。
(2)无线通信技术
随着信息技术的不断发展和社会需求的口益增长,无线通信已经进入规模化发展的阶段,快速发展的无线通信已成为信息产业中最为耀眼的“亮点”,为各种潜在的工程技术提供了新的方法和手段,并成为推动社会发展的强劲动力。无线通信以其不需辐设明线、使用便捷等特点,展示出广阔的市场前景。无线通信技术正以较快的速度进入许多产品,它与有线相比主要具有成本低、携带方便和省去布线的烦恼等优点,特别适用于遥控、遥测、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线标签、身份识别、非接触RF 智能片、小型无线数据终端、安全防火系统、无线遥控系统、生物信号采集、水文气象监控、机器控制、信息家电、无线232、无线422/485数据通信等领域。
利用GPRS/GSM技术进行无线通信,使传统的串口通讯扩展为GPRS/GSM无线网络通讯,可以实时的把采集到的数据发送到上位机,实现数据的及时交换及串口设备的快速无线联网。
2. 设计方案
(1) 医院监控网络体系方案
医院监护系统由有线网络(局域网) 和无线网络两部分组成,如图4.1所示。患者身上佩戴的采集终端,将采集到的生理信息数据(体温、脉搏、血压、心率) 发送到AP (Access Point )。AP 通过医院的局域网,将数据转发到上位监控机上,由上位监控机对数据进行分析和处理。
AP 上电后立即尝试连接局域网上的服务器,服务器的IP 和端口号以及AP 的网络配置都写在配置文件中,用户可以手动修改,连接成功后进入就绪状态。
如果有携带移动监护设备的患者进入AP 的覆盖区域移动监护设备将会查询到AP 并与之建立ACL 链路,AP 接受连接将会进行主从切换,保证AP 作为传感器网络的主单元可以继续被其他移动监护设备发现和建链。之后移动监护设备和AP 之间进行SDP , L2CAP, RFCOMM 连接。AP 向服务器报告有移动监护设备进入该区域,此后AP 将透明地转发AP 和移动监护设备之间的双向数据。主机可以通过AP 和移动监护设备的串口替代功能完成控制、数据采集的功能。当患者离开此AP 的覆盖范围后,链路中断,AP 向服务器报告移动监护设备离开该区域,同时患者携带的移动监护设备开始搜索新的 AP 。医护人员根据移动监护设备与哪一个AP 相连可以获知患者在整个病区内的活动情况。其设计结构如图1所示。
图1 医院无线监控系统结构
(2) 家庭监护网络体系方案
远程家庭监控网络体系结构如图2所示。
图2 家庭无线监控系统结构
无线系统主要由各个传感器节点(脉搏、体温、血压、心率等传感器节点) 、若干个具有路由功能的无线节点和中心网络协调器(监护基站设备) 组成。监护基站设备连接无线网络与以太网,是家庭无线网络的核心部分,负责传感器网络节点和设备节点的管理。各项体征数据经过家庭网关传输到远程监护服务器。远程监护服务器负责脉搏生理数据的实时采集、显示和保存。医院监护中心和医生可以登录监护服务器
查看被监护者的生理信息,也可以远程控制家庭无线网络中的传感器和设备,从而在被
监护病人出现异常时,能及时检测到并采取抢救措施。被监护者的亲属等也可以登录监护服务器随时了解被监护者的健康状况。
五、设计流程
1. 传感器单元的设计
传感器节点主要功能为采集人体体征信息(包括体温、脉搏、血压、心率),其节点主要包括5部分:中央处理器模块(51单片机) 、无线数据通信模块
(GPRS/GSM)、传感器、A/D转换及相关调理电路、电源模块。节点框图和处理器单元如图3所示。
图3 监控传感器节点结构
2 .GPRS/GSM模块的设计
介绍了一种通过GPRS/GSM短消息的收发实现对工程上数据采集系统的远程监控,其能够完成对工程上数据采集系统的运行状况监测及采集数据的传输。同时也能够通过短消息控制数据采集系统完成指定的操作。系统自带有存储器,能够按接收到的指令对设备进行配置,并将其存储到设备自带的存储器中。同时系统配备了看门狗,能够使系统在异常状态下重启系统,使系统做到永不死机。由于该系统采用了GSM 短消息作为通信载体,使其克服了普通电话监控的人机界面不友好,话费高,且控制功能少等缺点。GSM 硬件图如下图4所示。
图4 GSM 硬件框图
3. 基于FPGA 的上位监控中心设计
为了使便携式心电监护仪具有友好的人机交互和方便的显示,移植了一个GUI 界面系统。以UP ‐CUP FPGA2C35‐II 综合实训平台 为验证平台,TFTLCD IP 核是在Quartus Ⅱ9.0软件平台下,使用Verilog 在FPGA 上用硬件逻辑电路进行设计。该IP 核是利用Quartus Ⅱ开发和其集成的 SOPC Builder 系统开发工具而设计的。μC /GUI 则是在配套开发软件Nios ⅡIDE 中进行移植实现。实验结果表明,μC /GUI 界面系统成功运行在本开发板上,可实现窗口管理、在指定位置显示文字、快速而高效处理数据和显示图片等功能。FPGA 开发箱如下图5所示.
图5 FPGA 开发箱
便携式医疗监护仪已成为人们日常生活中不可缺少的一部分。便携式设备是由硬件与软件紧凑组合的一个单元模块,是一种体积小、智能化程度高、功能全、使用灵 活、操作方便的便携机,适合家庭使用、外出携带等用途。为了使便携式心电监护仪实现友好的人机交互和更加方便的显示,这里提出一种GUI 界面系统设计,就是在基于Nios Ⅱ处理器的嵌入式平台上实现μC /GUI 的移植,使
之实现系统功能。
系统中心触摸屏浏览服务信息并实现相关操作,通过无线网络和终端通信。各个采集终端作为独立系统工作,所有数据传到前台上位机协调处理。终端硬件框图如图2所示,利用片上可编程系统(SoPC)技术将Nios II 处理器、外设接口控制器等功能模块集成到FPGA ,构成可编程片上系统。SDRAM 、Flash 控制器用于处理程序和数据的存储;512 KB SRAM 作为图像数据缓存区;FPGA 内部自定义LTM 控制器和SD 卡控制器模块,辅助软核工作,操作触摸屏并读取SD 卡内的JPEG 图片;UART 接口用于和移植到CC2430的ZigBee 模块通信;采用定时器以嵌入uC/OS II操作系统。其硬件结构图如6所示。
图6 FPGA 硬件结构图
4. 系统硬件设计
本系统的设计和实现是采用了模块化设计的思想。从功能模块上该系统可分为:体征信息采集模块、无线收发模块和通用串行总线接口传输模块。系统的硬件结构由两部分组成:一部分是数据采集和无线数据发射电路; 另一部分是无线数据接收和通用串行总线接口电路。系统的总硬件结构如图7所示。
图7 系统的总硬件结构
操作流程:
(1). 通过各传感器节点准确采集各项体征信号并交于89c51单片机进行处理,计算出各项体征信息(包括体温、血压、脉搏、心率),组成体征采集子模块,完成各项体征信息采集,并上传到GPRS/GSM无线模块。
(2).GPRS/GSM无线模块将接收到体征信息,并准确地送往上位监控机。 (3). 基于FPGA 的上位监控机接收到下位机信息,并进行分析处理及控制。
5. 系统软件设计
在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。应用系统的程序由包含多个模块的主程序和各种子程序组成。各程序模块都要完成一个明确的任务,实现某个具体的功能,在具体需要时调用相应的模块即可。由于系统各个模块都有自己的程序,在此将列出个别模
块的程序流程图。
血压及心率采集并显示的处理流程如图8所示。
图8 血压、心率采集流程图
代码如下:
#include
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P1^0;//ASDX001与单片机连接口 sbit RS=P3^5; sbit RW=P3^6; sbit EN=P3^7;
unsigned char code str1[]={"blood pressure: "}; unsigned char code str2[]={" "}; uchar data disdata[5]; uint tvalue;//压力值 uchar tflag;//压力正负标志
/*************************lcd1602程序**************************/ void delay1ms(unsigned int ms)//延时1毫秒(不够精确的) {unsigned int i,j; for(i=0;i
void wr_com(unsigned char com)//写指令// {
delay1ms(1); RS=0; RW=0; EN=0; P0=com; delay1ms(1); EN=1; delay1ms(1); EN=0; }
void wr_dat(unsigned char dat)//写数据//
delay1ms(1);;
RS=1;
RW=0;
EN=0;
P0=dat;
delay1ms(1);
EN=1;
delay1ms(1);
EN=0;
}
void lcd_init()//初始化设置//
{
delay1ms(15);
wr_com(0x38);
delay1ms(5);
wr_com(0x08);
delay1ms(5);
wr_com(0x01);
delay1ms(5);
wr_com(0x06);
delay1ms(5);
wr_com(0x0c);
delay1ms(5);
}
void display(unsigned char *p)//显示//
{
while(*p!='\0')
wr_dat(*p);
p++;
delay1ms(1);
}
}
init_play()//初始化显示
{ lcd_init();
wr_com(0x80);
display(str1);
wr_com(0xc0);
display(str2);
}
void delay_asdx001(unsigned int i)//延时1微秒
{
while(i--);
}
void asdx001rst()/*ds1820复位*/
{ unsigned char x=0;
DQ = 1; //DQ复位
delay_asdx001(4); //延时
DQ = 0; //DQ拉低
delay_asdx001(100); //精确延时大于480us
DQ = 1; //拉高
delay_asdx001(40);
}
uchar asdx001rd()/*读数据*/
{ unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{ DQ = 0; //给脉冲信号
dat>>=1;
DQ = 1; //给脉冲信号
if(DQ)
dat|=0x80;
delay_asdx001(10);
}
return(dat);
}
void asdx001wr(uchar wdata)/*写数据*/
{unsigned char i=0;
for (i=8; i>0; i--)
{ DQ = 0;
DQ = wdata&0x01;
delay_asdx001(10);
DQ = 1;
wdata>>=1;
}
}
read_pressure1()/*读取压力值并转换*/
{
asdx001rst();
asdx001wr(0xcc);//*跳过读序列号*/
asdx001wr(0x44);//*启动压力转换*/
asdx001rst();
}
read_pressure2()
{uchar a,b;
asdx001wr(0xcc);//*跳过读序列号*/
asdx001wr(0xbe);//*读取压力*/
a=asdx001rd();
b=asdx001rd();
tvalue=b;
tvalue
tvalue=tvalue|a;
if(tvalue
tflag=0;
else
{tvalue=~tvalue+1;
tflag=1;
}
return(tvalue);
}
/*******************************************************************/ void asdx001disp1()//压力值显示
{ uchar flagdat;
disdata[0]=tvalue/1000+0x30;//百位数
disdata[1]=tvalue%1000/100+0x30;//十位数
disdata[2]=tvalue%100/10+0x30;//个位数
disdata[3]=tvalue%10+0x30;//小数位
if(tflag==0)
flagdat=0x20;//正压力不显示符号
else
flagdat=0x2d;//负压力显示负号
if(disdata[0]==0x30)
{disdata[0]=0x20;//如果百位为0,不显示
if(disdata[1]==0x30)
{disdata[1]=0x20;//如果百位为0,十位为0也不显示
}
}}
void asdx001disp2()
{uchar flagdat;
wr_com(0xc3);
wr_dat(flagdat);//显示符号位
wr_dat(disdata[0]);//显示百位
wr_dat(disdata[1]);//显示十位
wr_dat(disdata[2]);//显示个位
wr_dat(0x2e);//显示小数点
wr_dat(disdata[3]);//显示小数位
wr_com(0xca);
wr_dat(0xdf);
wr_dat(0x43);
}
/********************主程序***********************************/ void main()
{
init_play();//初始化显示
while(1)
{ read_pressure1();//读取压力
read_pressure2();//读取压力
asdx001disp1();//显示
asdx001disp2();//显示
}
}
六、系统设计中遇到的问题及解决办法:
问题1:不能运用虚拟的调试助手建立GPRS 的连接。
解决办法:在详细分析,发现不是自己的操作问题后上网查资料发现,想要建立GPRS 的连接,就必须拥有的一个暴露在共网下的IP 地址,但是实验室的都是动态随机分配,所以解决办法就是用无线网卡或者用路由器拨号上网的那种。
问题2:主程序的编写与调试。
在编写程序的时候是分模块写的,所以在后期揉合一块儿的时候出现了很多问题,只是显示所设的初始值。经过老师以及的同学的分析知道是中断那儿出现问题,经过一下午的调试与编程终于及时的解决了此问题.
问题3:硬件焊接过程。
在软件仿真出结果后,就开始电路板的焊接。但是在焊接完毕后出现了一些误差,检查后发现是某些电容或者是电阻值不是太精确所以会导致电路出来后出现一些偏差或者干扰。
七、 设计心得体会和收获:
在本系统的设计中,我是负责GSM/GPRS模块的调试。主要负责将下位机中采集到的数据及时的发送到上位机中,以便于实时的监控与诊断。首先就是AT 命令的学习,这部分是就是基本的指令,跟C51语言在单片机中的重要性一样,本次实验收获就是掌握了一门语言了解了SIM300的工作原理,更加熟练的掌握了C51语言。而在实验的过程中心得体会就是学习初始的时候一定要一步一步的脚踏实的了解原理,这样才能在运用这门技术做东西的时候的才能随心应手,也可以在出现问题的时候查出原因。团队精神——我最大的收获。只有团队里的每个人都在动手,都在为这个作品出力的时候那么你们的作品就是最好的。只有
团队团结才是这个作品最终的意义。在以后的工作中,我也会以本次的实验问基点,不断的学习与进步。
在本系统的设计中,我负责的主要是体征采集子模块的设计。根据监控对象的和监控目的不同,体征信息采集模块主要用于病人生理信号的采集,其检测的体征信息主要包括:心率、血压、脉搏、体温四项基本体征信息。通过各传感器节点准确采集各项体征信号并交于微控制器进行处理,计算出4项体征信息,组成体征采集子模块,完成各项体征信息采集,并上传到GPRS/GSM无限模块。在过程中,首先遇到的问题是传感器的选择,通过查询资料,了解各项体征的采集原理,尤其是血压的测量是本次设计的一个重点也是难点,后续信号的处理(包括整流,放大,A/D转换)也是需要投入很大的工作的,本来生理信号就是特别弱的。以前总是在学理论,从来没有过真正的实践,像电子血压计,脉搏仪也只是在生活中用到过,通过这次的设计,使我的动手操作能力大大提高,也使得理论和实践完美的结合在了一起,希望这些东西能够在我以后的生活中有和那的帮组,我也会再接再厉,更多的的将理论运用到实际中。
八、 附录
参考文献:
[1] 李兰英.Nios II 嵌入式软核SOPC 设计原理及应用[J].北京:北京航空航天大学出版社,2006.
[2] Micrium Inc.μC/GUI manual Rev.0[M].2002.
[3] Qiu Chuanfei,Zhang Wei,Zhou Quanzhi,et al.Porting μC/GUI To LCD and VGA in Nios II system[C].International Conference on Measuring Technology and Mechatronics Automation , Changsha ,2010.
[4] 葛欣,孟凡荣. 使用μC/GUI开发图形用户界面[J].计算机工程与设计,2005,26(1):253-255.
[5] Altera Corporation.Nios II processor reference handbook[M]. 2005.
[6]朱国富,廖明涛,王博亮. 袖珍式脉搏波测量仪. 电子技术应用.1998. 第1期
[7] 程咏梅,夏雅琴,尚岚. 人体脉搏波信号检测系统. 北京生物医学工程.2006. 第25卷
[8] 刘晓风. 测振式自动血压测量中的一种脉搏波检测方法,中国医疗器械杂志1990 年第14 卷第2 期
远程医疗监控系统
远程医疗监控系统
一、设计目的
随着电子信息的飞速发展,近年来,远程医疗监控技术也渐渐成为医疗界的一个热点。重要生命参数的远程监控给年老体弱者带来了方便,也给现代医疗界的发展做出了很大的贡献。
远程医疗监控系统,它是一种集成信息科学、计算机技术和通信应用技术于医疗卫生领域的高科技产业品。系统主要组成部分为:基于微控制器和传感器节点组成体征采集模块,基于GPRS/GSM的无线收发模块,基于FPGA 的上位机监控模块。体征采集模块利用各类专用传感器采集人体体征,并由微控制器进行处理打包,经由GPRS/GSM通信网络上传至上位机监控中心,远程医生/监护人可定时/实时监控病患。该系统测量准确,实用创新性强,性价比高,具有很好的推广价值。
二、设计要求
设计一个远程医疗监控系统。要求:
1. 通过各传感器节点准确采集各项体征信号并交于89c51单片机进行处理,计算出各项体征信息(包括体温、血压、脉搏、心率),组成体征采集子模块,完成各项体征信息采集,并上传到GPRS/GSM无线模块。
2.GPRS/GSM无线模块将接收到体征信息,并准确地送往上位监控机。 3. 基于FPGA 的上位监控机接收到下位机信息,并进行分析处理及控制。
三、设计器材:
1. 各类体征传感器(ASDX100压力传感器、HK-2000B 脉搏传感器、DS18B20温度传感器);
2. 微控制器、GPRS/GSM模块、FPGA 开发箱; 3. 镊子、钳子、电阻电容电位器导线等若干、焊锡若干。
四、设计原理及设计方案
1. 设计原理
远程监控系统可以定义为通过无线通信技术将远端的体征生理信息和医学信号传送到上位机监控中心进行分析并给出诊断意见的一种技术手段。 (1) 医疗监测原理
重要生命参数的远程监护是年老体弱者口常监护的一个重要内容,检测的生理信息主要包括:体温、脉搏、血压、心率、心电图、呼吸、血气(氧分压和二氧化碳分压) 、血氧饱和度、血糖等。这类生理参数在远程监控系统中一般要求无创或微创检测。本文以温度、脉搏、血压及心率信号为采集对象,选择了简单方便的传感器和无创测量的方法。
(2)无线通信技术
随着信息技术的不断发展和社会需求的口益增长,无线通信已经进入规模化发展的阶段,快速发展的无线通信已成为信息产业中最为耀眼的“亮点”,为各种潜在的工程技术提供了新的方法和手段,并成为推动社会发展的强劲动力。无线通信以其不需辐设明线、使用便捷等特点,展示出广阔的市场前景。无线通信技术正以较快的速度进入许多产品,它与有线相比主要具有成本低、携带方便和省去布线的烦恼等优点,特别适用于遥控、遥测、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线标签、身份识别、非接触RF 智能片、小型无线数据终端、安全防火系统、无线遥控系统、生物信号采集、水文气象监控、机器控制、信息家电、无线232、无线422/485数据通信等领域。
利用GPRS/GSM技术进行无线通信,使传统的串口通讯扩展为GPRS/GSM无线网络通讯,可以实时的把采集到的数据发送到上位机,实现数据的及时交换及串口设备的快速无线联网。
2. 设计方案
(1) 医院监控网络体系方案
医院监护系统由有线网络(局域网) 和无线网络两部分组成,如图4.1所示。患者身上佩戴的采集终端,将采集到的生理信息数据(体温、脉搏、血压、心率) 发送到AP (Access Point )。AP 通过医院的局域网,将数据转发到上位监控机上,由上位监控机对数据进行分析和处理。
AP 上电后立即尝试连接局域网上的服务器,服务器的IP 和端口号以及AP 的网络配置都写在配置文件中,用户可以手动修改,连接成功后进入就绪状态。
如果有携带移动监护设备的患者进入AP 的覆盖区域移动监护设备将会查询到AP 并与之建立ACL 链路,AP 接受连接将会进行主从切换,保证AP 作为传感器网络的主单元可以继续被其他移动监护设备发现和建链。之后移动监护设备和AP 之间进行SDP , L2CAP, RFCOMM 连接。AP 向服务器报告有移动监护设备进入该区域,此后AP 将透明地转发AP 和移动监护设备之间的双向数据。主机可以通过AP 和移动监护设备的串口替代功能完成控制、数据采集的功能。当患者离开此AP 的覆盖范围后,链路中断,AP 向服务器报告移动监护设备离开该区域,同时患者携带的移动监护设备开始搜索新的 AP 。医护人员根据移动监护设备与哪一个AP 相连可以获知患者在整个病区内的活动情况。其设计结构如图1所示。
图1 医院无线监控系统结构
(2) 家庭监护网络体系方案
远程家庭监控网络体系结构如图2所示。
图2 家庭无线监控系统结构
无线系统主要由各个传感器节点(脉搏、体温、血压、心率等传感器节点) 、若干个具有路由功能的无线节点和中心网络协调器(监护基站设备) 组成。监护基站设备连接无线网络与以太网,是家庭无线网络的核心部分,负责传感器网络节点和设备节点的管理。各项体征数据经过家庭网关传输到远程监护服务器。远程监护服务器负责脉搏生理数据的实时采集、显示和保存。医院监护中心和医生可以登录监护服务器
查看被监护者的生理信息,也可以远程控制家庭无线网络中的传感器和设备,从而在被
监护病人出现异常时,能及时检测到并采取抢救措施。被监护者的亲属等也可以登录监护服务器随时了解被监护者的健康状况。
五、设计流程
1. 传感器单元的设计
传感器节点主要功能为采集人体体征信息(包括体温、脉搏、血压、心率),其节点主要包括5部分:中央处理器模块(51单片机) 、无线数据通信模块
(GPRS/GSM)、传感器、A/D转换及相关调理电路、电源模块。节点框图和处理器单元如图3所示。
图3 监控传感器节点结构
2 .GPRS/GSM模块的设计
介绍了一种通过GPRS/GSM短消息的收发实现对工程上数据采集系统的远程监控,其能够完成对工程上数据采集系统的运行状况监测及采集数据的传输。同时也能够通过短消息控制数据采集系统完成指定的操作。系统自带有存储器,能够按接收到的指令对设备进行配置,并将其存储到设备自带的存储器中。同时系统配备了看门狗,能够使系统在异常状态下重启系统,使系统做到永不死机。由于该系统采用了GSM 短消息作为通信载体,使其克服了普通电话监控的人机界面不友好,话费高,且控制功能少等缺点。GSM 硬件图如下图4所示。
图4 GSM 硬件框图
3. 基于FPGA 的上位监控中心设计
为了使便携式心电监护仪具有友好的人机交互和方便的显示,移植了一个GUI 界面系统。以UP ‐CUP FPGA2C35‐II 综合实训平台 为验证平台,TFTLCD IP 核是在Quartus Ⅱ9.0软件平台下,使用Verilog 在FPGA 上用硬件逻辑电路进行设计。该IP 核是利用Quartus Ⅱ开发和其集成的 SOPC Builder 系统开发工具而设计的。μC /GUI 则是在配套开发软件Nios ⅡIDE 中进行移植实现。实验结果表明,μC /GUI 界面系统成功运行在本开发板上,可实现窗口管理、在指定位置显示文字、快速而高效处理数据和显示图片等功能。FPGA 开发箱如下图5所示.
图5 FPGA 开发箱
便携式医疗监护仪已成为人们日常生活中不可缺少的一部分。便携式设备是由硬件与软件紧凑组合的一个单元模块,是一种体积小、智能化程度高、功能全、使用灵 活、操作方便的便携机,适合家庭使用、外出携带等用途。为了使便携式心电监护仪实现友好的人机交互和更加方便的显示,这里提出一种GUI 界面系统设计,就是在基于Nios Ⅱ处理器的嵌入式平台上实现μC /GUI 的移植,使
之实现系统功能。
系统中心触摸屏浏览服务信息并实现相关操作,通过无线网络和终端通信。各个采集终端作为独立系统工作,所有数据传到前台上位机协调处理。终端硬件框图如图2所示,利用片上可编程系统(SoPC)技术将Nios II 处理器、外设接口控制器等功能模块集成到FPGA ,构成可编程片上系统。SDRAM 、Flash 控制器用于处理程序和数据的存储;512 KB SRAM 作为图像数据缓存区;FPGA 内部自定义LTM 控制器和SD 卡控制器模块,辅助软核工作,操作触摸屏并读取SD 卡内的JPEG 图片;UART 接口用于和移植到CC2430的ZigBee 模块通信;采用定时器以嵌入uC/OS II操作系统。其硬件结构图如6所示。
图6 FPGA 硬件结构图
4. 系统硬件设计
本系统的设计和实现是采用了模块化设计的思想。从功能模块上该系统可分为:体征信息采集模块、无线收发模块和通用串行总线接口传输模块。系统的硬件结构由两部分组成:一部分是数据采集和无线数据发射电路; 另一部分是无线数据接收和通用串行总线接口电路。系统的总硬件结构如图7所示。
图7 系统的总硬件结构
操作流程:
(1). 通过各传感器节点准确采集各项体征信号并交于89c51单片机进行处理,计算出各项体征信息(包括体温、血压、脉搏、心率),组成体征采集子模块,完成各项体征信息采集,并上传到GPRS/GSM无线模块。
(2).GPRS/GSM无线模块将接收到体征信息,并准确地送往上位监控机。 (3). 基于FPGA 的上位监控机接收到下位机信息,并进行分析处理及控制。
5. 系统软件设计
在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。应用系统的程序由包含多个模块的主程序和各种子程序组成。各程序模块都要完成一个明确的任务,实现某个具体的功能,在具体需要时调用相应的模块即可。由于系统各个模块都有自己的程序,在此将列出个别模
块的程序流程图。
血压及心率采集并显示的处理流程如图8所示。
图8 血压、心率采集流程图
代码如下:
#include
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P1^0;//ASDX001与单片机连接口 sbit RS=P3^5; sbit RW=P3^6; sbit EN=P3^7;
unsigned char code str1[]={"blood pressure: "}; unsigned char code str2[]={" "}; uchar data disdata[5]; uint tvalue;//压力值 uchar tflag;//压力正负标志
/*************************lcd1602程序**************************/ void delay1ms(unsigned int ms)//延时1毫秒(不够精确的) {unsigned int i,j; for(i=0;i
void wr_com(unsigned char com)//写指令// {
delay1ms(1); RS=0; RW=0; EN=0; P0=com; delay1ms(1); EN=1; delay1ms(1); EN=0; }
void wr_dat(unsigned char dat)//写数据//
delay1ms(1);;
RS=1;
RW=0;
EN=0;
P0=dat;
delay1ms(1);
EN=1;
delay1ms(1);
EN=0;
}
void lcd_init()//初始化设置//
{
delay1ms(15);
wr_com(0x38);
delay1ms(5);
wr_com(0x08);
delay1ms(5);
wr_com(0x01);
delay1ms(5);
wr_com(0x06);
delay1ms(5);
wr_com(0x0c);
delay1ms(5);
}
void display(unsigned char *p)//显示//
{
while(*p!='\0')
wr_dat(*p);
p++;
delay1ms(1);
}
}
init_play()//初始化显示
{ lcd_init();
wr_com(0x80);
display(str1);
wr_com(0xc0);
display(str2);
}
void delay_asdx001(unsigned int i)//延时1微秒
{
while(i--);
}
void asdx001rst()/*ds1820复位*/
{ unsigned char x=0;
DQ = 1; //DQ复位
delay_asdx001(4); //延时
DQ = 0; //DQ拉低
delay_asdx001(100); //精确延时大于480us
DQ = 1; //拉高
delay_asdx001(40);
}
uchar asdx001rd()/*读数据*/
{ unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{ DQ = 0; //给脉冲信号
dat>>=1;
DQ = 1; //给脉冲信号
if(DQ)
dat|=0x80;
delay_asdx001(10);
}
return(dat);
}
void asdx001wr(uchar wdata)/*写数据*/
{unsigned char i=0;
for (i=8; i>0; i--)
{ DQ = 0;
DQ = wdata&0x01;
delay_asdx001(10);
DQ = 1;
wdata>>=1;
}
}
read_pressure1()/*读取压力值并转换*/
{
asdx001rst();
asdx001wr(0xcc);//*跳过读序列号*/
asdx001wr(0x44);//*启动压力转换*/
asdx001rst();
}
read_pressure2()
{uchar a,b;
asdx001wr(0xcc);//*跳过读序列号*/
asdx001wr(0xbe);//*读取压力*/
a=asdx001rd();
b=asdx001rd();
tvalue=b;
tvalue
tvalue=tvalue|a;
if(tvalue
tflag=0;
else
{tvalue=~tvalue+1;
tflag=1;
}
return(tvalue);
}
/*******************************************************************/ void asdx001disp1()//压力值显示
{ uchar flagdat;
disdata[0]=tvalue/1000+0x30;//百位数
disdata[1]=tvalue%1000/100+0x30;//十位数
disdata[2]=tvalue%100/10+0x30;//个位数
disdata[3]=tvalue%10+0x30;//小数位
if(tflag==0)
flagdat=0x20;//正压力不显示符号
else
flagdat=0x2d;//负压力显示负号
if(disdata[0]==0x30)
{disdata[0]=0x20;//如果百位为0,不显示
if(disdata[1]==0x30)
{disdata[1]=0x20;//如果百位为0,十位为0也不显示
}
}}
void asdx001disp2()
{uchar flagdat;
wr_com(0xc3);
wr_dat(flagdat);//显示符号位
wr_dat(disdata[0]);//显示百位
wr_dat(disdata[1]);//显示十位
wr_dat(disdata[2]);//显示个位
wr_dat(0x2e);//显示小数点
wr_dat(disdata[3]);//显示小数位
wr_com(0xca);
wr_dat(0xdf);
wr_dat(0x43);
}
/********************主程序***********************************/ void main()
{
init_play();//初始化显示
while(1)
{ read_pressure1();//读取压力
read_pressure2();//读取压力
asdx001disp1();//显示
asdx001disp2();//显示
}
}
六、系统设计中遇到的问题及解决办法:
问题1:不能运用虚拟的调试助手建立GPRS 的连接。
解决办法:在详细分析,发现不是自己的操作问题后上网查资料发现,想要建立GPRS 的连接,就必须拥有的一个暴露在共网下的IP 地址,但是实验室的都是动态随机分配,所以解决办法就是用无线网卡或者用路由器拨号上网的那种。
问题2:主程序的编写与调试。
在编写程序的时候是分模块写的,所以在后期揉合一块儿的时候出现了很多问题,只是显示所设的初始值。经过老师以及的同学的分析知道是中断那儿出现问题,经过一下午的调试与编程终于及时的解决了此问题.
问题3:硬件焊接过程。
在软件仿真出结果后,就开始电路板的焊接。但是在焊接完毕后出现了一些误差,检查后发现是某些电容或者是电阻值不是太精确所以会导致电路出来后出现一些偏差或者干扰。
七、 设计心得体会和收获:
在本系统的设计中,我是负责GSM/GPRS模块的调试。主要负责将下位机中采集到的数据及时的发送到上位机中,以便于实时的监控与诊断。首先就是AT 命令的学习,这部分是就是基本的指令,跟C51语言在单片机中的重要性一样,本次实验收获就是掌握了一门语言了解了SIM300的工作原理,更加熟练的掌握了C51语言。而在实验的过程中心得体会就是学习初始的时候一定要一步一步的脚踏实的了解原理,这样才能在运用这门技术做东西的时候的才能随心应手,也可以在出现问题的时候查出原因。团队精神——我最大的收获。只有团队里的每个人都在动手,都在为这个作品出力的时候那么你们的作品就是最好的。只有
团队团结才是这个作品最终的意义。在以后的工作中,我也会以本次的实验问基点,不断的学习与进步。
在本系统的设计中,我负责的主要是体征采集子模块的设计。根据监控对象的和监控目的不同,体征信息采集模块主要用于病人生理信号的采集,其检测的体征信息主要包括:心率、血压、脉搏、体温四项基本体征信息。通过各传感器节点准确采集各项体征信号并交于微控制器进行处理,计算出4项体征信息,组成体征采集子模块,完成各项体征信息采集,并上传到GPRS/GSM无限模块。在过程中,首先遇到的问题是传感器的选择,通过查询资料,了解各项体征的采集原理,尤其是血压的测量是本次设计的一个重点也是难点,后续信号的处理(包括整流,放大,A/D转换)也是需要投入很大的工作的,本来生理信号就是特别弱的。以前总是在学理论,从来没有过真正的实践,像电子血压计,脉搏仪也只是在生活中用到过,通过这次的设计,使我的动手操作能力大大提高,也使得理论和实践完美的结合在了一起,希望这些东西能够在我以后的生活中有和那的帮组,我也会再接再厉,更多的的将理论运用到实际中。
八、 附录
参考文献:
[1] 李兰英.Nios II 嵌入式软核SOPC 设计原理及应用[J].北京:北京航空航天大学出版社,2006.
[2] Micrium Inc.μC/GUI manual Rev.0[M].2002.
[3] Qiu Chuanfei,Zhang Wei,Zhou Quanzhi,et al.Porting μC/GUI To LCD and VGA in Nios II system[C].International Conference on Measuring Technology and Mechatronics Automation , Changsha ,2010.
[4] 葛欣,孟凡荣. 使用μC/GUI开发图形用户界面[J].计算机工程与设计,2005,26(1):253-255.
[5] Altera Corporation.Nios II processor reference handbook[M]. 2005.
[6]朱国富,廖明涛,王博亮. 袖珍式脉搏波测量仪. 电子技术应用.1998. 第1期
[7] 程咏梅,夏雅琴,尚岚. 人体脉搏波信号检测系统. 北京生物医学工程.2006. 第25卷
[8] 刘晓风. 测振式自动血压测量中的一种脉搏波检测方法,中国医疗器械杂志1990 年第14 卷第2 期