基于Arduino的智能温湿度控制系统.docx
- 文档编号:16684653
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:20
- 大小:464.60KB
基于Arduino的智能温湿度控制系统.docx
《基于Arduino的智能温湿度控制系统.docx》由会员分享,可在线阅读,更多相关《基于Arduino的智能温湿度控制系统.docx(20页珍藏版)》请在冰点文库上搜索。
基于Arduino的智能温湿度控制系统
摘要
随着数字化、自动化在家居等方面运用的越来越多,农业生产对湿度的要求越来越高,毕业设计正是基于此,提出一种基于单片机的温湿度报警系统的设计。
Arduino是比较常用于智能控制的芯片,在智能家居等方面应用广泛。
使用Arduino可以实现温湿度全程的监测与控制,而且Arduino控制器的使用还具有易于学习掌握,性价比高等优点。
基于Arduino的温湿度控制系统采用一个含有已校准数字信号输出的DHT11传感器来收集环境中的温湿度数据。
经过Arduino进行数据处理,再将处理的结果通过串口显示器进行显示。
当环境中的参数达到预先设定的临界值时,报警系统中的无源蜂鸣器就会自动鸣响报警。
关键词:
Arduino;DHT11;传感器;液晶显示器;温湿度;
1绪论
1.1课题背景
农业科学技术与信息科学互相融合、渗透是现代农业生产的显著特点。
各种高新技术不断应用于农业的生产,农业信息化的总趋势就是:
计算机技术,信息存储和数据处理技术以及各类软件,网络通信,人工智能与智能控制系统等综合应用于现代智能机械化的农业生产。
很长一段时间,对温室环境的监测一般采用人工方式,这种传统的数据收集的方法浪费人力财力,准确性不是很高,而且容易受其它外部因素影响,很难达到期望的目的。
特别是在现代化的蔬菜温室的生产和管理过程中,环境的温度和湿度变化对植物的健康成长有重要影响。
如果白天和夜里的温湿度变化很大,则会对植物的正常生长产生重要影响。
国内外温室种植业的实践生产经验表明,提高温室环境的管理水平和自动化控制水平可以有效发挥温室作物生产的高效性,其中对作物生长环境的温湿度的数据采集是温室环境监测的重要组成部分。
因此,为了提高农作物产量,我们需要对植物生长环境中的温湿度因素进行必不可少的监测与控制,使其保持在有利于作物生长的合理范围内波动,以提高农作物的产量和质量。
随着通信网络技术,传感器数据采集技术及计算机控制技术等现代信息技术的迅猛发展,目前设施农业的一个研究热点就是数据自动采集及智能控制系统的开发。
因此,设计一套能够实时对植物生长环境因素有效监测和控制的智能系统对于提高农作物产量具有十分重要的意义。
1.2研究目的及意义
湿温度是工业领域内比较重要的两个监测目标。
无论是我们的日常生活环境,还是生产领域都需要对温湿度参数进行控制和监测。
对温湿度的测量与控制水平直接影响到人类的所有活动。
1.2.1生活环境与温湿度的关系
随着人类社会对生活环境的质量要求不断提高,特别是温度和湿度的变化所带来的不同负面影响,比如温度变化都直接影响到我们这个社会,而湿度的波动也一样会影响着我们的生活以及其他物种的生存条件。
近代随着工业革命而带来的二氧化碳的排放导致全球气候变暖,因此对我们的生活带来了一系列的巨大影响。
随着全球气候的变暖,导致南北极的冰山融化,进而导致海平面的上升。
因此导致全球有上亿的人口收到海平面上升所带来的威胁,类如海水倒灌,岛屿消失等。
温度的上升也影响着全球的气候变化。
最近几十年厄尔尼诺现象频繁发生,导致无数人的生活受到影响。
温度的变化同时也会影响到环境湿度的变化,因为
当温度较高时会加剧地面水汽的蒸发,使湿度上升,例如在南美地区温度较高同时也使湿度较高。
但是当温度达到很高时也会是空气急剧干燥,例如在北非地区。
在国家安全、环境保护、生产制造、气象预测、科学研究等部门,经常需要对环境温度和湿度数据进行控制和监测。
随着科技的不断进步,为了保持一起的精确,现在越来越多的紧密仪器需要在恒定环境下工作,对环境中的温湿度要求越来越高。
在食材成品加工、生物制药工程等关于国计民生的工业制造领域对于精确监测温度和湿度变化更是有重大的意义。
为了生产出合格的产品,有时我们必须精确的控制和监测环境中的温度和湿度的变化。
1.2.2温湿度检测的意义
无论是在现代化工业生产、现代农业生产,还是在仓库保管、气象卫星等领域,对温度和湿度的测量都是随处都可以看到的。
有效合理的调解与控制湿温度参数,不但可以减小资源浪费还更有利保障行业生产的正常发展。
温湿度对动植的生长都有很大的影响,当温度达到了动植物生长所能承受的最高值或最低值时,这些植物和动物就会慢慢的从地球上消失,或者适应环境而演变成其他的一些物种。
所以对特定环境下的温湿度我们必须能准确有效的测量。
同时我们也要记录他们的的变化情况和变化规律,只有这样这样我们才有可能对我们当前所生活的环境的变化有个更为直观感性的了解与认识。
老式的温度计的原理是利用水银遇热膨胀和遇冷收缩来实现的,尽管物美价廉,但是它的精度很低,而且需要很仔细才能读清测量值。
干湿球显示测量法是老式的湿度计普遍采用方法,但它不仅构造复杂而且测量精的确度也不是很高
但是采用Arduino对温湿度进行测量控制,不但控制简单,操作方便和应用灵活等一系列的优点,而且可以大幅度提升温湿度控制的技术指标。
用LCD液晶显示屏来显示温湿度的数值,看起来更加直观。
1.3国内外发展历程和状况
目前国外先进大型室内环境监控系统大多是多种因素综合控制系统。
这些先进控制系统提供了可以人机交互的操作界面,不仅可以方便操作人员对环境参数进行设定和对参数进行显示,而且还可用计算机对各种环境因子进行的远程监视与控制,涉及到的环境因子如二氧化碳浓度、温湿度变化、光照强度等,包含了农作物在各个生长阶段的生命信息甚至包括开花时间的控制等。
在美国,摩托罗拉集团在80年代初就已经研制出了一套专门用于灌溉的中央计算机控制系统,很快这套系统赢得了美国大部分地区的广泛的认可和应用
2Arduino理论基础
本章作为Arduino的理论概述部分,将介绍与Arduino相关的知识原理为后续章节提供基本理论基础。
本章文首先将讲述什么是Arduino,关于Arduino的一些基础知识及关于Arduino编写语言C语言的基础知识和开发工具。
2.1单片机-Arduino的核心器件
要理解Arduino就先要明白单片机的作用,Arduino控制板是一块基于AVR命令集的电子开发平台。
Arduino的主要元器件是一块微型处理器,它是基于Atmega328P-PU芯片的开源开发平台。
2.1.1单片机的概念
计算机一般包括包括以下几个部份:
CPU、ROM、RAM、输入/输出设备I/O。
在个人计算机上这些部份被分割成若干块不同的芯片,安装在一个被叫做主板的印刷线路板上。
但在单片机平台中,各个部件会被全部一起做到一块集成芯片中,所以就被命名为单片机,而且有一些单片机中除了上述组成部份外,还集成了其它部份如模/数转换和数/模转换等。
2.1.2单片机的作用
其实在我们的实际工作中要根据不同的场合和应用来选择合适的处理器,选择应用处理器的关键是看是否支持设备运行,是否有很高的性价比等。
单片机经常用在工业生产的控制智能家居设备中。
但是有些场合使用单片机就会使简单的问题复杂化,因为在开发单片机资源的时候需要了解寄存器,指针等资源,对于一般的初学者很难掌握这些资源的使l用方法。
因此为了找到一个便宜又好用的控制器,2005年MassimoBanzi和DavidCuartielles设计一个基于Atmega328P-PU芯片的开源控制平台,被命名为Arduino。
Arduino可以使用Arduino语言与Processing、MacromediaFlash、Max/MSP和SuperCollider等软件,结合其他常用电子元件,例如传感器或LED发光灯、电动马达或其他电子器件,设计出许多具有艺术创意性的互动作品。
图2-1就是一个Atmega328P-PU单片机。
2.1.3Arduino的定义
Arduino是一套能够感应和控制现实物理世界的工具。
它由一个基于单片机并且代码开源的硬件平台,和一套ArduinoIDE开发环境组成。
Arduino可以用来开发交互式智能产品,例如它可以读取大量的开关和传感器数据,同时可以控制不同种类的电子元器件等其他各种物理设备。
基于Arduino的控制系统既可以独自进行,也可以在运行的同时又和计算机中正在运行的其他程序进行数据通讯。
Arduino的编程环境是基于处理多媒体的,编程语言就像在类似的物理平台上连线。
2.1.4Arduino的优势
很多的单片机和单片机平台的设计都采用交互式系统。
例如:
ParallaxBasicStamp,Phidgets,MIT’sHandyboard等提。
对于这些工具,工程师都不需要去关心那些单片机编程的复杂细节,提供给编写人员的是一套很容易上手的工具包。
同样Arduino也很大程度的简化了内部芯片的工作顺序,但Arduino和其它开发平台相比在一些方面更具有优越的特点:
跨平台——Arduino编程环境可以完美兼容MacintoshOSX,Windows和Linux等应用系统。
但很多其它的单片机系统都只能在Windows环境下运行。
简易的编程环境——Arduino编程环境和Processing编程环境很相似,所以我们很容易就可以学会如何熟练使用Arduino开发环境。
硬件开源并可扩展——Arduino开发板是基于Atmel公司的ATMEGA8和ATMEGA168/328单片机,基于CreativeCommons许可协议[24],所以我们能够根据需求设计模块,可以对其扩展或改进。
Arduino是基于AVR开发平台的,并且对AVR库进行了二次编译封装,把所有端口都进行了打包,基本不需要寄存器、地址指针等资源。
但是Arduino是二次编译封装,所以编写的代码没有直接使用AVR代码编写精练,代码的执行效率与代码容量都没有直接AVR编写的好。
2.2Arduino开发工具介绍
Arduino语言也就是基础的C语言,Arduino语言只不过把AVR单片机相关的一些参数设置都函数化,不需要我们去了解他的底层设计,是他的编写与设计更加简单方便[25]。
常量:
LOW|HIGH表示数字接口的电平高低,LOW代表低电平(0),HIGH代表高电平
(1)。
OUTPUT|INPUT表示数字IO口的方向,OUTPUT表示输出,INPUT表示输入(高阻态)。
true|falsetrue表示真
(1),false表示假(0)。
程序结构:
声明变量及接口名称:
voidsetup()放在在程序运行起始位置,具有初始化变量,定义管脚模式,调用库函数等一系列功能。
voidloop()放在在setup()函数之后,即初始化之后,loop()让程序循环地被执行。
数字I/O:
Mode(pin,mode)定义数字IO端口输入输出模式的函数,pin指向为0~13引脚,mode表示输出方向INPUT或OUTPUT。
digitalWrite(pin,value)定义数字IO端口输出电平的函数,pin指向为0~13引脚,value表示为电平的高低HIGH或LOW。
intdigitalRead(pin,value)定义数字IO接口输入电平函数,pin指向为0~13引脚,value表示为电平的高HIGH或LOW。
模拟I/O:
intanalogRead(pin)定义模拟IO口读函数,pin指向为0~5引脚。
analogWrite(pin,value)-PWM数字IO口PWM输出函数,Arduino数字IO口标注了PWM的IO口可使用该函数,pin指向3,5,6,9,10,11引脚,value表示为0~255。
2.3本章总结
通过本章介绍,我们初步了解了什么是Arduino,以及Arduino在现代社会的电子设计中的优势。
了解了Arduino集成环境的使用及其功能的介绍,使我们对于Arduino控制板有了进一步了解,为我们接下来的设计提供了基础知识。
下一章我们将进入系统的具体设计。
3系统整体设计
本章主要介绍的是关于Arduino温湿度控制系统的主要控制模块的设计与分析。
本系统软件设计以功能需求为根本目标,利用简单易懂的C语言,采取模块化编程,对包括主控模块、数据处理模块、数据显示模块、报警模块等四个模块进行了详细的设计,结构清晰,通俗易懂。
为实现预期目标的系统功能,将分析整个控制系统的硬件物理设计和软件设计等。
3.1方案论证
本节通过对基于Arduino的温湿度控制系统的整体方案论证让我们对于设计还系统有一个整体的设计与方法,为后面的具体设计设下铺垫。
3.1.1系统主要功能
该系统希望实现的目标功能是:
(1)温湿度数据的实时检测和显示。
温湿度传感器DHT11检测到的数值经过LCD1602液晶显示屏实时地进行显示,并且以固定周期检测刷新显示一次。
(2)对历史环境数据进行记录,以便以后任何时间都可以分析处理数据,预测环境变化情况。
(3)当温湿度超出设定阈值时能自动报警。
蜂鸣器发出声音报警。
3.1.2系统的工作原理简介
一般来说,本次系统设计主要涉及包括温度和湿度的测量、显示以及实现方便控制。
硬件方面有四个模块,即Arduino主控模块、传感器模块、LCD1602液晶显示模块以及报警模。
主要使用DHT11数字温湿度传感器来进行数据采集工作。
当前环境下的温度和湿度数据通过DHT11传感器来检测出,将所测环境数据传送到Arduino主控模块中进行数据分析和处理等工作,并分别存入不同数组中以便显示的时候取用。
为了获取稳定的数据,本系统每间固定周期采集一次数据送Arduino控制板中。
温湿度检测值通过LCD1602液晶显示模块显示。
上边一行英文字母及标题,下边一行显示湿度和温度值。
蜂鸣器报警模块实现了检测值超过阈值的时鸣响报警功能。
本系统采用的是无源源蜂鸣器,因此只有湿度超出范围蜂鸣器时才进行报警提示。
当温度数据出现异常状况时,系统会提醒工作人员需及时调整,及时启动升温器、降温设备以及喷雾器等设备来有效的调节室内环境温湿度。
呼吸灯模块可以通过观察LED闪烁频率的快慢来估测环境中湿度的大小及变化,更能直观的反映出空气中湿度的大小,当LED灯闪烁频率较快时,说明此时环境湿度较大,可以连接到加湿器控制加湿器的功率等。
3.1.3总体设计简介
1、总体设计框图
在保证实现其基本功能的基础上,根据系统功能的具体要求,原则之一要尽可能降低系统软硬件成本。
设计的总体方案围绕上述思想,初步确定系统的方案如图3-1所示。
图3-1系统总体方案
从图中可以看出,系统由Arduino主控模块、DHT11数据采集模块、LCD1602液晶显示模块、报警模块,呼吸灯模块等组成。
为了简化系统,提高控制精度,外围设备采用并行控制模式。
该设计以Arduinouno为控制核心,实现温湿度采集及显示的基本功能。
2、总体设计工作进程
只要弄清两个部分模块的工作原理,既可以很好的完成本次系统设计。
一个是DHT11数据采集模块,另一个是LCD1602液晶显示模块。
DHT11传感器比较陌生,以前没有接触过,液晶相对而言我们比较了解。
因此只要先攻克了液晶显示模块,然后再掌握数据采集部分就可以掌握整个系统的工作原理。
3.2系统硬件设计
本节主要介绍基于Arduino的温湿度控制系统的主控模块的设计。
Arduino温湿度控制系统包括Arduino主控板,LCD1602液晶显示模块,温湿度数据采集模块,报警模块等组成。
本章将主要介绍系统的硬件设计及功能介绍。
3.2.1主控模块
ArduinoUNO是作为Arduino平台的参考标准模板,是ArduinoUSB接口系列的最新版本。
UNO的核心控制器件是ATmega328处理芯片,数字输入/输出口共计有14路:
6路PWM输出端口,6路模拟输入端口,一路ICSPheader,一个16MHz晶体振荡器,一个电源插口,一个USB接口和一个复位按钮。
ArduinoUno有三个版本,最新版本与老版相比有以下新的特点:
在AREF处新添加了两个引脚:
SCL和SDA,支持I2C接口;增加IOREF和一个预留管脚,控制板能同时兼容5V和3.3V的供应电压。
USB接口芯片由ATmega16U2替代了ATmega8U2。
如图3-3为改进后的ArduinoUNO。
图3-2ArduinoUNO控制板
1、Arduinouno基本概要
2、处理器ATmega328
3、工作电压5V
4、输入电压(推荐)7-12V
5、输入电压(范围)6-20V
6、数字IO脚直流电流40mA
7、3.3V脚直流电流50mA
8、数字IO脚共计14路
9模拟输入脚6路
10、FlashMemory32KB
11、SRAM2KB
12、EEPROM1KB
13、工作时钟频率16MHz
2、数据通信接口及引脚配置说明
1、串口:
ATmega328处理芯片内置的UART可以通过数字接口0
和1与外部硬件完成串口数据通信[28]。
2、TWI接口
3、SPI接口
图3-3Arduino原理图
Arduino控制板上基本端口如图3-4所示
DigitalI/O:
数字输入/输出0—13。
AnalogI/O:
模拟输入/输出0-5。
支持ICSP下载,同时支持RX/TX。
输入电压:
5-12V外部电源供电或USB接口供电。
输出电压:
支持3.3V级5V电源输出。
处理器:
使用AtmelAtmega168328微处理器。
AREF:
参考电压的模拟输入。
采用analogReference()指令调用。
VIN端口:
外部电源输入引脚。
ICSP:
是一种线上即时烧录引脚。
3.2.2数据采集模块
1、DHT11产品概述
DHT11温湿度传感器是含有已校准数字信号输出的一款温湿度复合传感器。
为保证传感器具有卓越的长期稳定性和极高的可靠性,它采用了温湿度传感技术和专门制作的数字集成模块数据采集技术。
图3-4DHT11传感器实物图
DHT11温湿度传感器均在严格的校验实验室中经过精确的湿度检验校准。
校准系数结果采用程序数据的形式存放在OTP中,DHT11内部在检测信号的处理过程中要调用这些校准系数。
体积小和功耗低等优点使信号数据传输距离可超过20多米,使它成为各种应用场合的最佳选则甚至环境最为复杂的应用场合。
(1)引脚介绍:
1、Pin1:
(VDD),电源引脚,供电电压为3~5.5V。
2、Pin2:
(DATA),单总线,串行数据通信。
3、Pin3:
(NC),空脚,请悬浮。
4、Pin4:
(VDD),电源负极,接地端。
(2)接口说明:
当连接线长度在20米内的时候要使用5000欧的上拉电阻,当距离超过这个距离时则需要根据实际的工作情况来选用适合的电阻器件。
(3)数据帧的描述:
DATA通信接口用于DHT11传感器与控制器之间采用单总线数据格式进行同步和通信,一次通信周期约4毫秒,数据分为两部分:
整数和小数,当前小数部分用于扩展,现读出为零.实现顺序如下:
一次完整的数据传输为40位,高位先出。
数据格式8位湿度整数8位湿度小数8位温度整数8位温度小数如果数据没有发送错误,则所得到的校验和数据等于所得结果的最后8位数,即8位的温度小数部分。
(4)电气特性:
VDD=5V,T=25摄氏度,
2、DHT11传感器模块电路设计
DHT11温度与湿度传感器连接Arduino控制板相对而言还是比较简单的。
Arduino控制板的数字I/O接口2的作用是发收串行数据的,即数据口。
数字I/O接口2连接传感器的Pin2。
由于测量电路长度一般小于20米,所以需要额外增加一个5000欧的上拉电阻,所以在电源与DHT11的第二个脚之间接一个5000欧电阻。
而DHT11的电源端口第一个脚和第四个脚分别接Arduino控制板的
3.2.3数据显示模块
1、LCD1602液晶显示屏
LCD1602液晶是一种可以同时显示32个字符(16列2行)的工业字符型液晶。
LCD显示模块在电子表、摄像机、手机及很多日常电子产品中都可以监到,主要作用是显示图形、数字和专用符号等。
在基于微型处理器的电子设备中,LCD1602很多常用的输出方式例如作为显示器、发光器等使用。
图3-51602显示模块原理图
液晶显示器适用于大规模集成电路直接驱动、具有厚度薄、易于实现全彩
色显示等众多优点,目前已经被广泛应用在工业领域例如数字摄像机、便携式电脑、移动通信工具等。
为了方便调节液晶的显示亮度使液晶显示在最佳的状态,在第三个引脚Vo脚加上一个10000欧的滑动变阻器,通过调节滑动变阻器的电阻阻值不断改变Vo脚的电压值[34]。
3.2.4报警模块
(一)蜂鸣器介绍
1.蜂鸣器是一种采用直流电压供电的一体化结构的电子讯响设备,被广泛应用于各种常用电子器件中作发声元件。
2.蜂鸣器主要有两个类型:
电磁式和压电式。
3.蜂鸣器在电路中用字母“HA”或“H”表示。
(二)蜂鸣器的结构原理
1.压电式蜂鸣器原件主要包括多谐振荡器、阻抗匹配原件及音箱、外壳等。
有些压电式蜂鸣器外壳上还装有发光二极管。
多谐振荡器由主要集成电路组成。
当开启后,多谐振荡器就会起振,产生1.5~2.5kHZ的音频波动信号,阻抗匹配器驱动压电蜂鸣片振动进而发出声音。
铌镁酸铅压电陶瓷材料是压电蜂鸣片的主要材料。
另外分别在陶瓷片的正反面镀上银电极,然后经过老化和极化处理后,再同不锈钢片粘接在一起。
2.磁式蜂鸣器组件主要包括磁铁、电磁线圈、振荡器、振动膜片及外壳等
常见的一种小型蜂鸣器因其比较小巧、结构牢靠,而被大量应用在一些需要(三)有源蜂鸣器和无源蜂鸣器发声鸣响的电器设备、电子制作设计等电路中。
常用蜂鸣器被分为无源蜂鸣器和有源蜂鸣器。
有源蜂鸣器接通电源就可连续发出声音;而无源蜂鸣器则必须接在音频输出电路中才能发出声音。
本系统在设计时候采用的是无源蜂鸣器,只要给蜂鸣器一定的电流值,蜂鸣器就可以按照给定的一定的频率发声,但是Arduino控制器引脚的电流相对较小,不足以驱动蜂鸣器工作,因此采用了一个NPN的三极管来驱动。
3.2.5原理总图及器件清单
经过以上分析,将传感器、无源蜂鸣器和LCD1602等与Arduino相连接,便构成了本系统的电路原理图,如图3-6所示。
图3-6系统总电路图
3.3系统软件设计
本系统软件设计以功能需求为根本目标,利用简单易懂的C语言,采取模块化编程,结构清晰,通俗易懂。
在对我们所选专题的研究方向有了大致的总体认识后,我们就需要先设计一个整体的程序工作流程图,将整个大系统系统划分为多个不同功能的小模块,然后再逐个对各个功能小模块所需要实现的功能进行分析,最后再把各个功能模块的程序合有效的连接一个整体的程序。
程序流程如图3-7所示。
图3-7主程序流程图
3.3.1液晶显示模块程序
LCD1602显示器是一个慢显示元件,在运行任何一条命令以前要保证显示模块的忙标志表示不忙为低电平,如果不是那么这条命令不可用,如果想显示字符或图像则必须先输入字符会图像的地址。
LCD1602显示模块可直接与
Arduino控制板接口相连,不需要再加任何额外的驱动程序。
系统源代码如下图所示。
#include
#include
#defineDHT11PIN8
dht11DHT11;
//initializethelibrarywiththenumbersoftheinterfacepins
LiquidCrystallcd(12,11,5,4,3,2);
voidsetup(){
pinMode(DHT11PIN,OUTPUT);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Arduino 智能 温湿度 控制系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)