基于zigbee的消防监控系统毕业设计论文.doc_第1页
基于zigbee的消防监控系统毕业设计论文.doc_第2页
基于zigbee的消防监控系统毕业设计论文.doc_第3页
基于zigbee的消防监控系统毕业设计论文.doc_第4页
基于zigbee的消防监控系统毕业设计论文.doc_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-基于zigbee的消防监控系统 基于ZigBee的消防监控系统 82目录一、 前言1) 智慧城市- 32) 智能消防系统- 3二、 正文1) 系统框架- 42) 硬件设计-1. 硬件产品及选型-2. 硬件模块开发与测试-3) 软件设计-1应用层软件设计-2.传感网软件设计(基于ZSTACK)-3.数据帧格式的规划与实现-4) 系统部署-1. 硬件部署-2. 软件部署-三、 总结-1) 团队分工-2) 开发问题及解决办法-3) 参考资料-前言l 智慧城市 智慧城市就是运用信息和通信技术手段感测、分析、整合城市运行核心系统的各项关键信息,从而对包括民生、环保、公共安全、城市服务、工商业活动在内的各种需求做出智能响应。其实质是利用先进的信息技术,实现城市智慧式管理和运行,进而为城市中的人创造更美好的生活,促进城市的和谐、可持续成长。随着人类社会的不断发展,未来城市将承载越来越多的人口。目前,我国正处于城镇化加速发展的时期,部分地区“城市病”问题日益严峻。为解决城市发展难题,实现城市可持续发展,建设智慧城市已成为当今世界城市发展不可逆转的历史潮流。目前,我国已经先后发布了三批智慧城市试点。统计显示,目前我国已经有超过500个城市在进行智慧城市试点,并均出台了相应规划,计划投资规模超过万亿元。从实际效果看,智慧城市在城市交通、医疗、政务管理等领域取得了广泛成果。l 智能消防系统 随着人们生活质量的提高。装修装饰逐步高档化,电器设备的增多,高层及超高层建筑的增加以及商场超市等群众聚集场所规模的迅速扩大,消防安全的重要性越来越突出。而今,物联网技术的发展和成熟,越来越多的新型建筑采用了智能消防系统。 关于一般的智能消防系统,它主要由两部分构成。一部分是传感报警系统;另一部分是联动灭火系统,即执行系统。智能消防系统能及时发现建筑的火灾隐患,采取相应措施,及时扑救,将可能酿成大祸的火灾消灭在阻燃期或初期,防止灾害扩大。智能消防系统通过设计、消防建审、施工、验收环节后,投入运行,对智能消防系统的要求就是反应迅速有效,运行正常可靠。当前,人们智能消防系统的设计、施工关注较多,但是在投入运行以后,往往缺乏足够的重视。频繁产生的火灾给了我们很多的教训,智能消防系统运行中存在的问题应引起我们的足够的重视和思考。所以,智能消防系统的设计需要从这些实际问题出发,努力做好思考全面的最大化。 一个优秀的智能消防系统,离不开质量良好的传感器硬件、稳定的软件架构设计。智能消防在初步设计时,一般根据建筑结构进行消防功能划分,给出传感器和上位机平面图系统图及设备清单。但在传感器如何控制涉及较多,设计深度需要加强。例如,在上位机远程控制喷淋泵时,是否设置故障显示等等。许多细节问题都影响整个系统的的敷设、控制的拓扑形式、设备的选型定位等。所以在初步设计时,需要给出完善的功能框架,进而进行深层次的的系统设计。正文l 系统框架本系统硬件主要包括喷淋器,报警器,Zigbee喷淋和报警控制器,Zigbee烟雾传感器,Zigbee协调器和运行于PC端的上位机软件。系统主要是基于ZigBee无线传感网的消防监测系统,主要有三个层次,如下:感知层:(主要进行消防信息采集),包括:烟雾传感器,消防终端节点(喷淋和报警控制器 )传输层:基于ZigBee无线传感网应用层:上位机软件(在PC上对于采集的数据进行分析并作出相应响应以控制消防终端节点作出相应动作比如:根据需要启动喷淋和报警控制器进行远程灭火等操作)整体框架图如下:l 传感网软件设计1硬件部件和产品选型: ZigBee喷淋和报警控制器内置基于CC2530的ZigBee终端节点,它能通过无线信道接收来自ZigBee协调器下发的指令,解析后执行喷淋器、报警器的控制,并可根据需要采集喷淋器、报警器的运行状态上报协调器。1) 实物图:1.Zigbee报警控制器 2.Zigbee喷淋控制器 3.Zigbee烟雾传感器 4.Zigbee协调器*终端节点连接示意图: 图1 Vcc Vcc报警器CC2530 P1.0P1.1喷淋器 GND GND Vcc烟雾传感器CC2530 P0.0图2 GND2) 控制关系: 图1:CC2530控制端口控制对象 对象状态喷淋器报警器P1.0 P1.0=0,喷淋器开 P1.0=1,喷淋器关P1.1P1.1=0报警器开P1.1=1,报警器关图2:烟雾传感器与CC2530的连接方式如图2所示。由图可知,CC2530的P0.0口是采集烟雾传感探头输出信号的I/O口。由于所选烟雾传感器是开关量传感器,有烟雾时输出低电平,反之输出高电平。因此,可作出如下结论:当CC2530检测到P0.0为低电平时,说明有火情发生;反之,说明无火情。2通讯协议规划正确规划数据传输的帧格式,确保收发双方能按照约定接收、解析、重装、续发数据。并清晰定位通讯数据的来向和去向五种帧类型:1.JNS(节点入网后注册)2.RNP(读取节点网络参数)3.SPS(返回节点参数)4.CNA 55 采集烟雾传感器信息 CNA AA 控制喷淋器和报警器开关5.SRS 返回烟雾传感器信息或返回喷淋器和报警器的运行状态一通信帧格式内容字节数顺序备注帧头&WSN40-3帧类型根据需要填充(5种情况)34-6JNS(新节点加入网络)、RNP(读取节点的网络参数)、SPS(上传网络参数到服务器)、CNA(根据网络地址或物理地址下发控制指令)、SRS(上传执行结果服务器)帧长度固定帧长170X1E(代表:30B)物理地址根据需要填充88-15功能复用:(1)注册网络(JNS)和获取网络参数时(RNP-SPS):承载源节点物理地址(8B)、网络地址(2B);(2)下发控制指令时(CNA):承载目标节点物理地址(8B)、网络地址(2B);(3)上传执行结果时(SRS):承载源节点物理地址(8B)、网络地址(2B)。网络地址根据需要填充216-17数据包设置为8个字节,简化接收端的难度818-25功能复用:(1)注册网络和获取网络参数时(JNS和RNP-SPS):18-19字节承载父节点网络地址(2B),20-21承载节点类型(3B)(ROU,RFD);(2)下发控制指令时:18字节表示控制类型:包括返回状态参数(0x55)和执行控制指令(0xAA);(3)上传执行结果时:承载执行结果(根据需要),没有用完的字节填充0x00。(4)下发获取网络参数指令时,则数据包填充0x00;连接质量目标节点提取126帧尾END327-29二数据帧格式的规划实现帧类型功能详细解释JNS注册网络 1.用途终端节点新加入网络后,向协调器发送节点入网信息。2.终端节点或路由器上传到协调器的数据项目字节数内容帧 头4B&WSN帧 类 型3BJNS帧 长 度1B0x1E物理地址8B源节点物理地址网络地址2B源节点网络地址数 据 包8B0-1字节父节点网络地址;2-4字节节点类型(终端节点:RFD;路由器:ROU)。其余填充0X00连接质量1B目标节点主动提取帧 尾3BENDRNP下发获取网络参数指令1.用途系统运行中,为及时发现掉线节点,系统可根据烟雾传感器节点及传感器节点的物理地址或网络地址,周期性去询问节点,要求返回网络参数(含物理地址、网络地址、父节点网络地址、节点类型)。2.协调器下发指令的帧格式(1)根据物理地址下发指令的帧格式项目字节数内容帧 头4B&WSN帧 类 型3BRNP帧 长 度1B0x1E物理地址8B点对点模式:目标节点物理地址广播模式:全部填充0x00网络地址2B全部填充0x00数 据 包8B全部填充0x00连接质量1B目标节点主动提取帧 尾3BEND(2)根据网络地址下发指令的帧格式项目字节数内容帧 头4B&WSN帧 类 型3BRNP帧 长 度1B0x1E物理地址8B全部填充0x00网络地址2B点对点模式:目标节点网络地址广播模式:全部填充0x00数 据 包8B全部填充0x00连接质量1B目标节点主动提取帧 尾3BENDSPS返回网络参数1.用途协调器下发指令要求返回网络参数时,终端节点或路由器将自己的物理地址、网络地址、父节点网络地址、节点类型等封包,并上传给协调器。2.终端节点或路由器返回网络参数的帧格式项目字节数内容帧 头4B&WNS帧 类型3BSPS帧 长 度1B0x1E物理地址8B源节点物理地址网络地址2B源节点网络地址数 据 包8B0-1字节父节点网络地址;2-4字节节点类型(终端节点:RFD;路由器:ROU)。其余填充0X00。连接质量1B目标节点主动提取帧 尾3BENDCNA下发控制指令1.用途当需要控制消防终端节点时,系统就需要下发控制指令,通过喷淋和报警的驱动模块来控制喷淋器和报警器的开关状态2.协调器下发控制指令的帧格式(1)根据物理地址下发控制指令的帧格式项目字节数内容帧 头4B&WSN帧 类 型3BCNA帧 长 度1B0x1E物理地址8B点对点模式:目标节点物理地址广播模式:全部填充0x00网络地址2B全部填充0x00数 据 包8B消防控制:0字节消防控制功能码0xAA;1字节控制报警器开/关;2字节控制喷淋器开/关;37字节填充0x00。传感器数据采集:0字节传感数据采集功能码0x55;1字节传感器号;2字节显示传感器状态(烟雾传感器返回是否有烟雾,报警器返回现在报警状态,喷淋器返回喷淋状态)37字节填充0x00。连接质量1B目标节点主动提取帧 尾3BEND(2)根据网络地址下发控制指令的帧格式项目字节数内容帧 头4B&WSN帧 类 型3BCNA帧 长 度1B0x1E物理地址8B全部填充0x00网络地址2B点对点模式:目标节点网络地址广播模式:全部填充0x00数 据 包8B消防控制:0字节消防控制功能码0xAA;1字节控制报警器开/关;2字节控制喷淋器开/关;37字节填充0x00。传感器数据采集:0字节传感数据采集功能码0x55;1字节传感器号;2字节显示传感器状态(烟雾传感器返回是否有烟雾,报警器返回现在报警状态,喷淋器返回喷淋状态)34字节填充0x00。连接质量1B目标节点主动提取帧 尾3BENDS返回控制指令执行结果1.用途协调器下发控制指令,终端节点通过喷淋和报警的驱动模块来控制喷淋器和报警器的开关状态,并将执行结果返回给协调器,同时也可以将各终端节点的状态返回给协调器。2.终端节点返回控制指令执行结果的帧格式项目字节数内容帧 头4B&WSN帧 类 型3BSRS帧 长 度1B0x1E物理地址8B源节点物理地址网络地址2B源节点网络地址数 据 包8B消防控制:0字节消防控制功能码0xAA;1字节报警器开/关;2字节喷淋器开/关;37字节填充0x00。传感器数据采集:0字节传感数据采集功能码0x55;1字节传感器号;2字节显示传感器状态(烟雾传感器返回是否有烟雾,报警器返回现在报警状态,喷淋器返回喷淋状态)37字节填充0x00。连接质量1B目标节点主动提取帧 尾3BENDJNS注册网络帧头帧 类 型帧 长 度物理地址网络地址数 据 包连接质量帧 尾0-1字节父节点网络地址;2-4字节节点类型(终端节点:RFD;路由器:ROU)。RNP(读取节点的网络参数)帧头帧 类 型帧 长 度物理地址网络地址数 据 包(填充0)连接质量帧 尾SPS(返回网络参数)帧头帧 类 型帧 长 度物理地址网络地址数 据 包连接质量帧 尾0-1字节父节点网络地址;2-4字节节点类型(终端节点:RFD;路由器:ROU)。CNA(下发控制指令)帧头帧 类 型帧 长 度物理地址网络地址数 据 包连接质量帧 尾0字节消防控制功能码0xAA;1字节控制报警器开/关2字节控制喷淋器开/关;34字节填充0x00。0字节传感数据采集功能码0x55;1字节传感器号;2字节填充0x00。34字节填充0x00。SRS(返回控制指令执行结果)0字节消防控制功能码0xAA;1字节报警器开/关2字节喷淋器开/关;34字节填充0x00。0字节传感数据采集功能码0x55;1字节传感器号;2字节显示传感器状态34字节填充0x00。帧头帧 类 型帧 长 度物理地址网络地址数 据 包连接质量帧 尾3传感网软件设计思想最重要的是通讯数据的来向和去向:上行链路和下行链路 . 首先实现ZigBee网络通信,再根据系统需求和数据帧的走向来完善协调器和感知节点和执行节点的功能。4传感网软件设计具体功能:协调器 透明传输功能下行链路中的数据来向是PC串口,去向是ZigBee无线信道;上行链路中的数据来向是ZigBee无线信道,去向是PC串口烟雾传感器感知节点周期性自动上传采集的信息并显示在网参数反馈:采集的信息或者联网状态。喷淋器和报警控制器 执行终端上电后入网进行节点注册通过无线信道接收来自ZigBee协调器下发的指令,解析后执行对喷淋器、报警器的控制,并可根据需要采集喷淋器、报警器的运行状态上报协调器。参数反馈:联网状态。协调器:1)射频、串口数据流的结构设计1. 定义串口、射频传输数据结构体类型typedef struct unsigned char Head4; /帧头 unsigned char Func3; /帧类型 unsigned char Len; /帧长度 unsigned char PhyAddr8; /物理地址 unsigned char NetAddr2; /网络地址 unsigned char Data8; /数据包 unsigned char LinkQuality;/连接质量 unsigned char Tail3; /帧尾 RfUartDataStruct; 2. 定义串口、射频数据共用体类型typedef union RfUartDataStruct DatStr; /结构体成员 unsigned char DatArr30; /数组成员 RfUartDataUnion;#endif3在APP层和MT层中定义射频、串口数据存储缓冲区变量在APP层的SampleApp.c中添加如下代码:extern RfUartDataUnion UartReceBuf; /串口接收缓冲区(用于MT层)RfUartDataUnion UartSendBuf; /串口发送缓冲区RfUartDataUnion RfSendBuf; /射频发送缓冲区RfUartDataUnion RfReceBuf; /射频接收缓冲区 其中, UartReceBuf在MT层的Uart.c中定义,代码如下: RfUartDataUnion UartReceBuf; /串口接收缓冲区2)数据收发函数设计/函数功能:射频发送数据封装函数/参数说明:uint8 *func /帧类型,3B/ uint8 *phyaddr /源节点物理地址,8B/ uint16 netaddr /源节点网络地址,2B/ uuint8 *dat /数据包,8B/返 回 值:无void RfSendDataFrame( uint8 *func, uint8 *phyaddr, uint16 netaddr, uint8 *dat) /(1)初始化待发送的数据(RfSendBuf) int cyc; for(cyc = 0; cyc 30; cyc+) RfSendBuf.DatArrcyc = 0x00; /(2)封装帧头:&WSN RfSendBuf.DatStr.Head0 = &; RfSendBuf.DatStr.Head1 = W; RfSendBuf.DatStr.Head2 = S; RfSendBuf.DatStr.Head3 = N; /(3)封装帧类型:JNS、CPA、SRS、CNA等 RfSendBuf.DatStr.Func0 = func0; RfSendBuf.DatStr.Func1 = func1; RfSendBuf.DatStr.Func2 = func2; /(4)封装帧长度:0x1E(30B) RfSendBuf.DatStr.Len = 0x1E; /(5)封装物理地址:8字节 for(cyc = 0; cyc 8; cyc+) RfSendBuf.DatStr.PhyAddrcyc = phyaddrcyc; /(6)封装网络地址:2字节 RfSendBuf.DatStr.NetAddr0 = LO_UINT16(netaddr); RfSendBuf.DatStr.NetAddr1 = HI_UINT16(netaddr); /(7)封装数据包:8字节 for(cyc = 0; cyc 8; cyc+) RfSendBuf.DatStr.Datacyc = datcyc; /(8)封装连接质量:1字节 RfSendBuf.DatStr.LinkQuality = 0x00; /(9)封装帧尾:3字节 RfSendBuf.DatStr.Tail0 = E; RfSendBuf.DatStr.Tail1 = N; RfSendBuf.DatStr.Tail2 = D;/函数功能:WSN点对点发送数据函数/参数说明:uint16 addr-目标节点地址/ uint8 clusterid-消息簇号/ uint8 *buf-待发送数据缓冲区/ uint8 len-待发送数据长度/返 回 值:1-发送成功;0-发送失败。uint8 RfSendDataFuncP2P( uint16 addr, uint8 clusterid, uint8 *buf, uint8 Len) afAddrType_t SendDataAddr; SendDataAddr.addrMode = (afAddrMode_t)Addr16Bit; SendDataAddr.endPoint = SAMPLEAPP_ENDPOINT; SendDataAddr.addr.shortAddr = addr; if( AF_DataRequest( &SendDataAddr, /目标节点地址指针 &SampleApp_epDesc, /目标节点的端点描述 clusterid, /发送端点的输出消息簇ID号 Len, /发送数据字节数 buf, /指向发送数据缓冲区指针 &SampleApp_TransID, /发送序列号指针,如果消息缓存发送,这个序号将增加1 AF_DISCV_ROUTE, /发送选型(路由发现,另有APS应答、跳过路由直接发等) AF_DEFAULT_RADIUS /最大跳数半径 ) = afStatus_SUCCESS ) return 1; /发送成功 else return 0; /发送失败 /函数功能:WSN广播发送数据函数/参数说明:uint8 clusterid-消息簇号/ uint8 *buf-待发送数据缓冲区/ uint8 len-待发送数据长度/返 回 值:1-发送成功;0-发送失败。uint8 RfSendDataBroadcast(uint8 clusterid, uint8 *buf, uint8 Len) afAddrType_t SendDataAddr; SendDataAddr.addrMode = (afAddrMode_t)AddrBroadcast; SendDataAddr.endPoint = SAMPLEAPP_ENDPOINT; SendDataAddr.addr.shortAddr = 0xffff; /广播地址 if( AF_DataRequest( &SendDataAddr, /目标节点地址指针 &SampleApp_epDesc, /目标节点的端点描述 clusterid, /发送端点的输出消息簇ID号 Len, /发送数据字节数 buf, /指向发送数据缓冲区指针 &SampleApp_TransID, /发送序列号指针,如果消息缓存发送,这个序号将增加1 AF_DISCV_ROUTE, /发送选型(路由发现,另有APS应答、跳过路由直接发等) AF_DEFAULT_RADIUS /最大跳数半径 ) = afStatus_SUCCESS ) return 1; /发送成功 else return 0; /发送失败 /函数功能:协调器收到PC的串口数据后,将数据转发到下级无线节点/参数说明:无/返 回 值:无void UartRxComTransmit(void) #if defined(IOT_Coordinator) /重新封装数据:串口UartReceBuf - 无线网RfSendBuf memcpy(RfSendBuf.DatArr , UartReceBuf.DatArr, 30); /转发数据(广播模式或者点对点模式) RfSendDataBroadcast(SAMPLEAPP_DATAMSG_CLUSTERID,RfSendBuf.DatArr,30); #endif3)应用层功能程序设计在APP层初始化任务在MT层根据通讯协议接收串口数据在APP层处理串口接收事件case SPI_INCOMING_ZTOOL_PORT: UartRxComTransmit();/调用转发数据到无线网下级节点函数 break; 在APP层处理射频接收事件case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); break; 4)附加:联动功能如果收到的实时数据帧类型是SRS 并且是采集的烟雾的数据则,进行分析判断,然后封装数据包广播下发,则执行终端就会自动执行相应指令 case SAMPLEAPP_DATAMSG_CLUSTERID: /如果上传的实时数据 HalUARTWrite ( HAL_UART_PORT_0, UartSendBuf.DatArr, 30);/从串口输出 uint8 func3; /帧类型 uint8 *phyaddr; /物理地址 uint16 netaddr; /网络地址 uint8 dat8; /数据 uint8 PhyAddrTemp8= 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;/存放默认物理地址(全0); uint8 count = 0; if(UartSendBuf.DatStr.Func0 = S) & (UartSendBuf.DatStr.Func1 = R) & (UartSendBuf.DatStr.Func2 = S) & (UartSendBuf.DatStr.Data0=U ) & (UartSendBuf.DatStr.Data1=0x00) ) func0 = C; func1 = N; func2 = A; /(2)封装物理地址:8字节 phyaddr = PhyAddrTemp; /(3)封装网络地址:2字节 netaddr = 0x0000; /(4)数据包 for(count=0;count8;count+) datcount = 0x00; dat0=0XAA; if( UartSendBuf.DatArr20 = 1)/检测到烟雾有火情发生 dat1 = 1;/开报警器 dat2 = 1;/开灭火器 else/未检测到烟雾,无火情发生 dat1 = 0;/开报警器 dat2 = 0;/开灭火器 /(5)调用函数,封装数据 RfSendDataFrame(func,phyaddr,netaddr,dat); RfSendDataBroadcast(SAMPLEAPP_DATAMSG_CLUSTERID, RfSendBuf.DatArr, 30); /#endif break; 烟雾传感器:1)射频、串口数据流的结构设计定义射频、串口传输数据流的结构体类型定义射频、串口传输数据流的共用体类型在APP层和MT层中定义射频、串口数据存储缓冲区变量2)射频、串口收发函数的设计3)应用层功能程序设计在APP层初始化任务/1.初始化跟烟雾传感器有关的IO口 P0SEL &= 0x01; /P0.0 引脚 P0DIR &= 0x01; /定义为输入 P0INP &= 0x01; /上拉电阻在MT层根据通讯协议接收串口数据在APP层处理串口接收事件在APP层处理节点入网事件if ( events & SampleApp_JOIN_IN_NETWORK_EVT ) /注册网络:节点只在启动时,才向协调器发送一次注册网络信息 /第一步:封装数据 /(1)帧类型 func0 = J; func1 = N; func2 = S; /(2)封装物理地址:8字节 phyaddr = NLME_GetExtAddr(); /(3)封装网络地址:2字节 netaddr = NLME_GetShortAddr(); /(4)数据包 for(count=0;countclusterId ) case SAMPLEAPP_DATAMSG_CLUSTERID: /如果是上传的实时数据 /根据节点功能,采用不同的方法处理,基本内容如下: /1.接收指令,判断是否为本节点需要处理的指令 /将RF接收的数据(pkt-cmd.Data)转存到RfReceBuf memset(RfReceBuf.DatArr,0,30); memcpy(RfReceBuf.DatArr,(uint8*)pkt-cm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论