资源描述
接口与控制课程设计
基于Arduino温湿度测量仪
指引教师: 纪建伟 付立思
班级: 14级农业电气化一班
成员: 刘晓旭 徐梓桐 杨康佳
信息与电气工程学院
12月
目录
摘要 1
第一章 课程设计基本思路 2
第二章 单元模块设计信息 2
2.1面包板 2
2.2杜邦线 3
2.3 DHT11数字温湿度传感器模块 4
2.4电位器 6
2.5 1602lcd字符型液晶显示屏 6
2.6 Arduino Uno r3 微解决器 7
2.7色环电阻 8
2.8 9v电源 8
2.9 LCD引脚接线1602采用原则16脚接口,其中: 8
第三章 设计程序及注释 10
第四章 设计实物图及成果展示 15
第五章 总结 16
5.1本次设计进程中遇到问题及解决办法 16
5.2本次设计心得体会 16
摘要
本次设计是基于Arduino Uno r3为控制核心,结合dht11数字温湿度传感器模块、1602LCD字符型液晶显示屏温湿度测量仪。该系统用于检测空气中温湿度并传递到LCD显示屏上。其量程温度为0~50℃,量程湿度为20-90%RH。
核心词:Arduino 温湿度测量 LCD
第一章 课程设计基本思路
本次设计为实现对空气中温湿度测量,咱们筹划选用以Arduino为核心,其她模块为基本,以积木式办法搭建出整个硬件系统。为此咱们先学习了Arduino控制板上各引脚功能及用途,再学习温湿度传感器和arduino之间信息传递方式,发现dht11输出是数字信号,Arduino可直接通过数字引脚采集传感器输出温湿度数据。最后,咱们学习LCD各引脚功能,以实现Arduino采集温湿度数据信息显示。
第二章 单元模块设计信息
2.1面包板
面包板是由于板子上有诸多小插孔,专为电子电路无焊接实验设计制造。由于各种电子元器件可依照需要随意插入或拔出,免除了焊接,节约了电路组装时间,并且元件可以重复使用,因此非常适合电子电路组装、调试和训练。
面包板得名可以追溯到真空管电路年代,当时电路元器件大都体积较大, 人们普通通过螺丝和钉子将她们固定在一块切面包用木板上进行连接,日后电路元器件体积越来越小,但面包板名称沿用了下来。
面包板就是有母板作为底座,并且电源接入有专用接线柱,甚至有些可以进行高压实验尚有地线接线柱面包实验板。这种板子使用起来比较以便,就是把电源直接接入接线柱,然后单面包板插入元件进行实验(插元件过程中要断开电源)遇到多于5个元件或一组插孔插不下时,就需要用面包板连接线(也叫面包线,见参照资料)把多组插孔连接起来。
2.2杜邦线
是美国杜邦公司生产有特殊效用缝纫线。
电子行业杜邦线可用于实验板引脚扩展,增长实验项目等。可以非常牢固地和插针连接,无需焊接,可以迅速进行电路实验。
2.3 DHT11数字温湿度传感器模块
DHT11数字温湿度传感器是一款具有已校准数字信号输出温湿度复合传感器。它应用专用数字模块采集技术和温湿度传感技术,保证产品具备极高可靠性与卓越长期稳定性,成本低、相对湿度和温度测量、超快响应、抗干扰能力强、超长信号传播距离、数字信号输出、精准校准。传感器涉及一种电阻式感湿元件和一种NTC 测温元件,并与一种高性能8位单片机相连接。可用于暖通空调、除湿器、测试及检测设备、消费品、汽车、自动控制、数据记录器、气象站、家电、湿度调节器、医疗、其她有关湿度检测控制。
产品参数:
相对湿度辨别率:16Bit
重 复 性:±1%RH
精 度:25℃ ±5%RH
互 换 性:可完全互换
响应时间:1/e(63%)25℃ 6s 1m/s空气 6s
迟 滞:<±0.3%RH
长期稳定性:<±0.5%RH/yr
温度辨别率:16Bit
重 复 性:±0.2℃
量程范畴:25℃ ±2℃
响应时间:1/e(63%) 10S
电气特性供电:DC 3.5~5.5V
供电电流:测量0.3mA
待机 60μA 采
样周期:次 不不大于2秒
引脚阐明 1、VDD 供电3.5~5.5V DC
2、DATA 串行数据,单总线
3、NC 空脚
4、GND 接地,电源负极
我司生产湿敏电阻湿度传感器器是采用有机高分子材料一种新型湿度敏感元件,具备感湿范畴宽,响应迅速,抗污染能力强,无需加热清洗及长期使用性能稳定可靠等诸多特点。
本设计中,采用是dht11数字温湿度传感器模块,可以直插直用。
2.4电位器
电位器是具备三个引出端、阻值可按某种变化规律调节电阻元件。电位器普通由电阻体和可移动电刷构成。当电刷沿电阻体移动时,在输出端即获得与位移量成一定关系电阻值或电压。
电位器既可作三端元件使用也可作二端元件使用。后者可视作一可变电阻器,由于它在电路中作用是获得与输入电压(外加电压)成一定关系得输出电压,因而称之为电位器。
2.5 1602lcd字符型液晶显示屏
1602是字符型液晶,它是16*2显示。每个字符由5乘7点阵构成。
1602字符型LCD普通有14条引脚线或16条引脚线LCD,多余来2条线是背光电源线。引脚阐明:VCC(15脚)和地线GND(16脚),其控制原理与14脚LCD完全同样。
2.6 Arduino Uno r3 微解决器
Arduino是一款便捷灵活、以便上手开源电子原型平台。包括硬件(各种型号Arduino板)和软件(Arduino IDE)。由一种欧洲开发团队于冬季开发。其成员涉及Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti。
它构建于开放原始码simple I/O介面版,并且具备使用类似Java、C语言Processing/Wiring开发环境。重要包括两个重要某些:硬件某些是可以用来做电路连接Arduino电路板;此外一种则是Arduino IDE,你计算机中程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
Arduino能通过各种各样传感器来感知环境,通过控制灯光、马达和其她装置来反馈、影响环境。板子上微控制器可以通过Arduino编程语言来编写程序,编译成二进制文献,烧录进微控制器。对Arduino编程是运用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现。基于Arduino项目,可以只包括Arduino,也可以包括Arduino和其她某些在PC上运营软件,她们之间进行通信 (例如 Flash, Processing, MaxMSP)来实现。
2.7色环电阻
色环电阻,是在电阻封装上(即电阻表面)涂上一定颜色色环,来代表这个电阻阻值。
2.8 9v电源
2.9 LCD引脚接线1602采用原则16脚接口,其中:
第1脚:VSS为电源地
第2脚:VCC接5V电源正极
第3脚:V0为液晶显示屏对比度调节端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一种10K电位器调节对比度)。
第4脚:RS为寄存器选取,高电平1时选取数据寄存器、低电平0时选取指令寄存器。
第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。
第7~14脚:D0~D7为8位双向数据端。
第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。
LCD引脚
Arduino引脚编号
RS
4号引脚
EN
5号引脚
D4
6号引脚
D5
7号引脚
D6
8号引脚
D7
9号引脚
Arduino2号引脚与DHT11 data引脚相连
LCD3号引脚与电位器相连,起对比度调节作用
LCD15号引脚可以串联恰当大小电阻来调节其背光亮度
第三章 设计程序及注释
// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
#include "DHT.h"
#include <LiquidCrystal.h>//包括头文献
#define DHTPIN 2 // what digital pin we're connected to
// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
const int POT=10;
const int TH=11;
LiquidCrystal lcd(4,5,6,7,8,9);
//用接口引脚编号初始化库
//自定义温度标记符
byte degree[8]={
B00110,
B01001,
B01001,
B00110,
B00000,
B00000,
B00000,
B00000,
};
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors. This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
//设立10 11号引脚输出5v电压
lcd.begin(16,2);
pinMode(POT,OUTPUT);
pinMode(TH,OUTPUT);
digitalWrite(POT,HIGH);
digitalWrite(TH,HIGH);
//生成自定义字符
lcd.createChar(0,degree);
//在LCD上输出一条静态消息
lcd.setCursor(0,0);
lcd.print("Temp :");
lcd.setCursor(10,0);
lcd.write((byte)0);
lcd.setCursor(11,0);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Hum :");
lcd.setCursor(10,1);
lcd.print("%");
}
void loop() {
// Wait a few seconds between measurements.
delay();
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
int h = dht.readHumidity();
// Read temperature as Celsius (the default)
int t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = puteHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = puteHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" C ");
Serial.print(f);
Serial.print(" F\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" C ");
Serial.print(hif);
Serial.println(" F");
//向lcd输出数据
lcd.setCursor(8,0);
lcd.print(t);
lcd.setCursor(8,1);
lcd.print(h);
第四章 设计实物图及成果展示
第五章 总结
5.1本次设计进程中遇到问题及解决办法
在仿真过程中,设计前期咱们筹划使用仿真软件proteus来进行硬件搭建前仿真测试,但是在本设计中咱们使用了各种模块进行了积木式搭建,用仿真软件反而增大了设计复杂限度。故咱们直接选取用硬件来实现本次设计。
在向LCD输出数据时,第一次输出时LCD只有第一行有输出,第二行处在未工作状态。并且在输出成果时,第二行成果将程序中规定第一行输出值某些覆盖,导致输出信息混乱状态。因素是在程序中没有对LCD初始化进行设立。解决方案是void setup()函数中增长一行代码,使LCD显示16×2个字符,其代码是 lcd.begin(16,2);
5.2本次设计心得体会
通过本次设计,咱们初步掌握了arduino基本知识和程序修改。LCD引脚设立,自定义字符显示。结识到arduino功能强大和便捷及继续学习重要性。若有机会,将此设计改进如下:使用XBee收发器进行无线通信。LCD在不同温湿度时显示不同符号,例如:在25℃,湿度为30%时显示太阳符号。
展开阅读全文