ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:541.74KB ,
资源ID:25660686      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25660686.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ZigBee火灾.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ZigBee火灾.docx

1、ZigBee火灾武汉华夏理工学院信息工程课程设计报告书课 程 名 称 无线传感器网络技术 课程设计总评成绩 学 生 姓 名 学 号 10213315128 学 生 专 业 班级 物联网1151 指 导 教 师 姓名 苏明霞 课程设计起止日期 2018.1.2-2018.1.12 一、课程设计项目名称基于ZigBee协议栈的火灾检测系统设计二、项目设计目的及技术要求2.1 项目设计目的无线传感器网络是现在较热门的研究领域,其作为一个将数据采集、数据传输以及数据处理集成于一体的智能化系统,具有非常广阔的应用前景。传感器节点能够采集和处理传感器的数据,并且通过ZigBee无线传输到汇聚节点,最后由汇

2、聚节点发送到监控中心(PC机)。1)CC2530板子A、B至少4块板子上进行组网,并将两块板子所采集的光照度、温湿度传递到上位机上进行显示(上位机提供)。2)进行终端节点、协调器节点的设计。2.2 项目的主要任务1、给出系统的框图,并描述其工作原理。2、实现基于协议栈的温湿度、光照度采集的数值显示,同时要明晰原理。3、了解终端节点、协调器节点的区别,然后完成相关设计。4、组网完成后,LED闪烁,上位机可以进行相关显示。5、设置协议,能判断是来自哪个寝室的参数,如果超出范围,要对上位机串口助手上发送ERROR。6、画出软件流程图(包括子函数运算流程图),做出相应的调试过程,以及错误分析,并给出相

3、应的截图。三、项目设计方案论证3.1基于ZigBee协议栈的火灾检测系统设计的整体方案对ZigBee协议框架结构进行分析,然后通过论述协议的应用层、网络层、数据链路层、物理层和MAC层的功能,将无线传感器网络与ZigBee技术相结合,阐述无线传感器网络节点的硬件和软件设计方法。在本设计中,选用功耗较小的CC2530芯片作为通信芯片来设计节点。通过编写协议栈程序,以采集室内的温湿度、光照度数据为对象,终端利用无线收发模块将采集的数据发送出去,协调器接收到消息并利用串口与PC机通信,进行包含汇聚节点及传感器节点的组网通信实验。ZigBee协议栈的火灾检测系统设计的整体思路如下图3-1所示: 传感器

4、节点 汇聚节点 串口图3-1 ZigBee协议栈的火灾检测系统设计的整体思路3.2系统实现原理3.2.1硬件原理图本实验使用的是CC2530芯片, CC2530 具有一个IEEE 802.15.4 兼容无线收发器。RF 内核控制模拟无线模块。另外,它提供了MCU 和无线设备之间的一个接口,这使得可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。当物质燃烧时,必然会释放出一定的热量。从物质燃烧的角度出发,选择温度传感器DS18B20,光照传感器采集终端节点数据。ZigBee协议栈的火灾检测系统主要涉及LED、光照度传感器、DS18B20传感器、

5、USB转串口电路、CC2530典型应用电路。 图3-2-1 LED模块 图 3-2-2 温湿度传感器图3-2-3 USB转串口电路光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电阻器,又称为光电导探测器;入射光强,电阻减小,入射光弱,电阻增大。图3-2-4 光照度传感器模块图3-2-5 CC2530典型应用电路3.2.2 z-stack协议栈APP : 应用层目录,这是用户创建各种不同工程的区域,在这 个目录中包含了应用层的内容和这个项目的主要内容,在协议 栈里面一般是以操作系统的任务实现的。HAL: 硬件层目录,包含有与硬件相关的配置和驱动及操作函数。MAC :MA

6、 C层目录,包含了MAC层的参数配置文件及其 MAC的LIB库的函数接口文件MT :实现通过串口可控各层,于各层进行直接交互。NWK :网络层目录,含网络层配置参数文件及网络层库的函数接口文件,APS层库的函数接口OSAL:协议栈的操作系统。Profile: AF层目录,包含AF层处理函数文件。Security:安全层目录,安全层处理函数,比如加密函数等。Services:地址处理函数目录,包括着地址模式的定义及地址处理函数Tools : 工程配置目录,包括空间划分及ZStack相关配置信息。ZDO : ZDO 目录。ZMac :MAC 层目录,包括 MAC层参数配置及MAC层LIB库函数回调

7、处理函数。ZMain :主函数目录,包括入口函数及硬件配置文件。Output :输出文件目录,这个EW8051 IDE自动生成的在ZigBee协议栈中,PHY、MAC层位于最低层,且与硬件相关;NWK、APS, APL层以及安全层建立在PHY和MAC层之上,并且完全与硬件无关。整个Z-Stack采用分层的软件结构,硬件抽象层(HAL)提供各种硬件模块的驱动,包括定时器Timer,通用I/O口GPIO,通用异步收发传输器UART,模数转换ADC的应用程序接口API,提供各种服务的扩展集。操作系统抽象层OSAL实现了一个易用的操作系统平台,通过时间片轮转函数实现任务调度,提供多任务处理机制。用户可

8、以调用OSAL提供的相关API进行多任务编程,将自己的应用程序作为一个独立的任务来实现。3.3软件设计思路(1)终端:系统软件由数据采集和数据接收端程序组成,均包括初始化程序处理、获取温湿度、光照度函数,发送点播消息程序。图3.3.1 终端软件流程图(2)协调器:系统软件数据接收端和串口发送程序组成,均包括初始化程序处理、接收点播消息程序、异常处理函数。图3.3.2协调器软件流程图图3.3.3 ZigBee协议栈的火灾检测系统整体流程图四、部分功能程序实现4.1终端程序4.1.1 A/D转换A/D转换器就是模拟/数字转换器,是将输入的模拟信号转换成数字信号。温度传感器通道号AIN14、光照传感

9、器通道号AIN6。配置相应的数据寄存器ADCH,控制寄存器ADCCON1、ADCCON3。void InitialAD(void) ADCH &= 0X00; /清EOC标志 ADCCFG |= 0X80; ADCCON3=0xb6; /单次转换,P07进行采样11110110ADCCON1 = 0X30; /手动模式 ADCCON1 |= 0X40; /启动A/D4.1.2信号采集 光照度获取Light_Process();温湿度获取dht11_value()。void Light_Process(void) HalLedBlink( HAL_LED_1, 2, 50, 500 ); Ini

10、tialAD();while(ADCCON1&0x80) GetLuxNum(); uint8 guangzhao3; uint8 temp2;void GetLuxNum(void) float num;temp1 = ADCL; temp0 = ADCH; InitialAD(); ADCCON1 |= 0x40; /开始下一转换temp1 = temp12; temp1 |= temp02; /数据处理 temp0 &= 0x3f;num = (temp0*256+temp1)*3.3/8192; /定参考电压为3.3V 14位精确度 guangzhao0 = (char)(num)%1

11、0+48; guangzhao1 = (char)(num*10)%10+48; guangzhao2 = (char)(num*100)%10+48;char dht11_value(unsigned char *temp , unsigned char *humi , unsigned char flag) unsigned char t_count = 0; /计时器; unsigned char h_i = 0 , h_f = 0; unsigned char t_i = 0 , t_f = 0; unsigned char check_sum = 0; DHT11_PIN_OUT()

12、; DHT11_PIN_L(); /输出低电平; /低电平持续时间必须大于18ms; dht11_delay_us(20000); /20ms; DHT11_PIN_H(); /主机结束信号,高电平; /主机等待20us40us,读取DHT11响应输出; dht11_delay_us(30); DHT11_PIN_IN(); if(DHT11_PIN = 0) /正确的响应输出; while( !DHT11_PIN ) asm(NOP); t_count+; if(t_count 250)return -1; t_count = 0;dht11_delay_us(50); /DHT11给出响应

13、输出后会拉高总线80us; while( DHT11_PIN ); /等待接收; asm(NOP);t_count+;if(t_count 250) /超时; return -1; h_i = dht11_read_byte();h_f = dht11_read_byte(); /湿度整、小数部分; t_i = dht11_read_byte(); t_f = dht11_read_byte(); /温度整、小数部分; check_sum = dht11_read_byte(); /校验和;/校验和正确或者温湿度整数部分获取正确即表示获取成功! if(check_sum = ( h_i + h

14、_f + t_i + t_f ) | (h_i != 100 & t_i != 100) ) if(flag = DHT11_STRING) temp0 = t_i/10+0x30; temp1 = t_i%10+0x30; humi0 = h_i/10+0x30; humi1 = h_i%10+0x30; else *temp = t_i; *humi = h_i; else if(flag = DHT11_STRING)temp0 = 0; temp1 = 0; humi0 = 0; humi1 = 0; else *temp = 0; *humi = 0; return -1; else

15、 if(flag = DHT11_STRING) temp0 = 0; temp1 = 0; humi0 = 0; humi1 = 0; else *temp = 0; *humi = 0; return -1; return 0; 4.1.3 用户事件设置协议参数,采集到温湿度、光照度后,进行数据的整合和封装,通过RF射频前端以电磁波的形式将广播消息传输出去。void xieyi(void) str0=1; str1=b; str2=6 str3=0 str4=3; str5=wendu0; str6=wendu1; str7=shidu0; str8=shidu1; str9=guangz

16、hao0; str10=guangzhao1; str11=guangzhao2; 注册用户事件,轮询时触发#define DHT11 0x0002if ( events & DHT11) r_val=dht11_value(wendu , shidu , DHT11_STRING); /获取温湿度 Light_Process(); /获取光照 到 guangzhao; xieyi(); /xieyi2(); / 把获取温湿度 光照存到str; HalLedBlink( HAL_LED_2, 4, 50, 500 ); SampleApp_SendPeriodicMessage (); osa

17、l_start_timerEx( task_id , DHT11 , 5000 ); /轮询2000ms; return (events DHT11);4.2协调器程序4.2.1串口的使用经过CC2530芯片处理无线传输到协调器节点,串口调试助手在PC机上显示。在Z_Stack协议栈中,利用串口回调函数进行发送和接收。UART操作由USART控制和状态寄存器UxCSR以及UART控制寄存器UxUCR来控制。寄存器UxBAUD用于设置波特率,寄存器 UxBUF是USART接收/传送数据缓存。/* 串口基本定义 */uint8 RX_BUFFER20; /接收缓冲区;void UartCallBa

18、ckFunction(uint8 port , uint8 event); /回调函数声明,定义在最后面;Uart_Config(); /配置串口HalUARTOpen(0 , &uartConfig); /打开串口/* 配置串口 */ halUARTCfg_t uartConfig; /定义串口配置结构体变量;void Uart_Config(void); /函数声明;void Uart_Config(void) /函数定义; uartConfig.configured = TRUE; /允许配置; uartConfig.baudRate = HAL_UART_BR_9600;/波特率; u

19、artConfig.flowControl = FALSE; uartConfig.flowControlThreshold = 64; /dont care - see uart driver. uartConfig.rx.maxBufSize = 128; /串口接收缓冲区大小 uartConfig.tx.maxBufSize = 128; /串口发送缓冲区大小 uartConfig.idleTimeout = 6; /dont care - see uart driver. uartConfig.intEnable = TRUE; /使能中断 uartConfig.callBackFun

20、c = UartCallBackFunction; /指定回调函数名;static void UartCallBackFunction(uint8 port , uint8 event) uint8 RX_Length = 0; /接收到字符串大小; RX_Length = Hal_UART_RxBufLen(0); /读取接收字符串大小; if(RX_Length != 0) /有数据存在; /读取串口数据; HalUARTRead(0 , RX_BUFFER , RX_Length); HalUARTWrite(0 , RX_BUFFER , RX_Length); 4.2.2报警系统通过

21、协议判断是哪个寝室的数据,协调器收到采集的信息超出了设置的阈值,在上位机上显示“error”。接收的数据pkt-cmd.Data5表示终端采集的温度数据超出阈值,接收的数据pkt-cmd.Data9表示终端采集的光照数据超出阈值,LED闪烁报警并显示寝室号。void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) uint16 flashTime; switch ( pkt-clusterId ) case SAMPLEAPP_PERIODIC_CLUSTERID: / HalUARTWrite(0 ,pkt-cmd.Data,12 )

22、; HalLedBlink( HAL_LED_1, 4, 50,1000 ); if(pkt-cmd.Data0=1&pkt-cmd.Data1=b&pkt- cmd.Data2=6&pkt- cmd.Data3=0&pkt- cmd.Data4=3) HalLedBlink( HAL_LED_2, 4, 50, 1000 ); HalUARTWrite(0 ,pkt-cmd.Data ,30 ); if(pkt-cmd.Data10=6&pkt-cmd.Data24=4) uint8 no8=baojing; HalUARTWrite(0 ,no,8 ); if(pkt-cmd.Data0=

23、1&pkt-cmd.Data1=b&pkt- cmd.Data2=6&pkt- cmd.Data3=0&pkt- cmd.Data4=2) HalLedBlink( HAL_LED_1, 4, 50, 1000 ); HalUARTWrite(0 ,pkt-cmd.Data ,30 ); if(pkt-cmd.Data10=6&pkt-cmd.Data24=4) uint8 no8=baojing2; HalUARTWrite(0 ,no,8 ); else uint8 no2=NO; HalUARTWrite(0 ,no,2 ); break;五、项目设计结果分析5.1实验结果各个寝室将采集

24、光照度、温湿度发送到协调器,协调器接收到采集数据消息后发送给串口,在上位机进行显示。终端1每隔5ms采集一次数据发送给上位机,终端2每隔10ms采集一次数据发送给上位机当协调器收到的数据超过设定的阈值会产生报警消息,LED闪烁。当协调器收到的数据与终端不一致,上位机显示“error”。5.2问题及解决方法(1)组网成功后,想实现将各个寝室采集的数据定时发送给协调器并在上位机上显示。解决:通过上网查找资料后,了解到Z_Stack协议栈可以通过定义用户事件DHT11或系统时间后,轮询触发osal_start_timerEx( task_id , DHT11 , 5000 )。(2)组网成功后,终端

25、采集数据发送个协调器是乱码。 解决:经过反复的测试后,发现接受数据过程无问题,在查看串口函数回调函数时发现串口没在初始化过程中打开;只有串口初始化函数,才能将发送的字符串显示在上位机上。(3)终端采集的光照度无变化。 解决:在和同学的讨论中,发现我们光照传感器的I/O口引脚定义有问题,然后参照书重新定义了引脚定义并修改了控制寄存器,在上位机上成功的显示初光照度。并发现用灯照射光敏电阻时,值变小。经过查阅资料发现光敏电阻的入射光强,电阻减小,入射光弱,电阻增大。(4)后期上位机的设计将协调器的接收的字符串通过atoi()函数转换成整型,上位机接收处理整型数据。学习用户界面设计,这个过程也需要不断

26、加强学习。六、参考文摘1王殊,胡富平等.无线传感器网络的理论及其应用.北京:北京航空航天大学出版社,2007.2姜仲,刘丹等.ZigBee技术与实训教程.北京:清华大学出版社,2014.3 姜仲,刘丹 ZigBee技术与实训教程.北京.清华大学出版社.2016. 4 王小强,欧阳骏 无线传感网络设计与实现。北京.化学工业出版社。20125 基于CC2530的无线传感器网络监控平台 任珍文,黄玉清 刊名:电子技术应用 出版日期:2012 期号:第10期 6 基于CC2530的无线监控系统设计与实现 龚文超,吴猛猛,刘双双 刊名:电子测量技术 出版日期:2012 期号:第6期7 李小维 无线传感器网络技术.北京.北京理工大学出版社.2007课程设计评分表评 分 项 目评分成绩1选题合理、目的明确(10分)2设计方案正确,具有可行性、创新性(30分)3项目工艺水平及测试性能达到技术要求(25分)4参考文摘不少于5篇(10分)5答辩(25分)总 分(100分)答辩记录:指导教师综合评语:指导教师(签名) 日 期: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1