无线温湿度检测仪实习报告

更新时间:2024-06-10 14:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

桂林理工大学信息科学与工程学院 “电子系统设计创新与实践”

课程设计(实习)报告

题目:基于单片机的无线温湿度测量仪设计

专业(方向):电子信息工程 班 级:电信12-1 学 生: 学 号: 指导教师:

2015年7月9日

1

基于单片机的无线温湿度测量仪设计

摘要

温湿度在人们的日常生活中起着非常重要的作用,人们不但关注日常环境温湿度的变化,在许多领域的产业化,如工业、医疗、军事和生活等许多地方,都需要用到测设备来检测温湿度。传统直接布线测量电路很复杂,容易受干扰,准确性也不高,不满足某些环境非常恶劣的工业环境和某些户外环境。因此,选择一个性能不错的数字温湿度传感器和无线传输模块,简单的使用显得尤为重要。在现代的工业控制,考虑到功耗问题也是一个重要的参数,该系统采用低耗高性微型控制器STC89C52RC和DHT11温湿度传感,采用nRF24L01无线模块对温度进行短距离监控。

本次设计采用的STC89C52RC简单实用,与MCS-51操作相同。无线数据通信收发芯片NRF24L01是一款工作在2.4?2.5GHz功率消耗非常低的低成本无线收发器。另外温度传感器DHT11具有体积小,成本低,精度高等优点。

该系统功耗低,成本低,硬件电路简单,是一种可行的无线测温的设计方案。

关键词:NRF24L01;温湿度传感器DHT11;STC89C52RC

第一章 绪论

1.1 课题的背景与意义

2

在当今现代的生活中,通过无线通信来采集温湿度已经越来越普遍了。并且随着工农业的生产对温湿度的要求越来越高,精准的测量温湿度变得十分重要。温湿度它不能像质量和长度那样简单地获取量值,只有通过其他相关性质间接地测量。现在温湿度测量是可以通过温湿度传感器来测量的,温湿度测量的过程简单来说就是通过传感器把温湿度值转换为电信号或者其他信号,经过相关处理,从而转换成温湿度显示出来。温湿度测量设备一般有温湿度传感器和信号处理电路组成。某些情况下,需要监测的范围很大,布线不方便且不利于后期维护,这时我们就采用无线模块对温湿度进行采集。

无线温湿度测量系统被大量的应用于温湿度测量各个领域的工程中,例如:城市医院的温湿度检测系统、居民小区供热系统的检测、蔬菜大棚的温湿度控制、工业生产的温湿度保护等。考虑到许多工农业环境中有对多点温湿度进行监控的需求,一般需要测量可能有几十个点以上。现在本文就设计一路无线温度监控的系统以作参考。

1.2国内外研究状况及相关领域中已有的研究成果

在2.4GHz的频段上已经有多种标准的无线协议,它们传输距离远,抗干扰性强。因此我们要确保在2.4GH频段上有足够的抗干扰性和保持数据的连续性。

nRF24L01 由于ANT协议的缘故可以方便搭建无线网络。ANT的无线个人局域网通讯技术使数据保持了完整性,并具有低

3

耗低成本的优点。 nRF24L01是一款采用FSK调制的无线通信芯片,它可以点对点以及1对n的高速通信。MCU只需要给nRF24L01无线模块提供5个普通引脚和一个中断引脚就可以实现通信功能。所以MCU系统搭建无线通信功能利用nRF24L01就显得十分简单。

随着电子技术的发展,温度传感器的精度越来越高,抗干扰性越来越好,体积越来越小。 1.3设计任务的要求及分析

基本要求:设计一个无线温湿度数据传输温湿度测量仪,基本功能为:

(1) 由温湿度测量与无线发送装置和无线接收与显示装

置组成。

(2) 温度测量分为:室温~50℃;湿度测量范围:20%~90%; (3) 测量仪表利用LCD显示温度和湿度,并具有无线数

据传输功能,传输距离不小于10米;

(4) 无线接收模块接收测量模块的测量数据,利用LCD

显示温度和湿度

本次系统的设计采用nRF24L01无线通信模块,并以STC89C52RC为核心来控制实现短距离无线温湿度传输。该系统设计具有成本低,传输快,软件设计简单,功耗低,可靠性高等优点。整个设计的主机和从机通NRF24L01无线模块连接通信。从机以单片机STC89C52为核心,通过无线模块NRF24L01把温湿

4

度传感器采集的温度传送给主机,主机通过无线模块NRF24L01接收温度数据,然后再在液晶LCD1602上面显示,从而达到监控的目的。

1.4 预 期 结 果

从机把温湿度传感器上接受的温湿度数据通过无线模块在5m的范围内上能发送给主机,主机通过无线模块接收后在LCD1602液晶显示屏上显示,从而达到监测各点温湿度的目的.软件模块包括无线发射模块、无线接收模块、显示模块和温湿度检测模块。

第二章 总体方案设计的论证

2.1 系统方案设计 从机:

发射端由STC89C52RC单片机,nRF24L01无线模块,DHT11温湿度模块组成。

DHT11温湿度模块

STC89c52 NRF24L01

主机:

发送端由STC89C52RC单片机,LCD1602显示模块,nRF24L01无线模块组成。

5

图2-2

2.2 模块方案设计 2.2.1 主控芯片方案

方案一:采用STC89C52RC实现。单片机软件编程可简单地实现多数功能,自由度大,结构清晰,便于调试和维护,可读性和移植性强。并且具有体积小,硬件搭建简单等优点。本系统由一台主机,一台从机组成温湿度测量进行温湿度数据采集。另外STC89C52RC的应用已经十分广泛,相关技术的使用都很熟练,开发难度很小。

方案二:采用MSP430F149单片机。此单片机功耗低,内部集成高速12位ADC,性能强大。但本设计简单,不需要MSP430F149如此功能强大的单片机,并且MSP430F149成本高,是TPFQ贴片封装,必须采用PCB制板,增加了开发周期。

综合考虑我们选择STC89C52RC作为本系统的MCU。 2.2.2 无线通信模块方案

6

方案一:采用GSM通信模块,GSM借助卫星通信或者手机卡可以较长距离的传输数据,但由通信过程需要收费,前后期成本都比较高。

方案二:采用TI CC2430通信模块,虽然改模块通信速度快,但成本高,操作复杂。

方案三:使用NRF24L01通信模块,该模块具有有高速低耗体积小的优点。他可以传输数千公里(PA),但价格更便宜,SPI总线通信方式,电路是简单、操作方便。

所以综合考虑我们采用方案三作为本系统的通信模块。 2.2.3 温度传感方案

方案一:使用温度传感器DS18B20和一个湿度传感器相结合。DS18B20是数字信号输出,易于MCU处理和控制,消除了传统测量方法的许多外围电路。传感器的物理和化学特性稳定,它可用作工业温度传感器,这些传感器线性很好。在0 ~ 100摄氏度,最大线性误差是小于1摄氏度。DS18B20的单总线数据传输提高了信号的稳定性和精度。但使用DS18B20数字温度传感器和一个湿度传感器来测量温湿度具有电路搭建复杂,体积大,编程困难等缺点。

方案二:采用温湿度传感器DHT11,DHT11温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个

7

NTC测温元件,并与一个高性能8位单片机相连接。因此产品具有品质卓越、超快相应、坑干扰能力强等优点。DHT11进行温湿度测量时,在0℃—50℃内精度最高为±5%。并且此传感器能和湿度一起进行测量,具有搭建电路简单、体积小、编程容易的优点,所以使用DHT11温湿度传感器数字集成芯片将成为电路的发展趋势。

综上考虑,我们采用方案二。 2.2.4 显示模块方案

方案一: 使用LED数码管显示。LED数码管具有硬件电路简单,方便调试,软件实现相对容易的优势,但占用的IO口多且不可以显示字符。

方案二:采用LCD1602液晶显示。LCD1602显示丰富,响应快,并且成本也不高,编程技术熟练。

综合以上方案,我们选择LCD1602。

第三章 系统模块设计

3.1 STC89C52RC主控模块设计

STC89C52RC是一个低压高性能8位单片机,片内含8k Flash闪存,512 bytes的RAM,兼容标准MCS-51指令系统,片内置8位通用CPU和2K字节EEPROM存储空间。

主要功能特性:

1)8k可反复擦写Flash ROM;

8

2)32个双向I/O口; 3)512x8bit内部RAM; 4)可直接使用串口下载; 5)内带2K字节EEPROM存储空间 引脚图见图3-1

图3-1 单片机管脚图

单片机控制模块由STC89C52RC最小系统组成,其中包括单片机,晶振电路和复位电路。晶振电路由由18,19引脚接入2个22pf的电容和一个12MHz的晶振组成。最小系统如图3-2所示

9

图3-2 单片机最小系统

3.2 nRF24L01无线模块设计 3.2.1 nRF24L01概述

NRF24L01是一种新型单片射频收发机设备,在2.4 GHz~2.5 GHz频率ISM波段操作。内部集成了频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器,输出功率可以被软件简单配置。NRF24L01具有多种低功耗模式(断电模式和空闲模式),以便节能设计更方便。以下是nRF24L01的主要特点:

1.片内自动生成报头和CRC校验码; 2.GFSK调制,硬件集成OSI链路层; 3.SPI速率为0 Mb/s~10 Mb/s;

10

4.125个频道与其他nRF24系列射频器件相兼容; 5.具有自动应答和自动再发射功能; 6.数据传输率为l Mb/s或2Mb/s; 7.供电电压为1.9 V~3.6 V; 3.2.2 引脚功能及描述

nRF24L01的电路图引脚如图3-3所示。

图3-3

由于高频电路的设计在元件的摆放位置,电路的走线方法都有很高的要求,因此我们直接使用现在的成品模块,这样我们就不用去考虑高频电路的设计问题,图3-4是nRF24L01的实物图

图3-4

下面图3-5是模块各个引脚的功能:

11

图3-5

3.2.3 工作模式

通过配置寄存器可将nRF24L01配置为发射、接收、空闲及掉电四种工作模式,如图3-6所示。

图3-6 nRF24L01工作模式

12

3.2.4 配置字

SPI端口同步串行通信接口,传输时先传递为字节,再穿高位字节,并拥有很高的传输速率。

nRF24L01 的配置寄存器共有25个,常用的配置寄存器如图3-7所示。

图3-7 常用配置寄存器

3.2.5 模块电路图与应用原理框图 nRF24L01无线模块电路图如图3-8所示:

13

图3-8 模块电路图

图3-9是nRF24L01无线模块需要与MCU连接的部分:

图3-9

3.3显示电路模块设计

3.3.1液晶1602显示屏的基本结构

1602采用标准的16脚接口,如下图3-10所示,其中: 第1脚:GND为电源地 第2脚:VCC接5V电源正极

14

第3脚:V0为液晶显示器对比度调整端,并且对比度与电压成反比。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电时选择指令寄存器。

第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

第6脚:EN端为使能端,高电平时读取信息,负跳变时执行指令。

第7~14脚:与单片机双向通信的8位数据端。

第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。

图3-10

3.3.2液晶1602显示屏的工作原理

15

图4-4 无线接收软件流程图

4.2总体的软件设计 4.2.1 发送部分

发送部分的总体思路:初始化温度传感器,DS18B20测得温度,接着把温度值写入待发射数据,然后初始化nRF24L01无线模块,将温度发送给主机,其流程图如图4-5所示。

开始

初始化 发射数据 从DHT11读温湿度 延迟 转为十进制 将温湿度写入发射数组 21

图4-5 发射部分总体流程图

4.2.2接收部分

接收部分首先是初始化nRF24L01无线模块,接着判断是否出现接收中断。如果有读入数据并经过处理在LCD1602上显示,其流程图如图4-6所示。

图4-6 接收部分总体流程图

4.3 本章小结

本章主要是对系统程序和程序的设计思想作了说明,并介绍了每个模块的程序流程和最终流程,系统软件采用模块化编程思想,因此,在软件调试时,总是可以调用子模块程序,有利于子模块调试。

第五章 系统的调试及实验结果

5.1 调试步骤

22

步骤一:完成硬件电路的焊接。电路图和实物图如下:

步骤二:首先烧写入简单测试程序,检验LCD1602显示没有问题。

步骤三:将接受部分的单片机连接上一块数码管上,写入测量温湿度的程序。测试DHT11相关硬件及软件。

步骤四:搭建简单的无线通信硬件,写入简单的测试测序,检测收发硬件模块。

步骤五:将所用测序写在一起,搭建完成主机和从机的完整硬件,检测系统是否能把从机测得的温湿度值通过无线模块通信从而在LCD1602上显示出来。

23

5.2实验结果

通过调试实验得到一些实验数据,具体结果如表5-1所示:

日期 温度℃ 湿度% 2015.7.5 2015.7.6 2015.7.7 2015.7.8 2015.7.9 32 50 31 52 27 64 29 59 28 55 表5-1

从图中可以看出整个系统符合了设计的要求,并且收发距离也达到了设计的原始要求。 5.3本章小结

本章主要介绍了系统硬件搭建和软件调试以及实验结果。 软件和硬件调试使用子模块测试的方法,确保每个模块都能正常工作了才进行整合,减少了调试的工作量。

最后我们对测温系统进行了简单的实验,基本满足本次设计的要求 。

结论

24

本次设计采用了STC89C52RC来采集和处理数据,通过传感器收集非电信号。系统中采用直接数字输入型温湿度传感器DHT11实现了数字温湿度计无线监测系统。本系统设计采用DHT11具有精度高,抗干扰能力,电路简单,可在单总线上挂载多个传感器的优点。相反,传统的温检测系统采用热门电路来测量环境温度,虽然成本很低,但精度差,可靠性不好,且不是全数字输出,需要AD转换电路,增加了电路的复杂性。。

本设计采用NRF24L01无线通信模块来实现温湿度的监控,省去传统的布线麻烦,保持了电路的简洁,方便整个系统的安装和维护。但在此次设计中同样遇到一些技术难题,例如,对无线模块NRF24L01的程序的编写和调试。

不过,通过这次设计增加了我的学习能力和理解能力,对无线传输也有了一定的了解。

不断地在网上和图上馆翻阅相关资料,经过一个月的努力,本次设计已经达到了预期的目的。相关工作总结如下: 一. 本设计内容重点:

(1) NRF24L01无线传输模块的调试。 (2) DHT11的各种操作命令。 (3) 单片机液晶显示。 二. 研究展望

随着科技的发展,温湿度监控系统正朝着高精度,体积小,多点式,可靠性高,易于安装和维护的方向迅速发展。

25

1. 提高温湿度控制器测温精度和分辨力

传统的测温系统采用的热敏电阻精度低,采用8为A/D转换器,电路复杂,可靠性不高,分辨率不高。目前,国内外都采用精度和分辨率很高的智能温湿度传感器,他们可靠性和安全性也很好,其分辨力一般可达0.5~0.0625°C。

2.功能的多元化发展

新型的智能温湿度检测系统的测试功能得到了不断增强,同时也可以加入湿湿度的监控形成完善的监控系统,另外内部能够集成E2PROM芯片,可以存储用户的命令。

致 谢

大学三年马上就要过去了,回想在大学学习的时光我们满载而归,在这里我们不仅学到了知识,更重要的是学到了做人的道理,还有庆幸的是认识了很多好朋友、好同学、好老师。非常感谢他们陪伴我度过了我人生最美好的一段时光,那些美好的回忆将是我这一生中宝贵的财富。

在这里首先要感谢我的指导老师康燕萍老师。老师平时本来由于上课就十分繁忙,但在我们做实习设计的一个个月中,从图书馆和网上搜集资料到初步方案的确定,中期的修改,后期的完善等整个过程中都十分耐心地帮助我们。老师细心地纠正我学习中的错误。其次要感谢和我一起做实习设计的同学们,他们的陪伴和建议同样给了我很大的帮助,同时他们也帮我解决了一些技

26

术上的难题。同样我要感谢大学里的所有老师们,他们不仅教给我们专业知识,同时也教育我们做人的道理。

最后我向我的同学和各位老师表示诚挚的感谢,谢谢你们!

参 考 文 献

[1] nRF24L01无线收发模块开发指南[S](V3.2)

[2] 周远举,基于AT89S52和NRF24L01的无线温度监测系统[J]. 2012年第2期

[3]郭刚,李思敏. 基于nRF24E1开发的短距离无线数据传输系统.桂林电子工业学院学报,2004,24 (3).

[4]李会聪. DS18B20多点测温方法探讨[J]. 微计算机信息, 2010(26).

[5] 英庆,王代华,张志杰.基于nRF24L01的无线数据传输系统[J].现代电子技术,2008,31(7):68-82.

[6] 丁永红,孙运强.基于nRF2401的无线数传系统设计[J].国外电子测量技术,2008,27(4):45-47

[7] 朱玉颖,蔡占辉.基于NRF24L01的远程温度检测系统设计[J] .通信与信息处理,2010,29(5):56-58.

[8] 潘勇,管学奎,赵瑞. 基于NRF24L01的智能无线温度测量系统设计[J].电子测量技术,2010年2月.

[9] 李文仲,段朝玉.短距离无线数据通信入门与实战[M].北京航空航天大学出版社,2006,80~259

[10] 喻金钱,喻斌.短距离无线通信详解:基于单片机控制[M].北京:北京航空航天大 学出版社,2009,125~246

附录一:总原理图

27

28

附录二:(1)发送程序如下:

//宏定义

#define uchar unsigned char #define uint unsigned int

//头函数

#include #include //无线模块

#include \

#include \#include \

//LED 管脚定义 sbit TXLED_R=P1^3; sbit RXLED_Y=P1^5;

//主机询问命令

uchar CMD[]={0xaa,0xbb,0xcc,0xdd};

//主函数 void main() {

TXLED_R=0; //初始化LED RXLED_Y=0;

init_io(); //无线初始化IO RX_Mode(); //设置为接收模式 TXLED_R=1; RXLED_Y=1; //循环执行 while(1) {

sta = SPI_Read(STATUS); //读状态寄存器

if(RX_DR) //判断是否接受到数据 {

SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH); //从RX FIFO读出数据

flag = 1;

RXLED_Y=0; //打开接收指示灯 }

SPI_RW_Reg(WRITE_REG + STATUS, sta); //清除RX_DS中断标志

29

if(flag) //接受完成 {

flag = 0; //清标志 //命令为主机询问

if(RX_BUF[0]==CMD[0]&&RX_BUF[1]==CMD[1]&&RX_BUF[2]==CMD[2]&&RX_BUF[3]==CMD[3])

{

//打开接收成功指示

//无线答应信号湿度 温度

RH(); //DHT11读取 TX_BUF[0]=0xaa; //T温度

TX_BUF[1]=U8T_data_H; //RH湿度

TX_BUF[2]=U8RH_data_H; TX_BUF[3]=0xdd; delay_ms(100);

RXLED_Y=1; //关闭接受射指示灯 TXLED_R=0; //打开发射指示灯

TX_Mode(TX_BUF); // 把nRF24L01设置为发送模式并发送数据 Check_ACK(1); // 等待发送完毕,清除TX FIFO delay_ms(100); //发送成功指示

TXLED_R=1; //关闭发射指示灯

RX_Mode(); // 设置为接收模式 } } } }

(2)接收程序如下:

//宏定义

#define uchar unsigned char #define uint unsigned int

//头函数

#include #include //屏幕函数调用

#include \//无线模块

#include \

30

#include \

//LED 管脚定义 sbit TXLED_R=P1^3; sbit RXLED_Y=P1^5; //蜂鸣器

sbit Feng=P1^2;

//主机询问命令

uchar CMD[]={0xaa,0xbb,0xcc,0xdd}; uchar Mode=0; uchar temp=0; uchar KK=0; //报警温度

ucharTNumber=50,RHNumber=90;

//主函数 void main() {

//LCD初始化显示 Init_LCD(); delay_ms(250);

TXLED_R=0; //初始化 RXLED_Y=0;

init_io(); //无线初始化IO RX_Mode(); //设置为接收模式 TXLED_R=1; RXLED_Y=1;

///////////////////////////////////////////// TXLED_R=0; //发送指示灯

////////////////////////////////////////////////////////////////////////////////

//循环显示 while(1) {

TXLED_R=0; //发送指示灯 TX_ACK(); //发送询问信号 sta = SPI_Read(STATUS); //读状态寄存器 TXLED_R=1; //发送指示灯

if(RX_DR) //判断是否接受到数据 {

SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH); // 从RX FIFO读出数据

flag = 1;

31

}

}

}

delay_ms(100);

SPI_RW_Reg(WRITE_REG + STATUS, sta); // 清除RX_DS中断标志 if(flag==1) // 接受完成 {

Mode=0; flag=0; }

else //设备丢失 {

Mode=1; }

//显示 //数据显示 if(Mode==0) {

RXLED_Y=0; if(temp!=1)//重新初始化 {

display1(); temp=1; }

display2(RX_BUF[1],RX_BUF[2]);//显示读数

if(RX_BUF[1]>TNumber||RX_BUF[2]>RHNumber) //报警 {

Feng=0; } else {

Feng=1; }

RXLED_Y=1; }

delay_ms(200); delay_ms(200);

delay_ms(200);

32

本文来源:https://www.bwwdw.com/article/p9a6.html

Top