Vídeo
A continuación, encontrara el vídeo en donde se explica el funcionamiento del circuito.
Acerca del proyecto
Vamos a trabajar con un sensor de temperatura y humedad con una buena resolución al momento de obtener los datos, en un post pasado usamos el dht11 el cual, muy usado para aprender a programar con arduino, la diferencia con el am2301 es su robustez y su precición. Para este sensor usaremos la misma librería y la misma conexión, no cambia con respecto al dht11, solo que en el código hay que tener en cuenta de seleccionar el modulo correcto.
Conocimiento previo
Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.
Proyecto | Descripción |
---|---|
Líbreria DHT | En este post encontrara a detalle las funciones de la librería, donde esta la descripción parámetros que necesita un ejemplo de como usarla. |
AM2301 datasheet | Si necesita mas información del sensor con el post del datasheet podrá obtener detalle adicional como las especificaciones técnicas, pines y conexión del sensor. |
Arduino dht11 | Con este post te puede guiar ya que la conexión y el código son prácticamente similares. |
AM2301
Este sensor de temperatura y humedad es una versión del DHT21, en un gran cuerpo de plástico. Es un sensor de temperatura y humedad digital básico y de bajo costo. Utiliza un sensor de humedad capacitivo y un termistor para medir el aire circundante, y escupe una señal digital en el pin de datos (no se necesitan pines de entrada analógica). Es bastante simple de usar, pero requiere un tiempo cuidadoso para obtener datos. El único inconveniente real de este sensor es que solo puede obtener nuevos datos una vez cada 2 segundos.
Especificaciones técnicas
- Voltaje de Operación: 3.5V - 5.5V DC
- Consumo corriente: 1mA - 1.5mA
- Rango de Temperatura: -40 hasta 80°C
- Precisión Temperatura: +- 0.5°C
- Resolución Temperatura: 0.1°C
- Rango de Humedad Relativa: 0 a 100% RH
- Precisión HR: +- 3%
- Resolución Humedad: 0.1%RH
- Tiempo de sensado: 2s
Materiales
Para este proyecto vamos a usar los siguientes componentes, que son los básicos con las que se enseñan la programación de arduino.
Material | Cantidad | Descripción |
---|---|---|
Arduino | 1 | Controlador del proyecto |
Sensor AM2301 | 1 | Sensor de temperatura y humedad |
Conexión del AM2301
Para este proyecto estamos usando el modulo del am2301, el cual ya trae incorporada la resistencia, pero si no tiene el modulo y esta trabajando con el sensor debe realizar la conexión como se muestra en la siguiente imagen.
Arduino | Modulo |
---|---|
5v | Pin 1 (+) |
Pin 2 | Pin 2 (out) |
GND | Pin 3 (-) |
Código
A continuación tenemos el código con la funcionalidad.
//Paso 1
#include "DHT.h"
//Paso 2
#define DHTPIN 2
#define DHTTYPE DHT21 // DHT21 (AM2301)
//Paso 3
DHT dht(DHTPIN, DHTTYPE);
void setup() {
//Paso 4
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
}
void loop() {
delay(2000);
//Paso 5
float h = dht.readHumidity();
//Paso 6
float t = dht.readTemperature();
//Paso 7
float f = dht.readTemperature(true);
//Paso 8
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//Paso 9
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
//Paso 10
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");
}
Funcionamiento
A continuación explicamos los pasos del código anterior.
- Cargamos la librería del
DHT21
, esta tiene que estar guardada en el equipo. - Con la variables
DHTPIN
definimos el pin de datos que va a hacer el dos y la variableDHTTYPE
definimos el tipo de sensor a usar que es el DHT21. - Obtenemos la instancia del objeto de la clase DHT, donde le pasamos como parámetros la declaración del pin y del tipo de sensor a usar.
- Inicializamos el puerto serial y el modulo DHT con
begin
. - Con
readHumidity()
obtenemos la humedad y la almacenamos en una variable de tipo flotante. - Con
readTemperature()
obtenemos la temperatura en grados celsius y la almacenamos en una variable de tipo flotante. - Con
readTemperature(true)
obtenemos la temperatura en grados fahrenheit y la almacenamos en una variable de tipo flotante. - Validamos si obtubimos resultados en las lecturas anteriores, si da error o no tenemos datos mostramos un error por consola.
- Con
computeHeatIndex()
obtenemos la sensación térmica del ambiente, esta se calcula con la temperatura y humedad, nos puede devolver los valores en grados celsius o fahrenheit. - Por último imprimimos por la terminal serial todos los valores obtenidos para poder visualizar la temperatura y humedad.
Por ultimo en la siguiente imagen se muestra el resultado que se muestra por la consola.