Skip to content

Crea una Estación Meteorológica con Arduino y el Sensor DHT11

estación del clima meteorológica con arduino y dht11

Curso Gratis: 5 Proyectos de Arduino para Principiantes

Aprende a crear 5 sorprendentes y sencillos proyectos con Arduino:

– Reloj Binario
Detector de Intrusos
Piano Digital
Estación meteorológica
Lámpara Ambiental

Acerca del proyecto

¡Hola a todos amigos! En esta ocasión, les traigo este proyecto interesante para principiantes, el cual consiste en que puedas crear tu propia estación del clima con Arduino, desde cero, paso a paso, y como bien sabes, siempre dejándote los diagramas, componentes y código fuente para que no haya fallas.

¡Vamos a ello!

Video para crear una estación del clima con Arduino paso a paso

Si eres de los que disfrutan más un video tutorial con el paso a paso de la construcción del proyecto, te dejo el video de este proyecto. ¡Suscríbete!

Componentes necesarios para crear un piano con pulsadores en Arduino Uno

Este proyecto tiene 2 versiones, una en la cual se hace la visualización de información en el monitor serie. Para esta primer parte, los componentes requeridos son:

ComponentesRecomendación para adquirirlos
1 x Protoboardhttps://amzn.to/3lPU4rX
1 x Sensor DHT11 con PCBhttps://amzn.to/379rBbZ
3 x Jumpers macho – machohttps://amzn.to/32Zp9lK
1 x Arduino UNOhttps://amzn.to/3kRInzT

Si quieres agregar la pantalla LCD, debes utilizar esta lista:

ComponentesRecomendación para adquirirlos
1 x Protoboardhttps://amzn.to/3lPU4rX
1 x Sensor DHT11 con PCBhttps://amzn.to/379rBbZ
3 x cables de cobreCable UTP
1 x Shield LCD con Keypadhttps://amzn.to/340q1XF
1 x Arduino UNOhttps://amzn.to/3kRInzT

Diagrama de conexión del proyecto de una estación meteorológica con Arduino

El diagrama de conexión de este proyecto, es uno de los más sencillos, ya que únicamente tendremos que conectar el sensor DHT11 a nuestro Arduino. Este es el diagrama de conexión:

estaclión del clima con Arduino
estaclión del clima con Arduino

En mi caso, el sensor DHT11 tiene marcado únicamente el pin con un símolo S, lo que significa que es la señal, mientras que el pin central es el positivo y el de la derecha el negativo.:

estación del clima con arduino
estación del clima con arduino

Procederemos a insertar el sensor DHT11 al protoboard:

Vamos a conectar el la patilla negativa del sensor, al pin GND del Arduino:

Conectamos la patilla positiva a uno de los pines marcado con 5V del Arduino:

Y finalmente, conectamos la patilla de señal (marcada con la letra S), al pin # 2 del Arduino:

Integrando el Shield LCD al proyecto de la estación meteorológica con Arduino

En caso de querer conectar un display LCD, lo podemos hacer fácilmente con el Shield LCD. Tendremos que cambiar los jumpers, por cables de cobre, esto con el propósito de que podamos insertarlos entre el shield y los pines del Arduino, para evitar tener que soldar (Recordemos que es un proyecto para principiantes).

La conexión hacia los pines del Arduino queda exactamente de la misma forma.

Código fuente para hacer funcionar la estación meteorológica con Arduino

Para que el proyecto funcione, debemos instalar una biblioteca que nos facilitará las cosas muchísimo, se trata, de la biblioteca “DHT Sensor Library” por Adafruit. Podemos encontrarla yéndonos a “Herramientas” y a continuación “Administrar bibliotecas”:

Una vez hecho esto, buscaremos la palabra clave “dht”, lo que nos arrojará un listado con varias bibliotecas con ese nombre. Debemos fijarnos de instalar la biblioteca correcta:

Una vez hecho esto, podemos utilizar el siguiente código fuente para hacer funcionar el Arduino (puede que tengas que reiniciar el IDE de Arduino):

#include <DHT.h>

int dhtPin = 2;

DHT dht(dhtPin, DHT11);  // esto es igual a 11, https://github.com/adafruit/DHT-sensor-library/blob/master/DHT.h

void setup() 
{
  Serial.begin(9600);
  dht.begin();
  delay(5000);
}

void loop() 
{
  delay(5000);

  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  float temperatureF = dht.readTemperature(true);

  if(isnan(humidity) || isnan(temperature) || isnan(temperatureF))
  {
    Serial.println("Error en la lectura del sensor");
    return;
  }

  float hic = dht.computeHeatIndex(temperature, humidity, false);
  float hif = dht.computeHeatIndex(temperatureF, humidity);  
  
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print("%  Temperature: ");
  Serial.print(temperature);
  Serial.print("°C ");
  Serial.print(temperatureF);
  Serial.print("°F  Heat index: ");
  Serial.print(hic);
  Serial.print("°C ");
  Serial.print(hif);
  Serial.println("°F");  
}

Este código fuente, sirve para mostrar los valores por el monitor serie, el cual debes abrir para ir viendo los diferentes valores arrojados por el sensor DHT11:

Código fuente para la versión de la estación del clima con pantalla LCD

En dado caso de que quieras realizar el proyecto con la pantalla LCD, deberás instalar también la biblioteca DHT, tal como describí anteriormente. Luego de esto, deberás utilizar el siguiente código fuente:

#include <DHT.h>
#include <LiquidCrystal.h>

int dhtPin = 2;

DHT dht(dhtPin, DHT11);

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() 
{
  Serial.begin(9600);
  dht.begin();

  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.print("Weather Station");
  delay(5000);
}

void loop() 
{
  delay(5000);

  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  float temperatureF = dht.readTemperature(true);

  if(isnan(humidity) || isnan(temperature) || isnan(temperatureF))
  {
    Serial.println("Error en la lectura del sensor");
    return;
  }

  float hic = dht.computeHeatIndex(temperature, humidity, false);
  float hif = dht.computeHeatIndex(temperatureF, humidity);

  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print("% Temperature: ");
  Serial.print(temperature);
  Serial.print("°C ");
  Serial.print(temperatureF);
  Serial.print("°F Heat Index: ");
  Serial.print(hic);
  Serial.print("°C ");
  Serial.print(hif);
  Serial.println("°F");

  lcd.setCursor(0,0);
  lcd.print("H: ");
  lcd.print((int)humidity);
  lcd.print("% T: ");
  lcd.print((int)temperature);
  lcd.print("\xDF" "C ");
  lcd.setCursor(0,1);
  lcd.print("HI: ");
  lcd.print(hic);
  lcd.print("\xDF" "C ");
}

Explicaciones generales del código fuente de la estación del Clima con Arduino

Algunos puntos que debes saber sobre el código fuente son:

DHT dht(dhtPin, DHT11);: Esta línea, lo que hace es crear un objeto, ó una pieza especial de código, tomado a partir de la biblioteca que instalamos de Adafruit, y permite simplificar las llamadas del sensor. El primer parámetro, dhtPin, es la variable que hace referencia al pin # 2, mientras que el valor “DHT11”, hace referencia al tipo de sensor, ya que podríamos ocupar un sensor 12, un 22, ó un 21. A continuación, te muestro un poco de las tripas de la biblioteca que instalamos, el cual define precisamente los valores que podríamos utilizar:

dht.begin();: Esta parte inicializa la biblioteca, es indispensable llamar este método para que todo se inicialice de forma correcta.

dht.readHumidity();: Se lee la humedad del sensor.

dht.readTemperature();: Se lee la temperatura en grados centígrados.

dht.readTemperature(true);: Se lee la temperatura en grados Fahrenheit.

dht.computeHeatIndex(temperature, humidity, false);: Permite obtener el Índice de Calor, pasándole la temperatura, humedad, y si está en grados fahrenheit o no, en este ejemplo, no.

Ya con esto, podremos ver nuestro proyecto funcioando. Espero te sea de utilidad.

¡Saludos!