Innholdsfortegnelse:

Måling av fuktighet og temperatur ved bruk av HTS221 og partikkelfoton: 4 trinn
Måling av fuktighet og temperatur ved bruk av HTS221 og partikkelfoton: 4 trinn

Video: Måling av fuktighet og temperatur ved bruk av HTS221 og partikkelfoton: 4 trinn

Video: Måling av fuktighet og temperatur ved bruk av HTS221 og partikkelfoton: 4 trinn
Video: Zigbee датчик освещенности, температуры и влажности с экраном на электронных чернилах Moes 2024, Juni
Anonim
Image
Image

HTS221 er en ultrakompakt kapasitiv digital sensor for relativ fuktighet og temperatur. Den inneholder et følerelement og en spesifikk integrert krets (ASIC) for blandet signal for å gi måleinformasjonen gjennom digitale serielle grensesnitt. Integrert med så mange funksjoner, dette er en av de mest passende sensorene for kritiske fuktighets- og temperaturmålinger.

I denne opplæringen har grensesnittet mellom HTS221 -sensormodulen og partikkelfoton blitt illustrert. For å lese fuktighets- og temperaturverdiene har vi brukt partikkel med en I2c -adapter. Denne I2C -adapteren gjør tilkoblingen til sensormodulen enkel og mer pålitelig.

Trinn 1: Nødvendig maskinvare:

Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves

Materialene vi trenger for å nå målet vårt inkluderer følgende maskinvarekomponenter:

1. HTS221

2. Partikkelfoton

3. I2C -kabel

4. I2C -skjerm for partikkelfoton

Trinn 2: Maskinvaretilkobling:

Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling

Maskinvarekoblingsdelen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og partikkelfotonet. Å sikre riktige tilkoblinger er den grunnleggende nødvendigheten mens du arbeider på et hvilket som helst system for ønsket utgang. Så de nødvendige tilkoblingene er som følger:

HTS221 fungerer over I2C. Her er eksempel på koblingsskjema, som viser hvordan du kobler til hvert grensesnitt på sensoren.

Uten boksen er brettet konfigurert for et I2C-grensesnitt, derfor anbefaler vi å bruke denne tilkoblingen hvis du ellers er agnostiker.

Alt du trenger er fire ledninger! Bare fire tilkoblinger kreves Vcc, Gnd, SCL og SDA -pinner, og disse er koblet til ved hjelp av I2C -kabel.

Disse sammenhengene er vist på bildene ovenfor.

Trinn 3: Kode for fuktighet og temperaturmåling:

Kode for fuktighet og temperaturmåling
Kode for fuktighet og temperaturmåling

La oss begynne med partikkelkoden nå.

Mens vi bruker sensormodulen med partikkelen, inkluderer vi application.h og spark_wiring_i2c.h biblioteket. "application.h" og spark_wiring_i2c.h biblioteket inneholder funksjonene som letter i2c -kommunikasjonen mellom sensoren og partikkelen.

Hele partikkelkoden er gitt nedenfor for brukerens bekvemmelighet:

#inkludere

#inkludere

// HTS221 I2C -adressen er 0x5F

#define Addr 0x5F

dobbel fuktighet = 0,0;

dobbel cTemp = 0,0;

dobbel fTemp = 0,0;

int temp = 0;

ugyldig oppsett ()

{

// Angi variabel

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

Partikkel.variabel ("Fuktighet", fuktighet);

Particle.variable ("cTemp", cTemp);

// Initialiser I2C -kommunikasjon som MASTER

Wire.begin ();

// Initialiser seriell kommunikasjon, sett overføringshastighet = 9600

Serial.begin (9600);

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg gjennomsnittlig konfigurasjonsregister

Wire.write (0x10);

// Temperatur gjennomsnittlige prøver = 256, Fuktighets gjennomsnittsprøver = 512

Wire.write (0x1B);

// Stopp I2C -overføring

Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg kontrollregister1

Wire.write (0x20);

// Strøm PÅ, kontinuerlig oppdatering, datautgangshastighet = 1 Hz

Wire.write (0x85);

// Stopp I2C -overføring

Wire.endTransmission ();

forsinkelse (300);

}

hulrom ()

{

usignerte int -data [2];

usignert int val [4];

usignert int H0, H1, H2, H3, T0, T1, T2, T3, rå;

// Verdier for fuktighetskalliberasjon

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

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((48 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fuktighetsdata

H0 = data [0] / 2;

H1 = data [1] / 2;

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

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((54 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fuktighetsdata

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

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

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((58 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fuktighetsdata

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

// Temperaturoppkallingsverdier

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x32);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x33);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x35);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

raw = Wire.read ();

}

rå = rå & 0x0F;

// Konverter temperaturoppkallingsverdiene til 10-bits

T0 = ((rå & 0x03) * 256) + T0;

T1 = ((rå & 0x0C) * 64) + T1;

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

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((60 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene

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

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

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((62 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene

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

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x28 | 0x80);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 4 byte med data

Wire.requestFrom (Addr, 4);

// Les 4 byte med data

// fuktighet msb, fuktighet lsb, temp msb, temp lsb

hvis (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Konverter dataene

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

fuktighet = ((1,0 * H1) - (1,0 * H0)) * (1,0 * fuktighet - 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;

// Utdata til dashbordet

Particle.publish ("Relativ fuktighet:", String (fuktighet));

forsinkelse (1000);

Particle.publish ("Temperatur i Celsius:", String (cTemp));

forsinkelse (1000);

Particle.publish ("Temperatur i Fahrenheit:", String (fTemp));

forsinkelse (1000);

}

Particle.variable () -funksjonen oppretter variablene for å lagre sensorens utgang og Particle.publish () -funksjonen viser utgangen på dashbordet til nettstedet.

Sensorutgangen er vist på bildet ovenfor for din referanse.

Trinn 4: Søknader:

Applikasjoner
Applikasjoner

HTS221 kan brukes i forskjellige forbrukerprodukter som luftfuktere og kjøleskap etc. Denne sensoren finner også sin anvendelse på en bredere arena, inkludert smart hjemmeautomatisering, industriell automatisering, åndedrettsutstyr, eiendeler og varesporing.

Anbefalt: