基于Arduino的温湿度控制系统小论文_温湿度控制系统论文
基于Arduino的温湿度控制系统小论文由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“温湿度控制系统论文”。
基于Arduino的温湿度系统设计
刘**(江西理工大学信息工程学院,江西 赣州 341000)
摘要:本系统是一个基于Arduino的温湿度控制系统,该系统通过一个DHT11数字温湿度传感器来采集环境中的温湿度数据。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。然后再通过LCD1602液晶显示器进行观测。当环境中的温湿度数据达到临界值是通过报警系统进行报警。Arduino设计温湿度控制系统,可以即时精确的反应温室内的温度以及适度的变化。完成诸如升温到特定的温度、降温到特定的温度。在温度波动限范围内保持恒温等多种控制方式,在湿度控制方面也是如此。
关键词: Arduino;DHT11;传感器;性价比极高; 中图分类号:T18
3文献标识码:A Design of Temperature and Humidity Control System based on Arduino
LIU **(School of Information Engineering, Jiangxi University of Science and Technology, Ganzhou Jiangxi
341000, China)
Abstract: This system is a temperature and humidity control system based on the Arduino, the system through a DHT11 digital temperature and humidity sensor to collect the environment temperature and humidity data.DHT11 digital temperature and humidity sensors is a section contains the already calibration digital signal output humidity composite sensor.And then through LCD1602 LCD display.When the environment temperature and humidity data reaches the critical value is through the alarm system alarming.Use a Arduino-type microcontroller design temperature and humidity control system for, instant accurate reaction greenhouse temperature and moderate changes.Complete, such as the temperature was cooled to a specific temperature,raised to a specific temperature.Maintain constant temperature and other control in the volatility temperature range, humidity control is also true.Keywords: Arduino;DHT11;Sensor;Highly cost-effective;
0 引言
农业科学技术与信息科学互相融合、渗透是现代农业生产的显著特点。各种高新技术不断应用于农业的生产,农业信息化的总趋势就是:计算机技术,信息存储和数据处理技术以及各类软件,网络通信,人工智能与智能控制系统等综合应用于现代智能机械化的农业生
产[1]。
很长一段时间,对温室环境的监测一般采用人工方式,这种传统的数据收集的方法浪费人力财力,准确性不是很高,而且容易受其它外部因素影响,很难达到期望的目的。特别是在现代化的蔬菜温室的生产和管理过程中,环境的温度和湿度变化对植物的健康成长有重要影响。如果白天和夜里的温湿度变化很大,则会对植物的正常生长产生重要影响[2]。国内外温室种植业的实践生产经验表明,提高温室环境的管理水平和自动化控制水平可以有效发挥温室作物生产的高效性,其中对作物生长环境的温湿度的数据采集是温室环境监测的重要组成部分。因此,为了提高农作物产量,我们需要对植物生长环境中的温湿度因素进行必不可少的监测与控制,使其保持在有利于作物生长的合理范围内波动,以提高农作物的产量和质量。随着通信网络技术,传感器数据采集技术及计算机控制技术等现代信息技术的迅猛发展,目前设施农业的一个研究热点就是数据自动采集及智能控制系统的开发[3]。因此,设计一套能够实时对植物生长环境因素有效监测和控制的智能系统对于提高农作物产量具有十分重要的意义。
1、系统总体结构
系统主要实现的功能是温湿度数据采集、数据显示以及越界报警。系统结构如图1所示。其中心处理单元为Arduino控制器。Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板。
1602液晶显 IO3456示模块Arduino unoDHT11传感器模块IO2 IO8呼吸灯模块 IO7蜂鸣器报警模块 图1系统结构框图
采集温湿度方面由DHT11 传感器来完成,通过DHT11 传感器采集当前的温湿度值,经Arduino控制器 将数据传送到液晶屏上显
示出来,并且接入蜂鸣器和呼吸灯,设置温湿度的上限值,实现越限报警和呼吸灯随湿度大小闪烁。
2、系统硬件设计 2.1主控模块
Arduino UNO是作为Arduino平台的参考标准模板,是Arduino USB接口系列的最新版本。UNO的核心控制器件是ATmega328处理芯片,数字输入/输出口共计有14路:6路PWM输出端口,6路模拟输入端口,一路ICSP header,一个16MHz晶体振荡器,一个电源插口,一个USB接口和一个复位按钮[4]。在AREF处新添加了两个引脚:SCL和SDA,支持I2C接口;增加IOREF和一个预留管脚,控制板能同时兼容5V和3.3V的供应电压。图2为改进后的Arduino UNO。
图2 Arduino UNO
2.2温湿度采集模块
DHT11温湿度传感器是含有已校准数字信号输出的一款温湿度复合传感器。为保证传感器具有卓越的长期稳定性和极高的可靠性,它采用了温湿度传感技术和专门制作的数字集成模块数据采集技术[5]。传感器包括一个NTC测温元件和一个电阻式感湿元件,并与一个高性能8位单片机相连接[6]。
DHT11温度与湿度传感器连接Arduino控制板相对而言还是比较简单的。Arduino控制板的数字I/O接口2的作用是发收串行数据的,即数据口。数字I/O接口2连接传感器的Pin2。由于测量电路长度一般小于20米,所以需要额外增加一个5000欧的上拉电阻,所以在电源与DHT11的第二个脚之间接一个5000欧电阻[7]。而DHT11的电源端口第一个脚和第四个脚分别接Arduino控制板的电源接口和接地接口。DHT11的第三脚不接任何原件,悬浮放置。
2.3显示模块设计
LCD1602液晶是一种可以同时显示32个字符(16列2行)的工业字符型液晶。LCD显示模块在电子表、摄像机、手机及很多日常电子产品中都可以监到,主要作用是显示图形、数字和专用符号等[8]。在基于微型处理器的电子设备中,LCD1602很多常用的输出方式例如作为显示器、发光器等使用。为了方便调节液晶的显示亮度使液晶显示在最佳的状态,在第三个引脚Vo脚加上一个10000欧的滑动变阻器,通过调节滑动变阻器的电阻阻值不断改变Vo脚的电压值[9]。
图3 包板电路图
3、软件设计
软件程序主要包括液晶显示程序和传感器数据采集程序。液晶显示模块主要是对温湿度数据显示和观测,传感器采集模块主要是用来采集环境中的温湿度数据,然后送入到Arduino
控制板中进行数据处理。根据各个功能模块任务进行程序设计,为节省版面下面只对有特殊创意的发射模块程序的设计作详细介绍。
在对我们所选专题的研究方向有了大致的总体认识后,我们就需要先设计一个整体的程序工作流程图,将整个大系统系统划分为多个不同功能的小模块,然后再逐个对各个功能小模块所需要实现的功能进行分析,最后再把各个功能模块的程序合有效的连接一个整体的程序。如图4所示:
温湿度监测并开始初始化延时传回数据到N Arduino1602显示数据定时监测判定温湿度是否超过阀值Y报警装置启动
图4 总流程图
LCD1602显示器是一个慢显示元件,在运行任何一条命令以前要保证显示模块的忙标志表示不忙为低电平,如果不是那么这条命令不可用,如果想显示字符或图像则必须先输入字符会图像的地址[10]。LCD1602显示模块可直接与Arduino控制板接口相连,不需要再加任何额外的驱动程序。
传感器包括一个电阻式感湿元件和一个NTC 测温元件,并与一个高性能8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。DHT1
1温湿度传感器均在严格的校验实验室中经过精确的湿度检验校准。校准系数结果采用程序数据的形式存放在OTP中,DHT11内部在检测信号的处理过程中要调用这些校准系数[11]。单线制串行接口,使系统集成变得简易快捷。
4、结束语
温湿度控制已经成为了21世纪热门研究话题之一。无论是从生产还是生活,温湿度都与我们人类都是息息相关的。而智能化的温湿度控制系统的发展方向已成为一种必然趋势。我们思维方式不可能一直原地不动,不能再坚守旧时代利用大量人力资源来控制温度和湿度的变化。这样不但浪费大量的人力财力资源,而且控制系统功能也比较单一化,适用场合也有很大的局限性。而使用自动的智能控制的方式,既节省了人力财力,更加体现出了与时俱进的辩证思想,世界在进步,而这种进步就该体现在生活中的各个细节方面。
传统的温度测量方法周期长,效率低,管理很不方便,发生故障时,更要花费大量人力物力来查找。尤其是用于温室大棚采样数据频繁工况条件下,采用无线传输系统更显现出他的优越性。该系统可对温度实现现场和远程智能化在线检测和预警。
该系统在测温精度上达到了一定的水平。而在温度采集速度上,由于使用了独立的温度补偿电路,有效地提高了温度测量的灵敏度和系统稳定性。另外,由于使用了存储芯片,可以保存实时数据,提高了系统的可靠性,是一种价格低廉方便实用的系统,可在生产上推广应用。
参考文献
[1] 周美兰,关晓丽,张诗阁等.基于PIC的温室自动控制系统[J].黑龙江科技学院学报,2008,[2] 毕玉革,麻硕士.我国现代温室环境控制硬件系统的应用现状及发展[J].农机化研究,2009.[3] 刘潇潇整理.国内外设施环境监控技术研究现状[N].中国花卉 报,2009-08 [4] Ed Burnette.Hello, Android: Introducing
Google's Mobile Development
Platform.Pragmatic Bookshelf;3 edition(July 20, 2010)
[5] 传感器应用技巧141例[美],科学出版社。
2006
[6] Practical Arduino: Cool Projects for Open
Source Hardware Oxer, Jonathan、Blemings, H.APre
2010
[7] 袁本华,董铮.基于Arduino控制板的温
室大棚测温系统设计[J].安徽农业科学,2012,40(8)
[8] 崔才豪,张玉华等.利用Arduino控制板的光引导运动小车设计自动化仪表,2011. [9] 程晨.Arduino开发实战指南[美],机械工
业出版社。2012 [10] Dale 著,翁恺 译.Arduino 技术内幕 Wheat, 北京邮电出版社.2013 [11] C程序设计教程[美] 清华大学出版社.2010
[12] 于欣龙、郭浩斌。爱上Arduino Maimo Banzi.人民邮电出版社.2011 [13]
Simon Monk、张宝玲等.基于Arduino的趣味电子制作.科学出版社 2011
[14] 蔡睿妍.Arduino的原理及应用[J].电子
设计工程,2012 参考程序
#include #include
#define DHT11PIN 2 //数字IO接口2 LiquidCrystal lcd(12, 11,6, 5, 4, 3);//设置接口 dht11 DHT11;
float temperature = 0;//设置temperature为浮点变量
int Buzzer=7;//设置控制蜂鸣器的数字IO脚 int Led=8;void setup(){
pinMode(Buzzer,OUTPUT);
pinMode(Led,OUTPUT);//设置数字IO脚模式,Serial.println(“Read sensor:OK ”);
Serial.print(“humidity: ”);
Serial.print((float)DHT11.humidity, 2);
Serial.println(“ % ”);
Serial.print(“Temperature : ”);OUTPUT为输出
Serial.begin(9600);
Serial.println(“DHT11 TEST PROGRAM ”);
Serial.print(“LIBRARY VERSION: ”);
Serial.println(DHT11LIB_VERSION);
Serial.println();
lcd.begin(16, 2);//初始化LCD
lcd.print(“DHT11 Thermometer”);//使屏幕显示文字DHT Thermometer
delay(500);//延时1000ms } void loop(){//LCD
Lcd.clear();//清屏
lcd.print(“DHT11 Thermometer”);//使屏幕显示文字LM35 Thermometer
lcd.setCursor(0, 1);//设置光标位置为第二行第一个位置
lcd.print((float)DHT11.humidity, 2);
//显示温度整数位
lcd.print(“% ”);
//显示小数点
lcd.print((float)DHT11.temperature, 2);//显示温度小数点后一位
lcd.print(“oC”);//显示o符号
Serial.println(“n”);
byte i;
int chk = DHT11.read(DHT11PIN);
Serial.print((float)DHT11.temperature, 2);
Serial.println(“ oC ”);//湿度大于60%
if(DHT11.humidity
{
digitalWrite(Led,LOW);} else {
digitalWrite(Led,HIGH);
delay(DHT11.humidity*0.2);
digitalWrite(Led,LOW);
delay(DHT11.humidity*0.1);}
/温度大于22度
if(DHT11.temperature>24)
{
for(i=0;i
{
digitalWrite(Buzzer,HIGH);//发声音
delay(15);//延时1ms
digitalWrite(Buzzer,LOW);//不发声音
delay(1);//延时ms
}
}
delay(1000);}