Tabla de contenido:

Arduino Nano - Tutorial del sensor de temperatura y humedad relativa HTS221: 4 pasos
Arduino Nano - Tutorial del sensor de temperatura y humedad relativa HTS221: 4 pasos

Video: Arduino Nano - Tutorial del sensor de temperatura y humedad relativa HTS221: 4 pasos

Video: Arduino Nano - Tutorial del sensor de temperatura y humedad relativa HTS221: 4 pasos
Video: Arduino Nano - HTS221 Relative Humidity and Temperature Sensor Tutorial 2024, Noviembre
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. Aquí está la demostración con arduino nano.

Paso 1: ¡¡Lo que necesitas …

Que necesitas..!!
Que necesitas..!!

1. Arduino Nano

2. HTS221

3. Cable I²C

4. Escudo I²C para Arduino Nano

Paso 2: Conexiones:

Conexiones
Conexiones
Conexiones
Conexiones
Conexiones
Conexiones
Conexiones
Conexiones

Tome un protector I2C para Arduino Nano y empújelo suavemente sobre los pines de Nano.

Luego, conecte un extremo del cable I2C al sensor HTS221 y el otro extremo al blindaje I2C.

Las conexiones se muestran en la imagen de arriba.

Paso 3: Código:

Código
Código

El código arduino para HTS221 se puede descargar desde nuestro repositorio github- Comunidad DCUBE.

Aquí está el enlace para el mismo:

github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino

Incluimos biblioteca Wire.h para facilitar la comunicación I2c del sensor con la placa Arduino.

También puede copiar el código desde aquí, se proporciona de la siguiente manera:

// Distribuido con licencia de libre albedrío.

// Úselo de la forma que desee, lucrativa o gratuita, siempre que encaje en las licencias de sus obras asociadas.

// HTS221

// Este código está diseñado para funcionar con el mini módulo HTS221_I2CS I2C

#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);

}

Paso 4: 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: