Obsah:

Meranie vlhkosti a teploty pomocou HTS221 a fotónu častíc: 4 kroky
Meranie vlhkosti a teploty pomocou HTS221 a fotónu častíc: 4 kroky

Video: Meranie vlhkosti a teploty pomocou HTS221 a fotónu častíc: 4 kroky

Video: Meranie vlhkosti a teploty pomocou HTS221 a fotónu častíc: 4 kroky
Video: Martina Boháčová: Svět nejvyšších energií (Živě Benátská 2, PřF UK, Praha) 2024, Jún
Anonim
Image
Image

HTS221 je ultrakompaktný kapacitný digitálny snímač relatívnej vlhkosti a teploty. Obsahuje snímací prvok a integrovaný obvod špecifický pre zmiešaný signál (ASIC) na poskytovanie informácií o meraní prostredníctvom digitálnych sériových rozhraní. Integrovaný s toľkými funkciami, je to jeden z najvhodnejších senzorov pre kritické merania vlhkosti a teploty.

V tomto tutoriáli bolo ilustrované prepojenie senzorového modulu HTS221 s fotónom častíc. Na čítanie hodnôt vlhkosti a teploty sme použili častice s adaptérom I2c. Tento adaptér I2C umožňuje jednoduché a spoľahlivé pripojenie k modulu snímača.

Krok 1: Potrebný hardvér:

Potrebný hardvér
Potrebný hardvér
Potrebný hardvér
Potrebný hardvér
Potrebný hardvér
Potrebný hardvér

Materiály, ktoré potrebujeme na dosiahnutie nášho cieľa, obsahujú nasledujúce hardvérové komponenty:

1. HTS221

2. Fotón častíc

3. Kábel I2C

4. I2C štít pre časticový fotón

Krok 2: Pripojenie hardvéru:

Pripojenie hardvéru
Pripojenie hardvéru
Pripojenie hardvéru
Pripojenie hardvéru

Časť zapojenia hardvéru v zásade vysvetľuje zapojenie potrebné medzi senzorom a fotónom častíc. Zabezpečenie správneho pripojenia je základnou potrebou pri práci na akomkoľvek systéme s požadovaným výstupom. Potrebné spojenia sú teda tieto:

HTS221 bude fungovať cez I2C. Tu je príklad schémy zapojenia, ktorá ukazuje, ako prepojiť každé rozhranie snímača.

Hneď po vybalení je doska nakonfigurovaná na rozhranie I2C, preto vám toto pripojenie odporúčame použiť, ak ste inak agnostik.

Všetko, čo potrebujete, sú štyri drôty! Vyžadujú sa iba štyri pripojenia Vcc, Gnd, SCL a SDA piny, ktoré sú prepojené pomocou kábla I2C.

Tieto spojenia sú znázornené na obrázkoch vyššie.

Krok 3: Kód na meranie vlhkosti a teploty:

Kód na meranie vlhkosti a teploty
Kód na meranie vlhkosti a teploty

Začnime teraz s časticovým kódom.

Pri použití senzorového modulu s časticami zahrnujeme knižnicu application.h a spark_wiring_i2c.h. Knižnica "application.h" a spark_wiring_i2c.h obsahuje funkcie, ktoré uľahčujú i2c komunikáciu medzi senzorom a časticou.

Celý kód častíc je pre pohodlie užívateľa uvedený nižšie:

#zahrnúť

#zahrnúť

// Adresa HTS221 I2C je 0x5F

#define Addr 0x5F

dvojnásobná vlhkosť = 0,0;

dvojnásobná teplota c = 0,0;

dvojnásobok fTemp = 0,0;

int temp = 0;

neplatné nastavenie ()

{

// Nastavenie premennej

Premenná častica ("i2cdevice", "HTS221");

Častica.proměnná ("Vlhkosť", vlhkosť);

Particle.variable ("cTemp", cTemp);

// Inicializujte komunikáciu I2C ako MASTER

Wire.begin ();

// Inicializujte sériovú komunikáciu, nastavte prenosovú rýchlosť = 9600

Serial.begin (9600);

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte priemerný konfiguračný register

Wire.write (0x10);

// Priemerné teplotné vzorky = 256, Vlhké priemerné vzorky = 512

Wire.write (0x1B);

// Zastavte prenos I2C

Wire.endTransmission ();

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte riadiaci register1

Wire.write (0x20);

// ZAPNUTIE, nepretržitá aktualizácia, rýchlosť dátového výstupu = 1 Hz

Wire.write (0x85);

// Zastavte prenos I2C

Wire.endTransmission ();

oneskorenie (300);

}

prázdna slučka ()

{

int data bez znamienka [2];

bez znamienka int val [4];

bez znamienka int H0, H1, H2, H3, T0, T1, T2, T3, surový;

// Hodnoty kalibrácie vlhkosti

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

{

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Odoslanie dátového registra

Wire.write ((48 + i));

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 1 bajt údajov

Wire.requestFrom (Addr, 1);

// Prečítajte 1 bajt údajov

ak (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Previesť údaje o vlhkosti

H0 = údaje [0] / 2;

H1 = údaje [1] / 2;

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

{

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Odoslanie dátového registra

Wire.write ((54 + i));

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 1 bajt údajov

Wire.requestFrom (Addr, 1);

// Prečítajte 1 bajt údajov

ak (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Previesť údaje o vlhkosti

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

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

{

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Odoslanie dátového registra

Wire.write ((58 + i));

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 1 bajt údajov

Wire.requestFrom (Addr, 1);

// Prečítajte 1 bajt údajov

ak (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Previesť údaje o vlhkosti

H3 = (údaje [1] x 256,0) + údaje [0];

// Hodnoty kalibrácie teploty

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Odoslanie dátového registra

Wire.write (0x32);

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 1 bajt údajov

Wire.requestFrom (Addr, 1);

// Prečítajte 1 bajt údajov

ak (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Odoslanie dátového registra

Wire.write (0x33);

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 1 bajt údajov

Wire.requestFrom (Addr, 1);

// Prečítajte 1 bajt údajov

ak (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Odoslanie dátového registra

Wire.write (0x35);

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 1 bajt údajov

Wire.requestFrom (Addr, 1);

// Prečítajte 1 bajt údajov

ak (Wire.available () == 1)

{

raw = Wire.read ();

}

raw = surový & 0x0F;

// Previesť hodnoty kalibrácie teploty na 10-bitové

T0 = ((surový & 0x03) * 256) + T0;

T1 = ((surový & 0x0C) * 64) + T1;

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

{

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Odoslanie dátového registra

Wire.write ((60 + i));

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 1 bajt údajov

Wire.requestFrom (Addr, 1);

// Prečítajte 1 bajt údajov

ak (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Previesť údaje

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

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

{

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Odoslanie dátového registra

Wire.write ((62 + i));

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 1 bajt údajov

Wire.requestFrom (Addr, 1);

// Prečítajte 1 bajt údajov

ak (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Previesť údaje

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

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Odoslanie dátového registra

Wire.write (0x28 | 0x80);

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 4 bajty údajov

Wire.requestFrom (Addr, 4);

// Prečítajte 4 bajty údajov

// vlhkosť msb, vlhkosť lsb, temp msb, temp lsb

ak (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Previesť údaje

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

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

teplota = (val [3] * 256) + val [2]; cTemp = (((T1 - T0) / 8,0) * (teplota - T2)) / (T3 - T2) + (T0 / 8,0);

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

// Výstup údajov na informačný panel

Particle.publish ("Relatívna vlhkosť:", Reťazec (vlhkosť));

oneskorenie (1000);

Particle.publish („Teplota v stupňoch Celzia:“, reťazec (cTemp));

oneskorenie (1000);

Particle.publish („Teplota vo Fahrenheite:“, reťazec (fTemp));

oneskorenie (1000);

}

Funkcia Particle.variable () vytvára premenné na ukladanie výstupu zo senzora a funkcia Particle.publish () zobrazuje výstup na palubnej doske webu.

Výstup senzora je pre vašu referenciu zobrazený na obrázku vyššie.

Krok 4: Aplikácie:

Aplikácie
Aplikácie

HTS221 je možné použiť v rôznych spotrebiteľských výrobkoch, ako sú zvlhčovače vzduchu a chladničky atď. Tento senzor nachádza svoje uplatnenie aj v širšej oblasti, vrátane inteligentnej domácej automatizácie, priemyselnej automatizácie, respiračných zariadení, sledovania majetku a tovaru.

Odporúča: