基于zigbee的环境监测Word文件下载.docx
《基于zigbee的环境监测Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于zigbee的环境监测Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
除了通过优秀的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
对不同的微处理器提供了统一的直观用户界面。
今天已经可以支持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]期刊:
X娟,X立人,周煜等.一种新型的光交织复用器的设计[J].光学学报,2003,23(12):
1424~1428
[2]专著:
金国藩,李景镇.激光测量学[M].:
科学,1998.162~165.
[3]学位论文:
X景.激光二极管微振动传感器及其在肌肉振颤测量中的应用[D].:
华中科技大学,2000.21~30.
[4]技术标准:
NationalStandardizationTechnicalmittee.GB3100~3102-93.QuantitiesandUnitsGB3100~3102-93[S].Beijing:
ChinaStandardPress,1994.
[5]
李战明,X宝,骆东松.Zigbee技术规X与协议栈分析[J].信息化纵横,2009,05:
12-16.
[6]
黄建华.基于ZigBee2006的无线传感器网络设计与实现[D].XX电子科技大学,2009年.
[7]
马新涛.基于Zigbee技术的无线网关设计[D].中国海洋大学,2010年.
[8]
X杰,涂巧玲,杨文刚.传感器网络节点通信模块的低功耗研究[J].传感器与微系统,2009,09:
42-45.
[9]
郭栋,秦明芝,王伟敏.基于CC2430的ZigBee无线传感器网络设计与实现[J].物联网技术,2011,01:
12-15.
附录
附件1:
图7程序流程图
图8系统构造图
附件2主要程序:
温湿度传感器发送代码:
#include<
iocc2530.h>
#include"
hal_mcu.h"
hal_assert.h"
hal_board.h"
hal_rf.h"
basic_rf.h"
stdio.h>
#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{
halMcuWaitMs(1000);
}
}
}
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、信道、节点地址。
rfSendData();
//发送数据
接收程序:
voidrfRecvData(void)
uint8pRxData[128];
intrlen;
basicRfReceiveOn();
//Mainloop
while(!
basicRfPacketIsReady());
rlen=basicRfReceive(pRxData,sizeofpRxData,NULL);
//承受数据
if(rlen>
0){
pRxData[rlen]=0;
printf((char*)pRxData);
//LED灯初始化
basicRfConfig.myAddr=RECV_ADDR;
basicRfConfig)==FAILED){//设置无线模块PAN_ID、信道、节点地址
rfRecvData();
//接收函数