《物联网应用系统设计.docx》由会员分享,可在线阅读,更多相关《物联网应用系统设计.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除武汉华夏理工学院信息工程课程设计报告书课 程 名 称 物联网应用系统设计 课程设计总评成绩 学 生 姓 名 学 号 学 生 专 业 班级 指 导 教 师 姓名 课程设计起止日期 8.6.118.7.15 一、课程设计项目名称基于ZigBee协议栈的智能家居控制灯系统二、项目设计目的及技术要求2.1 项目设计目的通过物联网应用系统设计课程设计,使学生能够掌握物联网应用系统设计的开发流程、设计方法,使学生能够综合应用无线传感器网络技术、嵌入式技术、JAVA WEB程序设计Andriod程序设计、物联网应用系统设计等物联网工程专业课程的知识。要求学生经
2、过课程设计的教学环节进一步理解物联网应用系统总体架构,掌握物联网应用系统的基本设计方法,程序开发流程,从而使学生对物联网应用系统设计能力有较大提高。2.2 项目的主要任务1设计内容:【精品文档】第 6 页课程设计题目一般由指导教师提供,也可以在老师的同意下学生自己题; 4人一组,每组完成的内容不能雷同。设计参考题目如下:1)智能家居环境监测系统2)智能家居控制灯系统3)智能农业区-自动灌溉系统2.基本要求:1)学会单片机的应用方法,开发环境;2)结合任务要求,完成系统设计和调试,鼓励功能扩展和创新;3)会应用protues工具,根据设计的电路,画电路图,并利用protues进行验证仿真;4)熟
3、悉汇编或C51语言,用C51完成系统的软件编程;5)按规范撰写课程设计说明书。3. 项目分工上位机:李永红、夏智君下位机:陈建、李元毅4、课程设计步骤及时间进度和场地安排1)指导老师下达课程设计任务书;2)完成物联网应用系统设计;3)完成系统制作和调试;4)绘制系统框图和电路图、或程序代码;5)撰写课程设计说明书时间进度和场地安排:16月11日,下达课程设计任务书,介绍物联网应用系统设计,查阅相关资料,确定设计方案,给团队分工合作。26月11日14日,审查设计方案,确定自己在团队的里面要完成的任务,开始相关代码的编写及调试。3. 6月15日,撰写课程设计报告书,并准备答辩。 5、实验室(423
4、)开放时间周次地点星期一星期二星期三星期四星期五第1周第5-8节第5-8节第5-8节第5-8节第5-8节实验室423实验室423实验室423实验室423实验室4236、课程设计考核及评分标准1.设计说明书要求课程设计说明书要求逻辑清晰、层次分明、书写整洁。说明书格式包括标题(中英文)、提要、正文(包括设计项目要求与说明。电路原理分析。软件流程分析。调试分析。实验数据分析。答辩。成绩评定。)、附录(图纸.程序清单或软盘) 。课程设计说明书须每人一份,独立完成。2.图纸要求 系统结构框图、protel电路图三、项目设计方案论证3.1基于ZigBee协议栈的智能家居控制灯系统设计的整体方案对ZigB
5、ee协议框架结构进行分析,然后通过论述协议的应用层、网络层、数据链路层、物理层和MAC层的功能,将无线传感器网络与ZigBee技术相结合,阐述无线传感器网络节点的硬件和软件设计方法。在本设计中,选用功耗较小的CC2530芯片作为通信芯片来设计节点。通过编写协议栈程序,进行包含汇聚节点及传感器节点的组网通信实验。利用VC+编写上位机程序,通过串口进行数据交互,从而控制小灯。此系统的组成框图如图3-1所示:发送无线模块接收CC2530Zigbee4模块CC2530 Zigbee3模块图3-1 基于ZigBee协议栈的智能家居控制灯系统设计的整体方案3.2系统实现原理3.2.1硬件原理图本实验使用的
6、是CC2530芯片, CC2530 具有一个IEEE 802.15.4 兼容无线收发器。RF 内核控制模拟无线模块。另外,它提供了MCU 和无线设备之间的一个接口,这使得可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。本系统主要涉及LED、RS485模块、USB转串口电路、CC2530典型应用电路。如下图所示:图3-2-1 CC2530的LED模块 图3-2-2 小灯模块图3-2-3 USB转串口电路3.2.2 节能灯模块本实验用的节能灯传感器为12V供电,接通电源后节能灯亮,该节能灯可以通过继电器控制其开关,通过控制四路继电器P1的吸合与
7、断开,控制节能灯的打开与关闭。图3.2.2 节能灯传感器接线说明节能灯模块信号DC12VGND-四路继电器端子电源板+ J1电源板-P1机柜面板-IO(绿色)表3.2 节能灯模块连线说明通信协议设计SOFSensor typeSensor indexCmd idDataExten DataEND2Byte1Byte1Byte1Byte6Byte2Byte1Byte说明:SOF:固定为0xEE 0xCC,标志一帧的开始。Sensor type:见附表一传感器说明。Sensor index:固定为0x01。Cmd id:固定为0x01。Data:为6Byte传感器数据域,见附表一传感器说明。Ext
8、en Data:为2Byte扩展数据域END:固定为0xFF,标志一帧的结束。开灯指令:EE CC 01 01 01 00 00 00 00 00 01 00 00 FF关灯指令:EE CC 01 01 01 00 00 00 00 00 00 00 00 FF3.2.3 实验连线说明1.首先将节能灯模块下方的信号孔(绿色香蕉孔)与香蕉线相连。2.将zibgee模块下方的绿色香蕉孔(P1_4)与风扇的香蕉线相连接。然后将红黄蓝三根信号线分别插到对应颜色的香蕉孔。Zigbee Debuger USB仿真器连接到ZigBee模块下方的20PIN插孔上。3.通过上位机软件给ZigBee下载本实验程序
9、(路径:家居农业综合实训区传感层工程实验九 节能灯模块),具体下载方法详见IAR软件下载说明文档。用IAR MCS-51 8.10.3软件,打开光盘源码目录中的人体传感器工程并下载。4.将无线通讯节点的三根信号线分别接在智能网关上,设备上电(注意:红黄两根线一定要交叉!)。5.打开网关端的SensorDemo软件,配置好串口波特率115200并连接。6.点击界面上的开关按键进行控制。当DATA数据区打印00 00 00 00 00 00:表示关闭状态,打印00 00 00 00 00 01:时表示打开状态(具体协议详见CBT 模块通讯协议V2.5文档)。风扇上电后ZigBee模块上的LED1红
10、灯会亮。四、软件流程分析开始开始终端接收点击上位机中的按钮 是否等于01串口发送 是 是是否等于00协调器接收节能灯亮节能灯灭协调器广播发送终端组播发送应答指令协调器接收通过串口发送至上位机显示在上位机的编辑框中结束4.1硬件部分功能程序实现4.1.1 终端程序voidSampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) uint16flashTime;switch ( pkt-clusterId )case SAMPLEAPP_PERIODIC_CLUSTERID: /接收广播消息HalLedBlink( HAL_LED_1, 4, 50,
11、1000 );if(pkt-cmd.Data0=0xEE)&(pkt-cmd.Data1=0xCC) HalLedBlink( HAL_LED_2, 4, 50, 500 );if(pkt-cmd.Data10=0x01) P1_4=0x01;HalLedBlink( HAL_LED_2, 4, 50, 500 );if ( AF_DataRequest( &SampleApp_Flash_DstAddr, &SampleApp_epDesc,SAMPLEAPP_FLASH_CLUSTERID, 14,xzj,&SampleApp_TransID, AF_DISCV_ROUTE,AF_DEFA
12、ULT_RADIUS ) = afStatus_SUCCESS ) if(pkt-cmd.Data10=0x00) P1_4=0x00;HalLedBlink( HAL_LED_2, 4, 50, 500 );if ( AF_DataRequest( &SampleApp_Flash_DstAddr, &SampleApp_epDesc,SAMPLEAPP_FLASH_CLUSTERID, 14,xzz,&SampleApp_TransID,AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) = afStatus_SUCCESS ) HalLedBlink( HAL_LED
13、_1, 4, 50,1000 );break;4.1.2串口的使用经过CC2530芯片处理无线传输到协调器节点,串口调试助手在PC机上显示。在Z_Stack协议栈中,利用串口回调函数进行发送和接收。UART操作由USART控制和状态寄存器UxCSR以及UART控制寄存器UxUCR来控制。寄存器UxBAUD用于设置波特率,寄存器 UxBUF是USART接收/传送数据缓存。uint8 RX_BUFFER20; /接收缓冲区;void UartCallBackFunction(uint8 port , uint8 event); /回调函数声明,定义在最后面;Uart_Config(); /配置串口
14、HalUARTOpen(0 , &uartConfig); /打开串口/* 配置串口 */ halUARTCfg_tuartConfig; /定义串口配置结构体变量;void Uart_Config(void); /函数声明;void Uart_Config(void) /函数定义;uartConfig.configured = TRUE; /允许配置;uartConfig.baudRate = HAL_UART_BR_9600;/波特率;uartConfig.flowControl = FALSE;uartConfig.flowControlThreshold = 64; /dont car
15、e - see uart driver.uartConfig.rx.maxBufSize = 128; /串口接收缓冲区大小uartConfig.tx.maxBufSize = 128; /串口发送缓冲区大小uartConfig.idleTimeout = 6; /dont care - see uart driver.uartConfig.intEnable = TRUE; /使能中断uartConfig.callBackFunc = UartCallBackFunction; static void UartCallBackFunction(uint8 port , uint8 event
16、)uint8 RX_Length = 0; /接收到字符串大小;RX_Length = Hal_UART_RxBufLen(0); /读取接收字符串大小;if(RX_Length != 0)HalUARTRead(0 , RX_BUFFER , RX_Length);if(RX_BUFFER0=0xEE)&(RX_BUFFER1=0xCC)SampleApp_SendPeriodicMessage();delay_ms(100);HalLedBlink( HAL_LED_1, 4, 50,500 ); 4.1.3处理组播消息voidSampleApp_MessageMSGCB( afIncom
17、ingMSGPacket_t *pkt )uint16flashTime;switch ( pkt-clusterId )case SAMPLEAPP_PERIODIC_CLUSTERID: /接收广播消息 / HalUARTWrite(0 ,pkt-cmd.Data,12 ); / HalLedBlink( HAL_LED_1, 4, 50,1000 ); / HalUARTWrite(0 ,pkt-cmd.Data ,14 );break;case SAMPLEAPP_FLASH_CLUSTERID:HalLedBlink( HAL_LED_2, 2, 50,500 );HalUARTWr
18、ite(0 , pkt-cmd.Data , 14);/ flashTime = BUILD_UINT16(pkt-cmd.Data1, pkt-cmd.Data2 );/ HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );break; 4.2 软件部分功能程序实现4.2.1串口发送查询指令void CCMonitorList:Onon() UpdateData(TRUE);/读取编辑框内容 int Count=14; int j=0; int TxData14=0xee,0xcc,0x01,0x01,0x01,0x00, 0x00,0x00,0
19、x00,0x00,0x01,0x00,0x00,0xff;/要发送的字符串送字符数组 CByteArray array; array.SetSize(Count);for(j=0;jCount;j+) array.SetAt(j,TxDataj);/将字符数组型 AfxMessageBox(发送数据!); m_ctrlcomm.SetOutput(COleVariant(array);/发送数据 AfxMessageBox(发送成功!);m_state=开灯;void CCMonitorList:Onoff() UpdateData(TRUE); int Count=14;/字符串长度 int
20、 j=0; int TxData14=0xee,0xcc,0x01,0x01,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xff;/要发送的字符串送字符数组 CByteArray array;array.SetSize(Count);for(j=0;jCount;j+)array.SetAt(j,TxDataj);/将字符数组型AfxMessageBox(发送数据!);m_ctrlcomm.SetOutput(COleVariant(array);/发送数据AfxMessageBox(发送成功!);m_state=关闭;4.2.2接受应答指令v
21、oid CCMonitorList:OnOnCommMscomm1() VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; CString strtemp; BYTE rxdata2048; /设置BYTE数组 if( m_ctrlcomm.GetCommEvent()=2) /事件值为2表示接收缓冲区内有字符 variant_inp=m_ctrlcomm.GetInput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT变量转化为COleSafeArray变量 len=safear
22、ray_inp.GetOneDimSize(); /得到有效的数据长度 for( k=0;klen;k+) safearray_inp.GetElement(&k,rxdata+k); for( k=0;klen;k+) BYTE bt=*(char*)(rxdata+k); /字符型 strtemp.Format(%2x,bt); /将字符送入临时变量 m_strRXData+=strtemp; UpdateData(FALSE); 五、项目设计结果分析5.1 上位机测试图5-1 登陆界面5.2 系统测试5.2.1关灯测试5.2.2 开灯测试5.3问题及解决方法(1)组网成功后,终端采集数据
23、发送个协调器是乱码。解决:经过反复的测试后,发现接受数据过程无问题,在查看串口函数回调函数时发现串口没在初始化过程中打开;只有串口初始化函数,才能将发送的字符串显示在上位机上。六、参考文摘1王殊,胡富平等.无线传感器网络的理论及其应用.北京:北京航空航天大学出版社,2012.2姜仲,刘丹等.ZigBee技术与实训教程.北京:清华大学出版社,2014.3 姜仲,刘丹 ZigBee技术与实训教程.北京.清华大学出版社.2016. 4 王小强,欧阳骏 无线传感网络设计与实现。北京.化学工业出版社。20125 基于CC2530的无线传感器网络监控平台 任珍文,黄玉清 刊名:电子技术应用出版日期:2012 期号:第10期 6 MFC Windows应用程序设计习题解答及上机实验/任哲,李益民,车进辉编著.2版,北京:清华大学出版社,2007. 107 MFCWindows程序设计:第2版/(美)帕罗赛斯(Prosise,J.)著;北京博彦科技发展有限责任公司译.北京:清华大学出版社,2007.课程设计评分表评 定 项 目评分成绩1系统硬件软件15分2系统软件软件15分3功能扩展和创新10分3成果演示20分4图纸、资料10分5设计报告的规范化、参考文献(不少于3篇)10分6答辩20分总分100分答辩记录:指导教师综合评语:指导教师(签名) 日 期: 年 月 日
限制150内