Sisukord:

Niiskuse ja temperatuuri mõõtmine HTS221 ja osakeste footoni abil: 4 sammu
Niiskuse ja temperatuuri mõõtmine HTS221 ja osakeste footoni abil: 4 sammu

Video: Niiskuse ja temperatuuri mõõtmine HTS221 ja osakeste footoni abil: 4 sammu

Video: Niiskuse ja temperatuuri mõõtmine HTS221 ja osakeste footoni abil: 4 sammu
Video: 3 в 1 ZigBee датчик температуры, влажности и освещения с LCD дисплеем 2024, Juuni
Anonim
Image
Image

HTS221 on ülikompaktne mahtuvuslik digitaalne andur suhtelise niiskuse ja temperatuuri jaoks. See sisaldab andurielementi ja segasignaalirakenduse spetsiifilist integraallülitust (ASIC), et edastada mõõtmisteavet digitaalsete jadaliideste kaudu. See on integreeritud nii paljude funktsioonidega, see on üks kõige sobivamaid andureid kriitilise niiskuse ja temperatuuri mõõtmiseks.

Selles õpetuses on illustreeritud HTS221 andurimooduli liidestamist osakeste footoniga. Niiskuse ja temperatuuri väärtuste lugemiseks oleme kasutanud osakesi koos I2c adapteriga. See I2C adapter muudab ühenduse andurimooduliga lihtsaks ja usaldusväärsemaks.

Samm: vajalik riistvara:

Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara

Eesmärgi saavutamiseks vajalikud materjalid sisaldavad järgmisi riistvarakomponente:

1. HTS221

2. Osakeste footon

3. I2C kaabel

4. I2C kilp osakeste footonile

2. samm: riistvara ühendamine:

Riistvara ühendamine
Riistvara ühendamine
Riistvara ühendamine
Riistvara ühendamine

Riistvara ühendamise jaotis selgitab põhimõtteliselt anduri ja osakeste footoni vahel vajalikke juhtmestiku ühendusi. Soovitud väljundi mis tahes süsteemiga töötamisel on põhivajadus õigete ühenduste tagamine. Seega on vajalikud ühendused järgmised:

HTS221 töötab üle I2C. Siin on näide ühendusskeemist, mis näitab, kuidas anduri iga liidest ühendada.

Valmis plaat on konfigureeritud I2C liidese jaoks, seega soovitame seda ühendamist kasutada, kui olete muidu agnostik.

Kõik, mida vajate, on neli juhtmest! Vaja on ainult nelja ühendust Vcc, Gnd, SCL ja SDA ning need ühendatakse I2C kaabli abil.

Neid seoseid on näidatud ülaltoodud piltidel.

3. samm: niiskuse ja temperatuuri mõõtmise kood:

Niiskuse ja temperatuuri mõõtmise kood
Niiskuse ja temperatuuri mõõtmise kood

Alustame nüüd osakeste koodiga.

Andurimooduli kasutamisel koos osakesega kaasame teeki application.h ja spark_wiring_i2c.h. Raamatukogu "application.h" ja spark_wiring_i2c.h sisaldab funktsioone, mis hõlbustavad i2c suhtlust anduri ja osakese vahel.

Kogu osakeste kood on kasutaja mugavuse huvides toodud allpool:

#kaasake

#kaasake

// HTS221 I2C aadress on 0x5F

#define Addr 0x5F

kahekordne niiskus = 0,0;

kahekordne cTemp = 0,0;

kahekordne fTemp = 0,0;

sisetemperatuur = 0;

tühine seadistus ()

{

// Määra muutuja

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

Osake.muutuja ("Niiskus", niiskus);

Particle.variable ("cTemp", cTemp);

// Initsialiseeri I2C side kui MASTER

Wire.begin ();

// Initsialiseeri jadaühendus, määrake edastuskiirus = 9600

Seriaalne algus (9600);

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Valige keskmine konfiguratsiooniregister

Wire.write (0x10);

// Temperatuuri keskmised proovid = 256, Niiskuse keskmised proovid = 512

Wire.write (0x1B);

// Peata I2C edastamine

Wire.endTransmission ();

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Valige juhtregister1

Wire.write (0x20);

// Toide sisse lülitatud, pidev värskendamine, andmete väljundkiirus = 1 Hz

Wire.write (0x85);

// Peata I2C edastamine

Wire.endTransmission ();

viivitus (300);

}

tühine tsükkel ()

{

allkirjastamata int andmed [2];

allkirjastamata int val [4];

allkirjastamata int H0, H1, H2, H3, T0, T1, T2, T3, toores;

// Niiskuse kõne väärtused

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((48 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Niiskuse andmete teisendamine

H0 = andmed [0] / 2;

H1 = andmed [1] / 2;

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((54 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Niiskuse andmete teisendamine

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

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((58 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Niiskuse andmete teisendamine

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

// Temperatuuri määramise väärtused

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write (0x32);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write (0x33);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write (0x35);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

toores = Wire.read ();

}

toores = toores & 0x0F;

// Teisendage temperatuurikõne väärtused 10-bitisteks

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

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

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((60 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Teisendage andmed

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

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((62 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Teisendage andmed

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

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write (0x28 | 0x80);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 4 baiti andmeid

Wire.requestFrom (Addr, 4);

// Loe 4 baiti andmeid

// niiskus msb, niiskus lsb, temp msb, temp lsb

kui (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Teisendage andmed

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

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

// Andmete väljastamine armatuurlauale

Particle.publish ("Suhteline niiskus:", String (niiskus));

viivitus (1000);

Particle.publish ("Temperatuur Celsiuse järgi:", String (cTemp));

viivitus (1000);

Particle.publish ("Temperatuur Fahrenheiti järgi:", String (fTemp));

viivitus (1000);

}

Funktsioon Particle.variable () loob muutujad anduri väljundi salvestamiseks ja Particle.publish () kuvab väljundi saidi armatuurlaual.

Anduri väljund on näidatud ülaltoodud pildil.

4. samm: rakendused:

Rakendused
Rakendused

HTS221 saab kasutada mitmesugustes tarbekaupades nagu õhuniisutajad ja külmikud jne. Seda andurit saab kasutada ka laiemal areenil, sealhulgas nutika kodu automatiseerimine, tööstusautomaatika, hingamisteede seadmed, varade ja kaupade jälgimine.

Soovitan: