Uso de dos sensores de humedad y temperatura HTU21DF más con Arduino

Uso de dos sensores de humedad y temperatura HTU21DF más con Arduino

En este tutorial, aprenderemos cómo conectar y utilizar dos sensores de temperatura y humedad HTU21DF con un Arduino. El sensor HTU21DF es conocido por su precisión y bajo consumo de energía, lo que lo hace ideal para diversas aplicaciones. Al final de este tutorial, podrás leer los valores de temperatura y humedad de ambos sensores y mostrarlos en el monitor serie.

HTU21D module

Para comenzar, analizaremos brevemente los componentes de hardware involucrados en este proyecto. Los sensores HTU21DF se comunican a través de I2C, lo que requiere solo dos líneas de datos además de las conexiones de alimentación y tierra. El Arduino leerá los datos del sensor e imprimirá los resultados en el monitor serial, lo que te permitirá observar los cambios en temperatura y humedad en tiempo real.

Para una comprensión más clara del proceso de cableado y codificación, considera ver el video asociado (en el video a las 01:30). ¡Vamos a profundizar en los detalles!

Hardware Explicado

El componente principal de este proyecto es el sensor HTU21DF, que mide la temperatura y la humedad relativa. Este sensor opera utilizando comunicación I2C, lo que simplifica el cableado al necesitar solo dos líneas de datos. Es capaz de medir temperaturas desde -40°C hasta 125°C y niveles de humedad del 0% al 100% con una resolución del 0.04%.

Cuando el sensor no está midiendo activamente, consume solo 0.04 µA, lo que lo hace adecuado para aplicaciones con batería. Al medir, el consumo de corriente es de alrededor de 400 µA, lo cual sigue siendo relativamente bajo para la mayoría de los proyectos.

Detalles de la hoja de datos

FabricanteTE Connectivity
Número de parteHTU21DF
Voltaje de lógica/IO1.5 - 3.6 V
Tensión de suministro3.3 V
Corriente de salida (por canal)0.4 mA (medición)
Corriente de pico (por canal)450 µA (máx)
Orientación sobre la frecuencia PWMNo aplicable
Umbrales de lógica de entrada0.3 x VDDa 0.7 x VDD
Caída de voltaje / RDS(en)/ saturaciónN/A
Límites térmicos-40°C a +125°C
PaqueteDFN de 6 pines
Notas / variantesDisponible en diferentes tamaños de paquete.

  • Fuente de alimentación: 3.3 V recomendado para un rendimiento óptimo.
  • Conecta SCL al pin de reloj I2C (A5 en Arduino UNO).
  • Conecta SDA al pin de datos I2C (A4 en Arduino UNO).
  • Asegúrese de realizar una conexión adecuada para evitar entradas flotantes.
  • Monitorea el consumo actual durante la medición para gestionar la duración de la batería.
  • Considere utilizar resistencias de pull-up si es necesario para las líneas I2C.

Instrucciones de cableado

Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor

Para cablear los sensores HTU21DF, comienza conectando el VCCconecte el pin de cada sensor al pin de 3.3 V en el Arduino. A continuación, conecte el pin GND de cada sensor a una tierra común. Para la comunicación I2C, conecte el pin SDA de ambos sensores al pin A4 en el Arduino y el pin SCL al pin A5. Asegúrese de que los sensores estén alimentados correctamente y de que las conexiones de datos sean seguras para facilitar la comunicación.

Si está utilizando sensores o componentes adicionales, asegúrese de que su cableado no interfiera con el bus I2C. Los sensores HTU21DF se pueden conectar en paralelo al mismo bus I2C, lo que permite que el Arduino lea datos de ambos sensores sin confusión.

Ejemplos de código y guía paso a paso

El siguiente código inicializa los sensores HTU21DF y lee sus valores de temperatura y humedad. Primero, incluimos las bibliotecas necesarias y creamos instancias para ambos sensores:

#include 
#include "Adafruit_HTU21DF.h"

Adafruit_HTU21DF htu1 = Adafruit_HTU21DF(); // create object for first sensor
Adafruit_HTU21DF htu2 = Adafruit_HTU21DF(); // create object for second sensor

El código anterior configura las bibliotecas requeridas y crea dos objetos de sensor,htu1yhtu2, que se utilizará para leer datos de cada sensor de forma independiente.

Siguiente, en elsetup()función, inicializamos el monitor serial y verificamos si los sensores están conectados:

void setup() {
  Serial.begin(9600);
  if (!htu1.begin() || !htu2.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);
  }
}

Esta sección del código inicializa la comunicación serie a 9600 baudios y verifica si ambos sensores están funcionando. Si no se detecta un sensor, imprimirá un mensaje de error y detendrá el programa.

En el bucle principal, leemos los valores de temperatura y humedad de ambos sensores y los mostramos:

void loop() {
    float temp1 = htu1.readTemperature();
    float rel_hum1 = htu1.readHumidity();
    float temp2 = htu2.readTemperature();
    float rel_hum2 = htu2.readHumidity();

    Serial.print("Sensor 1 Temp: "); Serial.print(temp1); Serial.print(" C");
    Serial.print("\tSensor 1 Humidity: "); Serial.print(rel_hum1); Serial.println(" %");
    Serial.print("Sensor 2 Temp: "); Serial.print(temp2); Serial.print(" C");
    Serial.print("\tSensor 2 Humidity: "); Serial.print(rel_hum2); Serial.println(" %");
    delay(500);
}

Este bucle lee y imprime continuamente la temperatura y la humedad de ambos sensores cada 500 milisegundos. Puedes observar cómo cambian los valores en respuesta a las condiciones ambientales.

Demostración / Qué Esperar

Cuando ejecutes el código, el monitor serie mostrará los valores de temperatura y humedad de ambos sensores. Puedes aplicar calor, como el de una pistola de calor, para observar cómo aumentan las lecturas de temperatura mientras que los niveles de humedad pueden disminuir (en el video a las 12:30). Si la temperatura supera el límite máximo medible de 125°C, el sensor puede devolver cero o un error, indicando que no puede leer el valor.

Ten en cuenta los errores de cableado, como conexiones invertidas o entradas flotantes, que pueden llevar a lecturas incorrectas. Siguiendo los pasos descritos en este tutorial, deberías poder implementar con éxito los sensores HTU21DF y monitorear sus lecturas de manera efectiva.

Tiempos de video

  • 00:00- Introducción
  • 01:30- Explicación del cableado
  • 02:45- Explicación del código
  • 12:30- Demostración con pistola de calor
  • 14:00- Conclusión

Imágenes

thumb_robojax_HTU21DF_types-1756423961-8524
thumb_robojax_HTU21DF_types-1756423961-8524
Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor
HTU21D module
HTU21D module
HTU21D module-back
HTU21D module-back
212-Arduino code using HTU21D-F Humidity & Temperature Sensor (basic)
Idioma: C++
¡Copiado!

Cosas que podrías necesitar

Recursos y referencias

Archivos📁

Hoja de datos (pdf)