当前位置:文档之家› 物联网应用系统设计

物联网应用系统设计

武汉华夏理工学院信息工程课程设计报告书课程名称物联网应用系统设计课程设计总评成绩 ____________________________学生姓名 ___________________________________学号 ________________________________学生专业班级 ________________________________指导教师 ________________________________课程设计起止日期 2 0 1 8611〜2 0 1 8.7.15一、课程设计项目名称基于ZigBee协议栈的智能家居控制灯系统二、项目设计目的及技术要求2.1项目设计目的通过《物联网应用系统设计》课程设计,使学生能够掌握物联网应用系统设计的开发流程、设计方法,使学生能够综合应用《无线传感器网络技术》、《嵌入式技术》、《JAVA WEB程序设计》《Andriod程序设计》、《物联网应用系统设计》等物联网工程专业课程的知识。

要求学生经过课程设计的教学环节进一步理解物联网应用系统总体架构,掌握物联网应用系统的基本设计方法,程序开发流程,从而使学生对物联网应用系统设计能力有较大提高。

2.2项目的主要任务1 •设计内容:课程设计题目一般由指导教师提供,也可以在老师的同意下学生自己题;4人一组,每组完成的内容不能雷同。

设计参考题目如下:1)智能家居环境监测系统2)智能家居控制灯系统3)智能农业区-自动灌溉系统2•基本要求:1)学会单片机的应用方法,开发环境;2)结合任务要求,完成系统设计和调试,鼓励功能扩展和创新;3)会应用protues工具,根据设计的电路,画电路图,并利用protues进行验证仿真;4)熟悉汇编或C51语言,用C51完成系统的软件编程;5)按规范撰写课程设计说明书。

3. 项目分工上位机:李永红、夏智君下位机:陈建、李元毅4、课程设计步骤及时间进度和场地安排1)指导老师下达课程设计任务书;2)完成物联网应用系统设计;3)完成系统制作和调试;4)绘制系统框图和电路图、或程序代码;5)撰写课程设计说明书时间进度和场地安排:1.6月11日,下达课程设计任务书,介绍物联网应用系统设计,查阅相关资料, 确定设计方案,给团队分工合作。

2 . 6月11日一14日,审查设计方案,确定自己在团队的里面要完成的任务,开始相关代码的编写及调试。

3. 6月15日,撰写课程设计报告书,并准备答辩。

6、课程设计考核及评分标准1. 设计说明书要求课程设计说明书要求逻辑清晰、层次分明、书写整洁。

说明书格式包括标题(中英文)、提要、正文(包括①设计项目要求与说明。

②电路原理分析。

③软件流程分析。

④调试分析。

⑤实验数据分析。

⑥答辩。

⑦成绩评定。

)、附录(图纸.程序清单或软盘)。

课程设计说明书须每人一份,独立完成。

2•图纸要求系统结构框图、protel电路图三、项目设计方案论证3.1基于ZigBee 协议栈的智能家居控制灯系统设计的整体方案对ZigBee 协议框架结构进行分析,然后通过论述协议的应用层、网络层、数据链路层、物理层和MAC 层的功能,将无线传感器网络与ZigBee 技术相结合,阐述无 线传感器网络节点的硬件和软件设计方法。

在本设计中,选用功耗较小的CC2530芯片作为通信芯片来设计节点。

通过编写协议栈程序,进行包含汇聚节点及传感器节点 的组网通信实验。

利用VC++编写上位机程序,通过串口进行数据交互,从而控制小 灯。

此系统的组成框图如图3-1所示:图3-1基于ZigBee 协议栈的智能家居控制灯系统设计的整体方案3.2系统实现原理 3.2.1硬件原理图本实验使用的是 CC2530芯片,CC2530具有一个IEEE 802.15.4兼容无线收发 器。

RF 内核控制模拟无线模块。

另外,它提供了 MCU 和无线设备之间的一个接口, 这使得可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。

无线设备还 包括一个数据包过滤和地址识别模块。

本系统主要涉及 LED 、RS485模块、USB 转串口电路、CC2530典型应用电路。

如下图所示:块模纟eigj O352CCO块模 COOCDQCgJO352CC图3-2-3 USB 转串口电路3.2.2节能灯模块本实验用的节能灯传感器为 12V 供电,接通电源后节能灯亮,该节能灯可以通 过继电器控制其开关,通过控制四路继电器 P1的吸合与断开,控制节能灯的打开与 关闭。

图 3-2-1 CC2530 的 LED 模块 图3-2-2小灯模块TX»VDOJBRXD W_« OND M [KE XDLD I HCTS>sufb^ fr_et i±DATA PL23O321 丄1At2131 11US 11o [17 十 || [fl 甲i 戸1吧卜ini'nfDe1Km M ART(b IXPO 3 旳 AR"TOT SCiND♦11 Li li I卜CIM) L'ULO_MOD£ ■nuevre {卞D VDD NC <JND_WJ VDD 少 7PM DJCl卜mopF(WC1 Q8C]IT L^FEST 灯对FLLNC^L_________ J J O图322节能灯传感器接线说明表3.2节能灯模块连线说明通信协议设计说明:SOF: 固定为OxEE OxCC标志一帧的开始。

Sen sor type: 见附表一传感器说明。

Sensor index:固定为0x01。

Cmd id : 固定为0x01。

Data: 为6Byte传感器数据域,见附表一传感器说明。

Exten 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下载本实验程序(路径:家居农业综合实训区传感层工程实验九节能灯模块),具体下载方法详见《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红灯会亮。

四、软件流程分析4.1硬件部分功能程序实现4.1.1 终端程序voidSampleApp_MessageMSGCB( afIn comi ngMSGPacket_t *pkt ) { uint16flashTime;switch ( pkt->clusterld ){case SAMPLEAPP_PERIODIC_CLUSTERID/ 接收广播消息HalLedBlink( HAL_LED_1,4, 50,1000 );if((pkt->cmd.Data[O]==OxEE)&&(pkt->cmd.Data[1]==0xCC)){HalLedBlink( HAL_LED_2, 4, 50, 500 ); if(pkt->cmd.Data[10]==0x01) { P1_4=0x01; HalLedBli nk( HAL_LED_2, 4, 50, 500 );if ( AF_DataRequest( & SampleApp_Flash_DstAddr, & SampleApp_epDesc, SAMPLEAPP_FLASH_CLUSTERID, 14,xzj,&SampleApp_Tra nsl6 AF_DISCV_ROUTE, AF_DEFAULT_RADlUS ) == afStatus_SUCCESS ){}} if(pkt->cmd.Data[10]==0x00){ P1_4=0x00;HalLedBli nk( HAL_LED_2, 4, 50, 500 );if ( AF_DataRequest( & SampleApp_Flash_DstAddr, & SampleApp_epDesc, SAMPLEAPP_FLASH_CLUSTERID, 14,xzz,&SampleApp_Tra nsID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ){ }} HalLedBli nk( HAL_LED_1,4,50,1000 );}break;4.1.2串口的使用经过CC2530芯片处理无线传输到协调器节点,串口调试助手在PC机上显示。

在Z_Stack协议栈中,禾I」用串口回调函数进行发送和接收。

UART操作由USART控制和状态寄存器UxCSR以及UART控制寄存器UxUCR来控制。

寄存器UxBAUD用于设置波特率,寄存器UxBUF是USART接收/传送数据缓存。

uin t8 RX_BUFFER[20];接收缓冲区;void UartCallBackFu nctio n(ui nt8 port , uint8 eve nt); // 回调函数声明,定义在最后面;Uart_Config(); // 配置串口HalUARTOpen(0 , &uartConfig); // 打开串口/* 配置串口*/halUARTCfg_tuartC on fig; //定义串口配置结构体变量;void Uart_Config(void); // 函数声明;void Uart_Config(void) // 函数定义;uartC on fig.callBackF unc = UartCallBackF unction; }static void UartCallBackF un ctio n(ui nt8 port , uint8 eve nt) {uint8 RX_Length = 0; //接收到字符串大小;RX_Le ngth = Hal_UART_RxBufLe n( 0); /读取接收字符串大小; if(RX_Le ngth != 0){HalUARTRead(0 , RX_BUFFER , RX_Le ngth);if((RX_BUFFER[0]==0xEE)&&( RX_BUFFER[1]==0xCC)){SampleApp_Se ndPeriodicMessage();delay_ms(100);HalLedBlink( HAL_LED_1,4, 50,500 ); }}厂 4.1.3处理组播消息voidSampleApp_MessageMSGCB( afIn comi ngMSGPacket_t *pkt ) {ui nt16flashTim& — switch ( pkt->clusterld ){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:HalLedBli nk( HAL_LED_2, 2 50,500 );HalUARTWrite(0 , pkt->cmd.Data , 14);// flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2]); //HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );break; }} 4.2软件部分功能程序实现4.2.1串口发送查询指令void CCMo nitorList::O non(){UpdateData(TRUE);//读取编辑框内容int Count=14; int j=0;int TxData[14]={0xee,0xcc,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0xff};〃 要发送的字符串送字符数组CByteArray array; array.SetSize(Co un t);for(j=0;j<Co un t;j++)array.SetAt(j,TxData[j]);// 将字符数组型AfxMessageBox("发送数据!");m_ctrlcomm.SetOutput(COIeVariant(array));// 发送数据AfxMessageBox("发送成功! ");m_state="开灯";}{uartC on fig.con figured uartC on fig.baudRateuartC on fig.flowC on trol uartC on fig.flowCo ntrolThreshold uartC on fig.rx.maxBufSize uartC on fig.tx.maxBufSize uartC on fig.idleTimeout =TRUE; //允许配置;=HAL_UART_BR_9600;/波特率; =FALSE; =64; //don't care - see uart driver. =128; //串口接收缓冲区大小 =128; //串口发送缓冲区大小 =6; //don't care - see uart driver. =TRUE; //使能中断void CCMo nitorList::O noff(){UpdateData(TRUE); int Count=14;〃字符串长度int j=0; int TxData[14]={0xee,0xcc,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff};〃要发送的字符串送字符数组CByteArray array;array.SetSize(Co un t);for(j=0;j<Cou nt;j++)array.SetAt(j,TxData[j]);〃将字符数组型AfxMessageBox("发送数据!");m_ctrlcomm.SetOutput(COIeVariant(array));// 发送数据AfxMessageBox("发送成功!");m_state="关闭";}4.2.2接受应答指令void CCMo nitorList::O nOn CommMscomm1(){VARIANT variant_inp; COleSafeArray safearray」np;LONG len ,k; CStri ng strtemp;BYTE rxdata[2048]; // 设置BYTE数组_if( m_ctrlcomm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符{ varia nt_in p=m_ctrlcomm.Getl nput();safearray_inp=variant_inp; //VARIANT 变量转化为COleSafeArray 变量len=safearray_inp.GetOneDimSize(); // 得到有效的数据长度for( k=0;k<len;k++) {safearray_i np.GetEleme nt(&k,rxdata+k);}for( k=0;k<len;k++){ BYTE bt=*(char*)(rxdata+k); // 字符型strtemp.Format("%2x",bt); //将字符送入临时变量m_strRXData+=strtemp; } } UpdateData(FALSE); }五、项目设计结果分析5.1 上位机测试M登咄界茴丞mso导航鸞密码:取消图5-1 登陆界面5.2系统测试521关灯测试I节能灯fjI/O 522开灯测试5.3问题及解决方法(1)组网成功后,终端采集数据发送个协调器是乱码。

相关主题