引言
本研究设计了一种采用LM3S8962构架的嵌入式服务器采集Zigbee节点上的传感器数据,通过以太网实时访问、监测、查询家居信息。实现由Zigbee 自组网的无线局域网到广域网的智能家居系统。传感器Zigbee节点往协调器发送数据,协调器通过串行方式连接嵌入式服务器,同时LM3S8962扩展SD卡作为历史数据存储。用户通过IP地址直接访问嵌入式服务器,实时监控家居环境。解决集中监视和灵活操控每个Zigbee节点的信息和状态的问题,Zigbee 无线局域网和以太网网络相互协同,实现了真正意义上的智能家居系统。
无线传感器网络(Wireless Sensor Network,WSN)是指由大量成本相对低廉的,具有感知能力、计算能力、实时通信能力的传感器节点组成的嵌入式无线网络,是当前众多领域的研究和应用热点。建立在IEEE 802 .15 .4 ( LR_WPAN,低速率无线个人区域网)上的Zigbee协议是应用于无线监测与控制的全球性无线通信标准,是无线传感器网络组网的首选技术之一[1]。
随着Zigbee无线传感器网络技术的广泛应用,如何通过现有网络基础设施(如Internet、GPRS等)对其进行远程管理、控制感测环境中的各种传感装置,逐渐成为该领域的重要研究课题。图1给出了基于Zigbee的无线传感器网络体系结构,如图示Zigbee网关在整个无线传感器网络体系中起着重要的枢纽作用,同时也是WSN整体系统的“瓶颈”之一。当图1中的服务器或用户部分为其它Zigbee网络时,通过Zigbee网关和Internet或GPRS做媒介,就使得世界范围内的不同监测区域都可以信息共享,这大大缩小了物理世界的时空距离。
图1.1无线网络传感器应用场景
本文主要研究的是Internet环境下基于Zigbee传感器网络的网关设计及其实现。
嵌入式网络服务器
嵌入式网关是建立在传输层以上的协议转换器,通常它连接两个或多个相互独立的网络,每接收一种协议的数据包后,在转发之前将它转换为另一种协议的格式。考虑到Zigbee节点的通信能力有限(数据速率仅为250 Kbps),为了减少网关协议转换自身的工作量,本网关选择了一款集成Ethernet接口的ARM芯片来完成硬件系统的搭建。
本嵌入式网关采用模块化设计方案,如图2所示由硬件层、软件层和应用层三大部分组成。其中硬件层描述了网关的硬件实现,在后文将详细介绍;软件层移植μC/OS-II实时操作系统内核、Zigbee和嵌入式TCP/IP协议栈LwIP,实现了Zigbee和TCP/IP协议的双向透明转换,同时封装一些关键API函数供应用层程序调用;应用层运行的是用户编写的应用程序,用户可以根据实际需要使用下层定义的API自行扩充相关应用。
图1.2 Zigbee网关总体结构
硬件设计
总体硬件结构如图2.1所示,由内部集成以太网MAC/PHY的ARM处理器Lm3s8962,配合Zigbee射频收发模块cc2430、大容量SD存储卡以及基于STC12C5624的Sensor传感器载体组成。我们通过摆放在空间中各点的Zigbee节点(每只节点上安装有不同场合所需的传感器),来收集家居信息包括环境温度、湿度、压强、电气功率、气体成分等。每只节点定时循环发送这些信息到Zigbee无线网络的协调器上,同时协调器将这些信息转交给LM3S8962构架的嵌入式服务器,用户通过事先设定的网关地址直接访问服务器,获取家居信息并支持节点信息的实时监测与控制。同时嵌入式服务器将历史数据保存至SD卡中便于后期信息整合、统计分析。
图2.1 总体硬件结构图
系统软件设计 μC/OS-II是一个抢占式的实时多任务内核操作系统,具有开放源码、可固化、可剪裁、高稳定性和可靠性等特点。目前国内外对μC/OS-II的相关研究已有很多,其在Lm3s8962处理器上的移植在此不再赘述。LwIP是瑞士计算机科学院开发的轻量级(Light Weight)开放源码TCP/IP协议栈。 LwIP协议栈把所有与硬件相关、OS、编译器相关的部分独立出来,放在/src/arch目录下,可以是说其在设计时就考虑了移植问题。LwIP在μC/OS-II上的移植就是修改这个目录下的文件,其它的文件一般不做修改。需要修改和自己编程实现的是以下几部分: ●与Lm3s8962及MDK编译器相关的include文件; ●μC/OS-II模拟层相关代码编写; ●与μC/OS-II相关的一些结构和函数; ●与网络配置有关的ipcfg.h函数修改; ●Lm3s8962串行口驱动程序编写; ●Lm3s8962网络驱动程序编写。 完成以上代码移植的工作后,LwIP就可以顺利运行在μC/OS-II下,主要通过以下程序完成LwIP的初始化及运行: int main (void) { OSInit(); OSTaskCreateExt(task0, (void *)0, &task0_stack[task0stck - 1], TASK_START_PRIO, TASK_START_ID, &task0_stack[0], 6000, (void *)0, 0); RecPackedFlag = OSSemCreate(0); RecBufOverFlowFlag = OSSemCreate(0); RecTcpPackedFlag = OSSemCreate(0); RecPingPackedFlag = OSSemCreate(0); SendFlag = OSSemCreate(1); RecIcmpQFlag = OSQCreate(&RecIcmpQ[0],Q_Max_Size); RecTcpQFlag = OSQCreate(&RecTcpQ[0],Q_Max_Size); RecUdpQFlag = OSQCreate(&RecUdpQ[0],Q_Max_Size); OSStart(); } 结论 将Zigbee无线网络传感器技术融入智能家居环境中,同时采用LM3S8962构架嵌入式服务器用于无线网络中的协调器信息监测。便于远程管理与控制,同时嵌入式服务器的引入使得Zigbee智能家居有了更可靠的方案,将停留在实验层次的Zigbee智能家居融入实际的应用场合,同时保存历史数据有利于家居信息的记录分析,也使得以往远程控制方式得到本质的提升。Zigbee技术融入Internet也将是未来智能家居发展的必然趋势。
传感器端的程序
lm3s8962代码
引用: lyzhangxiang 发表于 2011-10-10 14:25
呵呵 第一个我是故意删了的 第二个工程里面是有的吧