开源传感器网络平台OpenWSN
无线传感器网络(Wireless Sensor Network, WSN是一张由大量微型传感器组成的感知网,它采用低功耗和自组织无线通信技术互联大量的低成本传感器,提供对现实世界的监测感知功能并可承担适量的信息服务(如追踪和定位等)
它是Internet及其服务的延伸。
Internet连接的是计算机与计算机,沟通的实际上是人与人之间的关系,以WSN和RFID为代表的互联技术连接的则是物与物,沟通的物与物(机器与机器)的世界,兼及物与人之间的通信。因此,可以认为WSN是整个世界的感知终端,是整个世界走向自动化和智能化的基础设施;
它是一个广度计算/深度嵌入的计算和服务平台
它与以3G、4G为代表的高速移动通信网、以Grid和云计算为代表的深度计算/广度服务平台将是未来社会最基本最重要的三大基础信息平台。
与无线局域网(WLAN)的不同
轻量级多跳传输网络,距离更远更灵活
距离和范围优于WLAN,但速率也比较低
功耗更低,可电池供电
成本低1-2个数量级
重在感知而不是通信
定位在灯光、能源、安全、智能建筑、医疗保健等专业或半专业应用领域,产业空间更大
与RFID的不同
RFID可以做的事情,WSN都可以做,比如说唯一标识、信息存储等,故有人利用WSN技术构
建Active RFID网络;
增加了测量和感知,增加了微控制器,可执行更复杂的现场处理,提供更完备的网络互连
协议和机制
成本更高,但是仍大大低于无线局域网技术
依据摩尔定律,成本每年都在迅速下降中
-> 3G / 4G / Internet
-> WLAN
-> WSN / PAN / BAN
-> RFID
与传统测量系统的不同
传统测量系统着重高性能,高精度,对成本不敏感,定位在仪器级
WSN不可能采用昂贵的高精度高成本测量电路和手段,WSN的应用定位决定了它要采用廉价
的/常见的/低成本传感器,这就制约了其精度和性能,但是它可靠多传感器融合有限度的提高精度和性能;
WSN强调网络化区域化感知,可以看作是一个空间上的采样系统,这与强调采样点的传统测
控系统不同
WSN与“传感器+网络”有什么不同?
S+NET的范围更宽,可以涵盖WSN。而WSN若不提供location和time信息,将是一个普通的S+
NET
通信角度:我们通常所说的无线网可以分成:微微网(物物网,PicoNET, WPAN等),用于局
部数据通信的局域网(WLAN等) ,用于覆盖广大面积的电信网(3G等)三个层次,WSN主要指在微微网尺度的互连,而S+NET则对网络形式无限制。但是注意三种网在功能定位和实现技术细节都有所不同,没有一种技术可以完全覆盖三类功能要求。
WSN强调小体积和低功耗。正是由于这两点的技术进步,才使得我们过去构想的很多应用成
为现实。也正是因为要做小做低,所以才要求我们在技术、工艺、管理、能源、环保、感知
等各个方面有新的突破,从而开拓出研究的空间。
问题:传感网的未来如何?2-5年之后,传感网在社会上的应用能否突破目前领域高度相关、应用偏少的现状?能否象Internet那样在未来作为一种社会化基础信息设施出现?
短期:个别应用
未来:一种社会化的信息基础设施,就如同今天的通信网、电力网一样
一种设想:Internet作为骨干,互连多个局域性的WSN,形成未来社会的基础信息设施
对上述问题的理解决定了我们工作的定位和目标
四种价格模式
价值创造:以装备研发为代表,完成从无到有的价值创造(价值1)
价值增值:与特定领域结合,提供系统集成和咨询服务(价值10)
价值放大:规模化生产、销售、推广(价值100-1000)
风投的介入:可以加速,但不会创造新的价值
价值深化:在企业、社区、城市、国家、全球层面上,作为物理世界状态和人化世界效果的反馈通路存在,辅助实现和谐社会目标(价值难以估量)
问题:什么是传感器网络内核(Kernel)?
问题:传感器网络内核应包含哪些内容?它与通常的嵌入式操作
系统内核相比有何不同?
传感器网络内核应为传感器网络应用的开发提供基础性支持
传感器网络内核和传感器网络中间件的区分
问题:什么是传感器网络平台
平台= 运行平台+ 开发平台
运行平台= 硬件+ 内核+ 中间件及进一步扩展
注:传感器网络内核,亦有人称之为传感器网络操作系统(Sensor OS),但是OS的内容不好界定,故这里用内核Kernel之一术语,以区分整个平台中的最关键最中心部分和外围附属扩展部分。
传感器网络内核发展的现状和趋势
以TinyOS为代表的事件驱动内核
为WSN研究提供一个先进的验证性平台
类似事件驱动内核还有浙江大学的Senspire, Swedish Institue的Contiki,UCLA的SOS 2.x等
以MANTIS为代表的多线程节能内核
以传统的多线程方式验证了节能方式
类似内核LiteOS
来自产业界、以ZigBee为代表的强调互联互通和静态开发平台
以uCLinux/uCOS-II为代表的传统工控内核
总体上看,事件驱动和多任务可剥夺式调度是最主要的两条技术路线,尤以前者更为突出。国外的近期进展主要集中在面向实际应用的可动态配置装载卸载的内核上,以及探索两者优点的结合特别是改进调度策略上
问题:为什么要再造一个新的传感器网络内核?
从趋势上看,今天的传感器网络正在由学术界研究为重走向产业
界为主导
在这种情况下,传感器网络基础平台的设计应更多地考虑产业界
现实要求,特别是处理好遗留代码问题,能够很好的与现有各种
系统融合
TinyOS的局限性
强调创新,是很好的新想法验证平台,但对工业界已有传统成果缺乏
继承
ZigBee的局限性
只适于低速、低性能、大延迟、非移动应用
协议栈已经“过肥”,对硬件资源要求高,不利于进一步降低成本
各家产品不统一,几乎都与自家硬件产品绑定,缺乏通用性和可移植
性
网络管理仍有困难
可靠性
满足无线传感器可长期稳定运行数年的要求;
易用性
充分利用现有技术资源,代码资源和人力资源
可移植性
能适合多种底层架构和多种硬件平台;
可扩展性
系统可裁减,适应存储器从数KB到数百KB、MCU能力从数MHz
到数十MHz范围的不同应用
兼容性
可独立运行或作为其他RTOS组件运行。
针对可靠性目标:
初始资源一次性分配方案,避免了在内存高度受限系统中动态申
请和释放存储器资源导致的潜在不稳定
针对易用性目标:
在系统中提供多种预定义组件和组件间的连接方式,且应用程序
自定义组件和操作系统预定义组件符合相同的规范,从而缩短了
学习时间
针对可移植性目标:
采用分层架构特别是引入硬件抽象层实现
针对可扩展性目标:
基于通过组件库方式改善
针对兼容性目标:通
过修改内核调度器驱动模式实现。
划分Hal,Kernel,Service和App四层,并且严格遵循上层可调用下层(允许跨层调用)、下层禁止调用上层的策略,破除了下层对上层的依赖
Service层提供了一系列自治服务,供应用App选择性组装成为一个完整的可执行软件, 并由Kernel为这种组装提供基础支撑,包括事件的分发和调度等功能
在Service层对象库和Kernel的支持下,应用App层的开发就简化为选择所用到的服务,并且借助Kernel进行连接和组装的过程,而应用的运行就体现为这些服务在Kernel事件调度器的驱动下协调演化的过程
定义:服务
以被动(Passive)方式等待外部请求调用然后提供服务的对象称之为服务(Service),服务的Passive工作模式有助于破除对象之间的耦合依赖,从而简化服务的组装。因此,本文以术语“服务”强调对象的被动工作特性。
定义:可运行服务(Runnable Service)
实现了evolve接口的服务。可运行对象服务的行为可通过有限状态机严格描述,该状态机的演化由发送给该对象服务的事件(event)驱动,在C语言中形式上通过一个带有event参数的evolve
接口函数实现。一般,调度器会承担起向各可运行服务转发事件、驱动执行的责任。
定义:服务库(Service Library)
所有服务的集合。
在OpenWSN中,可运行服务是一个可被调度执行的实
体,通常具有如下形式:
typedef struct{
Int state;
}service_t;
/* 服务创建与销毁*/
service_t * service_ construct( void * mem, int size, …);
void service_ destroy( service_t * svc );
service_t * service_open( service_t * svc, …);
void service_close( service_t * svc );
/* 接收外部发来的事件并驱动服务状态机演化*/
int service_evolve( service_t * svc, event_t e );
可运行服务(Runnable Service)和传统RTOS中的任务(Task)或线程(Thread)比较
可运行服务吸收了OO优点,集成了数据和操作,作为一个整体成为资源申请与释放的单位,减少了资源频繁申请释放在内存受限系统中长期运行中的潜在不稳定性,减少了资源泄露的可能性;
可运行服务对外提供标准的evolve接口(listener接口)接受来自其它对象的事件输入并驱动自身状态机演化。而在经典的多线程并发模型中,线程自己必须管理事件和数据的输入输出界面和内部的状态机。
在这种架构下,应用程序(Application)蜕化为如下
三元组:
App := {Sapp, C, Scheduler}
其中,Sapp表示应用程序服务集,它是服务库的子集,C表示各服务之间事件流转的关系,在系统初始化时给定,Scheduler承担事件缓冲、通知、分发和延迟的功能,驱动各可执行服务的演化。
因此,应用程序的构建过程就是从服务库中挑选用到的服务,然后创建其实例,并借助Kernel将它们连接起来的过程
如服务库中缺少特定组件,则可自行开发并补充进服务库与通用PC机软件不同,在资源高度受限系统中,
应努力回避频繁的资源申请与释放
包括在程序中频繁的创建和销毁对象,这是由动态内存管理算法本身的弱点、应用的实时性要求和长期运行的高可靠性要求所决定的。
因此,OpenWSN中暂不支持对象的动态申请与销毁
所有对象必须充分预估自己的存储器消耗,并且在初始化时统一创建。这种一次性把资源性申请足的方式避免了由服务创建失败导致的系统不确定性,以及动态申请释放导致的内存碎片带来的潜在不稳定性,有助于提高系统长期运行的可靠性。
应用由各服务粘合而成
粘合的手段包括:事件通知机制、事件分发机制和事件调度机制
事件的通知和分发分别通过notifier对象和dispatcher对象实现。
notifier对象负责将收到的事件e复制多份送给所有接收者,而dispatcher则要根据内部的事件-服务映射表或者规则选择性的将e送
给某一个接收者。在接收者只有1个的情况下,发送者可以直接调用接收者的evolve()接口函数将事件e送过去。
但是notifier和dispatcher对象只能实现同步调用,
如需异步调用,则需利用调度(scheduler)对象服务。
需要异步发送的事件可推入scheduler事件队列,并由scheduler代理实现异步处理
特别的,由硬件触发的中断服务程序也可将约定好的事件推入该队列,并由scheduler代理实现非中断态下的继续处理。
定义:事件处理能力
1秒钟内整个系统能处理完毕的事件数量。
在一个60MHz ARM芯片上,指令平均以近似单周期完成,假定每个事件需要10-4条指令才能处理完毕,则该芯片的事件处理能力可达到6000个/秒。这个速率足够满足绝大部分应用场合。而在8MHz时钟的MCU上,事件处理能力也可达到800个/秒左右。
多服务对象并行演化的应用系统模式便于与层次状态机模型或Petri网模型对照,便于形式化验证。
取消了动态内存分配,避免了由动态内存分配导致的潜在的行为不确定性。
本质上整个调度器内核和接受内核调度的所有服务对象都运行在同一个线程上下文中,没有线程切换的上下文开销,而服务对象之间切换的开销仅等同于普通的函数调用开销。
在入门上较普通的线程模型略微复杂,但多线程模型中的协调同步通信保护很复杂,且为了实现状态机设计,线程模式下通常需引入额外的处理如无限循环,消息的传递,共享数据保护等,而在OpenWSN内核支持下,上述过程已经规范化,每个可执行服务可集中关注处理逻辑而不是交互接口,而且,APP层也遵循同样的框架,整个系统风格统一,简化了使用和扩展。
既可单独运行,也可通过切换scheduler的驱动源实现整个体系向宿主RTOS的移植。
根据摩尔定律,成本将在未来3年内再次大规模降低,3年之后将降低到许多应用可以接受的程度。事实上,今天已经被很多领域所接受
由于新兴厂家的介入,传感器硬件平台多样化的趋势不可阻挡,但软件平台将逐渐收缩到少数开源选择上,这对厂家、开发者和客户都是有利的
由于竞争加剧,常规无线传感器硬件结点的价格将迅速降低,只有少数拥有核心技术的厂商能够继续维持较高利润率
思考:什么是核心技术?
标准之争更加激烈,与通信市场类似,将形成几家并存的局面,不会一家独大,但中国市场可能例外,ZigBee也许会占主导
专有技术和标准技术将继续共存
传感与测量、能量供给、网络管理与安全、数据分析是目前和未来的主要技术障碍
因此也成为研发的热点和重点
OpenWSN Team的重点就是:结点平台(着重传感与测量以及平台软件)、数据处理
与传统技术的融合明显,严格的学术化的传感器网络在实际中让位于各种形式的杂交网络,例如工业企业中拖着电源线的无线传感器
*和工业需求将是主要的应用推手,*相关类应用包括社会安全、智能交通、节能、环境等领域,企业类应用将着重工业、电力等行业。
企业类应用的务实本质最终将成为推动和引导本领域发展的主要动力,但当前阶段*的推动却仍是主要动力
传感器网络数据与传统和已有信息系统的结合将成为新的信息系统特色,从而为构建社会化的反馈通路做好铺垫。
在体传感网的技术和应用仍有待观察,目前受阻于传感与测量手段,其流行速度将慢于电力、交通、工业等传统领域有ZigBee就足够了,其它技术不用关心
ZigBee不是万能的,很多领域都不是ZigBee的擅长,专有系统在未来相当长时间内仍将大行其道
网络规模可以任意扩大,支持65536个结点
规模大与小的差别很大,“林子大了什么鸟都有”,网络大了也“一样”。如此之大网络的管理和运行会有很多新问题,至少这么大的单一网络我还从未听说过。
“距离不够咱们加功放轻松解决”
多跳网络中谨慎看待增加功放方式,对其它结点和网络的副作用也不小
链路信道时好时坏,太麻烦了,咱们选一个不怎么丢失数据的信道吧
需深入了解信号传播规律,这种观点说明信道评估做的不到位
网络?能通信就可以了
网络的管理侵消掉系统运行更大的成本,例如,自我更新就很迫切
在硬件上只要采用了低功耗MCU和Sensor就是低功耗设计
错误的硬件设计导致功耗偏高,不具备关断能力的硬件使得软件的节能努力白费
降低成本?那咱们选用便宜的MCU吧
抱歉,今天成本主要在于传感器和测量环节
传感器,只要买现成的就可以了
传感与测量是永远的难点,很多时候要么买不到,要么能买到但买不到
合适的,这需要测量技术来帮助,测量本身也是很大一门学问
现场部署,没考虑过
外壳,雷电、潮湿、闷热,不良步署将导致整个系统彻底失败
环境监测中采用了高功率电池
却没有注意电池本身对环境也是很大的污染,而且经常难以回收