信科专业综合实践报告中国矿业大学 10.docx
- 文档编号:4744401
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:25
- 大小:329.05KB
信科专业综合实践报告中国矿业大学 10.docx
《信科专业综合实践报告中国矿业大学 10.docx》由会员分享,可在线阅读,更多相关《信科专业综合实践报告中国矿业大学 10.docx(25页珍藏版)》请在冰豆网上搜索。
信科专业综合实践报告中国矿业大学10
信科专业综合实践报告
指导老师:
姓名:
学号:
班级:
设计题目:
无线传感器网络
2014年10月
摘要
近年来,随着无线通信、传感器、嵌入式计算机及微机电技术的飞速发展和相互融全,具有感知能力、计算能力和通信能力的微型传感器开始逐渐在各领域得到应用,由这些微型传感器构成的无线传感器网络(WirelessSensorNetworks,WSN),能够通过各类集成化的微型传感器相互协作地实时监测、感知和采集各种环境或检查对象的信息,这些信息以无线方式传送,并以自组多跳的网络方式传送到用户终端,从而实现物理世界、计算机世界及人类神会相互之间的连通。
无线传感器网络作为新一代有效获取信息的无线网络通信技术,具有非常广泛的应用发展前景,其发展和应用将会给人类生产和生活的各个领域带来非常深远的影响。
本实验意在模拟传感器网络的硬件搭建系统,同时,分别从传感器节点、汇聚节点和管理节点模拟其基本功能。
传感器网络主要包含数据的采集、处理和传输三种功能。
在本实验中,重点模拟其节点分布和无线传输功能,数据的采集和初步的处理均以软件方式表现。
关键词:
无线传感器网络;无线通信;应答协议;NRF24L01
目录
1.相关知识概述1
1.1.无线传感器网络发展历史1
1.2.硬件开发环境1
1.3.NRF24L01无线通信模块3
2.需求分析4
3.硬件设计4
3.1.最小系统模块电路设计4
3.2.无线模块电路设计5
3.3.电路原理总图设计7
4.软件设计7
4.1.汇聚、管理节点程序设计8
4.2.传感器节点1程序设计10
4.3.传感器节点2程序设计11
4.4.通信协议设计12
5.核心代码13
6.功能简介18
7.体会与收获19
8.参考文献20
1.相关知识概述
1.1.无线传感器网络发展历史
中国物联网校企联盟认为,传感器网络的发展历程分为以下三个阶段:
传感器→无线传感器→无线传感器网络(大量微型、低成本、低功耗的传感器节点组成的多跳无线网络)
第一阶段:
最早可以追溯至越战时期使用的传统的传感器系统。
当年美越双方在密林覆盖的“胡志明小道”进行了一场血腥较量,“胡志明小道”是胡志明部队向南方游击队输送物资的秘密通道,美军对其进行了狂轰滥炸,但效果不大。
后来,美军投放了2万多个“热带树”传感器。
“热带树”实际上是由震动和声响传感器组成的系统,它由飞机投放,落地后插入泥土中,只露出伪装成树枝的无线电天线,因而被称为“热带树”。
只要对方车队经过,传感器探测出目标产生的震动和声响信息,自动发送到指挥中心,美机立即展开追杀,总共炸毁或炸坏4.6万辆卡车。
第二阶段:
二十世纪80年代至90年代之间。
主要是美军研制的分布式传感器网络系统、海军协同交战能力系统、远程战场传感器系统等。
这种现代微型化的传感器具备感知能力、计算能力和通信能力。
因此在1999年,商业周刊将传感器网络列为21世纪最具影响的21项技术之一。
第三阶段:
21世纪开始至今,也就是9·11事件之后。
这个阶段的传感器网络技术特点在于网络传输自组织、节点设计低功耗。
除了应用于反恐活动以外,在其它领域更是获得了很好的应用,所以2002年美国国家重点实验室--橡树岭实验室提出了“网络就是传感器”的论断。
由于无线传感网在国际上被认为是继互联网之后的第二大网络,2003年美国《技术评论》杂志评出对人类未来生活产生深远影响的十大新兴技术,传感器网络被列为第一。
在现代意义上的无线传感网研究及其应用方面,我国与发达国家几乎同步启动,它已经成为我国信息领域位居世界前列的少数方向之一。
在2006年我国发布的《国家中长期科学与技术发展规划纲要》中,为信息技术确定了三个前沿方向,其中有两项就与传感器网络直接相关,这就是智能感知和自组网技术。
当然,传感器网络的发展也是符合计算设备的演化规律。
1.2.硬件开发环境
本设计使用的是AT89S52单片机。
AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S52具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
AT89S52封装后的引脚图如图2.6所示:
本设计中所用到的一些重要引脚功能说明:
✧P0口(39脚~32脚):
双向8位三态I/O口,每个口可独立控制,其内部没有上拉电阻,为高阻状态,所以不能正常的输出高、低电平,因此该组I/O口在使用时务必要外接上拉电阻,一般我们选择接入10kΩ的上拉电阻;
✧P1口(1脚~8脚):
准双向8位I/O口,每个端口可独立控制,内带上拉电阻,这种接口输出没有高阻状态,输入也不能所存,故不是真正的I/O口。
该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确读出外部信号,P1.0引脚的第二功能为T2定时器/计数器的外部输入,P1.1引脚的第二功能为T2的外部控制端;
✧P2口(21脚~28脚):
准双向8位I/O口,每个端口可独立控制,内带上拉电阻,与P1口相似;
✧P3口(10脚~17脚):
准双向8位I/O口,每个端口可独立控制,内带上拉电阻。
第一功能使用时就当做普通I/O口,与P1口类似。
作为第二功能使用时,P3.0(10)用作RXD串行输入口,P3.1(11)用作TXD串行输出口,P3.2(12)用作INT0外部中断0,P3.3(13)用作INT1外部中断1,P3.4(14)用作T0定时器/计数器0外部输入端,P3.5(15)用作T1定时器/计数器1外部输入端,P3.6(16)用作WR外部数据存储器写脉冲,P3.7(17)用作RD外部数据存储器读脉冲;
✧RST(9脚):
单片机的复位引脚。
当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作,复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码,通俗的讲,就是从单片机从头开始执行程序
✧EA:
EA接高电平时,单片机读取内部程序存储器;EA接低电平时,单片机直接读取外部ROM;
✧VCC(40脚):
数字电路的电源,接+5V;
✧GND(20脚):
地;
✧RESET:
复位输入引脚;
✧XTAL1(19脚)XTAL2(18脚):
片内振荡电路的输入/出端,8052的时钟有两种方式,一种是片内时钟振荡方式,需在这两个脚外接石英晶体和振荡电容,振荡电容的值一般取10p~30p;另一种是外部时钟方式,将XTAL1接地,外部时钟信号从XTAL2脚输入。
1.3.NRF24L01无线通信模块
性能参数:
◆小体积,QFN204x4mm封装
◆宽电压工作范围,1.9V~3.6V,输入引脚可承受5V电压输入
◆ 工作温度范围,-40℃~+80℃
◆工作频率范围,2.400GHz~2.525GHz
◆发射功率可选择为0dBm、-6dBm、-12dBm和-18dBm
◆ 数据传输速率支持1Mbps、2Mbps[1]
◆低功耗设计,接收时工作电流12.3mA,0dBm功率发射时11.3mA,掉电模式时仅 为900nA
◆126个通讯通道,6个数据通道,满足多点通讯和调频需要
◆增强型“ShockBurst”工作模式,硬件的CRC校验和点对多点的地址控制
◆数据包每次可传输1~32Byte的数据
◆4线SPI通讯端口,通讯速率最高可达8Mbps,适合与各种MCU连接,编程简单
◆可通过软件设置工作频率、通讯地址、传输速率和数据包长度
◆MCU可通过IRQ引脚快判断是否完成数据接收和数据发送
2.需求分析
无线传感器网络是近几年来国内外研究和应用的热门领域,它深入到我们生活的每个环节,渗透到社会的每个角落,有助于帮助人类提高认识物理世界的深度、广度、精确性、及时性,加强和密切人类与物理世界的联系,提高了人类对物理环境的远端监视和控制能力。
在今后,无线传感器网络接收的数据量将会越来越大,但是当前的使用模式对于数量庞大的数据的管理和使用能力有限。
如何进一步加快其时空数据处理和管理的能力,开发出新的模式将是非常有必要的。
所以,有必要对无线传感器网络进行更加深入的学习和理解。
另外,在课程选题时,综合考虑各选题的侧重点,并结合个人实际能力与兴趣,最终选定本题目。
一来是自己在无线网络通信方面非常薄弱,想借此机会煅炼一下;二来本题目既包含软件部分(算法)又包含硬件部分(微型传感器网络搭建与仿真)。
既符合个人兴趣,又有一定的基础,最终课题完成后,还能给自己一个提升。
3.硬件设计
根据本实验的任务和要求,可分为以下两个部分:
✧最小系统模块;
✧无线通信模块;
3.1.最小系统模块电路设计
AT89S52只需要少量的外围辅助元件就可以正常工作。
单片机为40引脚双列直插芯片,共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
AT89S52单片机的最小系统由时钟电路、复位电路、电源几部分组成,如图3.1所示。
图3.1AT89S52最小系统
1.时钟电路
AVR单片机有以下几种系统时钟源的选择方案:
外部晶体/陶瓷振荡器、外部低频晶振、外部RC振荡器、标定的内部RC振荡器、外部时钟,这里我们选择8M外部晶体/陶瓷振荡器。
起振电路由8M晶振和两个20pF的去偶电容接地,组成单片机的起振电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
如图3.1所示。
2.复位电路
该方案采用上电复位,电路由一个10uF电容和1KΩ和10KΩ电阻组成,接在AT89S52的RESET端口,如图3.1所示
3.电源
本方案采用电源方案,该电源插口有三个接口,其中远离插口的是正极,靠近插口的是负极,在连接电路时只要所有的VCC接+5V,所有的GND接地就可以了,当让计算器运行时,在该插口插上电源。
3.2.无线模块电路设计
nRF24L01是由NORDIC生产的工作在2.4GHz~2.5GHz的ISM频段的单片无线收发器芯片。
无线收发器包括:
频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。
输出功率频道选择和协议的设置可以通过SPI接口进行设置。
几乎可以连接到各种单片机芯片,并完成无线数据传送工作。
极低的电流消耗:
当工作在发射模式下发射功率为0dBm时电流消耗为11.3mA,接收模式时为12.3mA,掉电模式和待机模式下电流消耗更低。
图3.2无线模块电路
3.3.电路原理总图设计
图3.3电路原理总图
4.软件设计
实验中,硬件由三块带有NRF24L01无线通信模块的51单片机组成,两块模拟传感器节点,另一块模汇聚节点,由于系统小,就把管理节点也集成到汇聚节点,做成了一个两层结构。
于是,本系统的软件设计部分也就分为三大部分:
✧汇聚、管理节点程序设计;
✧传感器节点1程序设计;
✧传感器节点2程序设计;
✧通信协议设计。
4.1.汇聚、管理节点程序设计
汇聚、管理节点负责接收两个传感器节点发来的采集数据。
对于传感器节点1,有点发和主动发送。
其中点发即是主节点先请求,然后从节点把采集到的最新数据发给主节点;主动发送是从节点在采集的新数据有较大变化时自动发送,该较大变化由阈值来比对,这里也体现出在传感器节点所做的简单数据处理。
对于传感器节点2,也有点发和主动发送,不同的是它的主动发送是,采集一次数据即发送一次,发送频率比传感器节点1要高,相应的实时性要好,同时耗能也快。
汇聚、管理节点程序流程如图4.1所示。
图4.1汇聚、管理节点程序流程图
4.2.传感器节点1程序设计
相对于汇聚、管理节点,传感器节点除了主程序外还有两个定时中断子程序,一个用来定时采集数据,一个用来完成无线通信中的定时重发。
图4.2传感器节点1主程序流程图
图4.4传感器节点1timer1程序流程图
图4.3传感器节点1timer0程序流程图
4.3.传感器节点2程序设计
两个传感器节点在功能上非常相似,只是主动发送的时机不同。
1是变化大于阈值时发送,2则是每采集一次就发送。
这一不同体现在程序上仅仅是timer0主断子程序上的不同,其他在主程序上除了身份识别码不同外全部相同,tiemr1用来定时重发的中断子程序也是相同的。
所以在此就不再累述,只给出timer0中断子程序的流程图:
图4.5 传感器节点2timer0程序流程图
4.4.通信协议设计
主
从
应答
(重发)
(重发)
(重发)
(重发)
点发 主动发送
5.核心代码
汇聚、管理节点主程序:
unsignedchardata1=0,data2=0;//保存数据,以待发给PC端
voidmain(void)
{
unsignedchartf=0;
unsignedcharTxBuf[20]={0};//根节点
unsignedcharRxBuf[20]={0};
init_NRF24L01();
StartUART();
Delay(6000);
P2=0xfe;
SetRX_Mode();
while
(1)
{
if(KEY1==0)
{
TxBuf[0]=0x01;//选择1号
TxBuf[1]=0x00;//命令标志,数据的标志是0x01,应答信号的标志是0x07
tf=3;
//LED=0;
//R_S_Byte((char)(data1));
}
if(KEY2==0)
{
//TxBuf[0]=0x02;//选择2号
//TxBuf[1]=0x00;//命令标志,数据的标志是0x01
//tf=3;
//LED=0;
Print(data1,data2);
}
if(tf>=1)
{
LED=0;
nRF24L01_TxPacket(TxBuf);//发送TxBuf 中的数据
tf--;
Delay(1000);
SPI_RW_Reg(WRITE_REG+STATUS,0XFF);//清除状态标志
SPI_RW_Reg(FLUSH_TX,0xff);//清除TXFIFO寄存器
if(tf==0)
{
TxBuf[0]=0xff;
TxBuf[1]=0xff;
TxBuf[2]=0xff;
TxBuf[3]=0xff;
}
LED=1;
}
//**************************************************************************************SetRX_Mode();
nRF24L01_RxPacket(RxBuf);
if(RxBuf[0]==0xA1)
{
LED2=0;
tf=3;//返回应答信号
TxBuf[0]=0x01;
TxBuf[3]=0x05;
P0=duan[(int)(RxBuf[2])%10];
data1=RxBuf[2];//保存数据,以待发给PC端
//Print(data1,data2);//发送到PC端
Delay(1000);
LED2=1;
}
elseif(RxBuf[0]==0xA2)
{
LED2=0;
tf=3;//返回应答信号
TxBuf[0]=0x02;
TxBuf[3]=0x05;
P0=duan[(int)(RxBuf[2])%16];
//if(data2!
=RxBuf[2])
//{
data2=RxBuf[2];//保存数据,以待发给PC端
//Print(data1,data2);//发送到PC端
//}
Delay(1000);
LED2=1;
}
RxBuf[0]=0xff;
RxBuf[1]=0xff;
RxBuf[2]=0xff;
}
}
传感器节点1主程序:
inttemp=10,pretemp=10;//模拟温度值
unsignedchartf=0,ack_flag=0;
unsignedcharTxBuf[20]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//根节点
unsignedcharRxBuf[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
voidmain(void)
{
unsignedchari,t=0;
init_NRF24L01();
//定时器初始化
IE=0x8A;
TMOD=0x11;
TL0=(65536-60000)%256;
TH0=(65536-60000)/256;
TL1=(65536-60000)%256;
TH1=(65536-60000)/256;
TR0=0;//先关闭定时器
TR1=0;
Delay(6000);
P2=0xfe;
SetRX_Mode();
TR0=1;
while
(1)
{
if(tf==1)
{
nRF24L01_TxPacket(TxBuf);//发送TxBuf 中的数据
tf=0;
Delay(1000);
SPI_RW_Reg(WRITE_REG+STATUS,0XFF);//清除状态标志
SPI_RW_Reg(FLUSH_TX,0xff);//清除TXFIFO寄存器
}
//**************************************************************************************
SetRX_Mode();
nRF24L01_RxPacket(RxBuf);
if(RxBuf[0]==0x01)//号码验证
{
LED=0;
//P0=duan[(int)(RxBuf[3])];
if(RxBuf[1]==0x00)//看出是发送请求命令----
{
TxBuf[0]=0xA1;
//TxBuf[1]=0xff;
TxBuf[2]=temp;
tf=1;//前去发送
ack_flag=1;//并等待应答信号
TR1=1;//开启延时重发
}
elseif(RxBuf[3]==0x05)//0x11 代表应答信号-----
{
ack_flag=0;//清零
TR1=0;//关闭重发延时
LED2=0;
}
Delay(1000);
LED=1;
LED2=1;
}
RxBuf[0]=0xff;
RxBuf[1]=0xff;
RxBuf[2]=0xff;
}
}
传感器1节点 timer0中断程序
voidtime_0()interrupt1//定时模拟读取温度值
{
staticintj=0;
TL0=(65536-60000)%256;
TH0=(65536-60000)/256;
if(++j>100)
{
j=0;
pretemp=temp;
temp=25+rand()%11;
P0=duan[temp%10];//温度显示
//if(temp-pretemp>=5||pretemp-temp>=5)//温度前后变化大于等于5度,则自动发送
//{
TxBuf[0]=0xA1;
TxBuf[2]=temp;
tf=1;//前去发送
ack_flag=1;//并等待应答信号
TR1=1;//开启延时重发
//}
}
}
传感器2节点 timer0中断程序
voidtime_0()interrupt1//定时模拟读取温度值
{
staticintj=0;
TL0=(65536-60000)%256;
TH0=(65536-60000)/256;
if(++j>100)
{
j=0;
temp=rand()%16;
P0=duan[temp];//温度显示
//检测一次温度,就发送一次
TxBuf[0]=0xA2;
TxBuf[2]=temp;
tf=1;//前去发送
ack_flag=1;//并等待应答信号
TR1=1;//开启重发延时
}
}
6.功能简介
传感器网络系统通常包括传感器节点EndDevice、汇聚节点Router和管理节点Coordinator。
大量传感器节点随机部署在监测区域内部或附近,能够通过自组织方式构成网络。
传感器节点监测的数据沿着其他传感器节点逐跳地进行传输,在传输过程中监测数据可能被多个节点处理,经过多跳后路由到汇聚节点,最后通过互联网或卫星到达管理节点。
用户通过管理节点对传感器网络进行配置和管理,发布监测任务以及收集监测数据。
传感器节点
处理能力、存储能力和通信能力相对较弱,通过小容量电池供电。
从网络功能上看,每个传感器节点除了进行本地信息收集和数据处理外,还要对其他节点转发来的数据进行存储、管理和融合,并与其他节点协作完成一些特定任务。
汇聚节点
汇聚节点的处理能力、存储能力和通信能力相对较强,它是连接传感器网络与Inter
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信科专业综合实践报告中国矿业大学 10 专业 综合 实践 报告 中国 矿业大学