1、基于zigbee的远程灯光控制系统无线传感器网络课程大作业报告基于zigbee的远程灯光控制系统姓 名: 学 院: 电气与信息工程学院 专业班级: 物联网工程 学 号: 指导老师: 成 绩: 重庆科技学院二零一五年十二月摘 要 二十一世纪,远程控制的需求越来越大,本实验是关于“基于zigbee网络的远程灯光控制系统”的相关研究。是通过PC连接协调器实现远程控制不少于3个终端节点上的LED灯的熄灭。 本实验较全面的实现了远程灯光控制的功能,即采用一块协调器,三个路由器,在此设备上实现实验。协调器实现了PC与路由器之间的连接功能,用作信号的发射和接受;三个路由器分成两个组,第一个组内有两个节点,第
2、二个组内有一个节点。基本功能包括:PC端可以设置终端节点上LED的闪烁周期;终端节点分为两组,PC端可以分别控制每组终端节点上LED的熄灭;PC可以设置两组LED闪烁的周期;PC上可以查询终端节点上LED的状态。 报告后面详细介绍了整个控制系统的功能和控制策略,软件程序设计包括LED灯初始化、协议栈初始化,串口通讯等.最后,在模拟实际环境下,测试可行性与性能。实验证明,采用Zigbee能实现无线远程控制灯的亮灭。关键词:Zigbee 远程控制 LED灯 CC25301 设计内容和要求1.1课题任务 本系统是基于zigbee网络的远程灯光控制系统,PC连接协调器实现远程控制不少于3个终端节点上的
3、LED灯的熄灭。 1.2课题要求1。2。1 PC端设置LED闪烁周期 PC端通过广播的方式控制加入了该协调器的所有路由器的灯的闪烁周期,且闪烁周期可以设置为1s、2s、3s。1.2.2 终端节点分为两组且PC端分别控制 将路由器分成两个组,组名分别为Group1和Group2,组号分别为0x0001和0x0002,。Group1有两个路由器节点,第一个节点称为G1D1,第二个节点称为G1D2;Group2有一个路由器节点,称为G2D1。 PC端可以通过组播的方式控制每一组的终端节点的亮灭,且可单独控制每一个节点的亮灭.1.2。3 PC设置两组LED闪烁周期 PC端通过组播的方式分别控制Grou
4、p1和Group2闪烁周期,周期时间分别为1s、2s、3s.1。2.4 PC查询LED的状态 PC端查询各个路由器节点当前的LED的状态,状态主要有亮(ON)、灭(OF)、闪烁(FL)。2 总体设计思路2.1 系统功能 该系统的功能主要有:(1)在PC上通过串口输入控制指令控制LED灯的亮灭.(2)路由器节点分为两组,PC端可以分别控制每组终端节点上LED的熄灭.(3)在PC上通过串口输入指令可以分组的设置两组LED闪烁的周期。(4)在PC上通过串口输入指令查询终端节点上LED的状态。2。2 模块关系Group1PC机RS232CoordinatorZigBee网络Group2G2D1G1D1
5、G1D2图 2。1 模块关系图2。3 程序框图向协调器发送数据开始加入网络建立网络灯的状态发生变化串口发送发送数据开始收到节点的数据收到协调器数据NYYN协调器程序框图路由器器程序框图图 2。2 程序流程图3功能模块图3.1 功能模块图PC发送命令 控制亮灭 查询状态 控制周期终端判断终端判断终端判断终端判断终端判断G*ON/OFG*D*ON/OFCXG*D*GR*F*SFREQ*S控制某组灯亮灭控制某个组的灯闪烁的周期单个控制灯的亮灭返回终端节点状态给串口控制所有灯的闪烁周期组播单播广播组播广播图 3。1功能模块图3.2 各模块实现的功能3.2。1 PC端设置LED闪烁周期代码PC端通过广播
6、的方式控制加入了该协调器的所有路由器的灯的闪烁周期,且闪烁周期可以设置为1s、2s、3s。osal_memcpy(buf,pktcmd.Data,osal_strlen(”G1D2ON”)+1); HalLcdWriteString(buf, HAL_LCD_LINE_4); if(osal_memcmp(buf,”FREQ1S”,osal_strlen(”FREQ1S”)+1)) a=2; HalLedBlink(HAL_LED_2,0,50,1000) ; if(osal_memcmp(buf,FREQ2S”,osal_strlen(”FREQ2S)+1) a=2; HalLedBlink
7、(HAL_LED_2,0,50,2000) ; if(osal_memcmp(buf,FREQ3S,osal_strlen(”FREQ3S”)+1) a=2; HalLedBlink(HAL_LED_2,0,50,3000) ; 3.2.2终端节点分为两组且PC端分别控制代码 将路由器分成两个组,组名分别为Group1和Group2,组号分别为0x0001和0x0002,.Group1有两个路由器节点,第一个节点称为G1D1,第二个节点称为G1D2;Group2有一个路由器节点,称为G2D1. PC端可以通过组播的方式控制每一组的终端节点的亮灭,且可单独控制每一个节点的亮灭。/为第一组设置初始
8、值 GenericApp_Group.ID = 0x0001; GenericApp_Group。name0 = 6; osal_memcpy(GenericApp_Group.name1), ”Group1”, 6);/为第二组设置初始值 GenericApp_Group1.ID = 0x0002; GenericApp_Group1.name0 = 6; osal_memcpy(&(GenericApp_Group1。name1), ”Group2, 6);/控制组1节点1的亮灭 osal_memcpy(buf,pktcmd.Data,osal_strlen(”G1D1ON)+1); Ha
9、lLcdWriteString(buf, HAL_LCD_LINE_4); if(osal_memcmp(buf,”G1D1ON”,osal_strlen(G1D1ON)+1)) a=0; HalLedBlink(HAL_LED_2,0,100,1000) ; if(osal_memcmp(buf,G1D1OF”,osal_strlen(”G1D1OF)+1) a=1; HalLedBlink(HAL_LED_2,0,0,1000) ; 3.2。3 PC设置两组LED闪烁周期实验部分代码/控制组1的周期 if(osal_memcmp(buf,GR1F1S”,osal_strlen(GR1F1S
10、)+1)) a=2; HalLedBlink(HAL_LED_2,0,0,1000) ; if(osal_memcmp(buf,”GR1F2S,osal_strlen(GR1F2S”)+1) a=2; HalLedBlink(HAL_LED_2,0,0,2000) ; if(osal_memcmp(buf,”GR1F3S”,osal_strlen(GR1F3S”)+1)) a=2; HalLedBlink(HAL_LED_2,0,0,3000) ; 3。2。4 PC查询LED的状态部分实验代码 为实现查询功能,需要在每个路由器节点的编程里加入下面代码,不同组不同节点的名字不同。 if(osal
11、_memcmp(buf,CXG1D1”,osal_strlen(”CXG1D1)+1)) GenericApp_SendTheMessage(); 协调器实现查询状态部分代码: if(osal_memcmp(uartbuf, ”CXG1D1”, 6)) HalUARTWrite(0, uartbuf, 6); GenericApp_SendTheMessageCX11(); osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000); if(osal_memcmp(uartbuf, CXG1D2, 6) HalUARTWrite(0
12、, uartbuf, 6); GenericApp_SendTheMessageCX12(); osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000); if(osal_memcmp(uartbuf, CXG2D1”, 6)) HalUARTWrite(0, uartbuf, 6); GenericApp_SendTheMessageCX21(); osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000); 4 系统调试及测试4。1 PC端设置LED闪烁周期实验结果
13、显示 PC端通过串口发送FREQ1S、FREQ2S、FREQ3S状态的指令广播给各个路由器节点,然后所有的路由器节点的闪烁周期都相同。周期可以设置为1s、2s和3s。4。2 终端节点分为两组且PC端分别控制实验结果显示 PC端通过串口发送指令,组播给组号为0x0001的组,使第一组的灯亮,此时第二个组的灯是熄灭状态。 同理,PC通过串口发送指令给组号为0x0002的组,此时第二个组的灯是亮.4.3 PC设置两组LED闪烁周期实验结果显示4。4 PC查询LED的状态实验结果显示 PC端通过串口发送查询G1D1状态的指令。 此时串口返回G1D1的状态,每个灯的状态有三种,分别是FL(闪)、OF(灭
14、)、ON(亮)5 总结在本次的实验中我对于ZigbBee有了更加深入的理解和巩固,从刚开始觉得ZigBee很难,然而后面真的去认真去做了之后才发现,其实也没有想象之中的那么困难,前面的不过是一些声明以及初始化,其实我们真正涉及到的内容不会很多。就像现在我做完实验再对它进行了解后,需要我们完成的也就那么几点.所以实验课上学到的东西很重要,这对后面的实验有着莫大的好处和很好的理解。我差不多是后面一个多月才开始认真去实验室做实验,前面半期的理论知识听着是感觉很枯燥乏味。后面才发现实验并不难,只是我前面并不用心去学习,在内心里就给自己设了一道坎。我感谢周老师对我们的悉心指导,五个小实验,一个大作业,每
15、个同学每个实验他都要严格的把关,让我们去答辩.周老师,辛苦了!6致谢在为期一学期的对ZigBee的学习即将结束,衷心的感谢所有给予我帮助和支持的老师和同学。首先要感谢学校,给我们专业提供了良好的学习设备,让我们得以在实践中寻求真知,让我从根本上去学习了ZigBee这门课程。感谢我的老师周伟老师,本门课程从选课、课程开展、具体实施到各个实验等都是在周老师的严格要求和悉心指导下完成的,不仅提高了我的专业水平和实践能力,更锻炼了我分析问题、解决问题的能力.真的特别感谢周老师,让我对ZigBee这门课程有了认识和理解。感谢我的同学,他们在学习和生活上给了我很多的鼓励和帮助。感谢所有关心和帮助过我的老师
16、、同学和朋友。7 参考文献1 任丰原,黄海宁,林闯.无线传感器网络J.软件学报2003,14(7)2 CC2530 Data SheetOL.http:/3 高守玮,吴灿阳。Zigbee技术实践教程M.北京:北京航空航天大学出版社,2009。6 4 李文仲,段朝玉等。Zigbee无线网络技术入门与实战M。北京:北京航空航天大学出版社,2007 5 杜丽敏,郭文成。ZigBee技术在远程抄表系统中的应用J.单片机与嵌入式系统,2006(7)6 赵景宏,李英凡,许纯信。 ZigBee技术简介J。电力系统通信,2006,27(165) 7 周游,方滨,王普.基于ZigBee技术的智能家居无线网络系统J。电子技术应用,2005(5)8 李文仲,段朝玉ZigBee无线网络技术入门与实战北京:北京航空航天大学出版社,2007.19 高守玮ZIGBEE技术实践教程北京:北京航空航天大学出版社,2009。610 王小强、欧阳骏、黄宁淋.ZigBee无线传感器网络设计与实现.北京:化学工业出版社。2012.6