使用Net Micro Framework加速无线传感器网络开发
上网时间:2007-09-01
秦飞 著
新生的无线传感器网络经过了几年的研发与应用工作,科技人员已经从EE CS为代表的路由算法研究,扩展到了土木工程、环境监测、工业、自动控制等面向实际应用的系统开发。对于后者而言,一个简单的、容易上手的研发平台意义重大,意味着开发者不必再花费数周时间去学习新的开发语言,熟悉新的操作系统流程。
Crossbow公司考虑到这种日益扩大的需求,推出了简便的WSN开发方法。该方法使用成熟的.Net Micro Framework软件架构,与上层开发软件相同的开发环境配合,运用下一代无线传感器网络平台Imote2进行面向实际应用WSN开发。该种方式可以极大地缩短无线传感器网络的研发周期,简化系统开发复杂度。开发人员可以在数小时或几天内快速实现概念验证,完成无线传感器应用原型系统的实现,这个过程以前通常需要花费数周甚至数月时间。在有特殊传感器需求时,研究人员还可以通过.Net Micro Framework开放的接口,修改HAL层代码来自定义硬件支持系统。
.Net Micro Framework是微软专门针对超轻量级平台设计的软件架构。与.Net Framework和.Net Compact Framework不同的地方是,.Net Micro Framework具有自启动的特性,并且在HAL层,微软将操作系统的必要特性引入,如:启动管理、中断处理、线程调度、内存管理等。.Net Micro Framework可以单独使用,不需要依托其他操作系统,因此占用空间很小。其最小需求为120K FLASH和70K RAM空间。可以灵活部署在Imote2无线传感器网络节点之上,Imote2平台提供了各32M的FLASH和RAM空间,部署.Net Micro Framework仅占用其1%左右的存储空间,剩余部分可以留给开发者进行算法设计或存储本地数据。
.NET MF的技术架构示意图。
.Net Micro Framework依然保留将Common Language Runtime(CLR)做为核心处理,通过CLR的安全保护机制,开发者可以将更多的精力放在高复杂度的无线路由算法和数据处理算法上(如视频传感器的目标识别等),而无需担心内存溢出等问题。同时CLR支持整个Framework的可裁剪特性,开发者可以自定义需要的组件而将不需要的部分编译在最终可执行映像之外。
.Net Micro Framework相对于.Net环境而言,适当消减了支持库的数目,如数据库访问、Web服务、打印服务等超轻量级平台不会用到的支持库被排除在. Net Micro Framework之外。与此同时,Crossbow则将研究多年的支持IEEE 802.15.4的Xmesh无线协议栈以支持库的方式加入到.Net Micro Framework SDK之中,用以做为用户上层应用程序开发的基础。该协议栈具有自组织、自愈合的特性,在科学研究,环境监测,工业自动化,智能家居等领域具有广阔的市场前景。
Imote2.builder套件之中提供了3个Imote2无线传感器节点、2个ITS400基础传感器板。Imote2采用了PXA271做为主处理器,可以工作在0.85V、13MHz的低电压低频率模式下。在0.85V的最低电压状态下,处理频率可以升至104MHz;而在升高工作电压后,处理器可以工作在416MHz。该处理器可以支持睡眠和深度睡眠模式,Imote2可以通过配置工作在不同的模式之下,在处理能力和功耗之间灵活选择平衡点。
同时Imote2提供了丰富的外部接口。其中包括的快速SPI总线接口可以连接高速ADC采样芯片进行高频振动监测,CCD芯片接口与AC97接口可以进行无线传感器网络的音视频开发,除此之外还具有常用的I2C,UART,GPIO等传感器接口。
利用主处理芯片PXA271内嵌的MMX指令集,可以加速多媒体和数字信号处理的执行效率。因此Imote2的发布使得研究人员可以着手进行在以往的无线传感器网络中由于处理量限制而无法涉及的领域,例如,耶鲁大学目前开发的无线视频传感器网络,伊利诺伊大学香槟分校进行的用以监测建筑物振动的无线传感器网络等。
ITS400基础传感器板包含了常用的光线传感器、温度传感器、湿度传感器、三轴加速度计、以及用以外接传感器的4通道ADC接口。分别通过I2C、 SPI以及GPIO与Imote2相连。具体包括:ST Micro LIS3L02DQ 3D轴12位±2g加速度计、高精度±3℃ Sensirion SHT15温湿度传感器、TAOS TSL2651光传感器、Maxim MAX1363 4通道ADC模数转换器、TI Tmp175数字温度传感器。
Imote2.builder套件在出厂时已经完成了Bootloader的加载工作。开发者将其通过USB接至开发主机后,PC机可以自动识别并加载。其后通过Visual Studio 2005或之上的版本,配合C#语言可以直接对Imote2编程开发,支持ISP、单步调试等功能,无需另外使用JTAG仿真器,简化了用户的开发复杂度。
using Microsoft.SPOT.Hardware;
using Microsoft.SPOT.Hardware.Mote2;
.Net Micro Framework提供了对I2C、SPI的完善支持,以采用I2C总线的温度和光度传感器为例,在引用了上面语句所指向的硬件支持库之后,只需建立一个新的I2C对象并定义目标设备的I2C地址,即可非常方便的对其访问操作。
private static I2C Device I2CBus = new I2C Device(new I2C Device.Configuration(0, 0));
private const ushort TemperatureAddress = 0x4A;
private const ushort LightSensorAddress = 0x49;
传感器板的功耗在全部工作时,约为15mA左右。而Imote2主板在低压低频的工作模式下功耗约在60mA左右。通过调用:
Microsoft.SPOT.Hardware.Utility.HibernateSystem();
可以进入深度休眠状态,功耗可以低至600uA。
射频驱动库涵盖了PAL(Platform Abstraction Layer)和HAL(Hardware Abstraction Layer)层。前者存在于Crossbow.platform.imote2中,而后者则由Crossbow.radio.cc2420定义。而为了和目前普遍应用TinyOS的无线传感器网络兼容,Crossbow专门定了一个转换类:Crossbow.lib.tos.其中在:
1. 无线设备可以由Radio类的构造函数初始化:
public Radio(ushort freq, ushort power, ushort pan_address, ushort address);
可选项包括:
LocalAddress:= [0x0000, 0xFFFF]
PANAddress := [0x0000, 0xFFFF]
Channel := [11, 26]
Frequency := [2400, 2483] (MHz)
RFPower := [1, 31] (1:= -25dBm, 31:= 0dBm)
2. 发送数据可以通过调用以下函数实现:
public bool Send(ushort dstPanAddr, ushort dstAddr, byte[ ] data);
3. ReceiveSrc提供给了开发者从指定信源接受数据包的功能,timeout则指定了超时退出时间:
public byte[ ] ReceiveSrc(ushort srcPanAddr, ushort srcAddr, int timeout);
4. ReceiveAny则提供给了开发者从任意信源接受数据包的功能:
public byte[ ] ReceiveAny(ref ushort srcPanAddr, ref ushort srcAddr, int timeout);
5. in TOSRadio.cs提供了将数据包转换为标准TinyOS数据包的功能并可灵活设置amType,GrouID等变量用以和Mica系列无线传感器网络结合。该功能的存在使得将Imote2用作簇头节点与普通Mica节点配合工作的设想变为现实:
Public byte[ ] ConvertToMica2Msg();
在项目的顶层类中,存在Main()函数做为程序入口。.Net Micro Framework支持线程的概念。多线程的应用可以充分利用Imote2的强大处理能力,同时多任务并发。因此我们通常将传感器采集工作独立出来,用单独的线程处理,而在主线程中处理无线通信。而数据处理工作(如视频处理,数字信号处理等)也可单独列为线程在通信和采集的余裕时间内进行。
灵活性与安全性并存的.Net Micro Framework架构将能极大的扩展无线传感器网络的适用范围,加速无线传感器网络的工业化进程。
作者:秦飞
Crossbow Technology公司北京代表处
此文章源自《电子系统设计》网站:
http://www.ed-china.com/ART_8800022322_400005_500001_OT_93115867.HTM
No comments:
Post a Comment