无线传感网(WSN)
一、 简介
无线传感网(wireless sensor network)是由在空间中分布的含有传感器的自主设备所组成的无线网络。这些设备协同监测不同位置上的物理或环境条件,比如温度、声音、振动、压力、运动、污染等。无线传感网的开发最初用于军事用途,比如战场监视。如今无线传感网已被用于很多民事用途,包括生态环境监测、医疗卫生应用、家庭自动化、交通控制等。传感网络中的每一个节点除了装有一个或多个传感器以外,一般还装有一个无线电收发器,一个小型微控制器,和一个能量装备,这通常是一个电池。单一传感节点的大小不一,大如一个鞋盒,小至一粒尘土。同样的,部署这些传感节点的花费也不一,这要取决于传感网络的大小以及单一传感节点的复杂度。在尺寸和费用上对传感节点的制约,导致了对其在能源、存储、计算速度和带宽等资源方面上的相关制约。
在计算机科学和电信学领域,无线传感网是一个活跃的研究方向,每年都安排有大量的研究小组和研讨会。
二、 应用领域
无线传感网在不同的场合有很多应用。在商业和工业领域,有些数据很难用有线传感器来监视,或者实现起来代价过于昂贵,在这种场合可以用无线传感网来监视。无线传感网可以被部署在野外环境,它们可以被放置多年(用来监视某些环境因素)而不需要重新充电或者更换能量装备。它们能够组成属地的边界,监视入侵者的行进过程(将信息在节点之间传递)。
无线传感网的用途很多,典型的应用包括监视、跟踪和控制。它一般被用于自然环境监视、目标跟踪、核反应堆控制、火警监测、交通监视等用途。在一个典型的工作环境中,无线传感网被分散布置到区域中的各处,通过它的传感节点来采集数据。
地区监视是无线传感网的一种典型应用。在此应用中,无线传感网被布置在需要监视某种现象的区域中。举例来讲,可将大量的传感节点布置在战场上,取代地雷来监视敌人的入侵。一旦传感器检测到被监视事件(热、压力、声音、光、电磁场、振动等)的发生,就需要将该事件报告给基站,基站收到报告后做出相应的动作(比如将消息发至互联网或者卫星)。根据具体应用的场合,不同的性能目标需要不同的数据传播策略,这些目标包括对响应的实时性的要求,对数据冗余的要求,对安全性的要求等。
三、 主要特点
无线传感网的特点有:
Ø 节点小型化
Ø 有限的能量供给
Ø 苛刻的环境条件
Ø 节点失效问题
Ø 动态的网络拓扑
Ø 通讯失败问题
Ø 大量部署的节点
Ø 无人值守
可以将传感节点想像成一台小巧的计算机,特别是在它们的接口和组件方面。传感节点通常由这些部分组成,一个计算能力和存储能力有限的处理单元,一些传感器(有特定的调节电路),一个通讯设备(通常为无线电收发器),和一个通常为电池的能量供给装置。其他一些可选部分有环境能源发电模块,辅助的专用集成电路,以及可能的辅助通讯设备(比如RS232或USB)。
基站可以有一个或者多个,它们是无线传感网中的特殊成员,具有相对强大的计算、能量和通讯资源。基站的作用相当于传感节点和最终用户之间的网关。
典型的无线传感网架构见图1。
图1 典型的无线传感网架构
四、 硬件平台
硬件方面的主要挑战在于制造低成本和微小的传感节点。考虑这一目标,现在的传感节点主要还处在原型阶段。小型化和低成本的解决要寄希望于最近以及将来在微机电系统(MEMS)和纳机电系统(NEMS)领域的进展。
SNM - Sensor Network Museumtm.上概括了常见的传感网络平台,组件,技术和相关主题。
和主流计算机不同,目前还没有无线传感网的官方标准,所以硬件以及软件的互操作性和可重用性都较低。下面列出一些领域内研究所使用的标准:
Ø ZigBee
Ø Wibree
Ø 6lowpan
五、 软件平台
对无线传感网节点而言,能量是最缺乏的资源,它决定了节点们的生命周期。无线传感网节点将被大量放置到各式各样的环境下,包括遥远和敌对的区域,这样自组织通讯将变得重要。由于这些原因,算法和协议必须解决以下问题:
Ø 生命周期最大化
Ø 鲁棒性和容错性
Ø 自配置
无线传感网软件研究上的一些热门课题有:
Ø 安全性
Ø 可移动性(移动中的传感节点或者基站)
Ø 中间件(在软件和硬件之间设计中间层)
(一) 操作系统
一般来说,无线传感网节点上的操作系统比通用操作系统的复杂度低。这有两方面的原因,一方面是由于传感网应用程序的特定需求,另一方面是由于传感网硬件平台的资源限制。举一个例子,传感网应用程序通常不要求像PC机应用程序那样的可交互性,这样操作系统就不需要支持那样的用户接口。更进一步讲,在内存和内存映射硬件支持上的资源限制,使得类似于虚拟内存的机制变得不必要或者不可能实现。
无线传感网在硬件上和传统的嵌入式系统没有区别,这就有可能在传感网上使用像eCos或者uC/OS这样的嵌入式操作系统。不过这些操作系统的设计通常具有实时特性,而与传统嵌入式操作系统不同的是,专用于传感网的操作系统一般不支持实时性。
TinyOS也许是第一个专门为无线传感网而设计的操作系统。和大多数操作系统不同,TinyOS采用基于事件驱动的编程模型,而不是基于多线程。TinyOS程序由事件处理例程和具备语义运行的任务所组成。当外部事件发生时,比如新到数据包或者读传感器,TinyOS调用相应的事件处理例程来处理该事件。事件处理例程可以发布任务,这些任务将被TinyOS核心所调度。不管是TinyOS系统,还是TinyOS下开发的应用程序,都是用nesC编程语言写成的。nesC是C编程语言的扩展,它被设计成可以发现在任务和事件处理例程之间的竞争条件。
存在一些操作系统支持C语言编程,这些操作系统包括Contiki、MANTIS、BTnut、SOS和Nano-RK。Contiki的设计支持从网络加载模块,还支持运行时加载标准ELF文件。和TinyOS一样,Contiki的核心是基于事件驱动的,但是Contiki支持基于每应用程序的多线程。更进一步的,Contiki支持protothreads,它在提供类似于多线程编程抽象的同时,只支付了非常小的内存开销。与事件驱动的Contiki核心不同,MANTIS和Nano-RK的核心基于抢先式多线程。在抢先式多线程方式下,应用程序不需要显式地释放微处理器给其他进程,取而代之的是,核心将时间划片给活动进程,并决定当前可以执行哪一个进程。这使得应用程序的编程更加容易。Nano-RK核心对资源的分配是实时的,能够有很好的粒度来控制任务对CPU时间、网络和传感器的占用。和TinyOS、Contiki一样,SOS是基于事件驱动的操作系统,SOS的主要功能是支持可加载模块,一个完整的系统由一些小模块所构建,这样的构建可能发生在运行时。为了支持模块接口内在的动态性,SOS也致力于支持动态内存管理。BTnut基于协作式多线程和plain C代码,有打包的开发工具和指南。
(二) 中间件
目前有大量的研究投入在无线传感网中间件的设计上。一般来讲研究方向可以分为分布式数据库、移动代理和基于事件的模型。
(三) 编程语言
在传感节点上的编程比在常规的计算机系统困难。这些节点上受限的资源状态,带来了新的编程模型,尽管这些节点大多采用C编程语言。下面是一些编程语言列表:
Ø c@t(在空间和时间上的某一点上进行计算)
Ø DCL(分布式组合语言)
Ø galsC
Ø nesC
Ø Prototheads
Ø SNACK
Ø SQTL
(四) 算法
无线传感网包含大量的传感节点,这就隐含地要求为无线传感网所设计的算法是分布式算法。在无线传感网中,最匮乏的资源是能源供给,而最耗费能源的操作之一是数据传输。由于这个原因,无线传感网的算法研究大都集中在能源相关的从传感节点到基站的数据传输算法上。由于无线传输的能源消耗相对于传输距离以多项式增长,数据传输常是多跳的(从节点到节点,往基站方向)。
无线传感网的算法研究和协议研究的区别在于,算法研究的数学模型通常更抽象,更具一般性,但是有时候实用性不如协议设计的模型。
六、 仿真系统
存在一些专门的无线传感网仿真平台,比如TOSSIM,它是TinyOS的一部分。ns-2之类的传统的网络仿真器也可用来仿真。一份详尽的无线传感网络仿真工具列表可以在CRUISE WSN Simulation Tool Knowledgebase上找到。
七、 数据可视化
无线传感网所采集的数据通常以数字数据的形式存放在一个中心基站。有很多程序支持查看其所存放的大量数据,比如TosGUI、MonSense和GSN。另一方面,开放地理空间联盟(Open Geospatial Consortium)正在制定可互操作接口和元数据编码的标准,这些标准支持将那些异质的传感站点实时地集成到互联网,允许任何一个个体使用Web浏览器监视或控制无线传感网。