ZigBee火灾.docx

上传人:b****7 文档编号:25660686 上传时间:2023-06-11 格式:DOCX 页数:18 大小:541.74KB
下载 相关 举报
ZigBee火灾.docx_第1页
第1页 / 共18页
ZigBee火灾.docx_第2页
第2页 / 共18页
ZigBee火灾.docx_第3页
第3页 / 共18页
ZigBee火灾.docx_第4页
第4页 / 共18页
ZigBee火灾.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

ZigBee火灾.docx

《ZigBee火灾.docx》由会员分享,可在线阅读,更多相关《ZigBee火灾.docx(18页珍藏版)》请在冰豆网上搜索。

ZigBee火灾.docx

ZigBee火灾

 

武汉华夏理工学院

信息工程课程设计报告书

 

课程名称无线传感器网络技术

课程设计总评成绩

学生姓名

学号10213315128

学生专业班级物联网1151

指导教师姓名苏明霞

课程设计起止日期2018.1.2--2018.1.12

 

一、课程设计项目名称

基于ZigBee协议栈的火灾检测系统设计

二、项目设计目的及技术要求

2.1项目设计目的

无线传感器网络是现在较热门的研究领域,其作为一个将数据采集、数据传输以及数据处理集成于一体的智能化系统,具有非常广阔的应用前景。

传感器节点能够采集和处理传感器的数据,并且通过ZigBee无线传输到汇聚节点,最后由汇聚节点发送到监控中心(PC机)。

1)CC2530板子A、B至少4块板子上进行组网,并将两块板子所采集的光照度、温湿度传递到上位机上进行显示(上位机提供)。

2)进行终端节点、协调器节点的设计。

2.2项目的主要任务

1、给出系统的框图,并描述其工作原理。

2、实现基于协议栈的温湿度、光照度采集的数值显示,同时要明晰原理。

3、了解终端节点、协调器节点的区别,然后完成相关设计。

4、组网完成后,LED闪烁,上位机可以进行相关显示。

5、设置协议,能判断是来自哪个寝室的参数,如果超出范围,要对上位机串口助手上发送ERROR。

6、画出软件流程图(包括子函数运算流程图),做出相应的调试过程,以及错误分析,并给出相应的截图。

三、项目设计方案论证

3.1基于ZigBee协议栈的火灾检测系统设计的整体方案

对ZigBee协议框架结构进行分析,然后通过论述协议的应用层、网络层、数据链路层、物理层和MAC层的功能,将无线传感器网络与ZigBee技术相结合,阐述无线传感器网络节点的硬件和软件设计方法。

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

通过编写协议栈程序,以采集室内的温湿度、光照度数据为对象,终端利用无线收发模块将采集的数据发送出去,协调器接收到消息并利用串口与PC机通信,进行包含汇聚节点及传感器节点的组网通信实验。

ZigBee协议栈的火灾检测系统设计的整体思路如下图3-1所示:

传感器节点汇聚节点

 

串口

 

图3-1ZigBee协议栈的火灾检测系统设计的整体思路

3.2系统实现原理

3.2.1硬件原理图

本实验使用的是CC2530芯片,CC2530具有一个IEEE802.15.4兼容无线收发器。

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

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

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

当物质燃烧时,必然会释放出一定的热量。

从物质燃烧的角度出发,选择温度传感器DS18B20,光照传感器采集终端节点数据。

ZigBee协议栈的火灾检测系统主要涉及LED、光照度传感器、DS18B20传感器、USB转串口电路、CC2530典型应用电路。

图3-2-1LED模块图3-2-2温湿度传感器

图3-2-3USB转串口电路

光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电阻器,又称为光电导探测器;入射光强,电阻减小,入射光弱,电阻增大。

图3-2-4光照度传感器模块

图3-2-5CC2530典型应用电路

 

3.2.2z-stack协议栈

APP:

应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。

HAL:

硬件层目录,包含有与硬件相关的配置和驱动及操作函数。

MAC:

MAC层目录,包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件

MT:

实现通过串口可控各层,于各层进行直接交互。

NWK:

网络层目录,含网络层配置参数文件及网络层库的函数接口文件,APS层库的函数接口

OSAL:

协议栈的操作系统。

Profile:

AF层目录,包含AF层处理函数文件。

Security:

安全层目录,安全层处理函数,比如加密函数等。

Services:

地址处理函数目录,包括着地址模式的定义及地址处理函数

Tools:

工程配置目录,包括空间划分及ZStack相关配置信息。

ZDO:

ZDO目录。

ZMac:

MAC层目录,包括MAC层参数配置及MAC层LIB库函数回调处理函数。

ZMain:

主函数目录,包括入口函数及硬件配置文件。

Output:

输出文件目录,这个EW8051IDE自动生成的

在ZigBee协议栈中,PHY、MAC层位于最低层,且与硬件相关;NWK、APS,APL层以及安全层建立在PHY和MAC层之上,并且完全与硬件无关。

整个Z-Stack采用分层的软件结构,硬件抽象层(HAL)提供各种硬件模块的驱动,包括定时器Timer,通用I/O口GPIO,通用异步收发传输器UART,模数转换ADC的应用程序接口API,提供各种服务的扩展集。

操作系统抽象层OSAL实现了一个易用的操作系统平台,通过时间片轮转函数实现任务调度,提供多任务处理机制。

用户可以调用OSAL提供的相关API进行多任务编程,将自己的应用程序作为一个独立的任务来实现。

 

3.3软件设计思路

(1)终端:

系统软件由数据采集和数据接收端程序组成,均包括初始化程序处理、获取温湿度、光照度函数,发送点播消息程序。

 

图3.3.1终端软件流程图

(2)协调器:

系统软件数据接收端和串口发送程序组成,均包括初始化程序处理、接收点播消息程序、异常处理函数。

 

图3.3.2协调器软件流程图

图3.3.3ZigBee协议栈的火灾检测系统整体流程图

四、部分功能程序实现

4.1终端程序

4.1.1A/D转换

A/D转换器就是模拟/数字转换器,是将输入的模拟信号转换成数字信号。

温度传感器通道号AIN14、光照传感器通道号AIN6。

配置相应的数据寄存器ADCH,控制寄存器ADCCON1、ADCCON3。

voidInitialAD(void)

{

ADCH&=0X00;//清EOC标志ADCCFG|=0X80;

ADCCON3=0xb6;//单次转换,P07进行采样11110110

ADCCON1=0X30;//手动模式

ADCCON1|=0X40;//启动A/D

}

4.1.2信号采集

光照度获取Light_Process();温湿度获取dht11_value()。

voidLight_Process(void)

{

HalLedBlink(HAL_LED_1,2,50,500);

InitialAD();

while(ADCCON1&0x80){GetLuxNum();}

}

uint8guangzhao[3];uint8temp[2];

voidGetLuxNum(void)

{

floatnum;

temp[1]=ADCL;temp[0]=ADCH;

InitialAD();

ADCCON1|=0x40;//开始下一转换

temp[1]=temp[1]>>2;temp[1]|=temp[0]<<6;

temp[0]=temp[0]>>2;//数据处理

temp[0]&=0x3f;

num=(temp[0]*256+temp[1])*3.3/8192;//定参考电压为3.3V14位精确度

guangzhao[0]=(char)(num)%10+48;

guangzhao[1]=(char)(num*10)%10+48;

guangzhao[2]=(char)(num*100)%10+48;

}

chardht11_value(unsignedchar*temp,unsignedchar*humi,unsignedcharflag)

{

unsignedchart_count=0;//计时器;

unsignedcharh_i=0,h_f=0;unsignedchart_i=0,t_f=0;

unsignedcharcheck_sum=0;

DHT11_PIN_OUT();DHT11_PIN_L();//输出低电平;

//低电平持续时间必须大于18ms;

dht11_delay_us(20000);//20ms;

DHT11_PIN_H();//主机结束信号,高电平;

//主机等待20us~40us,读取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给出响应输出后会拉高总线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_f+t_i+t_f)||(h_i!

=100&&t_i!

=100))

{

if(flag==DHT11_STRING)

{temp[0]=t_i/10+0x30;temp[1]=t_i%10+0x30;

humi[0]=h_i/10+0x30;humi[1]=h_i%10+0x30;}

else

{*temp=t_i;*humi=h_i;}}

else

{if(flag==DHT11_STRING)

{temp[0]='0';temp[1]='0';humi[0]='0';humi[1]='0';}

else

{*temp=0;*humi=0;}return-1;}

}

else

{if(flag==DHT11_STRING)

{temp[0]='0';temp[1]='0';humi[0]='0';humi[1]='0';}

else{*temp=0;*humi=0;}return-1;}

return0;}

4.1.3用户事件

设置协议参数,采集到温湿度、光照度后,进行数据的整合和封装,通过RF射频前端以电磁波的形式将广播消息传输出去。

voidxieyi(void)

{

str[0]='1';str[1]='b';str[2]='6'str[3]='0'str[4]='3';

str[5]=wendu[0];str[6]=wendu[1];str[7]=shidu[0];str[8]=shidu[1];

str[9]=guangzhao[0];str[10]=guangzhao[1];str[11]=guangzhao[2];

}

注册用户事件,轮询时触发

#defineDHT110x0002

if(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();

osal_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接收/传送数据缓存。

/*串口基本定义*/

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);

HalUARTWrite(0,RX_BUFFER,RX_Length);

}

}

4.2.2报警系统

通过协议判断是哪个寝室的数据,协调器收到采集的信息超出了设置的阈值,在上位机上显示“error”。

接收的数据pkt->cmd.Data[5]表示终端采集的温度数据超出阈值,接收的数据pkt->cmd.Data[9]表示终端采集的光照数据超出阈值,LED闪烁报警并显示寝室号。

voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt)

{

uint16flashTime;

switch(pkt->clusterId)

{

caseSAMPLEAPP_PERIODIC_CLUSTERID:

//HalUARTWrite(0,pkt->cmd.Data,12);

HalLedBlink(HAL_LED_1,4,50,1000);

if(pkt->cmd.Data[0]=='1'&&pkt->cmd.Data[1]=='b'&&pkt->cmd.Data[2]=='6'

&&pkt->cmd.Data[3]=='0'&&pkt->cmd.Data[4]=='3')

{HalLedBlink(HAL_LED_2,4,50,1000);

HalUARTWrite(0,pkt->cmd.Data,30);

if(pkt->cmd.Data[10]>='6'&&pkt->cmd.Data[24]>='4')

{uint8no[8]="baojing";

HalUARTWrite(0,no,8);

}

}

if(pkt->cmd.Data[0]=='1'&&pkt->cmd.Data[1]=='b'&&pkt->cmd.Data[2]=='6'

&&pkt->cmd.Data[3]=='0'&&pkt->cmd.Data[4]=='2')

{HalLedBlink(HAL_LED_1,4,50,1000);

HalUARTWrite(0,pkt->cmd.Data,30);

if(pkt->cmd.Data[10]>='6'&&pkt->cmd.Data[24]>='4')

{uint8no[8]="baojing2";

HalUARTWrite(0,no,8);

}}

else{

uint8no[2]="NO";

HalUARTWrite(0,no,2);}

break;

}

 

五、项目设计结果分析

5.1实验结果

各个寝室将采集光照度、温湿度发送到协调器,协调器接收到采集数据消息后发送给串口,在上位机进行显示。

终端1每隔5ms采集一次数据发送给上位机,终端2每隔10ms采集一次数据发送给上位机当协调器收到的数据超过设定的阈值会产生报警消息,LED闪烁。

当协调器收到的数据与终端不一致,上位机显示“error”。

5.2问题及解决方法

(1)组网成功后,想实现将各个寝室采集的数据定时发送给协调器并在上位机上显示。

解决:

通过上网查找资料后,了解到Z_Stack协议栈可以通过定义用户事件DHT11或系统时间后,轮询触发osal_start_timerEx(task_id,DHT11,5000)。

(2)组网成功后,终端采集数据发送个协调器是乱码。

解决:

经过反复的测试后,发现接受数据过程无问题,在查看串口函数回调函数时发现串口没在初始化过程中打开;只有串口初始化函数,才能将发送的字符串显示在上位机上。

(3)终端采集的光照度无变化。

解决:

在和同学的讨论中,发现我们光照传感器的I/O口引脚定义有问题,然后参照书重新定义了引脚定义并修改了控制寄存器,在上位机上成功的显示初光照度。

并发现用灯照射光敏电阻时,值变小。

经过查阅资料发现光敏电阻的入射光强,电阻减小,入射光弱,电阻增大。

(4)后期上位机的设计

将协调器的接收的字符串通过atoi()函数转换成整型,上位机接收处理整型数据。

学习用户界面设计,这个过程也需要不断加强学习。

六、参考文摘

[1]王殊,胡富平等.无线传感器网络的理论及其应用.北京:

北京航空航天大学出版社,2007.

[2]姜仲,刘丹等.ZigBee技术与实训教程.北京:

清华大学出版社,2014.

[3]姜仲,刘丹ZigBee技术与实训教程.北京.清华大学出版社.2016.

[4]王小强,欧阳骏无线传感网络设计与实现。

北京.化学工业出版社。

2012

[5]基于CC2530的无线传感器网络监控平台任珍文,黄玉清

刊名:

《电子技术应用》出版日期:

2012期号:

第10期

[6]基于CC2530的无线监控系统设计与实现龚文超,吴猛猛,刘双双

刊名:

《电子测量技术》出版日期:

2012期号:

第6期

[7]李小维无线传感器网络技术.北京.北京理工大学出版社.2007

课程设计评分表

评分项目

评分成绩

1.选题合理、目的明确(10分)

2.设计方案正确,具有可行性、创新性(30分)

3.项目工艺水平及测试性能达到技术要求(25分)

4.参考文摘不少于5篇(10分)

5.答辩(25分)

总分(100分)

答辩记录:

 

指导教师综合评语:

 

指导教师(签名)

日期:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

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

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