基于zigbee的环境监测.docx
《基于zigbee的环境监测.docx》由会员分享,可在线阅读,更多相关《基于zigbee的环境监测.docx(16页珍藏版)》请在冰豆网上搜索。
基于zigbee的环境监测
目录I
一、环境质量监测设计背景1
二、设计系统硬件的选择2
2.1zigbee芯片的选择2
2.2传感器的选择2
2.2.1温湿度传感器2
2.2.2光敏传感器的选择3
三、系统实验开发平台的搭建5
3.1硬件平台5
3.2软件平台6
四、实验操作步骤及结果8
4.1操作步骤8
4.2结果显示8
总结与致谢10
参考文献11
附录12
一、环境质量监测设计背景
近年来,随着无线传感器网络技术的迅猛发展,以及人们对于环境保护和环境监督提出的更高要求,越来越多的企业和机构都致力于在环境监测系统中应用无线传感器网络技术的研究。
通过在监测区域内布署大量的廉价微型传感器节点,经由无线通信方式形成一个多跳的网络系统,从而实现网络覆盖区域内感知对象的信息的采集量化、处理融合和传输应用。
与传统的环境监测手段相比,使用传感器网络进行环境监测有三个显著的优势:
一是网络的自组性提供了廉价而且快速部署网络的可能;二是现场采集的数据可通过中间节点进行(路由)传送,在不增加功耗和成本的前提下,可将系统性能提高一个数量级;三是网络的健壮性、抗毁性满足了某些特定应用的需求。
将设备数据采集之后再通过无线ZigBee网络进行传输是ZigBee技术在工业现场环境中的一种应用,这种新兴的技术必将给工厂现代化注入新的活力。
ZigBee技术填补了低成本、低功耗和低速率无线通信市场的空白,其使用的便捷性是该技术成功的关键,它适用于短距离小范围的基于无线通信的控制领域,必将在工业自动化等领域得到广泛的应用。
数据采集技术已经相对成熟,将它重新构建于ZigBee网络平台之上,将成熟技术的稳定性和新技术的便捷性充分结合起来,这种结合对于工业现场十分必要。
减少了在某些场所有线网络布线以及工人人工采集数据的不便,同时可以方便的于各种传感器搭配用于不同的场合。
二、设计系统硬件的选择
2.1zigbee芯片的选择
ZigBee新一代SOC芯片CC2530是真正的片上系统解决方案,支持IEEE802.15.4标准/ZigBee/ZigBeeRF4CE和能源的应用。
拥有庞大的快闪记忆体多达256个字节,CC2530是理想ZigBee专业应用。
支持新RemoTI的ZigBeeRF4CE,这是业界首款符合ZigBeeRF4CE兼容的协议栈,和更大内存大小将允许芯片无线下载,支持系统编程。
此外,CC2530结合了一个完全集成的,高性能的RF收发器与一个8051微处理器,8kB的RAM,32/64/128/256KB闪存,以及其他强大的支持功能和外设。
CC2530提供了101dB的链路质量,优秀的接收器灵敏度和健壮的抗干扰性,四种供电模式,多种闪存尺寸,以及一套广泛的外设集——包括2个USART、12位ADC和21个通用GPIO,以及更多。
除了通过优秀的RF性能、选择性和业界标准增强8051MCU内核,支持一般的低功耗无线通信,CC2530还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,使你更快的获得市场。
CC2530可以用于的应用包括远程控制、消费型电子、家庭控制、计量和智能能源、楼宇自动化、医疗以及更多领域。
2.2传感器的选择
本课程设计主要主要完成对光、温湿度的监测,所以需要选择光传感器和温湿度传感器。
2.2.1温湿度传感器
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
使用4针单排引脚封装。
图1温湿度模块与cc2530部分接口电路
2.2.2光敏传感器的选择
光传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。
光传感器不只局限于对光的探测,它还可以作为探测元件组成其他传感器,对许多非电量进行检测,只要将这些非电量转换为光信号的变化即可。
图2光敏模块与cc2530部分借口模块
三、系统实验开发平台的搭建
3.1硬件平台
联创中控ZigBee开发套件是一组包含无线节点(支持四种核心板:
CC2530核心板、STM32W108核心板、WIFI核心板、蓝牙核心板)、传感器、各种配件及相关调试工具的硬件板卡,广泛运用于联创中控的“无线传感器网络教学实验平台”、“Android3G物联网•移动互联网教学实验平台”、“IPv6物联网•下一代互联网教学科研平台”等无线传感网、物联网教学实验平台。
图3主要模块实物图
3.2软件平台
IAR Embedded Workbench(简称 EW)的C/C++交叉编译器和调试器是目前为止是业界较易使用和较完整的的专业嵌入式应用开发工具。
EW 对不同的微处理器提供了统一的直观用户界面。
EW 今天已经可以支持35种以上的8位/16位/32位的各种微处理器结构。
EW包括:
嵌入式C/C++优化编译器,编辑器,连接定位器,汇编器,库管理员,C-SPY 调试器中和项目管理器。
使用IAR的编译器可以得到较紧凑简介的代码,从而节省硬件资源,最终得以最大限度地降低产品的成本,从而以提高产品的竞争力。
EW8051 目前是IAR公司发展较快的产品,EW8051 已经发展到了8系列版本,并且在同类产品中具有明显价格优势。
其编译器可以对一些SOC 芯片进行专门的优化. 如Atmel,TI,ST,Philips。
除了EW MCS-51标准版外,IAR 公司还专门为ARM、MP430等微处理器开发出专门的版本,方便了不同客户的需求。
IAR System是嵌入式领域唯一能够提供这种解决方案的公司。
EW支持35种以上的8位/16位/32位的微处理器结构。
它配合TI公司的仿真器可以直接将程序下载到CC2530中。
图4IAR软件界面图
四、实验操作步骤及结果
4.1操作步骤
1.准备好带有光敏传感器的CC2530射频板,设置节点板跳线为模式一,将CC2530仿真器连接到该CC2530射频板上,接上出厂电源。
2.上电CC2530节点板,然后按下连接好的CC2530仿真器的复位按键;接下来点击IAR菜单Project->Downloadanddebug,将光敏传感器发送程序下载程序到CC2530射频板上。
3.准备好带有温湿度传感器的CC2530射频板,接下来点击IAR菜单Project->Downloadanddebug,将温湿度传感器发送程序下载程序到CC2530射频板上。
4.将接受程序下载到cc2530射频板上。
4.2结果显示
在PC上打开超级终端或串口调试助手,设置波特率为19200,8数据位,1停止位,无硬件流控。
观察PC机串口中输出的光、温度、湿度实验数据。
图5试验箱结果
图6实验结果
总结与致谢
这次课程设计是我们在大学期间最后的一次实践学习,是四年学习的一个总结,也是我们学习成果的具体体现。
所以我们做课程设计必须有一个良好的态度,认真地对待,只有这样才可以学到更多的专业知识,为将来的工作做好各个方面准备。
首先要感谢带我课程设计的庞丹丹老师,庞丹丹以严谨的态度要求我们,不马虎,不以完成课程设计为目的,以让学生在课程设计中真正的能学到东西为目的。
为了让设计能顺利的完成,庞老师花费大量时间与我们交流,她对问题的独到见解使我受益匪浅,每次与她讨论问题总会有所收获。
其次要感谢我的同学们,感谢他们在课程设计的过程中给我的帮助。
没有他们的帮助,我也不可能很好地完成本次设计任务。
同时感谢从我进入大学以来,学校所有在学习和生活方面对我关心的老师。
参考文献
[1]期刊:
张娟,刘立人,周煜等.一种新型的光交错复用器的设计[J].光学学报,2003,23(12):
1424~1428
[2]专著:
金国藩,李景镇.激光测量学[M].北京:
科学出版社,1998.162~165.
[3]学位论文:
张景.激光二极管微振动传感器及其在肌肉振颤测量中的应用[D].武汉:
华中科技大学,2000.21~30.
[4]技术标准:
NationalStandardizationTechnicalCommittee.GB3100~3102-93.QuantitiesandUnitsGB3100~3102-93[S].Beijing:
ChinaStandardPress,1994.
[5] 李战明,刘宝,骆东松.Zigbee技术规范与协议栈分析[J].信息化纵横,2009,05:
12-16. [6] 黄建华.基于ZigBee2006的无线传感器网络设计与实现[D].西安电子科技大学,2009年.
[7] 马新涛.基于Zigbee技术的无线网关设计[D].中国海洋大学,2010年.
[8] 张杰,涂巧玲,杨文刚.传感器网络节点通信模块的低功耗研究[J].传感器与微系统,2009,09:
42-45.
[9] 郭栋,秦明芝,王伟敏.基于CC2430的ZigBee无线传感器网络设计与实现[J].物联网技术,2011,01:
12-15.
附录
附件1:
图7程序流程图
图8系统结构图
附件2主要程序:
温湿度传感器发送代码:
#include
#include"hal_mcu.h"
#include"hal_assert.h"
#include"hal_board.h"
#include"hal_rf.h"
#include"basic_rf.h"
#include
#defineRF_CHANNEL25//2.4GHzRFchannel
#definePAN_ID0x2007
#defineSEND_ADDR0x2531
#defineRECV_ADDR0x2520
staticbasicRfCfg_tbasicRfConfig;
voidrfSendData(void)
{
uint8data[32]={0};
uint8ret;
unsignedchartemp,hum;
//KeepReceiveroffwhennotneededtosavepower
basicRfReceiveOff();
//Mainloop
while(TRUE){
dht11_update(&temp,&hum);//获取温度、湿度值
sprintf(data,"temp=%d,hum=%d\r\n",temp,hum);
ret=basicRfSendPacket(RECV_ADDR,data,strlen(data));//将数据发送到接收节点
if(ret==SUCCESS){//若发送成功,则D7闪烁一次
hal_led_on
(1);
halMcuWaitMs(100);
hal_led_off
(1);
halMcuWaitMs(900);//通过改变延时函数的参数,可以改变数据采集的频率
}else{
hal_led_on
(1);
halMcuWaitMs(1000);
hal_led_off
(1);
}
}
}
voidmain(void)
{
halMcuInit();//时钟初始化
hal_led_init();//LED灯初始
dht11_io_init();//温湿度传感器引脚初始化
hal_uart_init();//串口初始化
if(FAILED==halRfInit()){//无线模块硬件初始化
HAL_ASSERT(FALSE);
}
//ConfigbasicRF
basicRfConfig.panId=PAN_ID;
basicRfConfig.channel=RF_CHANNEL;
basicRfConfig.ackRequest=TRUE;
//InitializeBasicRF
basicRfConfig.myAddr=SEND_ADDR;
if(basicRfInit(&basicRfConfig)==FAILED){//设置无线模块PAN_ID、信道、节点地址。
HAL_ASSERT(FALSE);
}
rfSendData();//发送数据
}
接收程序:
#include
#include"hal_mcu.h"
#include"hal_assert.h"
#include"hal_board.h"
#include"hal_rf.h"
#include"basic_rf.h"
#include
#defineRF_CHANNEL25//2.4GHzRFchannel
#definePAN_ID0x2007
#defineRECV_ADDR0x2520
staticbasicRfCfg_tbasicRfConfig;
voidrfRecvData(void)
{
uint8pRxData[128];
intrlen;
basicRfReceiveOn();
//Mainloop
while(TRUE){
while(!
basicRfPacketIsReady());
rlen=basicRfReceive(pRxData,sizeofpRxData,NULL);//接受数据
if(rlen>0){
pRxData[rlen]=0;
printf((char*)pRxData);
}
}
}
voidmain(void)
{
halMcuInit();//时钟初始化
hal_led_init();//LED灯初始化
hal_uart_init();//串口初始化
if(FAILED==halRfInit()){//无线模块硬件初始化
HAL_ASSERT(FALSE);
}
//ConfigbasicRF
basicRfConfig.panId=PAN_ID;
basicRfConfig.channel=RF_CHANNEL;
basicRfConfig.ackRequest=TRUE;
//InitializeBasicRF
basicRfConfig.myAddr=RECV_ADDR;
if(basicRfInit(&basicRfConfig)==FAILED){//设置无线模块PAN_ID、信道、节点地址
HAL_ASSERT(FALSE);
}
rfRecvData();//接收函数
}