Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* TITULO: Medir humedad y temperatura con sensor DHT11.
- AUTOR:
- MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
- - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
- - TWITTER: https://twitter.com/MarianoCampoGa
- - CORREO: marianodc83@gmail.com
- DESCRIPCIÓN DEL PROGRAMA
- Con este programa obtenemos la humedad y la temperatura ambientes, a través del monitor serie
- del IDE de Arduino y también a través de un LCD 1602 mediante comunicación I2C. Además también
- se obtiene un pequeño historial de los valores máximos y mínimos tanto de humedad como temperatura,
- aunque estos desaparezcan cuando desconectamos la alimentación de la placa o presionamos el botón
- de reset.
- ESQUEMA DE CONEXION
- +-----+
- +----[PWR]-------------------| USB |--+
- | +-----+ |
- | GND/RST2 [ ][ ] |
- | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | SCL del módulo I2C conectado al LCD 1602
- | 5V/MISO2 [ ][ ] A4/SDA[ ] | SDA del módulo I2C conectado al LCD 1602
- | AREF[ ] |
- | GND[ ] |
- | [ ]N/C SCK/13[ ] |
- | [ ]IOREF MISO/12[ ] |
- | [ ]RST MOSI/11[ ]~|
- | [ ]3V3 +---+ 10[ ]~|
- | [ ]5v -| A |- 9[ ]~|
- | [ ]GND -| R |- 8[ ] |
- | [ ]GND -| D |- |
- | [ ]Vin -| U |- 7[ ] | Terminal "S" del sensor DHT11 (izquierda)
- | -| I |- 6[ ]~|
- | [ ]A0 -| N |- 5[ ]~|
- | [ ]A1 -| O |- 4[ ] |
- | [ ]A2 +---+ INT1/3[ ]~|
- | [ ]A3 INT0/2[ ] |
- | [ ]A4/SDA RST SCK MISO TX>1[ ] |
- | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] |
- | [ ] [ ] [ ] |
- | UNO_R3 GND MOSI 5V ____________/
- \_______________________/
- NOTAS:
- - La alimentación y la masa del módulo LCM 1602 I2C V1 van directamente conectadas a VCC (+5V) y GND
- respectivamente.
- - Alimentación y masa del módulo sensor DHT11.
- - Terminal "+" (central) --> VCC (3,3-5V).
- - Terminal "-" (derecho) --> GND.
- */
- // sensor DHT11 de humedad y temperatura
- #include <Wire.h> // Librería para la comunicación I2C
- #include <LiquidCrystal_I2C.h> // Librería LCD I2C
- #include "DHT.h" // Librería para el sensor DHT
- #define DHTPIN 7 // Pin digital para la señal del sensor DHT11
- // Tipo de sensor DHT que vamos a utilizar (DHT11, DHT21, DHT22)
- #define DHTTYPE DHT11 // Tipo DHT11
- // Declaración del objeto para el sensor DHT11
- DHT dht(DHTPIN, DHTTYPE); //Indica el pin con el que trabajamos y el tipo de sensor
- // Variables para el funcionamiento interno del programa
- int maxh=0, minh=100, maxt=0, mint=100;
- // Declaración del objeto para el LCD
- // Terminales de conexión del LCD
- // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
- LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
- void setup()
- {
- Serial.begin(9600); // Configura la velocidad de la comunicación serie
- lcd.begin(16,2); // Inicializa el LCD para 16x2
- lcd.backlight(); // Enciende la luz de fondo del LCD (BackLight)
- dht.begin(); // Iniciamos la comunicación con el sensor
- Serial.println("< Comprobando el funcionamiento del Sensor DHT11 >"); // Mensaje de inicio para el monitor serie.
- lcd.setCursor(0,0);
- lcd.print("< Sensor DHT11 >"); // Mensaje de inicio para el LCD
- delay(2000);
- }
- void loop()
- {
- // La lectura de la temperatura o de la humedad lleva sobre 250 milisegundos
- // La lectura del sensor tambien puede estar sobre los 2 segundos (es un sensor muy lento)
- int h = dht.readHumidity(); //Guarda la lectura de la humedad en la variable "h"
- int t = dht.readTemperature(); //Guarda la lectura de la temperatura en la variable "t"
- // Comprobamos si lo que devuelve el sensor es valido, si no son numeros algo esta fallando
- if (isnan(t) || isnan(h)) // funcion que comprueba si son numeros las variables indicadas
- {
- Serial.println("Fallo al leer del sensor DHT"); // Mostramos mensaje de fallo si no son numeros
- lcd.print("Fallo sensor DHT");
- }
- else
- {
- // Mostramos mensaje con valores actuales de humedad y temperatura, asi como maximos y minimos de cada uno de ellos
- // Presentamos la humedad y temperatura a través del monitor serie
- Serial.print("\nTemperatura: ");
- Serial.print(t);
- Serial.println("C\t");
- Serial.print("Humedad relativa: ");
- Serial.print(h);
- Serial.print("%\n");
- // Presentamos la humedad y temperatura en el LCD 1602
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print(">Temperatura ");
- lcd.print(t);
- lcd.print("C");
- lcd.setCursor(0,1);
- lcd.print(">Humedad ");
- lcd.print(h);
- lcd.print("%");
- delay(2000);
- // Comprobacion de maximos y minimos de temperatura y humedad
- if (maxt<t)
- maxt=t;
- if (t<mint)
- mint=t;
- if (maxh<h)
- maxh=h;
- if (h<minh)
- minh=h;
- // Presentamos los máximos y mínimos a través del monitor serie
- Serial.print("Max T: ");
- Serial.print(maxt);
- Serial.print("C ");
- Serial.print("Min T: ");
- Serial.print(mint);
- Serial.println("C\t");
- Serial.print("Max H: ");
- Serial.print(maxh);
- Serial.print("% ");
- Serial.print("Min H: ");
- Serial.print(minh);
- Serial.print("%\n");
- // Presentamos los máximos y mínimos en el LCD 1602
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print(">TM:");
- lcd.print(maxt);
- lcd.print("C ");
- lcd.print(">tm:");
- lcd.print(mint);
- lcd.print("C");
- lcd.setCursor(0,1);
- lcd.print(">HM:");
- lcd.print(maxh);
- lcd.print("% ");
- lcd.print(">hm:");
- lcd.print(minh);
- lcd.print("%");
- delay(2000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement