Índice:
- Etapa 1: Hardware necessário:
- Etapa 2: Conexão de Hardware:
- Etapa 3: Código para medição de umidade e temperatura:
- Etapa 4: Aplicativos:
Vídeo: Medição de umidade e temperatura usando HTS221 e Arduino Nano: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
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.
Neste tutorial, a interface do módulo sensor HTS221 com o arduino nano foi ilustrada. Para ler os valores de umidade e temperatura, usamos o arduino com um adaptador I2c. Este adaptador I2C torna a conexão ao módulo do sensor mais fácil e confiável.
Etapa 1: Hardware necessário:
Os materiais de que precisamos para cumprir nosso objetivo incluem os seguintes componentes de hardware:
1. HTS221
2. Arduino Nano
3. Cabo I2C
4. Escudo I2C para Arduino Nano
Etapa 2: Conexão de Hardware:
A seção de conexão de hardware explica basicamente as conexões de fiação necessárias entre o sensor e o arduino nano. Garantir as conexões corretas é a necessidade básica ao trabalhar em qualquer sistema para a saída desejada. Portanto, as conexões necessárias são as seguintes:
O HTS221 funcionará em I2C. Aqui está o diagrama de fiação de exemplo, demonstrando como conectar cada interface do sensor.
Fora da caixa, a placa é configurada para uma interface I2C, como tal, recomendamos usar esta conexão se você for agnóstico.
Você só precisa de quatro fios! São necessárias apenas quatro conexões dos pinos Vcc, Gnd, SCL e SDA e estes são conectados com a ajuda do cabo I2C.
Essas conexões são demonstradas nas fotos acima.
Etapa 3: Código para medição de umidade e temperatura:
Vamos começar com o código do Arduino agora.
Ao usar o módulo sensor com o Arduino, incluímos a biblioteca Wire.h. A biblioteca "Wire" contém as funções que facilitam a comunicação i2c entre o sensor e a placa Arduino.
Todo o código do Arduino é fornecido abaixo para a conveniência do usuário:
#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);
}
Na biblioteca de fios, Wire.write () e Wire.read () são usados para escrever os comandos e ler a saída do sensor.
Serial.print () e Serial.println () são usados para exibir a saída do sensor no monitor serial do IDE do Arduino.
A saída do sensor é mostrada na imagem acima.
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:
Medição de umidade e temperatura usando HIH6130 e Arduino Nano: 4 etapas
Medição de umidade e temperatura usando HIH6130 e Arduino Nano: HIH6130 é um sensor de umidade e temperatura com saída digital. Esses sensores fornecem um nível de precisão de ± 4% UR. Com estabilidade de longo prazo líder do setor, I2C digital com compensação de temperatura real, confiabilidade líder do setor, eficiência energética
Medição de temperatura e umidade usando HDC1000 e Arduino Nano: 4 etapas
Medição de temperatura e umidade usando HDC1000 e Arduino Nano: O HDC1000 é um sensor de umidade digital com sensor de temperatura integrado que fornece excelente precisão de medição em energia muito baixa. O dispositivo mede a umidade com base em um novo sensor capacitivo. Os sensores de umidade e temperatura são fac
Medição de umidade e temperatura usando HTS221 e Raspberry Pi: 4 etapas
Medição de umidade e temperatura usando HTS221 e Raspberry Pi: HTS221 é um sensor digital capacitivo ultracompacto para umidade relativa e temperatura. Inclui um elemento de detecção e um circuito integrado específico de aplicação de sinal misto (ASIC) para fornecer as informações de medição por meio do serial digital
Medição de umidade e temperatura usando HIH6130 e Raspberry Pi: 4 etapas
Medição de umidade e temperatura usando HIH6130 e Raspberry Pi: HIH6130 é um sensor de umidade e temperatura com saída digital. Esses sensores fornecem um nível de precisão de ± 4% UR. Com estabilidade de longo prazo líder do setor, I2C digital com compensação de temperatura real, confiabilidade líder do setor, eficiência energética
Medição de umidade e temperatura usando HTS221 e partícula de fóton: 4 etapas
Medição de umidade e temperatura usando HTS221 e partícula fotônica: HTS221 é um sensor digital capacitivo ultracompacto para umidade relativa e temperatura. Inclui um elemento de detecção e um circuito integrado específico de aplicação de sinal misto (ASIC) para fornecer as informações de medição por meio do serial digital