En el artículo de hoy nos vamos a ir preparando para un futuro montaje de una estación metereológica en un colegio, que publicará los datos obtenidos de los diferentes sensores conectados en una página web para que puedan estar accesibles a todo el alumnado. con sólo abrir un navegador. Pero antes de mostrar el proyecto completo, comenzaremos explicando alguno de los componentes que utilizaremos.
Uno de los sensores que utilizaremos en la estación será un sensor que nos valdrá para tomar valores reales de temperatura y humedad. Hay muchos en el mercado entorno a Arduino, pero uno de los más conocidos es el DHT-22, el cual lleva ya desarrollada su propia librería para que sea mucho más sencilla la programación. Este sensor lleva en su interior un procesador que es el que se encarga de calcular estos valores a partir de la entrada que conectaremos a un pin digital. No es un sensor de alta precisión (su coste ronda los 2,5€) pero sí nos servirá para hacernos una idea muy aproximada.
El montaje es muy sencillo ya que sólo tenemos que conectar un cable a GND, otro a Vcc y otro al pin digital que queramos utilizar para recoger estos datos. Necesitaremos poner una resistencia de 10K entre Vcc y este pin digital.
En cuanto al programa, recordar que en primer lugar tenéis que añadir la librería del dispositivo DHT-sensor-library-master ( y esta segunda que necesita la otra librería DHT Adafruit_Sensor-master ) desde el menú Programa-incluir libreria-añadir desde fichero .zip).
El código es muy corto, pero hay dos partes importantes a mencionar. Por un lado las funciones para leer los valores de humedad y temperatura y guardarlos en sus respectivas variables. Y por otra parte, tenemos que ir descubriendo instrucciones para controlar si se producen errores en las lecturas de los valores. En este caso utilizaremos la función isnan(), que nos devolverá un “1” en el caso de que el valor no sea numérico, síntoma de que habrá un error en la lectura.
El código sería el siguiente, y lo tenéis comentado entre líneas:
//MEDIDOR DE TEMPERATURA Y HUMEDAD
//www.openlanuza.com
#include "DHT.h"
#define DHTPIN 8 // pin al que hemos conectado el sensor 22
/* creamos el objeto DHT para utilizar sus funciones, especificando que nuestro
modelo es el DHT22. Existen otros como el DHT11
*/
DHT dht(DHTPIN, DHT22);
void setup() {
Serial.begin(9600);
Serial.println("Probando sensor!");
//inicializamos sensor con la función begin()
dht.begin();
}
void loop() {
// Hacemos pausa de dos segundos antes de cada nueva medición
//al sensor le cuesta 250ms leer estos datos
delay(2000);
//leemos humedad
float h = dht.readHumidity();
// usamos variables tipo float para guardar valores decimales
// Leemos temperatura
float t = dht.readTemperature();
// Comprobamos si las lecturas pueden dar algún fallo mediante la función isnan()
// Esta función devuelve un 1 en caso de que el valor no sea numérico
// Los caracteres || son como un OR. Si se cumple una de las dos condiciones mostramos error
if (isnan(h) || isnan(t)) {
Serial.println("Fallo en la lectura del sensor DHT!");
return;
}
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C\t ");
}
Podréis ver que es bien sencilla la práctica de hoy. En la siguiente sesión explicaremos cómo conectar un módulo WiFi, y de esta forma dar conectividad a nuestro montaje y poder publicar los datos de nuestros sensores en una página web.
A continuación, Marcos Borobia os explicará con detalle como podéis hacer este práctico montaje.
1 comentario sobre «Sensor de temperatura y humedad»