Tartalomjegyzék:

Arduino Nano - HTS221 Relatív páratartalom és hőmérséklet érzékelő bemutató: 4 lépés
Arduino Nano - HTS221 Relatív páratartalom és hőmérséklet érzékelő bemutató: 4 lépés

Videó: Arduino Nano - HTS221 Relatív páratartalom és hőmérséklet érzékelő bemutató: 4 lépés

Videó: Arduino Nano - HTS221 Relatív páratartalom és hőmérséklet érzékelő bemutató: 4 lépés
Videó: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, November
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. Itt a demonstráció az arduino nanóval.

1. lépés: Amire szüksége van..

Amire szükséged van..!!
Amire szükséged van..!!

1. Arduino Nano

2. HTS221

3. I²C kábel

4. I²C pajzs az Arduino Nano számára

2. lépés: Csatlakozások:

Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások

Vegyünk egy I2C pajzsot az Arduino Nano számára, és óvatosan toljuk át a Nano csapjaira.

Ezután csatlakoztassa az I2C kábel egyik végét a HTS221 érzékelőhöz, a másik végét pedig az I2C árnyékoláshoz.

A csatlakozásokat a fenti kép mutatja.

3. lépés: Kód:

Kód
Kód

A HTS221 arduino kódja letölthető a github tárhelyünkről- DCUBE Community.

Itt a link ugyanerre:

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

Tartalmazzuk a Wire.h könyvtárat, hogy megkönnyítsük az érzékelő I2c kommunikációját az Arduino táblával.

Innen is másolhatja a kódot, ez a következőképpen van megadva:

// Szabad akaratú licenccel terjesztik.

// Bármilyen módon használhatja, haszonnal vagy ingyen, feltéve, hogy illeszkedik a kapcsolódó művek licenceihez.

// HTS221

// Ez a kód a HTS221_I2CS I2C Mini modullal való együttműködésre készült

#befoglalni

// A HTS221 I2C címe 0x5F

#define Addr 0x5F

üres beállítás ()

{

// 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

úszó 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);

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

úszó cTemp = ((((T1 - T0) / 8,0) * (hőmérséklet - T2)) / (T3 - T2) + (T0 / 8,0);

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

// Adatok kimenete soros monitorra

Serial.print ("Relatív páratartalom:");

Soros.nyomtatás (páratartalom);

Soros.println (" % RH");

Serial.print ("Hőmérséklet Celsius -ban:");

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

Serial.print ("Hőmérséklet Fahrenheitben:");

Serial.print (fTemp);

Serial.println ("F");

késleltetés (500);

}

4. lépés: 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: