Tabla de contenido:

Medición de humedad y temperatura con HTS221 y Arduino Nano: 4 pasos
Medición de humedad y temperatura con HTS221 y Arduino Nano: 4 pasos

Video: Medición de humedad y temperatura con HTS221 y Arduino Nano: 4 pasos

Video: Medición de humedad y temperatura con HTS221 y Arduino Nano: 4 pasos
Video: Estación meteorológica con Arduino nano 33 BLE Sense. Presión, temperatura y humedad con Arduino. 2024, Mes de julio
Anonim
Image
Image

HTS221 es un sensor digital capacitivo ultracompacto para humedad relativa y temperatura. Incluye un elemento sensor y un circuito integrado específico de aplicación de señal mixta (ASIC) para proporcionar la información de medición a través de interfaces seriales digitales. Integrado con tantas características, este es uno de los sensores más apropiados para mediciones críticas de humedad y temperatura.

En este tutorial se ha ilustrado la interfaz del módulo sensor HTS221 con arduino nano. Para leer los valores de humedad y temperatura, hemos utilizado arduino con un adaptador I2c. Este adaptador I2C hace que la conexión al módulo sensor sea fácil y más confiable.

Paso 1: Hardware necesario:

Hardware requerido
Hardware requerido
Hardware requerido
Hardware requerido
Hardware requerido
Hardware requerido

Los materiales que necesitamos para lograr nuestro objetivo incluyen los siguientes componentes de hardware:

1. HTS221

2. Arduino Nano

3. Cable I2C

4. Escudo I2C para Arduino Nano

Paso 2: Conexión de hardware:

Conexión de hardware
Conexión de hardware
Conexión de hardware
Conexión de hardware

La sección de conexión de hardware básicamente explica las conexiones de cableado necesarias entre el sensor y el arduino nano. Asegurar las conexiones correctas es la necesidad básica al trabajar en cualquier sistema para obtener la salida deseada. Entonces, las conexiones requeridas son las siguientes:

El HTS221 funcionará sobre I2C. Aquí está el diagrama de cableado de ejemplo, que demuestra cómo cablear cada interfaz del sensor.

Fuera de la caja, la placa está configurada para una interfaz I2C, por lo que recomendamos usar esta conexión si, por lo demás, es agnóstico.

¡Todo lo que necesitas son cuatro cables! Solo se requieren cuatro conexiones Vcc, Gnd, SCL y pines SDA y estos se conectan con la ayuda del cable I2C.

Estas conexiones se muestran en las imágenes de arriba.

Paso 3: Código para la medición de temperatura y humedad:

Código para medición de temperatura y humedad
Código para medición de temperatura y humedad

Comencemos ahora con el código Arduino.

Mientras usamos el módulo de sensor con Arduino, incluimos la biblioteca Wire.h. La biblioteca "Wire" contiene las funciones que facilitan la comunicación i2c entre el sensor y la placa Arduino.

El código completo de Arduino se proporciona a continuación para la conveniencia del usuario:

#incluir

// La dirección HTS221 I2C es 0x5F

#define Addr 0x5F

configuración vacía ()

{

// Inicializar la comunicación I2C como MASTER

Wire.begin ();

// Inicializar la comunicación en serie, configurar la velocidad en baudios = 9600

Serial.begin (9600);

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de configuración promedio

Wire.write (0x10);

// Muestras promedio de temperatura = 256, Muestras promedio de humedad = 512

Wire.write (0x1B);

// Detener la transmisión I2C

Wire.endTransmission ();

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de control1

Wire.write (0x20);

// Encendido, actualización continua, velocidad de salida de datos = 1 Hz

Wire.write (0x85);

// Detener la transmisión I2C

Wire.endTransmission ();

retraso (300);

}

bucle vacío ()

{

datos int sin firmar [2];

unsigned int val [4];

unsigned int H0, H1, H2, H3, T0, T1, T2, T3, sin procesar;

// Valores de calibración de humedad

para (int i = 0; i <2; i ++)

{

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Enviar registro de datos

Wire.write ((48 + i));

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 1 byte de datos

Wire.requestFrom (Dirección, 1);

// Leer 1 byte de datos

si (Cable disponible () == 1)

{

datos = Wire.read ();

}

}

// Convertir datos de humedad

H0 = datos [0] / 2;

H1 = datos [1] / 2;

para (int i = 0; i <2; i ++)

{

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Enviar registro de datos

Wire.write ((54 + i));

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 1 byte de datos

Wire.requestFrom (Dirección, 1);

// Leer 1 byte de datos

si (Cable disponible () == 1)

{

datos = Wire.read ();

}

}

// Convertir datos de humedad

H2 = (datos [1] * 256,0) + datos [0];

para (int i = 0; i <2; i ++)

{

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Enviar registro de datos

Wire.write ((58 + i));

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 1 byte de datos

Wire.requestFrom (Dirección, 1);

// Leer 1 byte de datos

si (Cable disponible () == 1)

{

datos = Wire.read ();

}

}

// Convertir datos de humedad

H3 = (datos [1] * 256,0) + datos [0];

// Valores de calibración de temperatura

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Enviar registro de datos

Wire.write (0x32);

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 1 byte de datos

Wire.requestFrom (Dirección, 1);

// Leer 1 byte de datos

si (Cable disponible () == 1)

{

T0 = Wire.read ();

}

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Enviar registro de datos

Wire.write (0x33);

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 1 byte de datos

Wire.requestFrom (Dirección, 1);

// Leer 1 byte de datos

si (Cable disponible () == 1)

{

T1 = Wire.read ();

}

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Enviar registro de datos

Wire.write (0x35);

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 1 byte de datos

Wire.requestFrom (Dirección, 1);

// Leer 1 byte de datos

si (Cable disponible () == 1)

{

raw = Wire.read ();

}

raw = raw & 0x0F;

// Convierta los valores de calibración de temperatura a 10 bits

T0 = ((sin procesar y 0x03) * 256) + T0;

T1 = ((sin procesar y 0x0C) * 64) + T1;

para (int i = 0; i <2; i ++)

{

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Enviar registro de datos

Wire.write ((60 + i));

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 1 byte de datos

Wire.requestFrom (Dirección, 1);

// Leer 1 byte de datos

si (Cable disponible () == 1)

{

datos = Wire.read ();

}

}

// Convertir los datos

T2 = (datos [1] * 256,0) + datos [0];

para (int i = 0; i <2; i ++)

{

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Enviar registro de datos

Wire.write ((62 + i));

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 1 byte de datos

Wire.requestFrom (Dirección, 1);

// Leer 1 byte de datos

si (Cable disponible () == 1)

{

datos = Wire.read ();

}

}

// Convertir los datos

T3 = (datos [1] * 256,0) + datos [0];

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Enviar registro de datos

Wire.write (0x28 | 0x80);

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 4 bytes de datos

Wire.requestFrom (Addr, 4);

// Leer 4 bytes de datos

// humedad msb, humedad lsb, temp msb, temp lsb

if (Cable disponible () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Convertir los datos

humedad de flotación = (val [1] * 256.0) + val [0];

humedad = ((1.0 * H1) - (1.0 * H0)) * (1.0 * humedad - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);

int temp = (val [3] * 256) + val [2];

flotar cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

float fTemp = (cTemp * 1.8) + 32;

// Salida de datos al monitor en serie

Serial.print ("Humedad relativa:");

Serial.print (humedad);

Serial.println ("% RH");

Serial.print ("Temperatura en grados Celsius:");

Serial.print (cTemp); Serial.println ("C");

Serial.print ("Temperatura en Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

retraso (500);

}

En la biblioteca de cables, Wire.write () y Wire.read () se utilizan para escribir los comandos y leer la salida del sensor.

Serial.print () y Serial.println () se utilizan para mostrar la salida del sensor en el monitor en serie del IDE de Arduino.

La salida del sensor se muestra en la imagen de arriba.

Paso 4: Aplicaciones:

Aplicaciones
Aplicaciones

El HTS221 se puede emplear en varios productos de consumo como humidificadores de aire y refrigeradores, etc. Este sensor también encuentra su aplicación en un ámbito más amplio, como la automatización del hogar inteligente, la automatización industrial, los equipos respiratorios, el seguimiento de bienes y activos.

Recomendado: