Índice:

Arduino Nano - HTS221 Umidade Relativa e Sensor Tutorial: 4 etapas
Arduino Nano - HTS221 Umidade Relativa e Sensor Tutorial: 4 etapas

Vídeo: Arduino Nano - HTS221 Umidade Relativa e Sensor Tutorial: 4 etapas

Vídeo: Arduino Nano - HTS221 Umidade Relativa e Sensor Tutorial: 4 etapas
Vídeo: Particle Photon - HTS221 Relative Humidity and Temperature Sensor Tutorial 2024, Novembro
Anonim
Image
Image

O HTS221 é um sensor digital capacitivo ultracompacto para umidade relativa e temperatura. Inclui um elemento de detecção e um circuito integrado específico de aplicativo de sinal misto (ASIC) para fornecer as informações de medição por meio de interfaces seriais digitais. Integrado com tantos recursos, este é um dos sensores mais apropriados para medições críticas de umidade e temperatura. Aqui está a demonstração com o arduino nano.

Etapa 1: O que você precisa..

O que você precisa..!!
O que você precisa..!!

1. Arduino Nano

2. HTS221

3. Cabo I²C

4. Escudo I²C para Arduino Nano

Etapa 2: Conexões:

Conexões
Conexões
Conexões
Conexões
Conexões
Conexões
Conexões
Conexões

Pegue um escudo I2C para Arduino Nano e empurre-o suavemente sobre os pinos do Nano.

Em seguida, conecte uma extremidade do cabo I2C ao sensor HTS221 e a outra extremidade à blindagem I2C.

As conexões são mostradas na imagem acima.

Etapa 3: Código:

Código
Código

O código do arduino para HTS221 pode ser baixado de nosso repositório github- DCUBE Community.

Aqui está o link para o mesmo:

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

Incluímos a biblioteca Wire.h para facilitar a comunicação I2c do sensor com a placa Arduino.

Você também pode copiar o código daqui, ele é fornecido da seguinte forma:

// Distribuído com uma licença de livre arbítrio.

// Use-o como quiser, com ou sem lucro, desde que se enquadre nas licenças das suas obras associadas.

// HTS221

// Este código é projetado para funcionar com o Mini Módulo HTS221_I2CS I2C

#incluir

// O endereço HTS221 I2C é 0x5F

#define Addr 0x5F

void setup ()

{

// Inicializar a comunicação I2C como MASTER

Wire.begin ();

// Inicialize a comunicação serial, defina a taxa de transmissão = 9600

Serial.begin (9600);

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Selecione o registro de configuração média

Wire.write (0x10);

// Amostras médias de temperatura = 256, Amostras médias de umidade = 512

Wire.write (0x1B);

// Pare a transmissão I2C

Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Selecione o registro de controle1

Wire.write (0x20);

// Power ON, atualização contínua, taxa de saída de dados = 1 Hz

Wire.write (0x85);

// Pare a transmissão I2C

Wire.endTransmission ();

atraso (300);

}

void loop ()

{

dados internos não assinados [2];

sem sinal int val [4];

sem sinal int H0, H1, H2, H3, T0, T1, T2, T3, bruto;

// Valores de umidade e calibrações

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

{

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Enviar registro de dados

Wire.write ((48 + i));

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr, 1);

// Lê 1 byte de dados

if (Wire.available () == 1)

{

dados = Wire.read ();

}

}

// Converter dados de umidade

H0 = dados [0] / 2;

H1 = dados [1] / 2;

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

{

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Enviar registro de dados

Wire.write ((54 + i));

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr, 1);

// Lê 1 byte de dados

if (Wire.available () == 1)

{

dados = Wire.read ();

}

}

// Converter dados de umidade

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

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

{

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Enviar registro de dados

Wire.write ((58 + i));

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr, 1);

// Lê 1 byte de dados

if (Wire.available () == 1)

{

dados = Wire.read ();

}

}

// Converter dados de umidade

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

// Valores de calliberation de temperatura

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Enviar registro de dados

Wire.write (0x32);

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr, 1);

// Lê 1 byte de dados

if (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Enviar registro de dados

Wire.write (0x33);

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr, 1);

// Lê 1 byte de dados

if (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Enviar registro de dados

Wire.write (0x35);

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr, 1);

// Lê 1 byte de dados

if (Wire.available () == 1)

{

raw = Wire.read ();

}

raw = raw & 0x0F;

// Converta os valores de calibração de temperatura para 10 bits

T0 = ((bruto & 0x03) * 256) + T0;

T1 = ((bruto & 0x0C) * 64) + T1;

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

{

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Enviar registro de dados

Wire.write ((60 + i));

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr, 1);

// Lê 1 byte de dados

if (Wire.available () == 1)

{

dados = Wire.read ();

}

}

// Converta os dados

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

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

{

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Enviar registro de dados

Wire.write ((62 + i));

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr, 1);

// Lê 1 byte de dados

if (Wire.available () == 1)

{

dados = Wire.read ();

}

}

// Converta os dados

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

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr);

// Enviar registro de dados

Wire.write (0x28 | 0x80);

// Pare a transmissão I2C

Wire.endTransmission ();

// Solicita 4 bytes de dados

Wire.requestFrom (Addr, 4);

// Lê 4 bytes de dados

// umidade msb, umidade lsb, temp msb, temp lsb

if (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Converta os dados

umidade flutuante = (val [1] * 256,0) + val [0];

umidade = ((1,0 * H1) - (1,0 * H0)) * (1,0 * umidade - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

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

float cTemp = (((T1 - T0) / 8,0) * (temp - T2)) / (T3 - T2) + (T0 / 8,0);

float fTemp = (cTemp * 1.8) + 32;

// Dados de saída para monitor serial

Serial.print ("Umidade relativa:");

Serial.print (umidade);

Serial.println ("% RH");

Serial.print ("Temperatura em Celsius:");

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

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

Serial.print (fTemp);

Serial.println ("F");

atraso (500);

}

Etapa 4: Aplicativos:

O HTS221 pode ser empregado em vários produtos de consumo, como umidificadores de ar e geladeiras, etc. Este sensor também pode ser aplicado em uma área mais ampla, incluindo automação residencial inteligente, automação industrial, equipamentos respiratórios, rastreamento de bens e mercadorias.

Recomendado: