Taula de continguts:

Arduino Nano - Tutorial del sensor de temperatura i humitat relativa HTS221: 4 passos
Arduino Nano - Tutorial del sensor de temperatura i humitat relativa HTS221: 4 passos

Vídeo: Arduino Nano - Tutorial del sensor de temperatura i humitat relativa HTS221: 4 passos

Vídeo: Arduino Nano - Tutorial del sensor de temperatura i humitat relativa HTS221: 4 passos
Vídeo: AMT1001 with Nokia5110 for Temperature and Humidity Sensor. 2024, Desembre
Anonim
Image
Image

HTS221 és un sensor digital capacitiu ultra compacte per a humitat relativa i temperatura. Inclou un element de detecció i un circuit integrat específic d’aplicació de senyal mixta (ASIC) per proporcionar la informació de mesurament a través d’interfícies serials digitals. Integrat amb tantes funcions, aquest és un dels sensors més adequats per a mesuraments crítics d’humitat i temperatura. Aquí teniu la demostració amb arduino nano.

Pas 1: el que necessiteu..

Què necessites..!!
Què necessites..!!

1. Arduino Nano

2. HTS221

3. Cable I²C

4. Escut I²C per a Arduino Nano

Pas 2: connexions:

Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions

Agafeu un escut I2C per a Arduino Nano i empenyeu-lo suaument sobre els passadors de Nano.

A continuació, connecteu un extrem del cable I2C al sensor HTS221 i l’altre extrem al blindatge I2C.

Les connexions es mostren a la imatge superior.

Pas 3: Codi:

Codi
Codi

El codi arduino per a HTS221 es pot descarregar des del nostre repositori de github, la comunitat DCUBE.

Aquí teniu l’enllaç per al mateix:

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

Incloem la biblioteca Wire.h per facilitar la comunicació I2c del sensor amb la placa Arduino.

També podeu copiar el codi des d’aquí, es dóna de la següent manera:

// Distribuïda amb llicència de lliure voluntat.

// Utilitzeu-lo de la manera que vulgueu, sense ànim de lucre o de franc, sempre que encaixi en les llicències de les obres associades.

// HTS221

// Aquest codi està dissenyat per funcionar amb el mini mòdul HTS221_I2CS I2C

#incloure

// L'adreça I2C HTS221 és 0x5F

#define Addr 0x5F

configuració nul·la ()

{

// Inicialitzar la comunicació I2C com a MASTER

Wire.begin ();

// Inicialitzar la comunicació en sèrie, establir la velocitat de transmissió = 9600

Serial.begin (9600);

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Seleccioneu un registre de configuració mitjà

Wire.write (0x10);

// Mostres mitjanes de temperatura = 256, mostres mitjanes d’humitat = 512

Wire.write (0x1B);

// Atura la transmissió I2C

Wire.endTransmission ();

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Seleccioneu control register1

Wire.write (0x20);

// Encès, actualització contínua, velocitat de sortida de dades = 1 Hz

Wire.write (0x85);

// Atura la transmissió I2C

Wire.endTransmission ();

retard (300);

}

bucle buit ()

{

dades int sense signar [2];

unsigned int val [4];

sense signar int H0, H1, H2, H3, T0, T1, T2, T3, en brut;

// Valors de calibratge d’humitat

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((48 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades d’humitat

H0 = dades [0] / 2;

H1 = dades [1] / 2;

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((54 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades d’humitat

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

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((58 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades d’humitat

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

// Valors de calibratge de temperatura

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write (0x32);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write (0x33);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write (0x35);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

raw = Wire.read ();

}

raw = raw & 0x0F;

// Converteix els valors de calibratge de temperatura a 10 bits

T0 = ((en brut & 0x03) * 256) + T0;

T1 = ((en brut & 0x0C) * 64) + T1;

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((60 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades

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

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((62 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades

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

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write (0x28 | 0x80);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 4 bytes de dades

Wire.requestFrom (Addr, 4);

// Llegiu 4 bytes de dades

// humitat msb, humitat 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 ();

}

// Converteix les dades

humitat flotant = (val [1] * 256,0) + val [0];

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

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

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

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

// Sortida de dades al monitor sèrie

Serial.print ("Humitat relativa");

Serial.print (humitat);

Serial.println ("% RH");

Serial.print ("Temperatura en centígrads");

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

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

Serial.print (fTemp);

Serial.println ("F");

retard (500);

}

Pas 4: aplicacions:

HTS221 es pot utilitzar en diversos productes de consum com humidificadors d'aire i neveres, etc. Aquest sensor també troba la seva aplicació en un àmbit més ampli, inclosa la domòtica intel·ligent, l'automatització industrial, els equips respiratoris, el seguiment d'actius i mercaderies.

Recomanat: