基于TinyOS平台的RSSI定位系统设计与实现
摘要 RSSI定位算法是无线传感网络节点定位中一种常用的定位算法,文中以Crossbow公司提供的iris节点及MIB520接口板为硬件平台,以TrinyOS操作系统支持的NesC语言为软件操作平台,设计了RSSI定位系统。分别在室内和室外两种环境下对其进行实验验证,证明了系统的有效性。
关键词 无线传感网络;TrinyOS操作系统;NesC语言;RSSI定位算法
WSN(Wireless Sensor Network)定位技术应用广泛,除可以反应出事发地点外,还可跟踪目标、实时监测目标的行动状态、预测目标的行动轨迹等。目前的定位算法可分为两类:基于测距的定位算法和无需测距的定位算法。由于基于测距的定位是采用实际测得节点间的距离或者角度,因此定位精度较高,对硬件也提出了一定的要求,在定位过程中相对消耗的能量较多。无需测距的定位算法不需要实际测量距离或角度信息,对节点不存在特殊要求,定位过程中无需考虑能量消耗问题,但定位精度及其节点覆盖率却有待提高。在基于测距的定位算法中,RSSI(ReceivedSignal Strength Indicator)定位算法相对而言通信开销较小,对硬件要求较低,是一种较为实用的定位算法。文中在TinyOS软件平台下,利用Crossbow公司提供的硬件设施对RSSI定位系统进行了实验验证,并结合实际情况对所得数据进行了分析。
1 TinyOS操作系统及硬件平台
1.1 TinyOS
TinyOS是UC Berkeley开发的一种用于无线传感网络节点的开源操作系统,以其组件化的编程、事件驱动的执行模式、微型的内核以及良好的移植性等特点作为目前WSN系统上的主流操作系统。TinyOS操作系统没有进程或线程管理,没有虚拟内存管理,没有过于复杂的IO子系统及地址空间分配,这对于存储资源有限的系统尤为重要。
1.2 NesC语言
加州大学伯克利分校在C语言的基础上开发出一种适用于无线传感网络编程的NesC(C Language for Network Embedded Systems)语言,TinyOS操作系统和其上运行的应用程序用NesC语言开发。NesC是在C语言上做了一定的扩展,提出了组件化的编程思想,把组件化/模块化思想和基于事件驱动的模型结合在了一起。其主要用处是帮助应用程序设计者建立易于组合成完整、并发式系统的组件,并能够在编译时执行广泛检查。
1.3 iris硬件特性
iris节点工作频率为2.4 GHz,支持IEEE802.15.4协议的Mote模块,用于低功耗无线传感网络。它具有3倍的作用距离,双倍的存储空间;在户外测试不加放大器的情况下,节点间视距离可达500 m;使用直接序列扩频技术,抗RF干扰、数据隐蔽性较好;基于IEEE80 2. 15.4/ZigBee协议的RF发送器,工作频率2.4~2.483 5 GHz,兼容ISM波段。
2 RSSI定位算法
2.1 RSSI测距
节点间发送的信号在传播过程中都会有衰减,RSSI无线传感网络定位算法的核心是根据节点间发送信号的衰减计算出节点之间的距离,然后依据节点之间的距离计算出盲节点的位置坐标。无线信号的发射功率与接收功率之间的关系如式(1)所示,其中PR是无线信号的接收功率,PT是无线信号的发射功率,d为收发节点之间的距离;n为传播因子,其值大小取决于无线信号传播的环境
式中10lgPR是接收信号功率转换为dBm的表达式,即RSSI值,其中A为信号传输1 m时,接收信号的功率值。所以可得到盲节点与信标节点之间的距离为
2.2 三边测量法定位
三边测量法是无线传感器网络定位算法中较为最典型的一种。在盲节点通过基于RSSI的测距方法获取到3个或以上信标节点的距离后,就可利用三边测量法进行自身定位。如图1所示,已知3个信标节点A、B、C的坐标(x1,y1)、(x2,y2)、(x3,y3)。假设盲节点的坐标为(x,y),根据盲节点接收到的RSSI值,得盲节点到A,B,C的距离分别为d1、d2、d3。
则根据三边测量法原理,有式(4)成立
由式(4)可以求得盲节点的坐标如式(5)所示
3 RSSI定位算法在操作平台上的实现
在此环节中,主要用NesC语言在TinyOS环境下将RSSI定位算法具体实现,编译成功后将NesC程序分别烧写到对应的硬件节点中进行实验。其实验结构如图2所示,信标节点发送包含自身坐标的数据包到盲节点及基站节点。盲节点接收信标节点发送的数据包解析出每一个的RSSI值,结合信标节点的位置坐标计算出自身坐标值,并将结果发送至基站节点。基站节点接收一切数据包,并将其发送到XServe中转站。
PC机上的XServe作为节点网络和操作者之间通信的主要通道,它提供多个通信端口用于输入信息,以便于网络间数据传送;操作者可以通过终端接口或XMLRPC命令接口与其进行通信;它可以解析、转换和处理节点传送的数据;在解析过程中,将原始格式的数据转换到相应的传感器读数测量单位;最后将转换后的数据显示于XSniffer界面中。PC机上的XSniffer可以显示出XServe传送的所有数据;能够让操作者监测到网络中的所有节点是否都在正常通信、数据包的序列号以及传送地址是否正确、以及路由的更新和时间同步消息。
评论