Kazalo:

Arduino Nano - HTS221 Vadnica senzorja relativne vlažnosti in temperature: 4 koraki
Arduino Nano - HTS221 Vadnica senzorja relativne vlažnosti in temperature: 4 koraki

Video: Arduino Nano - HTS221 Vadnica senzorja relativne vlažnosti in temperature: 4 koraki

Video: Arduino Nano - HTS221 Vadnica senzorja relativne vlažnosti in temperature: 4 koraki
Video: Arduino nano. блок управления акпп 2024, November
Anonim
Image
Image

HTS221 je ultra kompakten kapacitivni digitalni senzor za relativno vlažnost in temperaturo. Vključuje zaznavni element in integrirano vezje za aplikacije z mešanim signalom (ASIC) za zagotavljanje merilnih informacij prek digitalnih serijskih vmesnikov. Integriran s toliko funkcijami, je eden najprimernejših senzorjev za merjenje kritične vlažnosti in temperature. Tukaj je predstavitev z arduino nano.

Korak: Kaj potrebujete.. !

Kaj rabiš..!!
Kaj rabiš..!!

1. Arduino Nano

2. HTS221

3. Kabel I²C

4. I²C ščit za Arduino Nano

2. korak: Povezave:

Povezave
Povezave
Povezave
Povezave
Povezave
Povezave
Povezave
Povezave

Vzemite ščit I2C za Arduino Nano in ga nežno potisnite čez zatiče Nano.

Nato en konec kabla I2C priključite na senzor HTS221, drugi konec pa na ščit I2C.

Povezave so prikazane na zgornji sliki.

3. korak: Koda:

Koda
Koda

Kodo arduino za HTS221 lahko prenesete iz našega skladišča github- skupnosti DCUBE.

Tukaj je povezava za isto:

github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino

Vključujemo knjižnico Wire.h za olajšanje komunikacije senzorja I2c s ploščo Arduino.

Kodo lahko tudi kopirate od tu, podana je na naslednji način:

// Razdeljeno z licenco za svobodno voljo.

// Uporabljajte ga kakor koli želite, dobičkonosno ali brezplačno, pod pogojem, da ustreza licencam povezanih del.

// HTS221

// Ta koda je zasnovana za delo z mini modulom HTS221_I2CS I2C

#vključi

// Naslov HTS221 I2C je 0x5F

#define Addr 0x5F

void setup ()

{

// Inicializirajte komunikacijo I2C kot MASTER

Wire.begin ();

// Začetek serijske komunikacije, nastavljena hitrost prenosa = 9600

Serial.begin (9600);

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Izbira povprečnega registra konfiguracije

Wire.write (0x10);

// Povprečni temperaturni vzorci = 256, Povprečni vzorci vlažnosti = 512

Wire.write (0x1B);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Izberite kontrolni register1

Wire.write (0x20);

// Vklop, neprekinjeno posodabljanje, Izhodna hitrost podatkov = 1 Hz

Wire.write (0x85);

// Ustavi prenos I2C

Wire.endTransmission ();

zamuda (300);

}

void loop ()

{

podpisani int podatki [2];

brez podpisa int val [4];

nepodpisani int H0, H1, H2, H3, T0, T1, T2, T3, surov;

// Vrednosti kalibracije vlažnosti

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write ((48 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvarjanje podatkov o vlažnosti

H0 = podatki [0] / 2;

H1 = podatki [1] / 2;

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write ((54 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvarjanje podatkov o vlažnosti

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

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write ((58 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvarjanje podatkov o vlažnosti

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

// Vrednosti umerjanja temperature

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji podatkovni register

Wire.write (0x32);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji podatkovni register

Wire.write (0x33);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write (0x35);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

surovo = Wire.read ();

}

surovo = surovo & 0x0F;

// Pretvorimo vrednosti kalibracije temperature v 10 bitov

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

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

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write ((60 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvorimo podatke

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

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji podatkovni register

Wire.write ((62 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvorimo podatke

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

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write (0x28 | 0x80);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 4 bajte podatkov

Wire.requestFrom (Addr, 4);

// Branje 4 bajtov podatkov

// vlažnost msb, vlažnost lsb, temp msb, temp lsb

če (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Pretvorimo podatke

plavajoča vlažnost = (val [1] * 256,0) + val [0];

vlažnost = ((1,0 * H1) - (1,0 * H0)) * (1,0 * vlažnost - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

int temp = (val [3] * 256) + val [2];

float cTemp = (((T1 - T0) / 8,0) * (temp - T2)) / (T3 - T2) + (T0 / 8,0);

float fTemp = (cTemp * 1.8) + 32;

// Izhodni podatki na serijski monitor

Serial.print ("Relativna vlažnost:");

Serijski.tisk (vlažnost);

Serial.println (" % RH");

Serial.print ("Temperatura v Celzijusi:");

Serial.print (cTemp); Serial.println ("C");

Serial.print ("Temperatura v Fahrenheitu:");

Serial.print (fTemp);

Serial.println ("F");

zamuda (500);

}

4. korak: Aplikacije:

HTS221 se lahko uporablja v različnih potrošniških izdelkih, kot so vlažilci zraka in hladilniki itd. Ta senzor se uporablja tudi na širšem področju, vključno z avtomatizacijo pametnega doma, industrijsko avtomatizacijo, opremo za dihanje, sledenjem sredstev in blaga.

Priporočena: