物联网应用系统设计.docx
《物联网应用系统设计.docx》由会员分享,可在线阅读,更多相关《物联网应用系统设计.docx(15页珍藏版)》请在冰豆网上搜索。
物联网应用系统设计
华夏理工学院
信息工程课程设计报告书
课程名称物联网应用系统设计
课程设计总评成绩
学生XX
学号
学生专业班级
指导教师
课程设计起止日期2018.6.11~2018.7.15
一、课程设计项目名称
基于ZigBee协议栈的智能家居控制灯系统
二、项目设计目的及技术要求
2.1项目设计目的
通过《物联网应用系统设计》课程设计,使学生能够掌握物联网应用系统设计的开发流程、设计方法,使学生能够综合应用《无线传感器网络技术》、《嵌入式技术》、《JAVAWEB程序设计》《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日,撰写课程设计报告书,并准备答辩。
5、实验室(423)开放时间
周次
地点
星期一
星期二
星期三
星期四
星期五
第1周
第5-8节
第5-8节
第5-8节
第5-8节
第5-8节
实验室423
实验室423
实验室423
实验室423
实验室423
6、课程设计考核及评分标准
1.设计说明书要求
课程设计说明书要求逻辑清晰、层次分明、书写整洁。
说明书格式包括标题(中英文)、提要、正文(包括①设计项目要求与说明。
②电路原理分析。
③软件流程分析。
④调试分析。
⑤实验数据分析。
⑥答辩。
⑦成绩评定。
)、附录(图纸.程序清单或软盘)。
课程设计说明书须每人一份,独立完成。
2.图纸要求
系统结构框图、protel电路图
三、项目设计方案论证
3.1基于ZigBee协议栈的智能家居控制灯系统设计的整体方案
对ZigBee协议框架结构进行分析,然后通过论述协议的应用层、网络层、数据链路层、物理层和MAC层的功能,将无线传感器网络与ZigBee技术相结合,阐述无线传感器网络节点的硬件和软件设计方法。
在本设计中,选用功耗较小的CC2530芯片作为通信芯片来设计节点。
通过编写协议栈程序,进行包含汇聚节点及传感器节点的组网通信实验。
利用VC++编写上位机程序,通过串口进行数据交互,从而控制小灯。
此系统的组成框图如图3-1所示:
图3-1基于ZigBee协议栈的智能家居控制灯系统设计的整体方案
3.2系统实现原理
3.2.1硬件原理图
本实验使用的是CC2530芯片,CC2530具有一个IEEE802.15.4兼容无线收发器。
RF核控制模拟无线模块。
另外,它提供了MCU和无线设备之间的一个接口,这使得可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。
无线设备还包括一个数据包过滤和地址识别模块。
本系统主要涉及LED、RS485模块、USB转串口电路、CC2530典型应用电路。
如下图所示:
图3-2-1CC2530的LED模块图3-2-2小灯模块
图3-2-3USB转串口电路
3.2.2节能灯模块
本实验用的节能灯传感器为12V供电,接通电源后节能灯亮,该节能灯可以通过继电器控制其开关,通过控制四路继电器P1的吸合与断开,控制节能灯的打开与关闭。
图3.2.2节能灯传感器
接线说明
节能灯模块信号
DC12V
GND
--
四路继电器端子
电源板+J1
电源板-
P1
机柜面板
--
--
IO(绿色)
表3.2节能灯模块连线说明
通信协议设计
说明:
SOF:
固定为0xEE0xCC,标志一帧的开始。
Sensortype:
见附表一传感器说明。
Sensorindex:
固定为0x01。
Cmdid:
固定为0x01。
Data:
为6Byte传感器数据域,见附表一传感器说明。
ExtenData:
为2Byte扩展数据域
END:
固定为0xFF,标志一帧的结束。
开灯指令:
EECC0101010000000000010000FF
关灯指令:
EECC0101010000000000000000FF
3.2.3实验连线说明
1.首先将节能灯模块下方的信号孔(绿色香蕉孔)与香蕉线相连。
2.将zibgee模块下方的绿色香蕉孔(P1_4)与风扇的香蕉线相连接。
然后将红黄蓝三根信号线分别插到对应颜色的香蕉孔。
ZigbeeDebugerUSB仿真器连接到ZigBee模块下方的20PIN插孔上。
3.通过上位机软件给ZigBee下载本实验程序(路径:
家居农业综合实训区\传感层工程\实验九节能灯模块),具体下载方法详见《IAR软件下载说明文档》。
用IARMCS-518.10.3软件,打开光盘源码目录中的人体传感器工程并下载。
4.将无线通讯节点的三根信号线分别接在智能网关上,设备上电(注意:
红黄两根线一定要交叉!
)。
5.打开网关端的SensorDemo软件,配置好串口波特率115200并连接。
6.点击界面上的开关按键进行控制。
当DATA数据区打印000000000000:
表示关闭状态,打印000000000001:
时表示打开状态(具体协议详见《CBT模块通讯协议V2.5》文档)。
风扇上电后ZigBee模块上的LED1红灯会亮。
四、软件流程分析
是是
4.1硬件部分功能程序实现
4.1.1终端程序
voidSampleApp_MessageMSGCB(afIningMSGPacket_t*pkt)
{uint16flashTime;switch(pkt->clusterId)
{caseSAMPLEAPP_PERIODIC_CLUSTERID:
//接收广播消息
HalLedBlink(HAL_LED_1,4,50,1000);
if((pkt->cmd.Data[0]==0xEE)&&(pkt->cmd.Data[1]==0xCC))
{HalLedBlink(HAL_LED_2,4,50,500);
if(pkt->cmd.Data[10]==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_DEFAULT_RADIUS)==afStatus_SUCCESS){}}
if(pkt->cmd.Data[10]==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_1,4,50,1000);}break;
4.1.2串口的使用
经过CC2530芯片处理无线传输到协调器节点,串口调试助手在PC机上显示。
在Z_Stack协议栈中,利用串口回调函数进行发送和接收。
UART操作由USART控制和状态寄存器UxCSR以及UART控制寄存器UxUCR来控制。
寄存器UxBAUD用于设置波特率,寄存器UxBUF是USART接收/传送数据缓存。
uint8RX_BUFFER[20];//接收缓冲区;
voidUartCallBackFunction(uint8port,uint8event);//回调函数声明,定义在最后面;
Uart_Config();//配置串口
HalUARTOpen(0,&uartConfig);//打开串口
/*配置串口*/
halUARTCfg_tuartConfig;//定义串口配置结构体变量;
voidUart_Config(void);//函数声明;
voidUart_Config(void)//函数定义;
{
uartConfig.configured=TRUE;//允许配置;
uartConfig.baudRate=HAL_UART_BR_9600;//波特率;
uartConfig.flowControl=FALSE;
uartConfig.flowControlThreshold=64;//don'tcare-seeuartdriver.
uartConfig.rx.maxBufSize=128;//串口接收缓冲区大小
uartConfig.tx.maxBufSize=128;//串口发送缓冲区大小
uartConfig.idleTimeout=6;//don'tcare-seeuartdriver.
uartConfig.intEnable=TRUE;//使能中断
uartConfig.callBackFunc=UartCallBackFunction;}
staticvoidUartCallBackFunction(uint8port,uint8event)
{uint8RX_Length=0;//接收到字符串大小;
RX_Length=Hal_UART_RxBufLen(0);//读取接收字符串大小;
if(RX_Length!
=0){HalUARTRead(0,RX_BUFFER,RX_Length);
if((RX_BUFFER[0]==0xEE)&&(RX_BUFFER[1]==0xCC)){
SampleApp_SendPeriodicMessage();delay_ms(100);
HalLedBlink(HAL_LED_1,4,50,500);}}}
4.1