选择特殊符号
选择搜索类型
请输入搜索
本书首先介绍TinyOS操作系统的相关概念,然后较为深入解析该操作系统的内核机制,使得有一定基础的读者也能得到进一步提高。本书的第1章概述了无线传感器网络的特征与现状,并介绍了TinyOS的体系特点及其发展历史;第2章指导读者安装TinyOS系统并编译和下载程序到硬件节点上;第3章介绍了nesC编程语言的语法规范以及系统的运行机制;第4~5章介绍并演示了如何使用TinyOS操作系统的主要功能模块;第6~8章介绍了如何进行应用开发,包括平台的移植、仿真、网络协议以及低功耗实现;第9章通过3个基于TinyOS的应用实例,深入讲解了如何开发类似的应用程序。
第1章 绪论 1
1.1 无线传感器网络概述 1
1.1.1 无线传感器网络的研究进展 2
1.1.2 无线传感器网络的体系特征 3
1.2 无线传感器网络操作系统 8
1.2.1 无线传感器网络对操作系统的需求 8
1.2.2 现有的无线传感器网络操作系统 10
1.3 TinyOS操作系统概述 13
1.3.1 设计理念 14
1.3.2 技术特点 15
1.3.3 体系结构 16
1.3.4 版本说明 17
1.4 与其他WSN操作系统的比较 20
1.5 本书章节安排 24
第2章 开发环境 26
2.1 TinyOS 2.1在Windows中的安装 26
2.1.1 搭建Java环境 27
2.1.2 安装Cygwin平台 30
2.1.3 安装平台交叉编译器 34
2.1.4 安装TinyOS源码与工具包 36
2.1.5 安装Graphviz图形工具 38
2.2 其他安装方法 39
2.2.1 在Ubuntu 9.10中的安装 39
2.2.2 使用RPM包的手动安装 41
2.2.3 TinyOS 1.x升级到TinyOS 2.x 42
2.2.4 使用CVS更新TinyOS 2.x文件 46
2.3 TinyOS安装后的测试 47
2.3.1 TinyOS文件概览 47
2.3.2 检查运行环境 48
2.3.3 仿真测试 49
2.4 程序的编译和下载 50
2.4.1 代码编辑工具 50
2.4.2 编译程序 52
2.4.3 USB串口驱动 53
2.4.4 下载程序 54
2.5 本章小结 57
第3章 nesC编程语言 58
3.1 nesC语言简介 58
3.2 nesC语言规范 59
3.2.1 接口 61
3.2.2 组件 62
3.2.3 模块及其组成 65
3.2.4 配件及其组成 68
3.3 基于nesC语言的应用程序 73
3.3.1 nesC应用程序简介 73
3.3.2 Blink实例 77
3.3.3 BlinkSingle实例 82
3.3.4 移植TinyOS 1.x代码到2.x 86
3.4 nesC程序运行模型 88
3.4.1 任务 88
3.4.2 内部函数 91
3.4.3 分阶段作业 92
3.4.4 同步与异步 94
3.4.5 原子性代码 95
3.4.6 无线模块的开启过程 96
3.5 编程约定 98
3.5.1 通用约定 98
3.5.2 软件包 98
3.5.3 语法约定 99
3.5.4 TinyOS约定 101
3.6 可视化组件关系图 103
3.7 本章小结 104
第4章 基本操作 106
4.1 点对点的无线通信 106
4.1.1 主动消息概述 106
4.1.2 通信接口和组件 107
4.1.3 消息缓存抽象 109
4.1.4 通过无线电发送消息 110
4.1.5 通过无线电接收消息 117
4.2 节点与PC的串口通信 119
4.2.1 信息源和端口测试 119
4.2.2 基站和监听工具 121
4.2.3 MIG消息接口生成工具 123
4.2.4 SerialForwarder和其他信息源 126
4.2.5 发送信息包到串口 129
4.2.6 基于printf库的打印调试 130
4.2.7 常见的串口通信故障 133
4.3 传感 134
4.3.1 传感简介 134
4.3.2 Sense实例 135
4.3.3 Oscilloscope实例 138
4.4 存储 140
4.4.1 存储简介 140
4.4.2 配置数据的存储 141
4.4.3 日志数据的存储 146
4.4.4 大数据块的存储 148
4.5 本章小结 149
第5章 系统内核 151
5.1 硬件抽象架构 151
5.1.1 架构简介 151
5.1.2 不同层次抽象的结合 154
5.1.3 横向分解 155
5.1.4 微处理器抽象 156
5.1.5 HIL抽象级别 156
5.2 任务和调度 157
5.2.1 任务简介 157
5.2.2 TinyOS 1.x的任务和调度器 157
5.2.3 TinyOS 2.x的任务 159
5.2.4 TinyOS 2.x的调度器 160
5.2.5 调度器的替换 162
5.2.6 调度器的具体实现 165
5.3 系统启动顺序 168
5.3.1 启动顺序简介 168
5.3.2 TinyOS 1.x的启动顺序 168
5.3.3 TinyOS 2.x的启动接口 169
5.3.4 TinyOS 2.x的启动顺序 170
5.3.5 系统启动和软件初始化 174
5.4 资源仲裁 175
5.4.1 资源简介 175
5.4.2 资源类型 176
5.4.3 资源仲裁 178
5.4.4 共享资源的应用实例 183
5.5 微控制器的电源管理 187
5.5.1 微控制器电源管理简介 187
5.5.2 TinyOS 1.x的电源管理 188
5.5.3 TinyOS 2.x的电源管理 189
5.5.4 外围设备和子系统 191
5.6 外围设备的电源管理 191
5.6.1 外围设备电源管理简介 191
5.6.2 电源管理模型 192
5.6.3 显式电源管理 193
5.6.4 隐式电源管理 196
5.7 串口通信 199
5.7.1 串口通信协议简介 199
5.7.2 串口协议栈的实现 200
5.7.3 串口协议栈的抽象 207
5.8 本章小结 207
第6章 平台与仿真 210
6.1 平台 210
6.1.1 平台简介 210
6.1.2 底层I/O口 211
6.1.3 新平台的建立 215
6.1.4 CC2430平台的移植 223
6.2 编译系统 226
6.2.1 编译系统简介 226
6.2.2 自定义编译系统 227
6.2.3 makefile入门 228
6.2.4 编写Makefile文件 230
6.2.5 编译工具 232
6.3 TOSSIM仿真 233
6.3.1 TOSSIM简介 233
6.3.2 仿真编译 234
6.3.3 基于Python的仿真 237
6.3.4 调试语句 239
6.3.5 网络配置 242
6.3.6 变量的观察 250
6.3.7 注入消息包 253
6.3.8 C++接口 256
6.3.9 gdb调试 258
6.4 本章小结 261
第7章 网络协议 262
7.1 分发协议 262
7.1.1 分发协议简介 262
7.1.2 相关接口和组件 263
7.1.3 EasyDissemination实例 265
7.1.4 Drip库和DIP库 269
7.2 汇聚协议 276
7.2.1 汇聚协议简介 276
7.2.2 相关接口和组件 277
7.2.3 CTP协议 279
7.2.4 CTP实现 281
7.2.5 EasyCollection实例 287
7.3 本章小结 291
第8章 高级应用技术 293
8.1 低功耗应用程序 293
8.1.1 能耗管理简介 293
8.1.2 外围设备的电源管理 294
8.1.3 无线模块的电源管理 297
8.1.4 微处理器的电源管理 300
8.1.5 低功耗传感的应用实例 300
8.2 低功耗监听 300
8.2.1 低功耗监听简介 300
8.2.2 相关接口 302
8.2.3 message_t元数据 304
8.2.4 HAL层的改进建议 305
8.3 TOSThreads线程 305
8.3.1 TOSThreads线程简介 305
8.3.2 nesC语言的API接口 306
8.3.3 C语言的API接口 309
8.3.4 支持新的系统服务 310
8.4 CC2420联网安全功能 312
8.4.1 CC2420安全模式简介 313
8.4.2 发送端的配置 313
8.4.3 接收端的配置 314
8.4.4 RadioCountToLeds实例 315
8.5 本章小结 319
第9章 基于TinyOS的应用开发实例 320
9.1 基于TSL2550传感器的光照检测 320
9.1.1 TSL2550简介 320
9.1.2 驱动实现 323
9.1.3 传感测试 330
9.2 基于GSM短信的远程数据传输 334
9.2.1 系统简介 334
9.2.2 功能实现 338
9.2.3 短信测试 348
9.3 基于简单蚁群算法的路由协议 350
9.3.1 算法简介 350
9.3.2 协议实现 353
9.3.3 仿真测试 366
9.4 本章小结 370
附录A nesC语言基本语法 371
附录B TinyOS编程技巧 374
附录C 英汉对照术语表 375
参考文献与网址 378
本书语言简练、浅显易懂、图文并茂、脉络清晰。以实际操作为主导,围绕TinyOS操作系统的实际应用进行取材谋篇,着重于技术精华的剖析和操作技巧的指点。
本书适用于高等院校信息类专业的本科生、研究生和教师,也可供国内相关研究机构和公司的研发人员参考使用。
无线传感器是有接收器和。接收器上可以接多个传感器的。输送都是两三百米、频率是2.4GHz。如果需要传输更远的距离的话就需要跳频了。这样整个形式就是无线传感器的网络了。
基于XL.SN智能传感网络的无线传感器数据传输系统,可以实现对温度,压力,气体,温湿度,液位,流量,光照,降雨量,振动,转速等数据参数的实时,无线传输,无线监控与预警。在实际应用中,无线传感器数据传输...
这个....好难说哦,既然天线增益是有的,那么就存在了信号不规则的问题,那么有效通信距离要怎么规定,丢包率低于什么的时候才叫做有效通信半径....接收功率和你所说的通信距离肯定是有关系的。存在着一个功...
无线传感器网络组网设计
无线传感器网络是一种集成了计算机技术、通信技术、传感器技术的新型智能监控网络。本文分析了Zig Bee无线传感器网络的结构,并研究了采用Zig Bee技术如何建立无线传感器网络,及实现终端节点和协调节点的通信。
构筑全球无线传感器网络
如果说互联网构成了逻辑上的信息世界,改变了人与人之间的沟通交流方式,那么,无线传感器网络则是将逻辑上的信息世界与客观上的物理世界融合在一起,改变人类与自然界的交互方式。如今,无线传感器网络如同其他高新技术一样,在经历了十几年的发展之后,正逐步走出象牙塔,迈向更广阔的应用领域。
近几年来,无线传感器网络(WSN)掀起了一场后PC时代的革命。
综合各种应用,WSN有自己的许多特点。首先,WSN是一种嵌入式系统,提供分布处理,动态和适应性;其次,它由以通讯为中心的大数量的小型和微型数据采集设备构成,其主要特征为灵活、自组织、严格资源限制,并且需要实时处理同长时间的单任务串行处理并存,同时大部分时间保持低功耗状态。
2 WSN操作系统(WSNOS)
俗话说:"万丈高楼平地起,一力承担靠地基",WSN的操作系统(WSNOS)是WSN系统的基本软件环境,是许许多多的WSN应用软件开发的基础。WSNOS不是特定的系统/用户界面,也不是特定的一系列系统服务,而是定义了一套通用的界面框架,允许应用程序选择服务和实现;它提供框架的模块化,以便适应硬件的多样性,同时允许应用程序重用通用的软件服务和抽象。同其他操作系统一样,WSNOS是为了方便开发应用,提供物理设备的抽象和高协调性的通用函数实现。它的独特性在于,资源极端受限(处理器速度、存储器大小、内存大小、通讯带宽、资源数量以及电源受限),设备特殊性和缺乏一致的抽象层次。因此,WSNOS的设计策略必须是一个资源库,从中抽取一部分组成应用。它致力于提供有限资源的并发,而不是提供接口或形式。伯克利开发的TinyOS正是这样一套WSNOS系统。
3 WSN需求和趋势
1)工厂真正实现电子信息化需要WSN实地采集数据和监控。文献中谈到了WSN应用于工厂自动化生产线的问题。传统的有线传感只能用在布线容易的短距离空间,而对很多长距离的监控则无能为力。例如,输油管道的监控,需要在输油管道上散布很多传感器,并且互相之间要互通信息。而以往的传感器需要布线,同时传感器之间不能互相通信,阻碍了这种应用。但是,这种无线监控最大的困难是它不如有线传感器可靠。
2)WSN为城市监控,野外监控提供了技术手段。用于监控生态环境、农作物生长环境、城市交通监控、大楼监控等。大量的WSN节点的冗余可提高可靠性,但是它们需要长时间处于不维护状态,因此电池的寿命就成了这种应用的瓶颈。
3)WSN也可用于特殊物品监测,例如:胎压监测、灭火器监测、危险物品监测等。这些对物品的监测也必须要求很高的可靠性,而且要求低功耗以使其可以维持工作到所需的时间。
4)在军事上,WSN也为现代化的先进武器系统提供了新的技术基础。例如:地雷上装上WSN节点,可以与士兵身上的WSN节点通讯,识别敌我,而有选择性地爆炸。这种节点涉及到人的生命安全,其可靠性的要求极高,同时也必须在足够时间内维持工作。
总之,这种应用前景关注去掉"两线"数据线和电源线的无线技术,前者随着RF射频硬件技术的发展而出现,后者随着低功耗的处理器,低功耗的收发器以及低功耗的传感器等低功耗硬件的发展以及电池技术的发展而得以实现。然而,去掉数据线使得通讯变得不那么可靠;去掉电源线使得供电时间的维持成为一个挑战。因此,可靠性和低功耗已经成为了这种技术推广的瓶颈。
从WSN操作系统软件的角度着手解决可靠性和低功耗的问题分析。首先,与一般的嵌入式系统(如PDA,手机等)不同,WSN的资源更加受限,迫切需要系统软件的精心设计,才能满足可靠性的需求;其次,电池技术的发展并不足以满足很长时间不维护的需求,而硬件也需要系统软件的管理才能充分发挥其低功耗特性。这就需要系统软件采用最大限度降低运算功耗和通讯功耗的策略。
由于WSNOS的特殊性,它的调度机制需要简单而实用。下面以TinyOS为例,介绍WSNOS的调度机制。
1.1 调度
TinyOS的调度模型为任务加事件的两级调度,调度的方式是任务不抢占事件要抢占,调度的算法是简单的FIFO,任务队列是功耗敏感的。调度模型有以下的特点:
a) 基本的任务单线程运行到结束,只分配单个任务栈,这对内存受限的系统很重要。
b) FIFO的任务调度策略是电源敏感的。当任务队列为空,处理器休眠,等待事件发生来触发调度。
c) 两级的调度结构可以实现优先执行少量同事件相关的处理,同时打断长时间运行的任务。
d) 基于事件的调度策略,只需少量空间就可获得并发性,并允许独立的组件共享单个执行上下文。同事件相关的任务集合可以很快被处理,不允许阻塞,具有高度并发性。
TinyOS只是搭建好了最基本的调度框架,只实现了软实时,而无法满足硬实时,这对嵌入式系统的可靠性会产生。同时,由于是单任务的内核,吞吐量和处理器利用率不高,因此有可能需要设计多任务系统。为保证系统的实时性,多采用基于优先级的可抢占式的任务调度策略。依赖于应用需求,出现了许多基于优先级多任务的调度算法的研究。把TinyOS扩展成多任务的调度,给TinyOS加入了多任务的调度功能,提高了系统的响应速度。[提出在TinyOS中实现基于时限(deadline)的优先级调度,有利于提高WSN系统的实时性。提出了一种任务优先级调度算法来相对提高过载节点的吞吐量以解决本地节点包过载的问题。
总之,调度决定了处理器的功耗,如TinyDB就是使用好的调度策略来降低功耗的。更为重要的是,各种调度算法也能更好地提高处理器的响应速度,从而提高系统的可靠性。各种基于TinyOS调度算法的扩展研究,各自独立地使得高可靠性和低功耗分别得到满足。
1.2 中断
在TinyOS中,代码运行方式为响应中断的异步处理或同步地调度任务。TinyOS的每一个应用代码里,约有41%-64%的中断代码,可见中断的优化处理非常重要。对于低功耗的处理而言,需要长时间休眠,可以通过减少中断的开销来降低唤醒处理器的功耗。目前通过禁用和打开中断来实现原子操作,这个操作非常的短暂(几个时钟周期--cycles)。然而,让中断关掉很长时间会延迟中断的处理,造成系统反应迟钝。TinyOS的原子操作能工作得很好是因为它阻止了阻塞的使用也限制了原子操作代码段的长度,而这一些条件的满足是通过nesC编译器来协助处理的。由于nesC编译器对TinyOS做静态的资源分析以及其调度模式决定了中断不允许嵌套。在多任务模式下,中断嵌套可以提高实时响应速度。
1. 3 时钟同步
TinyOS提供获取和设置当前系统时间的机制,同时,在WSN网络中提供分布式的时间同步。TinyOS是以通讯为中心的操作系统,因此更加注重各个节点的时间同步。如:传感器融合应用程序收集一组从不同地方读来的信息(如:较短距离位置需要建立暂时一致的数据);TDMA风格的介质访问协议需要精确的时间同步;电源敏感的通讯调度需要发送者和接收者在他们的无线信号开始时达成一致等。
加州大学洛杉矶分校(UCLA) 、Vanderbilt和加州大学伯克利分校(UC Berkeley) 分别用不同方法实现了时间同步。这3个实现都精确到子毫秒级,最初打算开发一个通用的、底层的时间同步组件,结果失败了。应用程序需要一套多样的时间同步,因此只能把时钟作为一种服务来灵活地提供给用户取舍使用。
某些情况允许逐渐的时间改变,但另一些则需要立即转换成正确的时间。当时间同步改变下层时钟时,会导致应用失败。某些系统,例如NTP(Network Time Protocol)通过缓慢调整时钟率同邻节点同步来规避这个问题。NTP方案很容易在像TinyOS那样对时间敏感的环境中出错,因为时间即使早触发几毫秒都会引起无线信号或传感器数据丢失。
目前TinyOS采用的方案是提供获取和设置当前系统时间的机制(TinyOS的通讯组件GenericComm使用hook函数为底层的通讯包打上时间戳,以实现精确的时间同步),同时靠应用来选择何时激活同步。例如:在tinydb应用中,当一个节点监听到来自于路由树中父节点的时间戳消息后会调整自己的时钟以使下一个通讯周期的开始时间跟父节点一样。它改变通讯间隔的睡眠周期持续时间而不是改变传感器的工作时间长度,因为减少工作周期会引起严重的服务问题,如数据获取失败。
J. Elson和D. Estrin给出了一种简单实用的同步策略。其基本思想是,节点以自己的时钟记录事件,随后用第三方广播的基准时间加以校正,精度依赖于对这段间隔时间的测量。这种同步机制应用在确定来自不同节点的监测事件的先后关系时有足够的精度。设计高精度的时钟同步机制是传感网络设计和应用中的一个技术难点。
也有一些应用更重视健壮性而不是最精确的时间同步。例如:TinyDB只要求时间同步到毫秒级,但需要快速设置时间。在TinyDB中,简单的,专用的抽象是种很自然的提供这种时间同步服务的方式,但是这种同步机制并不满足所有需要的通用的时间同步。另外,还可以采取Lamport分布式同步算法,并不全部靠时钟来同步。
1.4 任务通讯和同步
任务同步是在多任务的环境下存在的。因为多个任务彼此无关,并不知道有其它任务的存在,如果共享同一种资源就会存在资源竞争的问题。它主要解决原子操作和任务间相互合作的同步机制。
TinyOS中用nesC编译器检测共享变量有无冲突,并把检测到的冲突语句放入原子操作或任务中来避免冲突(因为TinyOS的任务是串行执行的,任务之间不能互相抢占)。TinyOS单任务的模型避免了其他任务同步的问题。如果需要,可以参照传统操作系统(例如μc/os)的方法,利用信号量来给多任务系统加上任务同步机制,使得提供的原子操作不是关掉所有的中断,从而使得系统的响应不会延迟。
在TinyOS中,由于是单任务的系统,不同的任务来自不同的网络节点,因此采用管道的任务通信方式,也就是网络系统的通信方式。管道是无结构的固定大小数据流,但可以建立消息邮箱和消息队列来满足结构数据的通信。
2 WSNOS内存管理
TinyOS的原始通讯使用缓冲区交换策略来进行内存管理。当网络包被收到,无线组件传送一个缓冲区给应用;应用返回一个独立的缓冲区给组件以备下一次接收。通讯栈中,管理缓冲区是很困难的。传统的OS把复杂的缓冲区管理推给了内核处理,以拷贝复杂的存储管理以及块接口为代价,提供一个简单的、无限制的用户模式。AM[ Active Messages ]通讯模型不提供拷贝而且只提供非常简单的存储管理。消息缓冲区数据结构是固定大小的。当TinyOS中的一个组件接收到一个消息,它必须释放一个缓冲区给无线栈。无线栈使用这个缓冲区来装下一个到达的消息。一般情况下,一个组件在缓冲区用完后会将其返回,但是如果这个组件希望保存这个缓冲区待以后用,会返回一个静态地本地分配缓冲区,而不是依靠网络栈提供缓冲区的单跳通信接口。尽管只有1个组件,任何时候只有一个进入给定缓冲区的指针,组件来回交换使用它们。
静态分配的内存有可预测性和可靠性高的优点,但缺乏灵活性。不是预估大了而造成浪费就是小了造成系统崩溃,为了充分利用内存,可以采用响应快的简单的slab动态内存管理。
通讯协议是WSNOS研究的另一大重点。通讯协议的好坏不仅决定通讯功耗的大小,同时也影响到通讯的可靠性(包的丢失率,包过载等)。TinyOS为满足这样要求的通讯协议提供了基于轻量级AM通讯模型的最小的通讯内核。
1 AM通讯模型
介绍了这种轻量级的AM通讯模型,它构成TinyOS极小内核的通讯系统,其他应用都建立在这个通讯系统之上。AM消息包含用户级处理函数名称和作为参数传送的有效载荷,为了避免网络阻塞和保证充分的性能,消息处理函数必须被很快地执行和异步处理。所有的这些措施都是为了实现低功耗的通讯。尽管AM源于大规模并行处理机和计算群集(Computing Cluster),但是一些基本概念也适用于资源受限的网络小设备。特别是轻量级的AM体系结构可作为杠杆来平衡扩展的通讯框架的需求和有效的灵活性。而且基于事件处理函数触发模型,使应用级的开发者得以避免对数据的忙等,使系统能交迭地同其他活动通讯(如,同传感器交互或执行其它的应用)。
2 WSN通讯协议
介绍了AM为基础的单跳协议和多跳协议,如S-MAC[ Sensor-MAC: Medium Access Control for Wireless Sensor Networks用于传感器网络的介质访问控制]是其中一种单跳协议的低功耗实现;介绍了多跳通讯协议,主要解决自组织的网络路由。简单介绍如下:
S-MAC基于RTS/CTS[ Request to send/Clear to Send请求发送/清除发送协议]调度,并返回无线消息来减少监听的开销。S-MAC保持分段操作(split-phase)和无拷贝特性。所谓分段操作即:在TinyOS中由于任务之间不能互相占先执行,所以TinyOS没有提供任何阻塞操作。为了让一个耗时较长的操作尽快完成,一般来说都是将对这个操作的需求和这个操作的完成分开来实现,以便获得较高的执行效率。
自组织(Ad hoc)的网络路由是一种不需要网桥(AP[ Access Point])的无线对等传输模式。任两个传感器若在彼此的通讯覆盖范围内,则这两个传感器可直接互相通讯,共享资源。它具有对称性,即B若在A的通讯范围内,则A也在B的通讯范围内;但往往由于某些外部条件的限制,可能会造成这种对称的不协调。若在两个相距较远的传感器之间通讯,可以寻找一个中间的传感器作为转发的节点,采用接力的方式来完成通讯过程。利用这种方式可以增加无线网络的通讯范围,但随着传输次数增加,数据的正确率会降低,传输过程的可靠性也降低。这种多跳路由一般可采用树状结构的集中,网络内部路由和分发(dissemination)3种形式。
比较普遍的是基于树结构的路由。它包含父节点标识多跳数或从树根开始的深度(即:父节点的多跳数加1)。一个节点传送一个包给父节点,该节点再传给其父节点,直到包到达树根。设计的关键问题是怎样建立路由树和怎样维护以及怎样转发以便提高传输的可靠性并降低功耗。主要用到两种方法:邻节点发现和连接质量估计服务;支持包的封装和监视转发。WSN系统中,基站连接到PC,发出广播,接收到广播的节点更新路由信息,并重新广播给通过它自己可以连接到基站上的那些节点。这些节点记住第一次监听到的路由更新,就是相应的到基站的最短路径。为了防止路由循环,时间被分成多个时间段,每个时间段路由更新广播一次。
3 低功耗监听协议
针对能量消耗,有以下四个特点:(1)主机模块MCU[ Micro-Controller Unit 微处理器]和收发模块占据电源消耗的绝大部分比重;(2)Active(激活)状态耗能最多,相对而言Idle(休眠)状态耗能最少;(3)收发模块比MCU耗能要多很多。发送一个字节(byte)消耗的能量约等于11000个MCU计算周期所消耗的能量,或是收发一位(bit)消耗的能量相当于MCU处理100条指令;从总体的消耗来看,收发数据所消耗的能量也是最多的。如果我们能够让收发模块和MCU处于多数时间休眠,少数时间激活状态,那么就能明显地降低系统的总体功耗。
介绍了两种典型的低功耗监听方式:周期性多跳监听(Periodic Multi-Hop Listening)和低功耗监听(Low Power Listening)。宏观上进行周期性多跳监听,设置周期性采样的时间间隔来减少主机和通讯模块的激活工作时间,例如:每100秒激活10秒,则减少了90%的能耗,但是限制了实际的带宽;微观上进行低功耗监听,增加监听频率,把每100秒监听10秒变成每300微秒监听30微秒,这样可以在监听不到任何信息的时候让无线收发器处于休眠状态,并且能够在传送1/3位信息的时间内唤醒,但是需要额外花费传送5位信息的时间来检测信息的有无。
使用以上两种监听方式带来的降低功耗效果是显著的。两者都不采用时MCU和收发模块的功耗都很大;只采用微观的低功耗监听,MCU的功耗明显降低,但是,收发模块的功耗降低不是很显著;只采用宏观的周期性多跳监听,MCU和收发模块的功耗都显著降低;两者都采用,MCU的功耗几乎为0,收发模块功耗显著降低。可以用电池寿命数据来说明使用了以上两种监听方式带来的低功耗的效果。两者都不采用时电池只能使用3天;只采用微观的低功耗监听,电池可以使用6.54天;只采用宏观的周期性多跳监听,电池寿命明显增加至65天;两者都采用,电池寿命可以达到数年。可见,采用这两种监听方式把电池的寿命从3天延长到几年,对于应用来说是具有突破性意义的。Intel的下一代Mote原型便采用这种策略来使得整个系统维持操作任务周期不超过1%。