Obsah:

Arduino Nano - HTS221 Relatívny snímač vlhkosti a teploty Výučba: 4 kroky
Arduino Nano - HTS221 Relatívny snímač vlhkosti a teploty Výučba: 4 kroky

Video: Arduino Nano - HTS221 Relatívny snímač vlhkosti a teploty Výučba: 4 kroky

Video: Arduino Nano - HTS221 Relatívny snímač vlhkosti a teploty Výučba: 4 kroky
Video: Arduino Nano 33 BLE Sense — плата с голосовым управлением, IMU, датчиком цвета и метеосенсором. 2024, November
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. Tu je ukážka s arduino nano.

Krok 1: Čo potrebujete.. !

Čo potrebuješ..!!
Čo potrebuješ..!!

1. Arduino Nano

2. HTS221

3. Kábel I²C

4. I²C štít pre Arduino Nano

Krok 2: Pripojenia:

Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia

Vezmite štít I2C pre Arduino Nano a jemne ho zatlačte cez kolíky Nano.

Potom pripojte jeden koniec kábla I2C k senzoru HTS221 a druhý koniec k štítu I2C.

Pripojenia sú znázornené na obrázku vyššie.

Krok 3: Kód:

Kód
Kód

Arduino kód pre HTS221 si môžete stiahnuť z nášho úložiska github- komunity DCUBE.

Tu je odkaz na to isté:

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

Ponúkame knižnicu Wire.h na uľahčenie komunikácie senzora I2c s doskou Arduino.

Odtiaľto môžete tiež skopírovať kód, ktorý je nasledujúci:

// Distribuované s licenciou slobodnej vôle.

// Používajte ho akýmkoľvek spôsobom chcete, so ziskom alebo zadarmo, za predpokladu, že sa zmestí do licencií k ním pridruženým dielam.

// HTS221

// Tento kód je navrhnutý tak, aby pracoval s mini modulom HTS221_I2CS I2C

#zahrnúť

// Adresa HTS221 I2C je 0x5F

#define Addr 0x5F

neplatné nastavenie ()

{

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

plávajúca 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);

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

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

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

// Výstup údajov na sériový monitor

Serial.print ("Relatívna vlhkosť:");

Sériový tlač (vlhkosť);

Serial.println (" % RH");

Serial.print ("Teplota v stupňoch Celzia:");

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

Serial.print ("Teplota vo Fahrenheite:");

Serial.print (fTemp);

Serial.println ("F");

oneskorenie (500);

}

Krok 4: 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: