APP下载

6LoWPAN无线心电传感网络架构与RPL优化仿真

2021-11-01胡俣华黄同成曾文飞

计算机测量与控制 2021年10期
关键词:心电传感路由

胡俣华,黄同成,李 平,曾文飞,段 顼

(1.邵阳学院 机械与能源工程学院,湖南 邵阳 422000;2.湘西南农村信息化服务湖南省重点实验室,湖南 邵阳 422000)

0 引言

随着物联网技术和AI技术等日新月异的发展,智慧养老成为人们关注的热点。智慧养老平台和可穿戴监测设备的发展非常迅猛,但是面世的绝大部分心电监护设备还是采用目前常见的ZigBee、GSM、Wifi、蓝牙等无线传输协议的模块[1]。它们要么抗干扰能力弱,要么网络传输能力差,要么面临网络协议转换复杂等问题,这些无线传输模式都是承载于IPV4网络下。IPv6 加WSN(WSN,wireless sensor networks)是目前的热门研究方向[2]。工作组在2004年发起了一份新的网络方案:6LoWPAN(IPv6 over Lo WPAN),实现了IPv6 和 IEEE802.15.4 网络的无缝连接[3]。本文依据现有技术资料运用6LoWPAN技术架构无线传感网络,并且在RPL网络协议层面上提出了优化方案,据此方案构造的无线传感网络协议转换更简单、网络稳定可靠、构建网络拓扑更快速。

1 传感网络总体设计

1.1 功能需求

1)心电监护无线传感网络需要具备完整的体系架构,包括底层数据采集传感节点、传输节点。

2)基于6LoWPAN实现WSN与IPV6网络互联,6LoWPAN边界路由器需要具备IPV6网络和IPV4网络协议的转换功能。

3)对RPL网络协议层面进行优化设计,保证无线传感网络的稳定性与可靠性,保证时刻变化的无线传感网络建立新拓扑更为快速。

1.2 整体架构

该无线传感网络系统由心电采集模块、6LoWPAN边界路由器(6LBR,6LoWPAM border router)两部分组成。心电采集模块中AD8232[4]数据处理单元将采获取的心电信号经过处理后发送给STC12C5A信号采集单元。处理好的心电信号通过6LoWPAN网络传输至6LoWPAN边界路由器。最后监护终端获取由边界路由器传输至IPV6网络的心电数据,便于低功耗、长时间对病人生理参数进行采集[5]。传感网络整体架构如图1所示。

图1 传感网络整体架构

2 传感网络硬件设计

该传感网络硬件设计包括两个部分:6LoWPAN心电采集节点以及6LoWPAN边界路由器的设计。

2.1 6LoWPAN心电采集节点设计

6LoWPAN心电采集节点由采集模块和传输模块构成,其中采集模块包含电极、AD8232信号处理器、STC12C5A信号采集器。AD8232进行高通、低通滤波处理、信号放大[6];STC12C5A实现对放大器输出的信号进行模数转换,输出形式采用UART的方式。选择CC2530作为传感网络的传输模块,CC2530使用射频技术进行数据传输,搭载80C51内核,配置8KB的RAM和256KB存储器[7],其多种工作模式在设计之初就考虑了低功耗要求,处理和传输心电数据的成本低。

2.2 6LoWPAN边界路由器设计

6LoWPAN边界路由器负责将6LoWPAN无线传感网络和IPV6网络连接起来,它要实现的功能有两个:

1)作为RPL网络的Root节点,对整个6LoWPAN网络进行创建和控制。

2)作为6LoWPAN无线传感网络接入IPV6网络的网关,将心电采集节点获取的数据传输至以太网。

边缘路由器主要由CC2530模块和ENC28J60以太网接口模块[8]构成,6LoWPAN边界路由器如图2所示。

图2 6LoWPAN边界路由器图

CC2530是应用最广泛的芯片之一,在本文中作为传输模块的核心;本文的以太网模块同样选用的是最受广泛应用的ENC28J60模块。

ENC28J60模块采用串行外设接口通信(SPI),任何控制器只要带有SPI的以太网接口,就能与ENC28J60连接。ENC28J60采用了包过滤机制来完成对传输的数据包进行限制,并且内部含有TX/RX缓冲器、MAC模块、PHY模块、DMA模块。PHY 模块实现信号的模数转换;TX/RX 缓冲器是 8KB 的双端口RAM,在 SPI 接口和 MAC 模块起数据缓存的作用。使用时通过两个引脚和SPI实现与主控制器的通信,传输速率可达10 Mb/s[9]。边界路由器的6LoWPAN节点连接ENC28J60模块组建成网络,侦听6LoWPAN和串口是否有数据。

3 软件设计与优化

在Contiki操作系统上开展软件设计以满足无线传感网络的协议转换及数据传输。Contiki是为LLN (low power and lossy networks)开发的操作系统[10]。开发者已经在Contiki中安装了6LoWPAN和RPL路由协议,提供TCP/IP网络协议支持,包括IPv6,可以直接运用相关代码建立起传感网络,具有处理WSN数据帧和IPv6数据报文功能。

Cooja[11]是一款基于Contiki操作系统的仿真软件[12],能够在Contiki的驱动下实现轻量级运行。工作范围很广,可以模拟大集群或小规模的几乎所有无线传感网络。而Cooja软件最强大方便之处在于节点执行模拟器的结果与将节点加载到固件中的结果基本相同。

3.1 6LoWPAN心电采集节点软件设计

6LoWPAN心电采集节点通电后,启动Contiki系统开始初始化,配置参数。随后侦听边界路由器的状态,若RF模块收到来自边界路由器发送来的数据包,进行报文重组、解压缩处理后解析此数据包。解析后的指令信息一般分为两种:监测和控制。若为前者,则采集老年人心电信号并通过RF发送给6LoWPAN边界路由器;若解析结果为后者,则执行控制指令并将心电采集模块的状态信息发送给6LoWPAN边界路由器。6LoWPAN心电采集节点软件工作流程如图3所示。

图3 6LoWPAN心电采集节点软件工作流程

3.2 6LoWPAN边界路由器软件设计

6LoWPAN边界路由器采用CC2530+ENC28J60实现,软件层面上使用时因ENC28J60 的 MAC 模块遵循 IEEE802.3 标准(以太网标准),在数据传输过程中负责完成 SPI 格式和 IEEE802.3 MAC 数据帧格式[13]之间的转换,随后需要完成自身的 MAC 地址和 IPv4 地址之间的绑定。

6LoWPAN如果是接入纯IPV6网络中可以直接在网络层进行数据转发,而不需要转换协议,但由于目前IPV6网络尚未大量运用,当下多是将6LoWPAN网络接入IPV4网络中,因此我们需要用到NAT64转换技术实现6LoWPAN数据包和IPV4数据包的格式转换,并将RPL网络中的心电节点IPV6地址端口映射为ENC28J60以太网接口的IPV4地址端口,解决IPV4地址不够用的问题[14]。NAT64协议转换模型如图4所示。

图4 NAT64协议转换模型图

NAT64是一种网络地址翻译技术,当终端节点访问远程IPv4 服务器时,边界路由器启动 IPv4 与 IPv6 协议转换模块NAT64,IPv6主机端发出封包,源IPv6地址被NAT64模块映射成IPv4地址,同时IPv4主机对应返回的封包,NAT64模块遍历映射关系作出回应,这样就完成了终端节点连接IPv4主机的工作。IPv6 数据报经封装后通过IPv4 的链路层传送[15]实现数据的相互收发。

3.3 RPL路由及Trickle优化设计

3.3.1 RPL路由协议与Trickle定时器

RPL(IPv6 routing protocolfor low power and lossy networks)路由协议[16]用于智能网络,为受限设备通过有损链路而开发[17]。通过有向无环图DODAG(destination oriented directed acyclic graph)[18]创建WSN,根据OF以及节点间相互传递信息来创建和维护。DODAG中包含DIO(DODAG information object)DODAG信息对象;DIS(DODAG information solicitation)DODAG信息请求;DAO(destination advertisement object)DODAG目的地通告[19]。

定时器管理机制是RPL协议的关键组成部分[20]。RPL路由协议中定时器基于Trickle算法来实现DIO控制报文管理,这是的一种低功耗有损网络的自适应机制,适用于资源受到限制的环境。Trickle定时器要是在架构新DODAG的途中查询到网络中存在闭合环路或有节点加入进来亦或是节点网络丢失等都会判定为不一致现象[21],当网络变得稳定时,RPL消息数量会相应减少;当查询到上面所提现象时,会重置Trickle定时器,加快DIO消息发送,达到网络拓扑的重建目的。

Trickle算法中含有最小时隙间隔Imin(min interval)、最大时隙间隔Imax(max interval)、冗余常数K这3个参数以及当前的时隙间隔大小I、当前时间值t、冗余事件计数器C三个变量。Trickle算法简述为以下步骤:1) 在[Imin,Imax]中的任意位置设置一个I的值,然后触发第一个时隙工作;2)触发第一个时隙后,在[I/2,I)]随机选择一个点为t,此时C=0。并且在I处停止时隙;3) 如果传输过程中1次一致性传输现象被Trickle 接收到,那么就使C相应递增1(C+= 1);4) 在时间t,Trickle 自动检测C的值,并判断是否有CImax,置I=Imax;6)如果出现不一致性现象时(环路及新节点加入、脱离网络等),Trickle 为响定外部事件,会重置定时器。

3.3.2 Trickle算法的局限性

由于RPL网络在设计的时候考虑到低功耗问题出于轻量级网络思路限制了路由质量。在DODAG建立和维护过程中会由于路由质量原因无法体现节点拓扑“公平性”导致非最优链路的产生,在这个问题中就牵涉到了Trickle算法。原始的 Trickle 算法中每个节点体现“公平性原则”即在可控条件下,定时发送请求信息来确认路由的可靠性,尽量使得节点在不同网络情况下保有基本相同的发送概率。但由于有损网络特性问题,网络创建过程中时刻受到时间变化及节点加入或丢失情况影响而不停改变。

因此,原始Trickle算法的规定在现实中不能真正意义上实现保有同概率的机制,从而影响路由的可靠性和网络性能。

3.3.3 Trickle优化设计

针对原始Trickle的缺陷,我们需要针对此问题作出改进,Trickle 算法优化部分代码如下所示:

function Trickle-Initialization()

I= Imin, Imax= Imin*28, k = 3 //定义Trickle参数及冗余常数

a = 0 //新增变量a,记录节点连续未发送DIO消息的时间间隔次数

function DIOIntervalBegins()

c = 0 //第一个时隙开始,c置0

timer = random(I/(2^(a+1) ), I ) //选择当前时间值t

function ConsistentTransmissionReceived()

c = c+l //收到一致性传输则c自增1

function TimerExpires()

if (k ≥ c|a = = 2 ) then //判断c与k的值并且若两次未成功发送DIO消息

Transimit DIO //发送一次DIO消息

a =0 //a置0

else

a = a+1 //若c

end if

function DIOIntervalEnds()

c = 0 //时隙结束,c置0

if InconsistentTransmissionReceived

I = Imin

a =0 //当收到不一致传输现象则置I=Imin

else

I = I × 2

if Imax≤ I then

I = Imax//若Imax小于I,则置I为Imax

end if

end if

原Trickle算法代码中每个节点受发送时间间隔设定影响,上轮未发送节点并不一定能在本轮被选中发送DIO消息,因此我们需要在Trickle中改变为此时间间隔来获取相对公平。值得注意的是,并不需要设置其提前于其他节点发送消息,这样可以更多的减少对其他节点的影响。从而达到某个节点被抑制的次数越多,其下一轮被发送的概率就越大的目的。我们设定每个节点维护一个新增变量a,变量a记作未发送DIO消息事件,保存各个节点未发送的时间间隔次数。在DODAG创建拓扑时一个节点在当前时间值t未能成功发送 DIO 消息,a 事件值加一;相反,则将a事件值清空为0。每个节点获取每轮不同的发送优先级均通过维护自己的事件值来实现。另外区别于初始算法,a事件值还通过更改时间间隔的每一轮监听和分配节点的持续时间来实现优先级。在上面Trickle 优化方案里,每个时间间隔都与原算法不同。 侦听和发送的两个时间段不是均匀分布的,而是相对于变量以可变间隔设置。侦听时间为(0,I/2^(a+1)),发送时间为(I/2^(a+1),I)。

我们同时规定,当某个节点连续两个时间间隔都未能成功发送 DIO 消息(因为节点在两次发送未果的情况下相比于其他节点有更高的发送优先级,考虑到有可能未发送节点较多时万一会出现此问题),则在第三个时间间隔内传送节点在某一随机时刻t必须要发送DIO消息,随后维护a值置为 0。后续通过仿真实验与初始RPL网络协议进行对比,以此来验证该优化方案的可行性。

4 RPL路由仿真实验

本文的仿真实验基于Ubuntu系统,使用InstantContiki3.0作为开发环境,Contiki系统中已有相应的应用程序,在网络层中我们使用的是RPL路由协议,因此设计此仿真实验以验证本文方案的网络通信可行性。

4.1 仿真环境设计

运行InstantContiki3.0系统的Terminal终端,输入以下命令打开cooja仿真器:

cd contiki/tools/cooja/

ant run

打开Cooja后,在Cooja工作界面建立100 m*100 m的仿真环境,Trickle算法的参数设置为Imin=28ms,Imax=2(8+8)ms,冗余常数K=3。创建21个节点,内部运行RPL+UDP协议,首先创建一个节点1选取sky mote类型,并修改Description作为RPL组网协议里的root节点,运行contiki/examples/ipv6/rpl-border-router/border-router.c程序,并选取另外20个节点分别编号2-21作为感知节点,在其内部运行contiki/examples/er-rest-example/er-example-server.c程序。仿真环境如图5所示。

图5 仿真环境图

节点1作为6LoWPAN边界路由器节点向外发送DIO消息建立DODAG,邻居节点若在root节点射频周围内且侦听到DIO消息会选择加入到节点1的DODAG。邻居节点以root节点1作为父节点,向节点1回复DAO消息表示自己已加入有向无环图,而后邻居节点向外发送DIO包。诸如此类,其他节点也各自寻找到父节点,并回复DAO包,加入DODAG。

4.2 仿真结果验证和分析

4.2.1 验证网络连通性

在Cooja仿真界面可以查看到各个节点的路由信息,如图7所示。因为此6LoWPAN网络中的每个节点都是根据ContikiMAC地址自动生成的,因此所有的邻居节点都是以“fe08”为开头的ipv6地址。根据Cooja路由信息框中获取的6LBR地址,直接打开InstantContiki3.0自带浏览器输入地址查询即可。在InstantContiki3.0系统中还可以采用在Terminal窗口中输入Ping6+IPv6地址的方式验证网络联通性。Cooja界面各节点路由信息如图6所示。

图6 cooja界面各节点路由信息

查看路由信息可知,6LoWPAN边界路由器已经根据RPL路由协议和邻居发现协议自动生成了6LoWPAN网络,并且可以实现从外部网络访问6LoWPAN边界路由器节点。仿真测试结果表明,该无线传感网络可以由RPL路由协议和邻居发现协议生成6LoWPAN网络,实现无线传感网络WSN和IPV6网络的互联互通,成功架构了基于6LoWPAN的心电监护初始无线传感网络。

4.2.2 Trickle算法优化结果分析

为验证Trickle算法优化前后的RPL网络性能,我们从以下两个方向进行对比:业务报文的投递成功率、网络的平均链路质量,如图7(a)、图7(b)、图7(c)所示。

(a) 业务报文投递成功率

(b) 节点到6LBR的平均链路质量

(c) 节点平均能耗图7 优化前后对比图

1)业务报文投递成功率:在一个时间区间内,计算单位时间内目的节点正确接收到的报文数和源节点发送的总报文数比率。

2)节点到6LBR的平均链路质量:定义为仿真环境中节点到6LBR路径上的平均链路度量值。

3)节点平均能耗:定义为仿真环境中各note节点随时间变化的平均能耗。

优化前后的仿真数据对比如图7所示,从图中可以看到从建立DODAG拓扑到趋于稳定的过程中,经过Trickle算法优化后的方案在业务报文投递成功率和节点到6LBR的平均链路质量方面性能要明显高于原始Trickle算法的RPL网络,并且经过优化后的RPL网络,节点到6LBR的平均能耗也比初始方案低。后随着时间增长,网络开始逐步稳定,两种方案的网络性能指标差距也在逐步缩小,这是因为初始RPL网络协议也逐步形成了更好更稳定的网络拓扑。因此,我们可以得出这样的结论,在降低了节点平均能耗的基础上,Trickle算法优化后的RPL网络协议在业务报文投递成功率和网络链路质量上都有了明显的提升,这对低功耗无线传感网络的拓扑频繁变化更快形成新的DODAG的解决思路提供了更好的方案。

5 结束语

本文基于6LoWPAN技术设计了一种应用于心电监护系统的无线传感网络,能够实现WSN监护网络与IPV6的的互联互通,同时提供了一种基于Trickle算法优化的RPL改进方案,借助仿真实验验证了该方案在提升网络拓扑性能上的作用,能够较于原RPL协议更快地形成DODAG拓扑,以及在降低了节点平均能耗时依然在改善无线传感网络业务报文投递成功率和提升网络链路质量上具有良好作用。该无线传感网络的设计不仅保证了网络传输的稳定性,还提升了节点加入DODAG的速度,使得组网更加快速方便,为该无线传感系统应用提供了更优方案,具有一定的应用前景和现实意义。

猜你喜欢

心电传感路由
基于融合模糊聚类算法的异常心电多频段弱信号快速捕捉方法
新型无酶便携式传感平台 两秒内测出果蔬农药残留
高温光纤EFPI应变传感技术研究及应用
数据通信中路由策略的匹配模式
一种用于6LoWPAN的多路径路由协议
OSPF外部路由引起的环路问题
卡片式智能心电采集仪
硅硼掺杂碳点的制备及其在血红蛋白传感中的应用
微生物燃料电池在传感分析中的应用及研究进展
“声名大噪”的跑步神器?