无线传感器网络是由大量低廉的微型传感器节点组成的无线网络,是目前国际上无线领域研究的热点之一,应用前景非常好;而TinyOS是美国的伯克利大学开发的,为嵌入式无线传感器网络而设计的源码开放的操作系统,它运行在每个网络节点上,是其他上层应用和协议运行的前提。本设计以nRF24E1无线通信模块为核心,基于无线传感器网络操作系统TinyOS,使用模块化设计思路,实现了一个无线传感器网络。
1无线传感器网络设计
1.1系统构成概述
无线传感器网络由三类节点构成:一般采集所需要的信息无线终端节点;收集一般节点中的数据并进行存储、处理、上传的无线路由器节点;无线服务节点实现无线路由器节点处理中心并充当网关与其他外部网络的连接。三类节点的硬件构成基本相同,每个传感器节点具有数据采集、简单的数据处理、短距离无线通信和自组网能力。
1.2总体设计框图
无线传感器网络中三种节点硬件平台的构建基本相同,其基本节点构成框图如图1所示。无线终端节点可去除显示模块、串口通信模块和声光报警单元,以节约节点的电能。
图1节点构成框图
主控制部分装载传感器网络操作系统,实现对各个模块的驱动,并对各个模块的数据进行处理;电源模块为系统供电;无线通信模块实现数据的无线传输功能;串行通信模块可用于与上位机进行通信,也可用于进行系统配置;传感器模块利用传感器采集数据,并进行数模转换后交由主控制器处理;数据存储模块用于临时或永久存储系统数据备查。
2系统的硬件实现
对于无线传感器网络硬件平台的搭建,国内外很多学者提出,用MSP430或AT89C2051作为主控制器,结合无线收发模块来实现。国内中科院杭州计算机所研制的gainz节点采用ATmega128处理器,再结合射频收发芯片来实现,这样做难以真正做到微型网络节点,且成本难以控制。美国的伯克利大学研制的产品Mica2Dot节点采用自己设计的ASIC来实现,这需要足够的技术力量和资金。本系统以nRF24E1无线通信模块为核心。 nRF24E1是一颗集成高速2.4 GHz无线收发内核的增强型51单片机,可实现51单片机的所有功能。这是一颗高性能单片机内核的高速1 Mbps单片无线收发芯片,所有高频元件(包括电感振荡器等)已经全部集成在芯片内部,使得产品一致性良好、性能稳定且不受外界影响;可跳频,点对多点通信及无线检错,所有功能均在一个6 mm×6 mm的QFN36芯片上实现。由于nRF24E1系统自带存储空间有限,系统外加一个串行EEPROM 25xx320,用来存储TinyOS操作系统。在具体实现时,将TinyOS编译生成的系统文件转换为hex文件格式,然后再用eeprep.exe转换工具转换为24E1格式的hex文件,用通用编程器将生成的24E1格式的hex文件写入25xx320。25xx320是32 Kb,SPI接口串行EEPROM。nRF24E1 上电时先将外挂的25xx320 的程序全部下载读入内部的4 KB专用RAM区,然后开始执行程序。在批量生产时可以将程序掩模在nRF24E1中,将外挂的25xx320 省掉,进一步降低成本,缩小节点体积。nRF24E1与25xx320的接口电路如图2所示。
图2nRF24E1与25xx320的接口电路
nRF24E1的具体外围电路设计和其天线的设计可查阅nRF24E1的芯片手册,并了解有关射频电路设计和天线设计的相关知识。根据系统需要可以采用环形天线、单端天线或螺旋天线,良好匹配的元件和螺旋天线可使系统的平地可视通信距离高达800 m,对于天线的设计,采用Aligent公司的ADS(Advanced Design System)进行天线匹配。图2中“天线”为单端50 Ω天线。其layout的Top视图如图3所示。
图3Top视图
显示单元在无线路由节点和无线服务结点上使用,采用字符型液晶显示屏1602C,实时显示测量到的数据,并给出提示信息,使操作简单,人机交互界面友好。声光报警单元采用555作振荡源,用单片机触发振荡源驱动电磁讯响器作为声音指示器,发光二极管作为光指示装置,从而组成声光报警单元。远程通信单元采用低电压高速传输的RS232收发器MAX3316(CAE),实现工业现场的实时监控。电源单元系统采用CR2450,3 V扣式电池,其在>2.8 V的条件下能提供大约530 mAh 的能量(21℃)。
3系统的软件实现
3.1TinyOS概述
TinyOS是一个基于事件的系统,其设计的主要目标是代码量小、耗能少、并发性高,可适应不同的应用。它采用面向元件结构,确保快速响应和执行,同时减小了代码量,以适应无线传感器网络严格的存储空间需要。其操作系统、库和程序服务程序是用nesC写的。nesC是一种开发组件式结构程序、具有C语法风格的语言,其组件层次结构就如同一个网络协议栈,底层的组件负责接收和发送原始的数据位,而高层的组件对这些数据进行编码、解码,更高层的组件负责数据打包、路由和传输数据。
3.2系统节点的软件框图
无线路由节点和无线终端节点比无线终端节点多一个数据汇集和上传的功能,其软件设计流程如图4所示。
图4软件设计流程
3.3传感器网络节点的实现
在TinyOS操作系统中,传感器网络节点的实现由moudules和configurations两部分构成。其modules部分代码如下:
Module of Sense Application
SenseM.nc
module SenseM {
provides {
interface StdControl;
}
uses {
interface Timer;
interface ADC;
interface StdControl as ADCControl;
interface Leds;
}
}
在modules中提供StdControl接口,使用了Timer、ADC、StdControl、Leds接口。nesC程序中可以使用同一个接口的多个实例,ADCControl是StdControl的实例。
Configurations部分代码如下:
Configuration of Sense Application
Sense.nc
configuration Sense {
//此模块不提供任何接口
}
implementation{
components Main, SenseM, LedsC, TimerC, Photo;
Main.StdControl﹥SenseM;
Main.StdControl﹥TimerC;
SenseM.ADC﹥Photo;
SenseM.ADCControl﹥Photo;
SenseM.Leds﹥LedsC;
SenseM.Timer﹥TimerC.Timer[unique("Timer")];
}
在configurations中不提供任何接口,使用Main、SenseM、LedsC、TimerC、Photo模块,连接Main.StdControl接口到SenseM.StdControl和TimerC.StdControl,连接SenseM.ADC接口到Photo.ADC,连接SenseM.ADCControl到Photo.StdControl。参数化接口允许组件通过运行时或编译时参数值使用多个该接口的实例provides。interface Timer[uint8_t id],unique("Timer")产生一个唯一的数字与Timer串关联。
3.4网络数据报的分析
在基于TinyOS的传感器网络的网络数据报文消息头中包含group ID,使得多个节点可以共享同一个radio channel。group ID是一个8位数,其默认值是0x7D,使用DEFAULT_LOCAL_GROUP改变默认group ID,如EFAULT_LOCAL_GROUP = 0x7E,此时就把group ID改为了0x7E。以下为传感器网络节点接收到的封装包格式:
7E 41 0F FF FF 08 7D 5D 1D 44 44 11 44 11 44 44 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 D0 5C 7E
封包用0x7E,接下来是0x41是指封包格式。0x41是P_PACKET_ACK,0x42是P_PACKET_NO_ACK。第3个字节是0x0F,是SeqNo.,是从0x0E开始,也就是13 DECIMAL,接下来的格式TinyOS文件有说明,最后两个字节是0x5CD0,是CRC校验。送出Packet之后,它会回送两个信息: 一个是2字节的封包,就是只有包含原本的packet type和SeqNo;另一个是P_PACKET_NO_ACK的格式的封包,和上面的格式一样,不过SeqNo那个位不具有SeqNo的功能。
4节点性能
该无线传感器网络节点工作电压为1.9~3.6 V,发射电流约为11~13 mA,接收电流约19 mA,待机电流约3 μA;工作在2.4 GHz频段,共有125个频道可用,满足多点及跳频通信需要。数据传输速率可达1 Mbps;可进行CRC校验,外接9 路10位ADC,采样率达100 kbps,可配置的PWM,输出UART、SPI等多种外设。平地无障碍物通信距离可达800 m,且节点性能稳定,对环境依赖比较小。
结语
本文介绍了基于nRF24E1的系统硬件平台的构建,以及传感器网络操作系统TinyOS的系统程序设计。该传感器网络能准确采集环境数据,实时组网上传,且其网络节点结构简单,价格低廉,真正实现了微型无线传感器网络节点。