2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
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.. !
1. Arduino Nano
2. HTS221
3. Kábel I²C
4. I²C štít pre Arduino Nano
Krok 2: 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:
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.