具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图10,一种基于无线传感器网络的远程心电监护系统,包括远程监控管理平台5,所述远程监控管理平台5包括:数据库系统,用于保存监控对象的信息,以及监控对象设定时间段的心电数据,还用于查询监护对象的心电信息;显示系统,用于显示监护对象的心电波形和相关参数;所述远程心电监护系统还包括用于由监护对象随身佩带的微型心电采集节点2、用于固定部署在监测区域内的中转节点1以及监护基站设备4,所述微型心电采集节点与中转节点无线通信连接,所述微型心电采集节点、中转节点与监护基站设备无线通信连接,所述监护基站设备通过以太网与所述远程监控管理中心通信连接。
所述的微型心电采集节点由主板、心电传感板组成。所述的主板包括:第一供电单元,为节点的正常工作提供所需电源,所述的供电单元设计了灵活的电源管理方案,可用3节AA碱性电池供电或外接5v电源;第一射频通信模块:用于实现无线通信;第一微控制器单元:用于控制片上ADC模块采集心电信号并作处理,还用于处理接收到的数据信息和控制所述的射频通信模块。所述的主板在硬件上可由所述的中转节点充当。所述的心电传感板用于提取和处理心电信号,包括:前置放大电路:用于放大微弱的心电信号;参考电极反馈电路:用于抑制共模干扰;增益可调的二级放大和带通滤波电路:用于消除由于人体的个性差异及导联粘贴的位置不同而产生幅值上的差别,还用于滤除心电信号中的噪声;基准电压电路:用于解决心电信号双极性对电压的要求。
所述的中转节点包括:第二供电单元,为节点的正常工作提供所需电源,所述的供电单元设计了灵活的电源管理方案,可用3节AA碱性电池供电或外接5v电源;第二射频通信模块:用于实现无线通信;第二微控制器单元:用于处理接收到的数据信息和控制所述的射频通信模块。其中,微控制器与射频通信模块之间通过SPI口通信。
所述的嵌入式监护基站设备由底板、核心板组成,两者采用SO-DIMM200标准插座相连。所述的底板包括:电源管理模块,用于输出3.3v电压供处理器以及其它3V器件使用,还输出1.3V电压供处理器内核使用;以太网接口:用于实现基站设备接入公网;射频通信模块:用于实现与节点的无线通信。所述的核心板包括:S3C2440A-40处理器,用于处理信息,控制外围硬件实现各种功能;4个可编程的绿色贴片LED和1个红色3.3V电源LED:分别用于表征程序的运行情况和电源状况。2片4Banks×4Mbits×16bits:用于设置程序堆栈、存放各种变量以及缓存心电数据;一片64MB的Nand Flash,用于启动ROM和系统程序保存ROM。
所述的微型心电采集节点由监护对象随身佩戴,监护对象可随意走动。大量用户身上佩戴的心电采集节点、监测区域内固定部署的中转节点和至少一个基站设备构成一个典型的移动无线传感器网络,所述的节点获得的数据通过无线多跳的通信方式传输到监护基站。
所述的移动无线传感器网络是一个层次型网络,设基站无线通信的一跳距离范围内固定部署的中转节点的距离标志符Range为1,两跳内则设为2,依次类推。移动心电节点的距离标识符初始化为最大网络跳数,然后在运行过程中动态设定。
本实施例采用基于RTS/CTS机制的移动无线传感器网络路由通信协议。所述的路由通信协议还包括跳频机制、载波侦听机制、丢失数据包重发机制。
所述的跳频机制是指RTS/CTS通信信道和数据通信信道分开,所述的RTS/CTS通信信道为广播信道,所述的数据通信信道是指收发节点通过RTS/CTS建立连接后用于心电数据包传输的信道,由接收节点根据其节点ID确定。跳频机制允许同一时间内一跳范围内的多对节点同时通信,提高了信道利用率。
所述的载波侦听机制采用基于CSMA/CA的二进制指数退避随机延时算法,该方法有效的避免了无线数据的碰撞、冲突。
所述的丢失数据包重发机制是指重新发送丢失的数据包,但一次数据包通信过程中,只重新发送一次。既能有效的降低数据包丢失率,又能避免信道被长时间占用。
移动无线传感器网络的路由通信协议:由于所述的微型心电采集节点是监护对象随身佩带的,随着人的走动而移动,位置不能预先确定,他们之间的相互邻居关系也无法预知,随时都可能有新的监护对象加入或旧的监护对象离开。节点个数与位置动态变化。特别的,实际生活中,监护对象会时而聚集在一起闲聊,时而会分散开,导致网络的节点密度随时变化,局部区域密集,局部区域稀疏。本发明在监测区域养老院或整个社区内固定部署一些中转节点,提出了一种新的基于RTS/CTS的移动无线传感器网络路由通信协议。
所述的通信路由协议的具体实现步骤如下:
初始化时,所有节点处于广播接收模式1,标志节点处于“不忙”状态。基站处于广播接收模式2。所述的广播接收模式1是指节点处于无线接收模式,接收地址为广播地址,通信信道为广播信道。所述的广播接收模式2是指基站处于无线接收模式,接收地址和通信信道唯一分配给基站使用,其他节点也有保存。
步骤S1:节点有20个以上数据包需发送,节点首先进行载波侦听,检测到信道空闲,切换到广播发送模式,广播RTS信号,随后节点切换到广播接收模式1,标志节点处于“忙”状态。
所述的广播发送模式是指节点处于无线发送模式,发送地址为广播地址,通信信道为广播信道。所述的RTS信号包含节点Range,节点标识符Node_ID,节点接收地址R_ADDR等信息。
步骤S2:请求节点无线通信距离一跳范围内的节点若处于广播接收模式1都有可能接收到RTS信号。接收到RTS信号的节点首先判断:
处于“不忙”状态;
节点的Range小于请求节点的Range,即离基站更近;
有足够多的缓存空间;
同时满足以上三个条件,且在一定时间内检测到信道空闲,节点切换到广播发送模式,返回CTS信号,然后节点设置接收地址和数据通信信道频率,切换到接收模式,标志节点处于“忙”状态。否则忽略该RTS信号,节点仍处于到广播接收模式1,标志节点处于“不忙”状态。
所述的CTS信号包含该节点的Range,剩余能量Energy,待发送数据包,接收地址以及该节点要求的信道频率。
步骤S3:请求节点从在CTS信号等待时间内收到的所有CTS信号中根据以下判断顺序决定下一跳节点:
Range最小,即离基站最近。请求节点若是心电采集节点,设置其Range为所有接收到的CTS信号中的Range最小值加1。
剩余能量最多;
待发送数据包最少。
然后节点切换到数据通信频道下的发送模式,将20个心电数据包连续发送给下一跳节点。然后节点切换到该数据通信频道下的接收模式。
请求节点若未能接收到CTS信号,则节点切换到广播接收模式1随机时延后,重新载波侦听。
步骤S4:发出CTS信号的所有节点中,只有一个节点会被请求节点选择作为下一跳节点,该节点保存处理接收到的心电数据包。在一定时间内若能接收到全部数据包数,进入步骤S6,否则认为发生丢包,节点切换到数据发送模式并将包含丢失的数据包个数与序列号等信息的LOSE信号发送给请求节点。
发出CTS信号的所有节点中,未被请求节点选择作为下一跳节点的其他节点切换至广播接收模式1,标志节点处于“不忙”状态。
步骤S5:请求节点发送数据包后,在一定时间内未接收到LOSE信号,认为本次通信成功。否则根据接收到的LOSE信号中的信息重新发送丢失的数据包。同一次数据包通信中,只重新发送一次,避免该信道被无休止的占用。
步骤S6:发送节点切换到广播接收模式1,标志节点处于“不忙”状态。接收节点按照同样的上述步骤将接收到的数据包转发到离基站更近的节点。直到接收节点的Range为1,即基站的一跳节点时,节点切换到发送模式,将信道设置到基站的通信信道,进行载波侦听,信道空闲时即将数据包发送给基站。然后切换到广播接收模式1,标志节点处于“不忙”状态。
图1表示本发明的基于无线传感器网络的远程心电监护系统的示意图。监护系统由微型心电采集节点ECG_Node2、用于固定部署的中转节点Relay Node1、嵌入式监护基站设备Sink Node4和远程监控平台Remote Monitoring center6组成。在一个较大的监护范围3内,比如养老院,社区,系统至少包含一台嵌入式监护基站设备4,在基站设备无线通信距离的1倍、2倍......多倍范围内分别固定部署若干个中转节点1,大量的监护对象随身佩戴微型的心电采集节点2,可在监护范围3内随意走动。远程监控管理平台5位于医院等医疗机构供医护人员远程分析诊断监护对象的身体状况。心电采集节点将采集到的监护对象的心电信息无线传输给离基站设备更近的中转节点或其他监护对象身上的心电采集节点,继而转发给离基站更近的节点,如此无线传输下去,最后传输给基站设备,基站对心电信号初步分析和处理后通过以太网的方式接入公网,再传送到远端的监控中心,这样即实现了远程监控。
图2,图3,图4是本发明的各硬件设备的结构图,其中:
图2表示本发明的用于固定部署的中转节点结构图。中转节点由处理器模块、电源管理模块、射频通信模块组成,还预留了大量的外扩接口,用于实现传感板的即插即用。处理器采用ATMEL公司的Atmega128L芯片,具有片内128KB的Flash,4KB的RAM,并且带有丰富的外设资源包括ADC模块,其能耗极低。射频通信模块集成了挪威的nRF905射频芯片,其功耗极小,工作模式下的电流为十几毫安,掉电模式下的电流则仅为微安级。Atmega128L与nRF905之间通过SPI口通信,它们之间的数据通信线、状态信号线、控制信号线均可直接相连。本发明设计了灵活的电源方案,可外接5v电源或使用3节AA碱性电池,并使用了高性价比的电源芯片NCP500SN33T1G、MAX1852分别输出稳定的3.3v、负3.3v电压供中转节点本身和外接传感板使用。
图3表示本发明的微型心电采集节点结构图。心电节点由主板和传感板两部分组成。主板在硬件上可由中转节点充当。心电传感板上集成了前置放大电路、增益可调放大和带通滤波电路。心电信号由电极片直接取自人体体表,通过导联线与心电传感板相连。电极片的安放部位有统一的标准:右臂,胸骨右缘锁骨中线第一肋间;左臂,胸骨左缘锁骨中线第一肋间;左腿,左锁骨中线剑突水平处;胸部,胸骨左缘第4肋间。不同部位形成的电位差即是检测到的心电信号,本发明中形成了两路心电信号。心电信号很微弱,具有较大的共模电压,且病人的自由活动,会使基线大幅漂移。本发明中采用了ANALOG DEVICES公司生产的高精度仪表放大器AD620构成前置放大器,并且采用右腿驱动的方式,即将电路中的共模电压提取出来,再通过负反馈的形式加载到人体右腿(右锁骨中线剑突水平处),从而抑制整个系统中的共模干扰。然后由运算放大器LMC6464组成二级放大和带通滤波电路,同时利用一个数字电位器MCP42010控制二级放大器的放大倍数,消除由于人体的个性差异及电极片粘贴的位置不同而产生幅值上的差别。进一步的,由于A/D转换直接利用主处理器ATmega128L上的模数转换模块,而其A/D转换的电参考压为0—3.3V,设计中利用了LM385作精密基准电源,解决心电信号双极性对电压的要求。处理后的心电信号以及MCP42010芯片与控制器的数据通信、控制信号均统一引出到一接口。如图3所示,将该接口插入到中转节点预留的心电传感板接口即形成一微型心电采集节点。
图4表示本发明的嵌入式监护基站设备的结构图。基站设备由底板、核心板组成,两者采用SO-DIMM200标准插座相连。核心板集成了1片Samsung的S3C2440A主处理器芯片、1片64MB的Nand Flash、2片4Banks×4Mbits×16bits,还包括4个可编程的绿色贴片LED和1个红色3.3V电源LED。主处理器的主频率为406MHz,移植嵌入式Linux操作系统。Nand Flash作为启动ROM和系统程序保存ROM,内部存放启动代码、LINUX内核映像、Root文件系统。SDRAM用于设置程序堆栈、存放各种变量以及缓存心电数据。底板上则采用CS8900A作为10M以太网模块的主控芯片,CS8900A的片选线和S3C2440的通用片选nGCS3相连,即S3C2440将Bank3区分配给了以太网控制器设备。并且S3C2440将外部中断9分配给CS8900A。本发明选用了集成隔离变压器的RJ45接口,这样用网线接入即可实现网络通信。通信射频模块的设计与节点相似。底板还包括电源管理模块。基站设备外接9v直流电源,利用LM2596产生5V的稳压电源;5V电压经稳压芯片LM1085输出3.3V的电压,供处理器S3C2440以及其它3V器件使用;最后,利用输出电压可调稳压芯片产生1.3V电压供S3C2440内核使用。另外,底板预留了一些外扩接口,比如LCD接口。
本发明的各种无线通信数据包格式定义说明如下表1所示。待发送数据的节点首先需要利用RTS/CTS机制与接收节点建立连接。RTS、CTS数据包格式定义分别表1-1和表1-2所示。接收到RTS信号的节点根据RTS信号中“节点与基站距离”域中的信息决定是否要返回CTS。如要返回CTS信号,则目的地址为RTS中的源节点地址。CTS信号中包含应答节点的接收地址和所要求的通信信道CH_NO,其中CH_NO取节点ID的低9位。本发明中设置NRF905的中心频率为422.4MHz,通道频差HFREQ_PLL=100KHz,可设置512个不同的信道,一般情况下可以满足一跳无线通信范围内的各节点具有不同的通信信道,通信频率的计算公式为:f=422.4+CH_NO*1+HFREQ_PLLMHz。CTS信号中还包括剩余能量等多种信息供请求节点在多个应答节点中选择最优的下一跳节点。
表1-3是心电数据包的格式定义。目的地址为选中的下一跳节点接收地址,同一次通信过程中只需写入一次即可。源节点ID号是原始心电采集节点的ID,转发过程中不会改变,ID号与监护区域内的监护对象对应。序列号表示一次通信过程中数据包发送的次序,本发明中一次通信过程的数据包数为20,因此序列号依次为0,1,2......19。接收方根据此序列号判断此次通信过程有无丢包。若出现丢包,则将丢失个数及丢失数据包的序列号发送给发送节点。LOSE数据包格式定义表1-4所示,因为丢失的数据包是随机的,因此LOSE中具有可变字节的保留域用以保证LOSE数据包长度一致。
表1 表示各种无线通信数据包格式说明,表1-1为RTS数据包格式:
表1-1
表1-2为CTS数据包格式:
表1-2
表1-3为心电数据包格式:
表1-3
表1-4为LOSE数据包格式:
表1-4
图5表示本发明的心电采集节点软件流程图。心电节点主要完成心电信号采集与压缩处理、心电数据包无线发送、无线心电数据包接收与转发。
根据图5,软件总体结构包括以下4个子模块:
1系统初始化,包括定时器0,射频通信模块,中断系统,ADC模块的初始化。
2心电数据编码,因为心电信号相邻采样点间的差值有着较强的相关性,本发明利用差分算法和Huffman编码压缩心电数据。
3数据包发送,转发无线接收到的心电数据或发送自身采集的数据。
4数据包接收,接收其他节点发送的心电数据包
软件总体结构还包括两个中断服务程序:
1定时器0中断服务程序,定时时间为4ms,实现250Hz的心电数据采样频率,并根据其他各种用途的标志位有效状态累加计时,满足多种定时要求。
2外部中断5服务程序,通知处理器射频通信模块接收到数据。
图6表示本发明的用于固定部署的中转节点软件流程图,与心电采集节点软件流程相似,区别仅在于图5的虚心线框部分,中转节点无需进行心电数据采集与处理。
本发明的各种用途的定时时间说明如下表2所示,包括CTS信号等待时间定时、LOSE信号等待时间定时、数据包等待时间定时、接收数据包定时,主要用于数据无线通信过程中。
表2 为各种用途的定时时间说明:
计时名称 | 计时用途 | 计时开始时刻 | 计时时间 |
CTS信号等待时间 | 发送RTS信号后,在该时间内接收CTS信号,接收到的CTS信号个数小于等于4 | RTS信号发出之前时刻 | RTS信号发送时间+4个CTS信号发送时间,即为5个无线数据包通信时间。 |
LOSE信号等待时间 | 发送最后一个数据包后,在该时间等待LOSE信号,若在该时间内未接收到LOSE信号表示本次通信成功 | 最后一个数据包发出之前时刻 | 一个心电数据包发送时间+LOSE信号发送时间,即2个数据包通信时间 |
数据包等待时间 | 发出CTS信号后,若在该时间内未接收到心电数据包,则认为未被请求节点选中未下一跳节点,节点将心电数据包发送给其他节点 | 接收到RTS信号并判定要返回CTS信号后 | 4个CTS信号发送时间+2个数据包发送时间,即6个数据包通信时间 |
接收数据 | 一次通信过程中,接收所有 | 接收到RTS信 | 4个CTS信号发送时间 |
包时间 | 心电数据包需要的时间。只有在数据包等待时间内接收到了心电数据包,该计时才继续有效 | 号并判定要返回CTS信号后 | +20个数据包发送时间,即24个数据包通信时间 |
表2
通过实验测试,完成一次数据包无线通信的时间约为7ms,若同一信道两次数据包通信时间间隔不足7ms,发生数据碰撞产生误码的概率较大,本发明中,为了有效的避免数据碰撞,两次数据包无线通信时间间隔设为8ms,恰为两次定时器0定时时间。
图7表示本发明的数据包发送子模块的流程图。其操作流程如下:
1广播RTS信号
2进入低功耗睡眠模式
3等待能否接收到CTS信号
4从返回CTS的节点中择优选取下一跳节点
5切换到数据通信信道
6发送20个心电数据包
7进入低功耗睡眠模式
8等待是否接收LOSE信号
9重新发送丢失的数据包
10返回到主程序
图8表示本发明的数据包接收子模块的流程图。请求节点一跳通信范围内的节点若没有和其他节点建立无线通信任务都有可能接收到RTS信号,但它们中有且只有一个节点能接收到心电数据包。操作流程如下:
1提取RTS信号中的信息
2根据节点条件判断是否要返回CTS信号
3返回CTS信号
4进入低功耗睡眠模式
5在数据包等待时间内接收心电数据包
6存储接收到的心电数据包
7接收数据包时间到
8统计丢失的数据包
9返回LOSE信号
10接收重新发送的数据包
11按缺省数据填充丢失数据
12返回主程序
图9表示本发明的嵌入式监护基站软件流程图,包括两个进程。进程一主要完成与心电节点的无线通信功能,进程二主要完成网络数据传输功能。
图10表示本发明的监控中心的监护软件系统框图,系统使用面向对象及可视化的Delphi集成开发环境。主要包括以下三大模块:网络接收模块,数据库操作管理模块,数据图形显示模块。
网络接收模块中,采用TCP协议,在数据传输之前,通信节点之间必须建立起连接。为确保正确地接收数据,TCP协议要求在目标电脑成功收到数据时发回一个确认(即ACK)。如果在某个时限内未收到相应的ACK,将重新传送数据包。在本系统软件所使用的Tcp Server组件中已封装TCP协议,用来实现网络接收数据的功能。输入FIFO(先入先出)队列缓冲区域实现数据读(心电波形显示)和写(数据接收)的同步进行。通过Huffman解码后的数据写入FIFO。
数据库操作管理模块使用Microsoft SQL Server2008数据平台,记录并保存心电数据,实现历时心电波形显示。
数据图形显示模块用来显示心电数据,根据实际的数据采样频率可以同步显示心电波形,例如心电传感器常用的采样频率为250Hz,可以设置定时时间,在波形输出的一秒内输出250个数据。本系统可以显示两路心电数据波形,并且具有波形放大和打印功能以满足实际需要。
综上所述,心电采集节点以250Hz的频率进行2路8bits的心电数据采样,1s时间内采集的数据量为250×2=500Bytes,一个包传输25Bytes心电数据,故1s需传输的无线数据包为:500/25=20个。本发明中使用差分算法和Huffman编码压缩心电数据,压缩比可达3:1至4:1,这样3s-4s时间产生20个无线数据包,恰为本发明中一次数据通信过程的数据包个数,根据表2一次成功的数据通信过程所需的时间为:RTS信号发送时间+接收数据包时间+LOSE信号等待时间,即为26个数据包通信时间:26×8=204ms。因而,产生一次通信过程的数据包所需时间与无线传输过程所需时间比约可达15:1至20:1,较有力的保证了监护对象的心电数据能被传输到远程监控中心。