Sisällysluettelo:

Arduino Nano - HTS221 suhteellisen kosteuden ja lämpötila -anturin opetusohjelma: 4 vaihetta
Arduino Nano - HTS221 suhteellisen kosteuden ja lämpötila -anturin opetusohjelma: 4 vaihetta

Video: Arduino Nano - HTS221 suhteellisen kosteuden ja lämpötila -anturin opetusohjelma: 4 vaihetta

Video: Arduino Nano - HTS221 suhteellisen kosteuden ja lämpötila -anturin opetusohjelma: 4 vaihetta
Video: BME280 Sensor Test with Arduino: pressure, humidity and temperature for the New Chronograph Project 2024, Heinäkuu
Anonim
Image
Image

HTS221 on erittäin kompakti kapasitiivinen digitaalinen anturi suhteelliseen kosteuteen ja lämpötilaan. Se sisältää anturielementin ja sekoitussignaalisovelluskohtaisen integroidun piirin (ASIC) mittaustietojen toimittamiseksi digitaalisten sarjaliitäntöjen kautta. Integroitu niin moniin ominaisuuksiin, tämä on yksi sopivimmista antureista kriittisille kosteus- ja lämpötilamittauksille. Tässä on esittely arduino nanolla.

Vaihe 1: Mitä tarvitset..

Mitä tarvitset..!!
Mitä tarvitset..!!

1. Arduino Nano

2. HTS221

3. I²C -kaapeli

4. I²C -kilpi Arduino Nanolle

Vaihe 2: Liitännät:

Liitännät
Liitännät
Liitännät
Liitännät
Liitännät
Liitännät
Liitännät
Liitännät

Ota I2C -suoja Arduino Nanolle ja työnnä sitä varovasti Nanon nastojen yli.

Liitä sitten I2C -kaapelin toinen pää HTS221 -anturiin ja toinen pää I2C -suojaan.

Liitännät näkyvät yllä olevassa kuvassa.

Vaihe 3: Koodi:

Koodi
Koodi

HTS221: n arduino-koodi voidaan ladata github-arkistostamme- DCUBE Community.

Tässä linkki samaan:

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

Mukana on kirjasto Wire.h, joka helpottaa anturin I2c -tiedonsiirtoa Arduino -kortin kanssa.

Voit myös kopioida koodin täältä, se annetaan seuraavasti:

// Jaetaan vapaaehtoisella lisenssillä.

// Käytä sitä haluamallasi tavalla, voittoa tai ilmaiseksi, jos se sopii siihen liittyvien teosten lisensseihin.

// HTS221

// Tämä koodi on suunniteltu toimimaan HTS221_I2CS I2C Mini -moduulin kanssa

#sisältää

// HTS221 I2C -osoite on 0x5F

#define Addr 0x5F

mitätön asennus ()

{

// Alusta I2C -viestintä MASTERiksi

Wire.begin ();

// Alusta sarjaliikenne, aseta baudinopeus = 9600

Sarja.alku (9600);

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse keskimääräinen määritysrekisteri

Wire.write (0x10);

// Lämpötilan keskimääräiset näytteet = 256, Kosteusnäytteet = 512

Wire.write (0x1B);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse ohjausrekisteri 1

Wire.write (0x20);

// Virta päällä, jatkuva päivitys, tiedonsiirtonopeus = 1 Hz

Wire.write (0x85);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

viive (300);

}

tyhjä silmukka ()

{

allekirjoittamaton int -data [2];

unsigned int val [4];

allekirjoittamaton int H0, H1, H2, H3, T0, T1, T2, T3, raaka;

// Kosteuden kutsuarvot

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

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((48 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna kosteustiedot

H0 = data [0] / 2;

H1 = data [1] / 2;

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

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((54 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna kosteustiedot

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

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

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((58 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna kosteustiedot

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

// Lämpötilan kutsun arvot

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write (0x32);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write (0x33);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write (0x35);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

raaka = Wire.read ();

}

raaka = raaka & 0x0F;

// Muunna lämpötilan kutsun arvot 10-bittisiksi

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

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

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

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((60 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna tiedot

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

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

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((62 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna tiedot

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

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write (0x28 | 0x80);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 4 tavua dataa

Wire.requestFrom (Addr, 4);

// Lue 4 tavua dataa

// kosteus msb, kosteus lsb, lämpötila msb, lämpötila lsb

jos (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Muunna tiedot

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

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

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

kelluva cTemp = ((((T1 - T0) / 8,0) * (lämpötila - T2)) / (T3 - T2) + (T0 / 8,0);

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

// Tulostustiedot sarjamittarille

Serial.print ("Suhteellinen kosteus:");

Sarjajälki (kosteus);

Serial.println (" % RH");

Serial.print ("Lämpötila celsiusasteina:");

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

Serial.print ("Lämpötila Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

viive (500);

}

Vaihe 4: Sovellukset:

HTS221: tä voidaan käyttää erilaisissa kulutustavaroissa, kuten ilmankostuttimissa ja jääkaappeissa.

Suositeltava: