Arduino am2301


El sensor de temperatura y humedad AM2301 cuenta con una buena resolución al momento de obtener los datos, es muy usado para aprender a programar con arduino.

oscar Escrito por oscar 01 November 2019 7222 0

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 (-)
Arduino AM2301 schem
Arduino AM2301 schem

 

Arduino AM2301 breadboard
Arduino AM2301 breadboard

 

Arduino AM2301 foto
Arduino AM2301 foto

 

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.

  1. Cargamos la librería del DHT21, esta tiene que estar guardada en el equipo.
  2. Con la variables DHTPIN definimos el pin de datos que va a hacer el dos y la variable DHTTYPE definimos el tipo de sensor a usar que es el DHT21.
  3. 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.
  4. Inicializamos el puerto serial y el modulo DHT con begin.
  5. Con readHumidity() obtenemos la humedad y la almacenamos en una variable de tipo flotante.
  6. Con readTemperature() obtenemos la temperatura en grados celsius y la almacenamos en una variable de tipo flotante.
  7. Con readTemperature(true) obtenemos la temperatura en grados fahrenheit y la almacenamos en una variable de tipo flotante.
  8. Validamos si obtubimos resultados en las lecturas anteriores, si da error o no tenemos datos mostramos un error por consola.
  9. 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.
  10. 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.

AM2301 resultado en consola
AM2301 resultado en consola

 


Comentario

Debe aceptar antes de enviar