基于TinyOS的传感器网络节点应用程序设计
2010-07-16张西红殷承浩
周 顺,张西红,殷承浩
(军械工程学院计算机工程系,石家庄 050003)
TinyOS具有微型化、支持轻量级并发操作、灵活、低功耗等优点,已经被成千上万的研发人员采用,应用于范围广阔的无线传感器网络中。TinyOS的设计特点主要体现在以下三个方面:(1)基于组件的编程模型;(2)基于事件触发的并发执行模型;(3)采用基于主动消息的通信模型。最初TinyOS是由C语言实现的,后来采用nesC语言实现。nesC对C语言进行了扩展,将组件化思想与事件驱动的并发执行模型结合起来,提高了应用开发的方便性和执行的有效性。
1 应用程序总体框架和程序模型
在TinyOS中,每个应用程序通常由顶层配置、核心处理模块和其他组件组成。每个应用程序仅有一个顶层配置,在顶层配置中,说明该应用所要使用的组件及组件间的接口关系。一般而言,与应用的顶层配置相对应的存在一个模块,以顶层配置名+M.nc命名,此模块就是该应用的核心处理模块。如果一个应用程序只需顶层配置将几个系统组件装配起来就可实现所需的功能,那么,就不必自定义核心处理模块,但所用的系统组件中必有一个作为核心处理模块存在。应用程序的功能决定了所要包含的组件,组件间通过接口进行连接,上层组件调用下层组件的命令,下层组件向上触发事件。应用程序总体框架如图1所示。
图1 应用程序总体框架
一个完整的TinyOS程序就是一个由若干组件按一定层次关系装配而成的复合组件。TinyOS程序模型如图2所示。在TinyOS程序模型中,处于最上层的是Main组件。该组件由操作系统提供,传感器上电复位后会首先执行该组件中的函数,其主要功能是初始化硬件、启动任务调度器以及执行用户组件的初始化函数。每个TinyOS程序至少应该具有一个用户组件,该用户组件通过接口调用下层组件提供的服务,实现程序功能,如数据采集、数据处理、数据收发等。用户组件的开发为TinyOS程序设计的重点。TinyOS提供一些常用组件,如执行组件、传感器组件、通信组件。执行组件用于控制LED指示灯、继电器、步进电机等硬件模块;传感器组件用于采集环境数据,如温度、亮度等;通信组件则实现与其它节点通信。TinyOS提供了两种通信组件:通过无线电收发器通信的组件和通过UART口通信的组件,后者仅应用于槽节点中。硬件抽象层对上层组件屏蔽了底层硬件的特性,从而实现上层组件的硬件无关性,以方便程序移植。
图2 TinyOS基于组件的程序模型
2 源代码的编写
本应用程序sense模拟从传感器主板上的照片传感器上获取光强度值,通过ADC组件将模拟信号转换为数字信号,以二进制数值的形式将其低三位值显示在微粒LED上。其实现模块文件为SenseM.nc,配置文件为 Sense.nc。
首先,进行实现模块的编写,代码如下:
3 程序的编译及仿真
(1)将所编写的程序文件sense放在c:/Tiny-OS/cygwin/opt/TinyOS-1.x/apps目录下。
(2)打开一个cygwin。
输入命令“cd:/TinyOS/cygwin/opt/TinyOS-1.x/apps/sense”,进入应用程序所放目录,而后运行命令“make pc”,系统自动编译程序并会在sense目录下生成一个pc文件夹,其中就是生成的main.exe。
最后输入命令“build/pc/main.exe-gui 10”(这里的10指设置了10个传感器节点),程序会自动连接图形化界面TinyViz,如图3所示。
图3 连接图形化界面
(3)不要关闭cygwin,再打开一个cygwin。
进 入 目 录 :c:/tinyos/cygwin/opt/TinyOS -1.x/tools/java/net/TinyOS/sim
运行命令:“make”
再运行命令:“java net.TinyOS.sim.TinyViz”
此时,系统将自动打开TinyViz界面,其上显示的是10个节点亮灯情况,并显示调试dbg信息,如图4所示。
4 仿真结果的分析
图4 TinyViz中模拟节点采光
在图4TinyViz界面中显示10个节点的亮灯情况。在还未运行时每个节点上都有红、黄、绿三种不同颜色灯。当点击上方的绿色箭头按钮时,仿真软件即开始进行模拟,模拟中可以看到10个节点中不停地闪烁,模拟获取光强度值。其中黄灯代表最低位值,绿灯代表第二位值,红灯代表最高位值。根据红、绿、黄的亮灯情况来模拟节点所获取的光强度数值(二进制数值)。同时,在右方Debug信息栏里会显示节点获取光强度值及亮灯情况,上方delay进度条可调节延迟时间,左边Plugins菜单中可以选择右边信息框中想要显示的其他信息。
[1]刘营,于宏毅.基于TinyOS的无线传感器网络应用程序开发技术[J].传感器与微系统,2007,26(3):93-96.
[2]孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大学出版社,2005:319-390.
[3]邱桂芳,孙宏宇等.传感器网络研究及初步实现[J].微计算机应用,2007(4):350-353.
[4]Levis P,LeeN TOSSM:a simulator for TinyOS networks[EB/OL].(2005 -12 -25)[2009 -10 -12].http:∥www.tinyos.net/tinyos-1.x/doc/nido.pdf.