Tartalomjegyzék:

Páratartalom és hőmérséklet mérés HTS221 és részecskefoton használatával: 4 lépés
Páratartalom és hőmérséklet mérés HTS221 és részecskefoton használatával: 4 lépés

Videó: Páratartalom és hőmérséklet mérés HTS221 és részecskefoton használatával: 4 lépés

Videó: Páratartalom és hőmérséklet mérés HTS221 és részecskefoton használatával: 4 lépés
Videó: Xiaomi Mi Temperature and Humidity Monitor hőmérséklet és páratartalom mérő 2024, Június
Anonim
Image
Image

A HTS221 egy ultrakompakt kapacitív digitális érzékelő a relatív páratartalomhoz és a hőmérséklethez. Tartalmaz egy érzékelő elemet és egy vegyes jelműspecifikus integrált áramkört (ASIC) a mérési információk digitális soros interfészeken keresztül történő biztosítására. Sok funkcióval integrálva ez az egyik legmegfelelőbb érzékelő a kritikus páratartalom és hőmérséklet mérésekhez.

Ebben az oktatóanyagban szemléltetjük a HTS221 érzékelő modul és a részecskefoton illesztését. A páratartalom és a hőmérséklet értékek leolvasásához részecskéket használtunk I2c adapterrel. Ez az I2C adapter megkönnyíti és megbízhatóbbá teszi a kapcsolatot az érzékelőmodullal.

1. lépés: Szükséges hardver:

Szükséges hardver
Szükséges hardver
Szükséges hardver
Szükséges hardver
Szükséges hardver
Szükséges hardver

A célunk eléréséhez szükséges anyagok a következő hardverkomponenseket tartalmazzák:

1. HTS221

2. Foton részecske

3. I2C kábel

4. I2C pajzs részecske fotonhoz

2. lépés: Hardver csatlakoztatása:

Hardver csatlakoztatása
Hardver csatlakoztatása
Hardver csatlakoztatása
Hardver csatlakoztatása

A hardvercsatlakozási szakasz alapvetően elmagyarázza az érzékelő és a részecskefoton között szükséges vezetékeket. A megfelelő kapcsolatok biztosítása az alapvető szükséglet, amikor bármilyen rendszeren dolgozik a kívánt kimenet érdekében. Tehát a szükséges kapcsolatok a következők:

A HTS221 az I2C -n keresztül fog működni. Íme a példa kapcsolási rajz, amely bemutatja, hogyan kell bekötni az érzékelő egyes interfészeit.

A doboz készenlétben I2C interfészre van konfigurálva, ezért javasoljuk, hogy használja ezt a csatlakozást, ha egyébként agnosztikus.

Csak négy vezetékre van szüksége! Csak négy csatlakozóra van szükség Vcc, Gnd, SCL és SDA csapokra, és ezeket I2C kábel segítségével kell csatlakoztatni.

Ezeket az összefüggéseket a fenti képek mutatják be.

3. lépés: A páratartalom és a hőmérséklet mérésének kódja:

A páratartalom és a hőmérséklet mérésének kódja
A páratartalom és a hőmérséklet mérésének kódja

Kezdjük most a részecske kóddal.

Miközben az érzékelőmodult a részecskével együtt használjuk, az application.h és a spark_wiring_i2c.h könyvtárat tartalmazza. Az "application.h" és a spark_wiring_i2c.h könyvtár azokat a funkciókat tartalmazza, amelyek megkönnyítik az i2c kommunikációt az érzékelő és a részecske között.

A teljes szemcsekódot az alábbiakban adjuk meg a felhasználó kényelme érdekében:

#befoglalni

#befoglalni

// A HTS221 I2C címe 0x5F

#define Addr 0x5F

kettős páratartalom = 0,0;

kettős cTemp = 0,0;

kettős fTemp = 0,0;

int temp = 0;

üres beállítás ()

{

// Változó beállítása

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

Particle.variable ("Páratartalom", páratartalom);

Particle.variable ("cTemp", cTemp);

// Inicializálja az I2C kommunikációt MASTER -ként

Wire.begin ();

// Inicializálja a soros kommunikációt, állítsa be az átviteli sebességet = 9600

Sorozat.kezdet (9600);

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Válassza ki az átlagos konfigurációs regisztert

Wire.write (0x10);

// Hőmérsékleti átlagminták = 256, Páratartalom átlagos minták = 512

Wire.write (0x1B);

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Vezérlőregiszter kiválasztása1

Wire.write (0x20);

// Bekapcsolás, folyamatos frissítés, adatkimeneti sebesség = 1 Hz

Wire.write (0x85);

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

késleltetés (300);

}

üres hurok ()

{

előjel nélküli int adatok [2];

unsigned int val [4];

előjel nélküli int H0, H1, H2, H3, T0, T1, T2, T3, nyers;

// Páratartalom hívásértékek

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

{

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter küldése

Wire.write ((48 + i));

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// 1 bájt adat kérése

Wire.requestFrom (Addr, 1);

// 1 bájt adat olvasása

ha (Wire.available () == 1)

{

adatok = Wire.read ();

}

}

// Nedvesség adatok konvertálása

H0 = adatok [0] / 2;

H1 = adatok [1] / 2;

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

{

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter küldése

Wire.write ((54 + i));

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// 1 bájt adat kérése

Wire.requestFrom (Addr, 1);

// 1 bájt adat olvasása

ha (Wire.available () == 1)

{

adatok = Wire.read ();

}

}

// Nedvesség adatok konvertálása

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

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

{

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter küldése

Wire.write ((58 + i));

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// 1 bájt adat kérése

Wire.requestFrom (Addr, 1);

// 1 bájt adat olvasása

ha (Wire.available () == 1)

{

adatok = Wire.read ();

}

}

// Nedvesség adatok konvertálása

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

// Hőmérséklet -mérési értékek

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter küldése

Wire.write (0x32);

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// 1 bájt adat kérése

Wire.requestFrom (Addr, 1);

// 1 bájt adat olvasása

ha (Wire.available () == 1)

{

T0 = huzal.olvasás ();

}

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter küldése

Wire.write (0x33);

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// 1 bájt adat kérése

Wire.requestFrom (Addr, 1);

// 1 bájt adat olvasása

ha (Wire.available () == 1)

{

T1 = huzal.olvasás ();

}

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter küldése

Wire.write (0x35);

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// 1 bájt adat kérése

Wire.requestFrom (Addr, 1);

// 1 bájt adat olvasása

ha (Wire.available () == 1)

{

nyers = Wire.read ();

}

nyers = nyers & 0x0F;

// A hőmérséklet-hívásértékek konvertálása 10 bitre

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

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

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

{

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter küldése

Wire.write ((60 + i));

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// 1 bájt adat kérése

Wire.requestFrom (Addr, 1);

// 1 bájt adat olvasása

ha (Wire.available () == 1)

{

adatok = Wire.read ();

}

}

// Konvertálja az adatokat

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

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

{

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter küldése

Wire.write ((62 + i));

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// 1 bájt adat kérése

Wire.requestFrom (Addr, 1);

// 1 bájt adat olvasása

ha (Wire.available () == 1)

{

adatok = Wire.read ();

}

}

// Konvertálja az adatokat

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

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter küldése

Wire.write (0x28 | 0x80);

// Állítsa le az I2C átvitelt

Wire.endTransmission ();

// 4 bájt adat kérése

Wire.requestFrom (Addr, 4);

// 4 bájt adat olvasása

// páratartalom msb, páratartalom lsb, temp msb, temp lsb

ha (Wire.available () == 4)

{

val [0] = Huzal.olvasás ();

val [1] = Huzal.olvasás ();

val [2] = Huzal.olvasás ();

val [3] = Huzal.olvasás ();

}

// Konvertálja az adatokat

páratartalom = (val [1] * 256,0) + val [0];

páratartalom = ((1,0 * H1) - (1,0 * H0)) * (1,0 * páratartalom - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

hőmérséklet = (val [3] * 256) + val [2]; cTemp = ((((T1 - T0) / 8,0) * (hőmérséklet - T2)) / (T3 - T2) + (T0 / 8,0);

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

// Adatok kimenete a műszerfalra

Particle.publish ("Relatív páratartalom:", String (páratartalom));

késleltetés (1000);

Particle.publish ("Hőmérséklet Celsius -ban:", String (cTemp));

késleltetés (1000);

Particle.publish ("Hőmérséklet Fahrenheitben:", String (fTemp));

késleltetés (1000);

}

A Particle.variable () függvény létrehozza a változókat az érzékelő kimenetének tárolására, a Particle.publish () függvény pedig megjeleníti a kimenetet a webhely műszerfalán.

Az érzékelő kimenete a fenti képen látható.

4. lépés: Alkalmazások:

Alkalmazások
Alkalmazások

A HTS221 alkalmazható különféle fogyasztási cikkekben, például légnedvesítőkben és hűtőszekrényekben. Ez az érzékelő szélesebb körben is alkalmazható, beleértve az intelligens otthoni automatizálást, az ipari automatizálást, a légzőkészülékeket, az eszközök és áruk nyomon követését.

Ajánlott: