Índice:

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 de fóton: 4 etapas

Vídeo: Medição de umidade e temperatura usando HTS221 e partícula de fóton: 4 etapas

Vídeo: Medição de umidade e temperatura usando HTS221 e partícula de fóton: 4 etapas
Vídeo: Webinar: Potencializando a Indústria 4.0 com tecnologias ST 2024, Junho
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.

Neste tutorial, a interface do módulo sensor HTS221 com o fóton de partícula foi ilustrada. Para ler os valores de umidade e temperatura, usamos partículas 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:

Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário

Os materiais de que precisamos para cumprir nosso objetivo incluem os seguintes componentes de hardware:

1. HTS221

2. Partícula de fóton

3. Cabo I2C

4. Escudo I2C para partícula de fóton

Etapa 2: Conexão de Hardware:

Conexão de hardware
Conexão de hardware
Conexão de hardware
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 fóton da partícula. 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:

Código para medição de umidade e temperatura
Código para medição de umidade e temperatura

Vamos começar com o código da partícula agora.

Ao usar o módulo sensor com a partícula, incluímos a biblioteca application.h e spark_wiring_i2c.h. A biblioteca "application.h" e spark_wiring_i2c.h contém as funções que facilitam a comunicação i2c entre o sensor e a partícula.

Todo o código da partícula é fornecido abaixo para a conveniência do usuário:

#incluir

#incluir

// O endereço HTS221 I2C é 0x5F

#define Addr 0x5F

umidade dupla = 0,0;

cTemp duplo = 0,0;

fTemp duplo = 0,0;

int temp = 0;

void setup ()

{

// Definir variável

Particle.variable ("i2cdevice", "HTS221");

Partícula.variable ("Umidade", umidade);

Particle.variable ("cTemp", cTemp);

// 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 = (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 = (val [3] * 256) + val [2]; cTemp = (((T1 - T0) / 8,0) * (temp - T2)) / (T3 - T2) + (T0 / 8,0);

fTemp = (cTemp * 1,8) + 32;

// Saída de dados para o painel

Particle.publish ("Umidade relativa:", String (umidade));

atraso (1000);

Particle.publish ("Temperatura em Celsius:", String (cTemp));

atraso (1000);

Particle.publish ("Temperatura em Fahrenheit:", String (fTemp));

atraso (1000);

}

A função Particle.variable () cria as variáveis para armazenar a saída do sensor e a função Particle.publish () exibe a saída no painel do site.

A saída do sensor é mostrada na imagem acima para sua referência.

Etapa 4: Aplicativos:

Formulários
Formulários

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: