Obsah:

Měření vlhkosti a teploty pomocí HTS221 a fotonu částic: 4 kroky
Měření vlhkosti a teploty pomocí HTS221 a fotonu částic: 4 kroky

Video: Měření vlhkosti a teploty pomocí HTS221 a fotonu částic: 4 kroky

Video: Měření vlhkosti a teploty pomocí HTS221 a fotonu částic: 4 kroky
Video: Chytrá domácnost #3 - měření teploty a vlhkosti Sonoff TH10 [4K] 2024, Červen
Anonim
Image
Image

HTS221 je ultra kompaktní kapacitní digitální senzor pro relativní vlhkost a teplotu. Obsahuje snímací prvek a integrovaný obvod specifický pro smíšený signál (ASIC), který poskytuje informace o měření prostřednictvím digitálních sériových rozhraní. Integrovaný s tolika funkcemi je jedním z nejvhodnějších senzorů pro kritická měření vlhkosti a teploty.

V tomto tutoriálu bylo ukázáno propojení senzorového modulu HTS221 s fotonem částic. Ke čtení hodnot vlhkosti a teploty jsme použili částice s adaptérem I2c. Tento adaptér I2C umožňuje snadné a spolehlivější připojení k modulu senzoru.

Krok 1: Požadovaný hardware:

Požadovaný hardware
Požadovaný hardware
Požadovaný hardware
Požadovaný hardware
Požadovaný hardware
Požadovaný hardware

Materiály, které potřebujeme k dosažení našeho cíle, zahrnují následující hardwarové komponenty:

1. HTS221

2. Foton částic

3. Kabel I2C

4. I2C štít pro částicový foton

Krok 2: Připojení hardwaru:

Připojení hardwaru
Připojení hardwaru
Připojení hardwaru
Připojení hardwaru

Sekce zapojení hardwaru v zásadě vysvětluje zapojení potřebná pro připojení mezi snímačem a fotonem částic. Zajištění správného připojení je základní nutností při práci na jakémkoli systému pro požadovaný výstup. Požadovaná připojení jsou tedy následující:

HTS221 bude fungovat přes I2C. Zde je příklad schématu zapojení, které ukazuje, jak zapojit jednotlivá rozhraní senzoru.

Po vybalení je deska nakonfigurována pro rozhraní I2C, proto doporučujeme tuto přípojku použít, pokud jste jinak agnostik.

Vše, co potřebujete, jsou čtyři dráty! Jsou vyžadována pouze čtyři připojení Vcc, Gnd, SCL a SDA piny a ty jsou spojeny pomocí kabelu I2C.

Tato spojení jsou ukázána na obrázcích výše.

Krok 3: Kód pro měření vlhkosti a teploty:

Kód pro měření vlhkosti a teploty
Kód pro měření vlhkosti a teploty

Začněme nyní kódem částic.

Při použití senzorového modulu s částicemi zahrnujeme knihovnu application.h a spark_wiring_i2c.h. Knihovna „application.h“a spark_wiring_i2c.h obsahuje funkce, které usnadňují komunikaci i2c mezi senzorem a částicem.

Celý kód částic je pro pohodlí uživatele uveden níže:

#zahrnout

#zahrnout

// Adresa I2C HTS221 je 0x5F

#define Addr 0x5F

dvojnásobná vlhkost = 0,0;

double cTemp = 0,0;

dvojnásobek fTemp = 0,0;

int temp = 0;

neplatné nastavení ()

{

// Nastavit proměnnou

Proměnná částice ("i2cdevice", "HTS221");

Proměnná částice („Vlhkost“, vlhkost);

Particle.variable ("cTemp", cTemp);

// Inicializujte komunikaci I2C jako MASTER

Wire.begin ();

// Inicializace sériové komunikace, nastavení přenosové rychlosti = 9600

Serial.begin (9600);

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte průměrný konfigurační registr

Wire.write (0x10);

// Průměrné teplotní vzorky = 256, Vlhké průměrné vzorky = 512

Wire.write (0x1B);

// Zastavte přenos I2C

Wire.endTransmission ();

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte řídicí registr1

Wire.write (0x20);

// ZAPNUTO, nepřetržitá aktualizace, výstupní rychlost dat = 1 Hz

Wire.write (0x85);

// Zastavte přenos I2C

Wire.endTransmission ();

zpoždění (300);

}

prázdná smyčka ()

{

nepodepsaná int data [2];

bez znaménka int val [4];

nepodepsané int H0, H1, H2, H3, T0, T1, T2, T3, raw;

// Hodnoty kalibrace vlhkosti

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

{

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Odeslání datového registru

Wire.write ((48 + i));

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 1 bajt dat

Wire.requestFrom (Addr, 1);

// Přečíst 1 bajt dat

pokud (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Převod údajů o vlhkosti

H0 = data [0] / 2;

H1 = data [1] / 2;

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

{

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Odeslání datového registru

Wire.write ((54 + i));

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 1 bajt dat

Wire.requestFrom (Addr, 1);

// Přečíst 1 bajt dat

pokud (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Převod údajů o vlhkosti

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

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

{

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Odeslání datového registru

Wire.write ((58 + i));

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 1 bajt dat

Wire.requestFrom (Addr, 1);

// Přečíst 1 bajt dat

pokud (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Převod údajů o vlhkosti

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

// Hodnoty kalibrace teploty

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Odeslání datového registru

Wire.write (0x32);

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 1 bajt dat

Wire.requestFrom (Addr, 1);

// Přečíst 1 bajt dat

pokud (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Odeslání datového registru

Wire.write (0x33);

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 1 bajt dat

Wire.requestFrom (Addr, 1);

// Přečíst 1 bajt dat

pokud (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Odeslání datového registru

Wire.write (0x35);

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 1 bajt dat

Wire.requestFrom (Addr, 1);

// Přečíst 1 bajt dat

pokud (Wire.available () == 1)

{

raw = Wire.read ();

}

raw = raw & 0x0F;

// Převede hodnoty kalibrace teploty na 10 bitů

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

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

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

{

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Odeslání datového registru

Wire.write ((60 + i));

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 1 bajt dat

Wire.requestFrom (Addr, 1);

// Přečíst 1 bajt dat

pokud (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Převod dat

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

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

{

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Odeslání datového registru

Wire.write ((62 + i));

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 1 bajt dat

Wire.requestFrom (Addr, 1);

// Přečíst 1 bajt dat

pokud (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Převod dat

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

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Odeslání datového registru

Wire.write (0x28 | 0x80);

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 4 bajty dat

Wire.requestFrom (Addr, 4);

// Přečíst 4 bajty dat

// vlhkost msb, vlhkost lsb, temp msb, temp lsb

pokud (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Převod dat

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

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

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

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

// Výstup dat na řídicí panel

Particle.publish ("Relativní vlhkost:", Řetězec (vlhkost));

zpoždění (1000);

Particle.publish ("Teplota ve stupních Celsia:", řetězec (cTemp));

zpoždění (1000);

Particle.publish ("Teplota ve stupních Fahrenheita:", řetězec (fTemp));

zpoždění (1000);

}

Funkce Particle.variable () vytváří proměnné pro uložení výstupu senzoru a funkce Particle.publish () zobrazuje výstup na palubní desce webu.

Výstup snímače je uveden na obrázku výše pro vaši referenci.

Krok 4: Aplikace:

Aplikace
Aplikace

HTS221 lze použít v různých spotřebních výrobcích, jako jsou zvlhčovače vzduchu a chladničky atd. Tento senzor také nachází své uplatnění v širších oblastech, včetně inteligentní domácí automatizace, průmyslové automatizace, respiračních zařízení, sledování majetku a zboží.

Doporučuje: