文章目录
- Introduction
- Sensor Mote Platforms
- Low-End-Platforms
- High-End-Platforms
- WSN Architecture and Protocol Stack
- WSN Design Considerations
- Hardware Constraints
- Fault Tolerance
- Scalability
- Production Cost
- WSN Topology
- Transmission Media
- Power Consumption
- Sensing
- Data Processing
- Communication
- References
Introduction
得益于微机电系统(MEMS)、无线通信和数字电路的快速发展,设计小成本、小功率、小尺寸、多功能的无线传感器节点变得更为现实,技术也更加成熟。
WSNs 在我们的日常生活中应用非常广泛,例如各种各样的温度传感器、压力传感器等等。这些日常生活中的应用,都需要有非常高效的通信协议的支持。WSNs 含有大量的传感器节点,这些节点必须提供可靠的信息来传递给观察者。而且传感器节点不只是简单的传递原始数据,它会根据自己的处理能力对数据进行一些运算、处理,然后只传输必要的数据。这些特性都对通信协议的设计提出了很大挑战。
在 WSNs 的设计中,能量效率(energy efficiency)是非常关键的一环。传感器节点大多部署在无人区等恶劣环境,只有有限的能量资源。因此,和传统网络注重吞吐量和时延不同,WSN 协议则非常注重功耗节省(power conservation)
WSNs 的部署也是 WSN 协议需要着重考虑的因素。传感器节点的位置不需要预先确定,这使得我们能在一些地势险峻地带部署 WSNs。但这种随机性要求网络能自我规划(self-organizing),自动配置,这需要设计相应的通信协议。
还有一个要考虑的因素则是 WSNs 的密度。因为传感器节点的传输距离较短,大多数传感器节点都被高密度地部署,相邻节点的距离可能非常接近。因此出现了多跳通信(multi-hop communication)来替代传统的单跳通信,这样可以降低功率损耗。单跳和多跳的示意图如下:很明显多跳网络中有节点作为中间节点来转发信息包。
Sensor Mote Platforms
下面给出 WSNs 的定义:
WSNs 可以被看作由一系列嵌入式系统构成,它们能够:
- 通过传感器与环境进行交互
- 在局部进行信息处理
- 与其它节点进行无线通信
WSNs 的三个主要组成部分:
- 无线模块(wireless modules,或者叫 motes):具有处理信息的能力且有可编程存储器(programmable memory),通常包括微控制器、收发器以及少量传感器。
- 传感器板(sensor board):被安装在无线模块上,集成有多种类型的传感器。
- 程序设计板(programming board):提供多种接口,包括以太网、WiFi、USB。
我们将现有的 platforms 分为 low-end 和 high-end。
Low-End-Platforms
Low-End-Platforms 的处理、存储以及通信能力有限,这些节点通常搭载低功耗的微控制器和收发器,因此在 WSNs 中被大量部署来实现感知(sensing)功能。
High-End-Platforms
除了感知功能,WSNs 还有一些 Low-End-Platforms 无法高效实现的功能,例如网络管理,这需要更高的功耗以及存储能力,这就需要用到 High-End-Platforms 了,Low-End-Platforms 表示自己无能为力。
WSN Architecture and Protocol Stack
传感器节点通常散布在所谓的 sensor field。这些节点有收集数据和向 sink/gateway 以及终端用户路由数据的能力。数据通过多跳网络由 sink (汇聚节点) 路由回终端用户,而 sink 与终端用户之间的通信可以通过多种方式,如互联网、卫星或者无线网络等等。
在 WSNs 中,一个节点主要有两重功能:
- data originators,信息的发起者,为了将信息包传到 sink
- data routers,将数据信息路由给其它节点,作为中转站
所有传感器节点以及 sink 使用的协议栈如下图所示:除了我们熟悉的五层体系,还多了俩维度。
这里简要介绍一下,肯定没有计算机网络中介绍的全面。
- Physical layer: 物理层负责调制、解调、传输、接收等技术;
- Data link layer: 因为噪声环境以及传感器节点的流动性,数据链路层通过差错控制(error control technique)来保证可靠通信并通过 MAC 协议来减少节点之间的广播冲突;
- Network layer: 网络层主要负责数据的路由;
- Transport layer: 当网络应用有需求时,传输层帮助维持数据在网络中的流动;
- Power management plane: 管理一个传感器节点如何使用能量。例如,在收到一个信息后,它可能会关闭节点的接收器来避免接收到重复的包。而且当节点干不动时,它会向邻居节点广播信息,告诉大家自己累 die 了,别给我发包了;
- Mobility management plane: 检测并记录传感器节点的流动信息,这样每个节点一直都有自己邻居的信息,不会传串错门,可以更好的平衡功率和任务分配情况;
- Task management plane: 对某个区域的感知任务进行分配、调度。如果不这样做,每个节点都是各自为战,有可能某个节点都快累死了,其他节点还从来没有干过活儿,因此需要它们团结合作,共享资源,提高效率,构建节点命运共同体,这样也活得更久。
后面的文章会逐渐介绍这些层的设计,但我们在计网中学习到的一些协议可能在 WSNs 中并不适用。因此我们接下来先介绍设计 WSNs 时必须要考虑的一些问题。
WSN Design Considerations
Hardware Constraints
一个传感器节点的主要硬件组成如下图所示:
主要有四部分,虚线中的成分不是必需的:
- Sensing unit:通常包含几个传感器单元,来从真实世界获取信息。每个传感器单元负责收集特定类型的信息,张三负责温度,李四负责湿度。每个传感器单元又可分为两个子单元:传感器和 ADC。传感器基于监测到的信息会产生一个模拟信号,被 ADC 转换为数字信号号传入后面的处理单元。
- Processing unit:起到大脑的作用,管理 Sensing unit 的探测活动,运行相关的算法,并与其它节点进行无线通信,商议赚取一个亿的小目标。
- Transceiver unit:Processing unit 与其它节点进行无线通信是通过 transceiver 来实现的。Transceiver unit 在发端将比特流转换成 radio frequency (RF)波并在收端进行恢复。本质上来说,WSN 是靠这哥们儿来相互连接的,而且它消耗最多的能量,所以可以说是一个节点中最重要的部分。
- Power unit:通常可以使用电池来提供能量,但使用其它能量源也是可以的。从图上也可以看出来,节点中的每个部件都由 Power unit 来驱动。但 Power unit 表示自己也是有上限的,这要求每个部件都要 energy-efficient。
可选组件:
- Location finding system:很多传感器网络的功能都需要掌握节点的位置,例如 sensing 和 routing。Location finding system 配备有 GPS 模块,或者通过分布式计算来执行定位算法。
- Mobiliser:为了完成指定的任务,对节点进行必要的移动,会耗费大量资源,要悠着点用。
- Power generator:除了 Power unit 中通常用的电池,对于对续航能力要求比较高的任务,我们可以再额外加一个 Power generator。例如在一些户外场合,可能会用到太阳能电池板。
切回正题,这些硬件的设计有很大的限制因素。
首先是尺寸和重量。这些硬件要能够被集成到一个火柴盒大小的嵌入式系统上,且重量要足够轻,以便悬空应用。
还有许多其它限制:
- 耗能要非常小
- 在高密度下运行
- 成本低
- 自动化程度高
- 适应环境
这其中又当属能耗(Energy Consumptions)最为重要。
在大部分应用场景下,替换节点中的电池都是不太现实的,电池以及整个网络的寿命都是很有限的,而通常一个 WSN 又需要运行很长时间,因此能量资源在 WSNs 中很宝贵。
Fault Tolerance
硬件的一些限制因素可能会使得一个节点频繁出错,没能量了,被驴踢了,或者软件出 bug 了,都有可能导致错误。这可能意味着这个节点就会暂时失去连接。但 WSN 是对关于某个特定物理现象的信息感兴趣,而不是对单个节点传来的信息。因此一个节点的错误应该不会对网络的整体运行有太大影响。
容错能力(Fault Tolerance)相当于一个阈值,如果错误程度没有超过这个阈值,那么网络可以正常运行。硬件和软件都会影响出错率,但由于硬件的选取尽可能压缩成本,所以绝大多数错误都是硬件原因导致的。而因为存储空间和处理能力的限制,软件可能会导致一个节点暂时宕机(不会损毁)。
部署环境也会影响网络的工作。室内环境相比室外环境,干扰就会相对少一些,错误也就少了。
还有种情况就是某个节点跑的太欢 (汽车上),不在无线电的覆盖范围之内了。
改善方法:
- 添加冗余信息(redundancy)
- 依靠广播范围中的多个节点。即使一个节点不干了,还可以找其它节点。
下图总结了增强容错能力的几种机制:
容错能力和传感器被部署的环境有很大关联:
- 对于环境干扰较小的,传感器节点不容易损坏,且不会受到太大干扰,例如部署在家中检测湿度和温度的传感器节点,对错误也不那么敏感,我们也就看个大概,也不会去追求有多精确;
- 但对于环境干扰较大的,例如在战场上,节点可能很容易损坏,且提供的数据那必须得精确再精确,本来地下埋着雷,结果你扫不出来~
因此我们必须要考虑传感器应用的场景,并设计相应的协议或者算法。
Scalability
尽管高密度地部署传感器节点可以提供冗余,提升网络的容错能力,但在一个区域中成百上千节点的堆积,会给网络的管理带来很大挑战。网络协议必须要能够高效地管理这些节点。
Production Cost
面对如此之多的节点,我们必须考虑每个节点的成本。通常来说,节点功能越丰富,成本自然也就越高。且我们之前也提到节点包含的各种硬件设施,这些会带来不少开销。理论上来说,每个节点的成本应控制在 1 美元以内。
WSN Topology
在高密度大面积部署节点的情况下,网络的拓扑结构很难维护和保持,而且如果节点部署在一些受环境干扰大的地方,经常出错,就更难了。
网络拓扑结构的动态变化很快,主要表现在以下三个阶段:
- Pre-deployment and Deployment Phase:传感器节点可以一次性成堆放置(包装在宣传品中,从飞机上扔出去,监视战场),也可以由人或者机器人一个一个放置。因为传感器节点部署的密度很高,我们通常不会精心规划它们放置的位置,但在初始的部署阶段还是要尽可能做到以下几点:1. 减少安装成本;2. 消除预先组织和预先计划的需要;3. 灵活安排;4. 保证网络能 self-organization 以及一定的容错能力
- Post-deployment Phase:在初始的部署完成之后,网络拓扑可能会因为环境条件而不断改变。例如,在移动 WSNs 中,网络拓扑可能会长时间改变。另外,节点之间的连接可能会受到噪声、障碍物以及信道堵塞的影响,这会在短时间内影响拓朴图。如果某个节点死掉了,那么拓扑会永久改变。对于某些特定应用,节点可能会在某一段时间关闭,这会造成拓朴图的周期性变化。因此,网络协议要能够处理这些不同类型的拓朴图改变。
- Re-deployment Phase:如果网络的连接以及容错能力因为拓扑的变化而出现了很大问题,那我们可能需要部署额外的节点。这些新节点可以在任何时间部署来替换坏掉的节点或者去解决新的任务,而且还要想办法让新加入的节点被其他节点识别到。
Transmission Media
WSN 的成功运转离不开节点之间的可靠通信。在多跳通信中,节点通过无线介质构建的链路(links )来与彼此通信。无线电通信时,链路指基站和终端之间传播电磁波的路径空间。为了保证互操作性(interoperability)以及全局的顺利运转,选择的传播介质必须得是通用的,你有我有大家有。通常会选择 ISM 频段,因为这个频段的使用不需要许可证,大家都能用。
对于 WSNs 来说,它需要一个小尺寸、低成本、低功耗的收发器。且依据它的硬件限制以及考虑天线效率和功耗的平衡,收发器的载波频率最好选择超高频段(如 2.4 GHz)。
选择 ISM 频段的好处在于:
- 免费
- 频谱分配资源多
- 全球可用
- 不局限于特定标准
- 施展更加自由
劣势:
- 大家都能用,意味着干扰也会很严重
- 而 WSN 作为低功率设备,通信很可能会被干扰而中断
WSN 中另一种节点间可能的通信方式是红外线(infrared)。红外通信也是免许可的,且对干扰有很强的鲁棒性。基于红外的收发器价格也很低廉,且容易制造。
红外通信可以用在恶劣的环境中,此时 RF 信号已经被衰减的很严重了,例如水下链路。
但红外通信的一个主要限制在于,收端和发端必须处在彼此的视距(line of sight)之中。因此 WSNs 中一般不会选择使用红外通信。
一些应用场景给传输介质提出了更高要求。例如,对于深海探测,我们需要长波来穿透水表面,而在干扰极大的地势或者战场,信道非常容易出错。传感器的天线高度和辐射能量很可能也达不到要求。因此,需要设计高效的编码和调制机制来对这些信道特性建模。
Power Consumption
提到 WSNs,功耗的考虑是必不可少的,我们前面也多次提到这方面的考量。一个节点的主要任务有:检测事件,执行局部运算、处理,将数据传输出去。因此功耗也可以相应的分为三部分:探测,数据处理和通信。
Sensing
Sensing 功率与特定的应用及传感器有本质联系。有些应用偶尔执行 sensing 的任务,肯定要比一直 sensing 的情况耗能多。且 Sensing 算法设计的复杂度对功耗影响也很大。
一般一个 ADC ( Sensing unit 中的组件,记得上面的硬件图!)损耗的功率取决于两个因素:
P ∝ F s ⋅ 2 b e P \propto F_s \cdot 2^{b_e} P∝Fs⋅2be
其中 2 b e 2^{b_e} 2be 表示有效比特数(effective number of bits,即传感器的分辨率),$F_s $ 表示采样率。
我们可以调整这两个参数来控制检测到的数据的准确度。
Data Processing
数据处理的功耗分析和 sensing 大致相同。但与数据通信相比,数据处理消耗的能量非常少。我们将一个 1 kb 的包传输 100 米消耗的能量可能相当于在一个微处理器中执行三百万条指令所消耗的能量。
Communication
我们前面提到过,在所有硬件成分中,收发器消耗的能量最多,因为通信主要就是通过收发器来实现的。当节点不需要收发数据时,我们可以将收发器跳到睡眠状态(sleep state),这样可以节省大量能量。
收和发大概消耗一样多的能量,但主要区别在于传输数据时会使用到放大器。一个简化的通信模型如下图所示:
消耗的能量为传输器和接收器能量之和:
E
c
=
E
t
x
(
k
,
d
)
+
E
r
x
(
k
)
E_c=E_{tx}(k, d) + E_{rx}(k)
Ec=Etx(k,d)+Erx(k)
References
Wireless Sensor Networks, Ian F. Akyildiz, Mehmet Can Vuran. Chapter 1, 2 & 3.