[原创] 【TI原创】采用8962实现串口服务器(ucosii+lwip)

lyzhangxiang   2011-10-10 12:49 楼主

引言

   本研究设计了一种采用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做媒介,就使得世界范围内的不同监测区域都可以信息共享,这大大缩小了物理世界的时空距离。


未命名.JPG

图1.1无线网络传感器应用场景


本文主要研究的是Internet环境下基于Zigbee传感器网络的网关设计及其实现。


嵌入式网络服务器


   嵌入式网关是建立在传输层以上的协议转换器,通常它连接两个或多个相互独立的网络,每接收一种协议的数据包后,在转发之前将它转换为另一种协议的格式。考虑到Zigbee节点的通信能力有限(数据速率仅为250 Kbps),为了减少网关协议转换自身的工作量,本网关选择了一款集成Ethernet接口的ARM芯片来完成硬件系统的搭建。


   本嵌入式网关采用模块化设计方案,如图2所示由硬件层、软件层和应用层三大部分组成。其中硬件层描述了网关的硬件实现,在后文将详细介绍;软件层移植μC/OS-II实时操作系统内核、Zigbee和嵌入式TCP/IP协议栈LwIP,实现了Zigbee和TCP/IP协议的双向透明转换,同时封装一些关键API函数供应用层程序调用;应用层运行的是用户编写的应用程序,用户可以根据实际需要使用下层定义的API自行扩充相关应用。


1.JPG

图1.2 Zigbee网关总体结构

硬件设计

   总体硬件结构如图2.1所示,由内部集成以太网MAC/PHY的ARM处理器Lm3s8962,配合Zigbee射频收发模块cc2430、大容量SD存储卡以及基于STC12C5624的Sensor传感器载体组成。我们通过摆放在空间中各点的Zigbee节点(每只节点上安装有不同场合所需的传感器),来收集家居信息包括环境温度、湿度、压强、电气功率、气体成分等。每只节点定时循环发送这些信息到Zigbee无线网络的协调器上,同时协调器将这些信息转交给LM3S8962构架的嵌入式服务器,用户通过事先设定的网关地址直接访问服务器,获取家居信息并支持节点信息的实时监测与控制。同时嵌入式服务器将历史数据保存至SD卡中便于后期信息整合、统计分析。


未命名.JPG

图2.1 总体硬件结构图


[ 本帖最后由 lyzhangxiang 于 2011-10-10 12:54 编辑 ]

回复评论 (21)

系统软件设计

   μ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也将是未来智能家居发展的必然趋势。

点赞  2011-10-10 12:51
简答的说明下,这个是以前读书的时候的一个小项目(新型嵌入式zigbee网关设计),后来毕设(基于zigbee的智能家居系统设计)也就简单的点缀了下。zigbee的工程太大了上传不了,需要的便宜可以联系我。



[ 本帖最后由 lyzhangxiang 于 2011-10-10 13:03 编辑 ]
  • 1.JPG
  • 2.JPG
  • 实物1.jpg
  • 实物2.jpg
  • 实物3.jpg
  • 实物4.jpg
点赞  2011-10-10 13:01
不错!!!!
点赞  2011-10-10 13:11
接下来算是升级版本的,优化了串口服务器的代码。采集网络使用Simplic TI,传感器为温度传感和烟雾传感,分别是DS18B20和MQ-2.由于本版块只需要M3的资料,所以只上传了LM3s8962的程序。

[ 本帖最后由 lyzhangxiang 于 2011-10-10 13:22 编辑 ]
  • 系统框图.jpg
  • 网页报警.JPG
  • 硬件.JPG
  • GPRS报警.jpg
  • GPRS报警.jpg
  • 网页报警.jpg
  • 系统框图.jpg
  • 硬件1.jpg
  • 硬件2.jpg
点赞  2011-10-10 13:15
好东西,太强大了,谢谢了,学习了
点赞  2011-10-10 13:21
个人觉得那个8962的代码很有参考价值,刚开始的时候是参考周立功的例子的。然后添加了串口功能,并将串口数据传递至网页。网页设置为每隔一定时间定时刷新,实现数据及时更新。

点赞  2011-10-10 13:25
支持一下,用来做做毕设什么的还是很靠谱的。
点赞  2011-10-10 13:32
简单流程图:
未命名.JPG
点赞  2011-10-10 13:37
能分析一下就最好的了
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
点赞  2011-10-10 13:40

回复 5楼 lyzhangxiang 的帖子

非常给力!
编译了一下,发现楼主在启动代码中忘了添加下面这几句了

  1.         EXTERN        OSPendSV
  2.         EXTERN         tickISRHandler
  3.         EXTERN         UART0ISR
  4.         EXTERN         EthernetIntHandler
  5. ;*********************************************************************************************************
  6. ;*  The vector table.
  7. ;*  向量表
  8. ;********************************************************************************************************
点赞  2011-10-10 14:03

回复 11楼 Study_Stellaris 的帖子

呵呵  第一个我是故意删了的   第二个工程里面是有的吧
点赞  2011-10-10 14:25
:carnation: 强大
点赞  2011-10-10 14:44
顶顶。学习这块。
点赞  2012-3-24 13:03
高端,学习
点赞  2012-3-30 15:21

牛人啊

谢谢版主了顶顶哈哈哈赞一个
点赞  2012-7-13 17:30
毕业设计都能做成这样,牛逼
点赞  2014-4-3 09:20
牛人啊
点赞  2015-6-4 17:11
学习一下,感谢楼主分享
点赞  2017-3-13 22:01
引用: lyzhangxiang 发表于 2011-10-10 14:25
呵呵  第一个我是故意删了的   第二个工程里面是有的吧

看了代码,并没有用LWIP,而是用了周立功的TCP/IP包,楼主你确认你用了LWIP+UCOSII吗?
点赞  2018-4-25 17:23
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复