基于NRF24L01的无线信息采集系统设计与实现毕业设计说明书_第1页
基于NRF24L01的无线信息采集系统设计与实现毕业设计说明书_第2页
基于NRF24L01的无线信息采集系统设计与实现毕业设计说明书_第3页
基于NRF24L01的无线信息采集系统设计与实现毕业设计说明书_第4页
基于NRF24L01的无线信息采集系统设计与实现毕业设计说明书_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

广西大学行健文理学院广西大学行健文理学院毕业设计说明书题目:基于nRF24L01的无线信息采集系统设计与实现学部:电气信息学部专业:电气工程及其自动化二〇一三年五月中文摘要温度、湿度、光强度是工业、农业生产中最常见也是最基本的参数,常常需要对其采集来进行监控。利用微型处理器进行温度、湿度、光强度的采集,数据分析以及实时监控等方法来保证生产环境、提高生产效率、确保产品质量。为了提高数据采集移动性,降低检测采集成本,本课题设计了基于nRF24L01无线传输模块为核心的无线信息采集系统。本毕业设计分为采集端和接收端两个部分,采集端包括数据采集、无线发射、液晶显示三个模块;接收端包括无线接收、预警值存储、液晶显示、报警四个模块。本文简要介绍了AT89C52、AT24C02、BH1750、DHT11等芯片,以及nRF24L01无线传输、液晶等模块,并介绍了系统方案的选择。系统的设计包括了硬件和软件的部分设计,还初步介绍了I2C总线。最后,本文还通过实验验证了不同环境下工作的数据采集精度。实验表明,该系统能够完成对环境数据的实时监测,方便人们对外界环境的了解。关键词:无线传输数据采集实时监测数据存储DesignandImplementationofWirelessInformationCollectionSystembasedonNRF24L01AbstractTemperature,humidity,lightintensityisthemostcommonandbasicenvironmentparametersinindustrial,agriculturalproduction,acquisitionoparametersarenecessaryformonitoringandcontrol.Microprocessorcouldbeusedforacquisitionandreal-timedisplay,toensuretheproductionenviroimproveproductionefficiencyandensureproductquality.Inordertoimprovesystemmobility,reducesystemcost,nRF24L01wirelesstransmissionmodulewasadoptedasthewirelessmicroprocessortobuildupawirelessinformationcollectionsysteminthisproject.Thisgraduationprojectcontainedtwoparts:thecollectionpartandthereceiverpart.Thecollectionpartincludedthreemodules:dataacquisitionwirelesstransmitterandLCDdisplaymodule;thereceiverpartconsistedomodules:wirelessreceiver,datastoragemodule,LCDdisplayandkeycontrolmodules.AT89C52,thenRF24L01wirelesstransmissionmodule,AT24C02,BH1750,DHT11andLCDmodulewerebrieflyintroduced,andthendiscussedthechoiceofsystemsolution.Systemdesigncontainshardwareandsoftwaredesign,theI2Cbuswasalsointroduction.Atlast,thisarticleverifiedthedataacquisitionprecisionunderdifferentenvironments.Experimentshowedthatthesystemwasabletocompletereal-timemonitoringofenvironmentaldatatoprovidetheknowledgeofremoteenvironment.Keywords:WirelessTransmissionDataAcquisitionReal-timemonitoringDatastorage目录第一章概述1.1研究背景及意义1.2国内外研究现状1.3研究内容及路线第二章技术基础2.1系统分类2.2方案选择2.2.1主控芯片模块2.2.2数据采集模块2.2.3无线收发模块2.2.4数据显示模块2.2.5数据存储模块2.2.6报警模块2.3最终方案第三章硬件系统设计与实现3.1系统总体框图3.2主控芯片模块3.2.1AT89C52简介3.2.2AT89C52最小系统原理图3.3数据采集模块3.3.1DHT11温湿度传感器3.3.2BH1750光强度传感器3.4无线收发模块3.4.1引脚功能及描述3.4.2工作模式3.4.3工作原理3.5液晶显示模块3.5.1LCD1602管脚介绍3.5.2LCD1602的指令说明及时序3.6数据存储模块3.6.1I2C总线简介3.6.2AT24C02存储芯片3.7报警模块第四章软件系统设计与实现4.1系统软件总体设计4.1.1采集端软件总体设计4.1.2接收端软件总体设计4.2系统各模块软件设计4.2.1采集端数据采集模块软件设计4.2.2采集端无线发射模块软件设计4.2.3采集端显示模块软件设计4.2.4接收无线接收模块软件设计4.2.5接收端数据存储模块软件设计4.2.6接收端报警模块软件设计第五章系统调试及实验结果5.1硬件调试5.1.1电路检查5.1.2电路调试5.2软件调试5.2.1数据采集模块调试5.2.2无线收发模块调试5.2.3存储模块调试5.3实验结果5.3.1测试数据第六章总结6.1结论6.2展望参考文献附录1附录2致谢第一章概述1.1研究背景及意义数据采集技术是现代科学的一个重要分支,它研究信息数据的采集、存储、处理和控制等作业。在智能仪器、信号处理以及工业生产、自动化控制等领域,都存在参数的测定与控制问题,将外部世界存在的温度、湿度、光强度、压力、流量、位移及角度等模拟量转化为数字信号,再传输到计算机进行显示、处理与记录的过程,即称为“数据采集”,相应的系统即为数据采集系统(DataAcquisitionSystem)。由于许多被测对象距离较远或现场危险,只能在远距离的地方进行测量,然后传输出去,这便产生了远程数据采集系统[1]。数据采集的应用是多方面的,可以是普通地区,也可以是危险区域。在生产过程中,应用数据采集系统可对生产现场的各种参数进行采集、监视和记录,是提高产品质量、降低成本、增加生产效率和节省人力的重要手段;另外,数据采集是控制系统实现控制的基本条件,只有准确实时的获取对象的运行数据才能实施有效的控制。在科学研究中,数据采集装置可采集大量的动态与静态信息,是各种研究领域的有力工具,也是破解科学奥秘的重要手段之一[2]。数据采集也广泛应用于设备故障的诊断。故障诊断技术依据设备在运行过程当中伴有的振动、噪声、发热、应变、压力等物理参数的变化,通过一定的方式来判断和识别设备运行的状态和故障,对故障的危害进行早期的预报和识别,防止设备在故障状态下连续运行而造成的设备失效和相应的附加损失,保证设备安全、正常、长周期的、满负荷优质运行[3]。无线的数据采集系统更具有几大优点。其一,综合成本低,只需一次性投资,无须挖沟埋管,特别适合室外距离较远及已装修好的场合;在许多情况下,用户往往由于受到地理环境和工作内容的限制,例如山地、港口和开阔地等特殊地理环境,对有线网络、有线传输的布线工程带来极大的不便,采用有线的施工周期将很长,甚至根本无法实现。这时,采用无线采集可以摆脱线缆的束缚,有安装周期短、维护方便、扩容能力强,迅速收回成本的优点。其二,组网灵活,可扩展性好,可以迅速将新的监控点或采集点加入现有的网络中,不需要为新建传输铺设网络、增加设备,轻而易举实现远程无线采集。其三,成本低,维护方便,可靠性高。近年来,随着无线技术的迅速发展和无线传输技术的不断成熟,加之无线传输的优点,许多领域已经实现了数据采集的无线化,所以无线数据采集技术已经发展成一项重要的应用技术,已经广泛应用与农业、工业、公共交通、科学研究、实时监控、军事等方面,有着不可替代的作用和很好的发展空间。1.2国内外研究现状当今无线传输技术的优势越来越明显了,并且逐步取代了传统的有线传输方式。目前,主流的几种近距离无线通信技术有:蓝牙技术(BluetoothTechnology,)ZigBee(IEEE802.15.4),红外技术(IrDAInfrared),Wi-Fi(IEEE802.11)(WirelessFidelity),RF射频通信。蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHzISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输[4]。Zigbee是IEEE802.15.4协议的代名词,根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。Zigbee,在中国被译为"紫蜂",它与蓝牙相类似是一种新兴的短距离无线技术。IEEE802.15.4规范是一种经济、高效、低数据速率(<250kbps)、工作在2.4GHz和868/928MHz的无线技术,用于个人区域网和对等网络。主要用于近距离无线连接[5]。红外线传输是指利用红外(IR)辐射实现的无线数据传输方式。所谓红外线是指波长超过红色可见光的电磁辐射。红外线通讯是一种廉价、近距离、无线、低功耗、错误率低,抗干扰性强,保密性强的通讯方式[6]。Wi—Fi全称WirelessFidelity,又称802.11b标准,它的最大优点就是传输速度较高,可以达到11Mbps,另外它的有效距离也很长,同时也与已有的各种802.11DSSS设备兼容。IEEE([美国]电子和电气工程师协会)802.11b无线网络规范是IEEE802.11网络规范的变种,最高带宽为11Mbps,在信号较弱或有干扰的情况下,带宽可调整为5.5Mbps、2Mbps和1Mbps,带宽的自动调整,有效地保障了网络的稳定性和可靠性。其主要特性为:速度快,可靠性高,在开放性区域,通讯距离可达305米,在封闭性区域,通讯距离为76米到122米,方便与现有的有线以太网络整合,组网的成本更低[7]。射频RadioFrequency,简称RF射频就是射频电流。它是一种高频交流变化电磁波的简称。每秒变化小于1000的交流电称为低频电流,大于10000次的称为高频电流,而射频就是这样一种高频电流。无线射频技术是在家庭区域范围内的任何地方,在电脑和用户电子设备之间实现无线数字通信的开放性工业标准。作为无线技术方案,它省却了铺设传输连接线的麻烦,而且升级和增加新的设备非常方便。基于此协议的网络是对等网,网上的每一个设备都是相对独立的,任何一个设备离开网络都不会影响到网络上其他设备的正常工作。它的另外一个特点是低功耗[8]。RFRF发出的无线电波或微波可以穿透某些障碍物,不局限于视线的范围。目前,射频采用的就是无线传输技术,它将无线电信号扩展到一个很宽的频带上,以达到高速数据传输和减少相互干扰的目的,在无线通信领域具有广泛的、不可替代的作用。无线射频技术主要应用于射频识别系统(RFID)的研究和开发,与传统条形码、二维条形码、蓝牙技术的相比具有自己的特殊优势。1.3研究内容及路线本系统主要研究的内容有如何进行温度、湿度、光强度的数据采集,采集处理完毕后,用什么显示器显示,如何进行准确有效的无线传输,接收数据后如何处理数据,如何实现实现报警等。其研究路线框图如图1-1所示。图1-1研究线路框图本系统设计采用了Nordic公司推出的工作于GHz2.4频段nRF24L01射频芯片,并用低功耗的AT89C52做为主控芯片,实现短距离无线数据传输。整个系统有采集端和接收端两部分组成。采集端以AT89C52为核心,使用BH1750进基于nRF24L01的无线信息采集系统硬件软件模块设计模块调试系统总体调试软件总体设计模块软件设计模块软件调试系统软件调试行光强度采集,行光强度采集,DHT11传感器进行温湿度采集,将采集来的数据进行处理并显示在采集端LCD显示屏,由nRF24L01模块进行数据发射。接收端同样以AT89C52为主控芯片,nRF24L01模块接收数据之后,将数据处理并显示在接收端LCD显示屏,同时通过按键可以对温度、湿度、光强度的上线进行设定,并将设定值存储在AT24C02芯片中,确保掉电不丢失,数据比对后实现报警功能。

片,描点画线,设计成比较理想的结果。片,描点画线,设计成比较理想的结果。方案二:采用字符液晶LCD1602显示信息,1602是一款比较通用的字符液晶模块,能显示字符和数字等信息,且价格便宜,容易控制。方案三:采用数码管来显示信息,数码管价格便宜,数码管由于显示速度快,使用简单,显示效果简洁明了而得到了广泛应用。但是显示内容有限,如果要显示多信息,则可能造成电路布线繁杂。综合以上方案,我选择了方案二。2.2.5数据存储模块采用AT24C02做为数据存储芯片,AT24C02与单片机的接口非常简单,符合I2C总线协议,可按照字节写,自动递增地址,具有高可靠性,擦写寿命达到100万次,数据保持时间达100年,体积小,接口方便,数据掉电不丢失。AT24C02芯片是我们比较常用的芯片,所以选用该芯片。AT24C02芯片配合外设按键,对应液晶显示,选定不同类别的数值进行存储。从而实现对预警值的设定。2.2.6报警模块方案一:选用蜂鸣器,蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,价格便宜,驱动电路简单。方案二:选用喇叭,喇叭声音大,但是体积较大。考虑到电路板的大小,我选择了方案一。2.3最终方案经过选择论证,采用AT89C52作为系统主控芯片,nRF24L01模块用于无线收发数据,用DHT11采集温湿度数据,BH1750采集光强度数据,LCD1602显示数据,AT24C02用于存储数据,蜂鸣器用于报警。第三章第三章硬件系统设计与实现3.1系统总体框图系统总体框图如图3-1所示图3-1系统总体框图在系统总体框图中,数据采集端主要是由DHT11温湿传感器和BH1750光强度传感器组成,采集数据后给采集端MCU进行数据处理,处理完毕后控制LCD1602进行显示并且经由nRF24L01无线模块进行发射。无线接收模块接收到数据后,由接收端MCU进行数据处理,LCD1602显示,通过外围电路按键进行温度、湿度、光强度预警值的设置,数据处理完毕后,接收端MCU读取AT24C02中设的预警值与实际值进行比较判断,从而达到报警的目的。3.2主控芯片模块52AT89C3.2.1简介AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kBytes的可反复擦写的Flash只读程序存储器和256Bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。按功能划分AT89C52由中央处理器(CPU),kBytesFlash8片内程序存储器,Bytes256的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,数据采集端无线发射模块处理端MCU数据存储模块报警模块显示模块显示模块采集端MCU无线接收模块55个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内特殊功能寄存器(SFR),看门狗(WDT)电路,片内时钟振荡器[11]。引脚如图3-2所示,以下是主要引脚的说明。图3-2PDIP封装的AT89C52引脚图VCC:电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反向放大器输入端。XTAL2:系统时钟的反向放大器输出端。RESET:复位信号输入端。单片机运行时,在此端口上加上持续时间为2个机器周期(24个时钟周期)的高电平时,系统完成复位操作。单片机复位能解决单片机内部寄存器的初始化以及单片机出现程序“跑飞”的现象。ALE/PROG:ALE为地址锁存允许信号,当单片机上电正常工作后,ALE引脚输出正脉冲信号。如果要访问外部存储器时,ALE输出负跳变作为低8位地址锁存信号。PROG是该引脚的第二功能。在对片内EPROM型单片机编程时,此引脚作为编程脉冲输入端。EA:EA为内外部程序存储器选择控制端。当EA端为高时单片机访问内部程序存储器,在PC值超过0X1FFFH时,单片机将自动转向执行外部程序存储器内的程序。当EA端为低电平时单片机只访问外部程序存储器。PSEN:PSEN为程序存储器允许输出控制端。在单片机访问外部程序存储器是,此引脚输出负脉冲作为读外部程序存储器的选通信号。PORT0(P0.0―P0.7):端口0是一个8位宽的漏极开路双向输出入端口。除了作为普通并行I/O口外,还可作为低8位数据总线和地址总线时分复用端口。PO口是漏极开路,当作为普通I/0口时必须接上拉电阻。接上拉电阻后最多可驱动驱动8个LSTTL负载。PORT1(P1.0―P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LSTTL负载,若将端口1的输出设为高电平,使是由此端口来输入数据。PORT2(P2.0―P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89C52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8―A15,这个时候P2便不能当做I/O来使用了。PORT3(P3.0―P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD串行通信输入。P3.1:TXD串行通信输出。P3.2:INT0外部中断0输入。P3.3:INT1外部中断1输入。P3.4:T0计时计数器0输入。P3.5:T1计时计数器1输入。P3.6:WR外部数据存储器的写入信号。P3.7:RD外部数据存储器的读取信号。3.2.2AT89C52最小系统原理图AT89C52最小系统图如图3-3所示。图3-3单片最小系统图图3-3中时钟电路用于产生AT89C52单片机工作时所必需的时钟信号。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。这里我们选用11.0592M的晶振,由于当晶体振荡器振荡频率在1M到12M之间取值时,两个微调电容的典型取值通常选择在22pF左右。单片机的复位需要至少2个机器周期的高电平,复位电路必须确保系统上电时能够自动复位,在必要时还可以手动复位。系统上电上电时,C3两端的电压为零,在上电的瞬间我们可以看做一个交流信号穿过电容C3,使得电容C3负端的电压为高,单片机复位,经过4—5个τ后,C3两端的电压约为零。按键复位时,按键S0按下后,单片机的复位端的电平为高电平,单片机复位,在按键松开时,经过4—5个τ后,单片机复位端的电平为低电平,单片机退出复位状态。3.3数据采集模块3.3.1DHT11温湿度传感器本系统的温湿度数据由DHT11温湿度传感器采集,DHT11是一种含有已校准的数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为给类应用甚至最为苛刻的应用场合的最佳选择[12]。产品为4针单排引脚封装,连接方便。DHT11温湿度传感器与单片机连接图如图3-4所示。图3-4DHT11温湿度传感器与单片机连接图DHT11中的数据总线DATA用于MCU微控制单元与DHT11之间的同步与通讯,它采用的是单总线的数据格式,一次通讯的时间大约为4ms左右,数据由整数部分和小数部分组成,它一次完整的数据传输为40bit,高位传输在前。数据格式如:8Bit湿度整数数据+8Bit湿度小数数据+8Bit温度整数数据+8Bit温度小数数据+8Bit校验和。当最后一位校验和与8Bit湿度整数数据+8Bit湿度小数数据+8Bit温度整数数据+8Bit温度小数数据的和相等时,表示数据传输是正确的。3.3.2BH1750光强度传感器光强传感器模块采用BH1750芯片组成。BH1750是半导体制造商ROHM为适应以移动电话手机为首的便携式及其和液晶电视等的要求而开发的具有优良光谱灵敏度特性,16Bit串行输出的数字环境亮度传感器。芯片工作电压为3.3V,内置16BitAD转换器,可对广泛的亮度进行1勒克斯的高精度测定,可实现照明度数字值的直接输出。BH1750光强度传感器与单片机连接图如图3-5所示。图3-5BH1750光强度传感器与单片机连接图BH1750与主控器之间的通讯使用标准的I2C通讯协议。I2C总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。主控器通过I2C接口向BH1750发送各种控制命令以及读取测量数据。(1)主控器向BH1750发送控制命令步骤:①主控器产生通讯启动信号;②主控器发送8Bit的地址数据(其中地址的最后一位应为0,表示写命令);③主控器读取BH1750的应答信号;④主控器发送8Bit的命令数据;⑤主控器读取应答;⑥主控器产生停止信号。(2)主控器从BH1750读取数据步骤:①主控器产生通讯启动信号;②主控器发送8Bit的地址数据(其中地址的最后一位应为1,表示读命令);③主控器读取应答;④主控器读取高8位数据;⑤主控器产生应答信号;⑥主控器读取低8位数据;⑦主控器产生应答信号;⑧主控器产生停止信号。3.4无线收发模块nRF24L01是NORDIC公司生产的一款无线通信通信芯片,采用FSK调制,内部集成NORDIC自己的EnhancedShortBurst协议。无线通信速度可以达到2M(Bps)。NORDIC公司提供通信模块的GERBER文件,可以直接加工生产。嵌入式工程师或是单片机爱好者只需要为单片机系统预留5个GPIO,1个

3.53.5液晶显示模块工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个75X或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16x02,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。3.5.1LCD1602管脚介绍1602液晶显示屏与单片机连接图如图3-7所示。图3-7LCD1602管脚图1602采用标准的16脚接口,其中:1脚:接电源地。2脚:接5V电源正极。3脚:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,当对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

指令码指令码读数据输入RS=H,R/W=H,E=H输出D0—D7=数据液晶读写操时序如图3-8,3-9所示。图3-8液晶读操作时序图3-9液晶写操作时序3.6数据存储模块该模块存储芯片AT24C02配合外设按键,轻松的对3个数据的预警值进行存储。AT24C02支持总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。3.6.13.6.1I2C总线简介I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C总线只有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL。(1)I2C总线数据传送I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。数据变化时序如图3-10所示。图3-10数据位有效性时序图SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。如图3-11所示。图3-11起始和终止信号起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。字节传送和应答过程中,每一个字节必须保证是8位长度。数据传送时,先传送最高位,每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。如图3-12所示。图3-12字节传送与应答时序当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线,以允许主机产生终止信号。(2)总线数据传送的模拟主机可以采用不带I2C总线接口的单片机,如80C51、AT89C51等单片机,利用软件实现I2C总线的数据传送,即软件与硬件结合的信号模拟。为了保证数据传送的可靠性,标准的I2C总线的数据传送有严格的时序要求。I2C总线的起始信号、终止信号、发送“0”及发送“1”的模拟时序。如图3-13所示。图3-13单片机模拟I2C总线时序023.6.2AT24C存储芯片(1)AT24C02管脚介绍AT24C02是一个2k位串行CMOSE2PROM,内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个16字节页写缓冲器。该器件通过I2C总线接口进行操作,有一个专门的写保护功能。AT24C02与单片机连接图如图3-14所示。图AT24C023-14与单片机连接图管脚描述如表3-6所示表3-6AT24C02管脚描述管脚名称功能

S1S1键为液晶屏幕切换按键,按下后进入报警值设定界面。S2键为选择数据类别按键,按下后液晶光标加1。S3键为选择数据类别按键,按下后液晶光标减1。S4键为数据设定按键,按下后所选值加1。S5键为数据设定按键,按下后所选值减1。S6键为数据确认按键,按下后保存所有数值,并返回数据显示界面。图3-15按键电路与单片机连接图3.7报警模块报警模块与单片机连接图如图3-16所示。图3-16报警模块原理图如图所示3个不同颜色的LED灯分别对应温度、湿度、光强度,蜂鸣器在接收端CPU读取AT24C02中的设定的预警值比较后进行判断,报警时蜂鸣器响,对应的LED灯亮。这样就能准确的确认是哪个值超出了预警值。第四章第四章软件系统设计与实现4.1系统软件总体设计本系统分为采集端和接收端两个部分,采集端发送数据,接收端接收。两部分硬件上独立存在,软件上耦合度低。以下是各部分软件设计介绍。4.1.1采集端软件总体设计采集端软件总体流程图如图4-1所示。图4-1采集端总体流程图采集端软件是一个循环程序。首先初始化nRF24L01无线发送模块,液晶模块,而后初始化I2C总线,设置总线器件ID,再初始化BH1750光强度模块,释放I2C总线后,初始化部分完成。程序的循环部分是数据读取发射部分。如图4-1所示。MCU读取BH1750光强度数据后,再读取DHT11温湿度数据,判断温湿开始nRF24L01初始化液晶初始化I2C总线初始化设置BH1750器件地址初始化BH1750设置发射模式读取BH1750数据读取DHT11数据判断数据校验和是否正确显示数据数据发送YN度校验和数据是否正确后,将处理好的温湿度、光强数据显示在度校验和数据是否正确后,将处理好的温湿度、光强数据显示在LCD1602液晶上面,最后发送出去。发送完毕后继续循环。每一个循环大约耗时200ms左右,也就是说大约200ms采集端将发送一次数据。4.1.2接收端软件总体设计接收端软件总体流程图如图4-2图4-2接收端软件总体流程图接收端也是一个循环程序。在初始化nRF24L01无线模块,液晶,I2C总线后进入循环。设置nRF24L01无线模块为接收模式,然后去读取接收到的数据,数据处理完毕之后显示在液晶上边,与此同时,MCU会读取AT24C02里面存储的预警值,温度、湿度、光强度均与预警值比较。预警值可以通过按键进行设置,如启动系统后没有设置,MCU将自己读取原AT24C02里面的值。比较后,如超出预警值,蜂鸣器响,对应颜色的LED灯亮,直到MCU接收的值没有超出预警值,那么,蜂鸣器自动关闭,LED灯自动熄灭。如果没有超出预警值,程序也将继续循环下去。NRF24L01初始化液晶初始化I2C总线初始化设置无线模块为接收模式数据处理液晶显示开始读取C2402值按键设置初值比较是否超出预警值报警YN4.24.2系统各模块软件设计系统分为采集端和接收端,下面将分别介绍两部分的子程序设计。4.2.1采集端数据采集模块软件设计(1)温湿度数据采集DHT11是一款含有已校准数字信号输出的温室复合传感器,单线制串行接口。在对DHT11操作时,要求非常严格的时序。DHT11发送数据时,每一bit数据都以50us低电平时隙开始高电平的长短决定了数据位是“0”还是“1”。一般的高电平在26us-28us之间表示数据“0”,高电平在70us左右表示数据“1”。其操作流程图如图4-3所示。开始系统初始化发起始信号等待DHT响应判断高电平时间连续读取5Byte数据判断校验和是否正确数据清除YN图4-3温湿度数据读取子流程图流程图中主机MCU先像DHT11发送起始信号,DHT11响应之后,开始传送数据,每Bit1是由数据总线高电平时间决定,每次可以读取8Bit数据,连续读取5Byte数据之后。判断校验和是否正确。即末尾的1Byte数据是否是前4Byte数据之和。如果是那么读取成功数据正确,将以数组形式输出。如果不是,将放弃该组数据。(2)光强度数据采集BH1750与主控器之间的通讯使用标准的I2C通讯协议。程序流程图如图4-4所示。开始I2C总线初始化设置器件地址释放I2C总线发送设备起始命令连续读取2Byte数据发送设备停止命令结束图4-4读取BH1750数据子流程图BH1750光强度数据采集模块与I2C总线协议完全兼容,所以利用I2C总线对其进行读写。在总线初始化完成后,对设备发送起始命令,读取2Byte数据,即高8位和低8位。数据范围为1-65535。所以BH1750光强度模块对光强度的测量范围为1-65535lx。读取完成后,关闭设备,并讲I2C总线释放。读取的光强度数据后需要经过计算,减少误差。4.2.2采集端无线发射模块软件设计采集端无线发射部分软件的一个循环程序。配置nRF24L01无线模块为点对点发射模式。程序主体是将循环采集温度、湿度、光强度数据经MCU处理后,发送出去。其采集端无线发射模块程序子流程图如图4-5所示。图4-5无线发射子程序流程图配置发射模式中,本系统配置使用接收通道0地址和发送地址相同,使能通开始等待数据采集完毕判断校验和是否正确配置发射模式数据发射YN等待应答NY发送完毕道道0之后等待延时自动重发10次,选择频射通道40,配置数据传输率为1Mbps,16位CRC校验。其发射模式初始化过程如表4-1所示。表4-1nRF24L01发射初始化步骤初始化步骤L0124相关寄存器1)写Tx节点的地址TX_ADD2)写Rx节点的地址(主要是为了使能ATUOACK)RX_ADDR_P03)使能ATUOACKEN_AA4)使能PIPE0EN_RXADDR5)配置自动重发次数SETUP_RETR6)选择通信频率RF_CH7)配置发射参数(低噪放大器增益、发射功率、无线速率)RF_SETUP8)选择信道0有效数据宽度Rx_Pw_P09)配置NRF24L01的基本参数以及切换工作模式CONFIG4.2.3采集端显示模块软件设计显示模块流程图如图4-6所示图图1602LCD4-6显示子程序流程图流程图中的初始化主要是对LCD1602进行设置,如设置显示为2行,每行显示16个字符,每个字符为5*7的点阵,每个字符用8位数表示,设置显示开,不显示光标等等。设置显示第一行主要是将LCD内部显示地址指向第一行的第几个字符,即光标在第一行第几个字符。写数据主要是将你要写的数据送给LCD1602。设置显示第二行主要是将LCD内部显示地址指向第二行的第几个字符,即光标在第二行第几个字符。这都是对LCD进行写命令操作实现的。4.2.4接收无线接收模块软件设计接收端无线接收模块总体思路是在系统初始化完毕后,配置nRF24L01无线模块为接收模式,寄存器的配置主要包括:写数据到FIFO,使能接收通道0自动应答,选择频射通道,设置数据传输速率,使能CRC校验等等。nRF24L01所有配置工作都是通过SPI完成,共有30字节的配置字。本系统使nRF24L01工作于EnhancedShockBurstTM收发模式,在这种工作模式下,系统的程序编制会更加简单并且稳定性也会更高。配置寄存器如表4-2所示。表4-2配置寄存器表地址(H)寄存器名称功能00CONFIG设置24L01工作模式01EN_AA设置接收通道及自动应答开始液晶初始化显示字符有效数据处理第一行温湿度数据第二行光强度数据结束0202EN_RXADDR使能接收通道地址03SETUP_AW设置地址宽度04SETUP_RETR设置自动重发数据时间和次数07STATUS状态寄存器,用来判定工作状态0A~0FRX_ADDR_P0~P5设置接收通道地址10TX_ADDR设置接收接点地址11~16RX_PW_P0~P5设置接收通道的有效数据宽度接收端无线接收模块程序流程图如图4-7所示。图4-7无线接收模块程序流程图配置无线模块接收模式初始化过程,如表4-3所示。表4-3配置无线模块接收模式步骤初始化步骤24L01相关寄存器开始配置寄存器启动接收是否检测到信号存入RX_FIFO进入待机模式结束YN11)写Rx节点的地址RX_ADDR_P02)使能ATUOACKEN_AA3)使能PIPE0EN_RXADDR4)选择通信频率RF_CH5)选择信道0有效数据宽度Rx_Pw_P06)配置发射参数(低噪放大器增益、发射功率、无线速率)RF_SETUP7)配置nRF24L01的基本参数以及切换工作模式CONFIG4.2.5接收端数据存储模块软件设计该模块由AT24C02与外设按键搭配,配合液晶显示共同完成。模块程序流程图如图4-10所示。图4-10数据存储模块程序流程图开始实时显示KEY1是否按下切屏且停止接收显示光标判断哪个按键按下KEY212KEY3KEY4KEY5KEY6光标加1光标减1数值加1数值减1保存数据开启数据接收NY如图如图4-10所示,接收端数据接收处理之后,液晶实时显示。当按键1按下的时候,停止nRF24L01数据接收,切换屏幕,显示读取AT24C02中的值,显示光标并且闪烁。在该状态下,如果按下按键2,光标加1;按下按键3光标减1;按下按键4,光标对应的数值加1;按下按键5,光标对应的数值减1;按下按键6,保存3个数值的数据,并且配置开启数据接收,切屏液晶实时显示。4.2.6接收端报警模块软件设计该模块由3个不用颜色的LED灯及蜂鸣器组成。当接收到数据之后,读取AT24C02中的数据,分别比较。如果某一数据超出预警值,那么对应的LED灯亮,蜂鸣器响。程序流程图如图4-11所示。图4-11报警模块程序流程图开始接收数据液晶显示读取AT24C02温度湿度光强度是否超出预警是否超出预警是否超出预警绿LED白LED红LED蜂鸣器响YYY结束NN

[17][17]夏晴,郑伟建等.基于ARM的远程数据采集系.扬州大学信息工程学院.2007[18]陈永甫.电子电路智能化设计实例与应用.北京:电子工业出版社.2002.7-8[19]谭浩强.C程序设计.北京:清华大学出版社.1999.201-255[20]孙利民,李建中,陈渝等.无线传感器网络.北京:清华大学出版社.2005.78-91附录1采集端系统原理图接收端电路原理图附录2采集端系统部分程序#include"StdC52.h"#defineDATA_SIZE6staticUCHARm_BH1750RxBuff[DATA_SIZE];staticUCHARm_DHT11RxBuff[DATA_SIZE];staticUCHARm_TxBuff[DATA_SIZE];staticvoidLCD_Display_Init(void){C52LCDGET()->LCD_Display_String(1,0,"RH:");//湿度C52LCDGET()->LCD_Display_String(1,5,"%");C52LCDGET()->LCD_Display_String(1,7,"TEMP:");//温度C52LCDGET()->LCD_Display_Single(1,0X0E,0XDF-0x30);C52LCDGET()->LCD_Display_Single(1,0X0F,0X43-0x30);C52LCDGET()->LCD_Display_String(2,0,"LIGHT:");//光强C52LCDGET()->LCD_Display_String(2,0X0B,"Lx");//光强}staticvoidNRF_SendSystemData(UCHAR*pUersBuf){staticUCHARl_uCount=NULL;switch(l_uCount){case0X00:pUersBuf[l_uCount]=m_DHT11RxBuff[l_uCount];l_uCount++;break;case0X01:pUersBuf[l_uCount]=m_DHT11RxBuff[l_uCount];l_uCount++;break;case0X02:pUersBuf[l_uCount]=m_DHT11RxBuff[l_uCount];l_uCount++;break;case0X03:pUersBuf[l_uCount]=m_DHT11RxBuff[l_uCount];l_uCount++;break;case0X04:pUersBuf[l_uCount]=m_BH1750RxBuff[0];//0l_uCount++;break;case0X05:pUersBuf[l_uCount]=m_BH1750RxBuff[1];//1break;default:l_uCount=NULL;break;}C52NRFGET()->NRF_SetTxMode(pUersBuf);//发送while(NRF_CheckACK());//检测是否发送完毕C52LCDGET()->LCD_Display_String(2,0X0E,"Tx");}staticvoidBH1750_MODE(void){UINTTempData;UINTCalData;C52IICGET()->IIC_Write_BH1750(0x01);//打开BH1750C52IICGET()->IIC_Write_BH1750(0x10);DelayMs(180);C52IICGET()->IIC_read_BH1750(m_BH1750RxBuff,2);CalData=(m_BH1750RxBuff[0]<<8)+m_BH1750RxBuff[1];TempData=(float)CalData/1.2;C52LCDGET()->LCD_Display_Single(2,6,TempData/10000);C52LCDGET()->LCD_Display_Single(2,7,TempData%10000/1000);C52LCDGET()->LCD_Display_Single(2,8,TempData%1000/100);C52LCDGET()->LCD_Display_Single(2,9,TempData%100/10);C52LCDGET()->LCD_Display_Single(2,0X0A,TempData%10);}staticvoidDHT11_MODE(void){{if(DHT_ReadData(m_DHT11RxBuff,5)){C52LCDGET()->LCD_Display_Single(1,3,m_DHT11RxBuff[0]/10);C52LCDGET()->LCD_Display_Single(1,4,m_DHT11RxBuff[0]%10);C52LCDGET()->LCD_Display_Single(1,0X0C,m_DHT11RxBuff[2]/10);C52LCDGET()->LCD_Display_Single(1,0X0D,m_DHT11RxBuff[2]%10);}}intmain(void){C52NRFGET()->NRF_Init();C52LCDGET()->LCD_Init();//液晶初始化LCD_Display_Init();C52IICGET()->C52IIC_Init();//IIC初始化C52IICGET()->C52IIC_SetID(0X46);//设置器件IDC52IICGET()->C52IIC_Free(TRUE);//释放IIC总线C52IICGET()->BH1750_Init();//初始化BH1750while(TRUE){DHT11_MODE();BH1750_MODE();NRF_SendSystemData(m_TxBuff);}}接收端系统部分程序#include"StdC52.h"#defineDATA_SIZE6staticUCHARm_BH1750RxBuff[DATA_SIZE];staticUCHARm_DHT11RxBuff[DATA_SIZE];staticUCHARm_RxBuff[DATA_SIZE];staticvoidLCD_Display_Init(void){C52LCDGET()->LCD_Display_String(1,0,"RH:");//湿度C52LCDGET()->LCD_Display_String(1,5,"%");C52LCDGET()->LCD_Display_String(1,7,"TEMP:");//温度C52LCDGET()->LCD_Display_Single(1,0X0E,0XDF-0x30);C52LCDGET()->LCD_Display_Single(1,0X0F,0X43-0x30);C52LCDGET()->LCD_Display_String(2,0,"LIGHT:");//光强C52LCDGET()->LCD_Display_String(2,0X0B,"Lx");//光强单位}staticvoidNRF_RecvSystemData(UCHAR*pUersBuf){staticUCHARl_uCount=NULL;if(C52NRFGET()->NRF_RevDate(pUersBuf))//读取接受到的数据{switch(l_uCount){case0X00:m_DHT11RxBuff[l_uCount]=pUersBuf[l_uCount];l_uCount++;break;case0X01:m_DHT11RxBuff[l_uCount]=pUersBuf[l_uCount];l_uCount++;break;case0X02:m_DHT11RxBuff[l_uCount]=pUersBuf[l_uCount];l_uCount++;break;case0X03:m_DHT11RxBuff[l_uCount]=pUersBuf[l_uCount];l_uCount++;break;case0X04:m_BH1750RxBuff[0]=pUersBuf[l_uCount];//0l_uCount++;break;case0X05:m_BH1750RxBuff[1]=pUersBuf[l_uCount];//1l_uCount=NULL;break;default:l_uCount=NULL;break;}C52LCDGET()->LCD_Display_String(2,0X0E,"Rx");//接受成功C52LEDGET()->TP_Waring();C52LEDGET()->RH_Waring();C52LEDGET()->LX_Waring();}else{C52LEDGET()->Close_Waring();}}staticvoidLCD_Display_MODE(void){UINTTempData;UINTCalData;CalData=(m_BH1750RxBuff[0]<<8)+m_BH1750RxBuff[1];TempData=(float)CalData/1.2;C52LCDGET()->LCD_Display_Single(2,6,TempData/10000);C52LCDGET()->LCD_Display_Single(2,7,TempData%10000/1000);C52LCDGET()->LCD_Display_Single(2,8,TempData%1000/100);C52LCDGET()->LCD_Display_Single(2,9,TempData%100/10);C52LCDGET()->LCD_Display_Single(2,0X0A,TempData%10);C52LCDGET()->LCD_Display_Single(1,3,m_DHT11RxBuff[0]/10);C52LCDGET()->LCD_Display_Single(1,4,m_DHT11RxBuff[0]%10);C52LCDGET()->LCD_Display_Single(1,0X0C,m_DHT11RxBuff[2]/10);C52LCDGET()->LCD_Display_Single(1,0X0D,m_DHT11RxBuff[2]%10);}intmain(void){C52NRFGET()->NRF_Init();C52LCDGET()->LCD_Init();//液晶初始化LCD_Display_Init();C52IICGET()->C52IIC_Init();//IIC初始化C52IICGET()->C52IIC_SetID(0XA0);//设置器件IDC52IICGET()->C52IIC_SetRate(3);C52IICGET()->C52IIC_Free(TRUE);//释放IIC总线while(TRUE){NRF_RecvSystemData(m_RxBuff);LCD_Display_MODE();Key_Mode();}}致谢四年充实的大学生活转眼就要结束了,我马上就要离开美丽的校园,踏入社会。在此,在这个特殊的时刻,我要向所有支持和帮助过我的人表达我深深的谢意。首先要感谢我的指导老师——李修华老师。在毕业设计制作过程中,从题目选取,系统的设计,毕设的制作调试,论文的编写等都得到了李修华老师的悉心、耐心的指导。李修华老师十分关心、理解学生,根据不同情况做不同的安排。不论什么时候,只要我有问题,李修华老师都能认真、负责、耐心的讲解指导。在我的毕业设计制作过程中,经过李修华老师细心点拨,使我能很快的确定设计方案,通过软硬件调试,毕业设计才得以短期内迅速的完成;在论文编写过程中,同样受益于李修华老师细心、耐心的督促和指导。从她那里我不仅学习了到许多知识,更在潜移默化中培养了我的思考能力,分析能力,解决问题的能力。同时,感谢以前参加比赛时的指导老师——唐琳老师,为我提供实验设备,实验环境;为了耐心解答单片机设计中的问题。还要感谢和我一起做毕业设计的同学,感谢他们在我完成毕业设计过程中给予的帮助。最后,向在学习、生活中帮助过我的老师、同学表示衷心的感谢。毕业设计(论文)原创性声明和使用授权说明毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日期:学位论文原创性声明学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日

评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论