Obsah:
Video: Výukový program Arduino Nano - HTS221 Relativní vlhkost a teplota: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
HTS221 je ultra kompaktní kapacitní digitální senzor pro relativní vlhkost a teplotu. Obsahuje snímací prvek a integrovaný obvod specifický pro smíšený signál (ASIC), který poskytuje informace o měření prostřednictvím digitálních sériových rozhraní. Integrovaný s tolika funkcemi je jedním z nejvhodnějších senzorů pro kritická měření vlhkosti a teploty. Zde je ukázka s arduino nano.
Krok 1: Co potřebujete..
1. Arduino Nano
2. HTS221
3. I²C kabel
4. I²C štít pro Arduino Nano
Krok 2: Připojení:
Vezměte štít I2C pro Arduino Nano a jemně jej zatlačte přes kolíky Nano.
Poté připojte jeden konec kabelu I2C k senzoru HTS221 a druhý konec ke stínění I2C.
Připojení jsou znázorněna na obrázku výše.
Krok 3: Kód:
Arduino kód pro HTS221 lze stáhnout z našeho úložiště github- komunita DCUBE.
Zde je odkaz na totéž:
github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino
Zahrnujeme knihovnu Wire.h pro usnadnění I2c komunikace senzoru s deskou Arduino.
Odtud můžete také zkopírovat kód, který je uveden následovně:
// Distribuováno s licencí svobodné vůle.
// Používejte jej jakýmkoli způsobem, ať už ziskem nebo zdarma, za předpokladu, že se vejde do licencí souvisejících děl.
// HTS221
// Tento kód je navržen tak, aby fungoval s mini modulem HTS221_I2CS I2C
#zahrnout
// Adresa I2C HTS221 je 0x5F
#define Addr 0x5F
neplatné nastavení ()
{
// Inicializujte komunikaci I2C jako MASTER
Wire.begin ();
// Inicializace sériové komunikace, nastavení přenosové rychlosti = 9600
Serial.begin (9600);
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte průměrný konfigurační registr
Wire.write (0x10);
// Průměrné teplotní vzorky = 256, Vlhké průměrné vzorky = 512
Wire.write (0x1B);
// Zastavte přenos I2C
Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte řídicí registr1
Wire.write (0x20);
// ZAPNUTO, nepřetržitá aktualizace, výstupní rychlost dat = 1 Hz
Wire.write (0x85);
// Zastavte přenos I2C
Wire.endTransmission ();
zpoždění (300);
}
prázdná smyčka ()
{
nepodepsaná int data [2];
bez znaménka int val [4];
nepodepsané int H0, H1, H2, H3, T0, T1, T2, T3, raw;
// Hodnoty kalibrace vlhkosti
pro (int i = 0; i <2; i ++)
{
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Odeslání datového registru
Wire.write ((48 + i));
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr, 1);
// Přečíst 1 bajt dat
pokud (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Převod údajů o vlhkosti
H0 = data [0] / 2;
H1 = data [1] / 2;
pro (int i = 0; i <2; i ++)
{
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Odeslání datového registru
Wire.write ((54 + i));
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr, 1);
// Přečíst 1 bajt dat
pokud (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Převod údajů o vlhkosti
H2 = (data [1] * 256,0) + data [0];
pro (int i = 0; i <2; i ++)
{
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Odeslání datového registru
Wire.write ((58 + i));
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr, 1);
// Přečíst 1 bajt dat
pokud (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Převod údajů o vlhkosti
H3 = (data [1] * 256,0) + data [0];
// Hodnoty kalibrace teploty
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Odeslání datového registru
Wire.write (0x32);
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr, 1);
// Přečíst 1 bajt dat
pokud (Wire.available () == 1)
{
T0 = Wire.read ();
}
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Odeslání datového registru
Wire.write (0x33);
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr, 1);
// Přečíst 1 bajt dat
pokud (Wire.available () == 1)
{
T1 = Wire.read ();
}
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Odeslání datového registru
Wire.write (0x35);
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr, 1);
// Přečíst 1 bajt dat
pokud (Wire.available () == 1)
{
raw = Wire.read ();
}
raw = raw & 0x0F;
// Převede hodnoty kalibrace teploty na 10 bitů
T0 = ((surový & 0x03) * 256) + T0;
T1 = ((surový & 0x0C) * 64) + T1;
pro (int i = 0; i <2; i ++)
{
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Odeslání datového registru
Wire.write ((60 + i));
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr, 1);
// Přečíst 1 bajt dat
pokud (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Převod dat
T2 = (data [1] * 256,0) + data [0];
pro (int i = 0; i <2; i ++)
{
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Odeslání datového registru
Wire.write ((62 + i));
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr, 1);
// Přečíst 1 bajt dat
pokud (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Převod dat
T3 = (data [1] * 256,0) + data [0];
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Odeslání datového registru
Wire.write (0x28 | 0x80);
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 4 bajty dat
Wire.requestFrom (Addr, 4);
// Přečíst 4 bajty dat
// vlhkost msb, vlhkost lsb, temp msb, temp lsb
pokud (Wire.available () == 4)
{
val [0] = Wire.read ();
val [1] = Wire.read ();
val [2] = Wire.read ();
val [3] = Wire.read ();
}
// Převod dat
plovoucí vlhkost = (val [1] * 256,0) + val [0];
vlhkost = ((1,0 * H1) - (1,0 * H0)) * (1,0 * vlhkost - 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 dat na sériový monitor
Serial.print ("Relativní vlhkost:");
Sériový tisk (vlhkost);
Serial.println (" % RH");
Serial.print ("Teplota ve stupních Celsia:");
Serial.print (cTemp); Serial.println ("C");
Serial.print ("Teplota ve stupních Fahrenheita:");
Serial.print (fTemp);
Serial.println ("F");
zpoždění (500);
}
Krok 4: Aplikace:
HTS221 lze použít v různých spotřebních výrobcích, jako jsou zvlhčovače vzduchu a chladničky atd. Tento senzor také nachází své uplatnění v širších oblastech, včetně inteligentní domácí automatizace, průmyslové automatizace, respiračních zařízení, sledování majetku a zboží.
Doporučuje:
Teplota a vlhkost pomocí ESP32-DHT22-MQTT-MySQL-PHP: 7 kroků
Teplota a vlhkost pomocí ESP32-DHT22-MQTT-MySQL-PHP: Moje přítelkyně chtěla skleník, tak jsem jí udělal. Chtěl jsem ale uvnitř skleníku snímač teploty a vlhkosti. Tak jsem googlil pro příklady a začal experimentovat. Můj závěr byl, že všechny příklady, které jsem našel, nebyly přesně takové, jaké
Automatizace skleníku pomocí LoRa! (Část 1) -- Senzory (teplota, vlhkost, vlhkost půdy): 5 kroků
Automatizace skleníku pomocí LoRa! (Část 1) || Senzory (teplota, vlhkost, vlhkost půdy): V tomto projektu vám ukážu, jak jsem automatizoval skleník. To znamená, že vám ukážu, jak jsem postavil skleník a jak jsem zapojil napájecí a automatizační elektroniku. Také vám ukážu, jak naprogramovat desku Arduino, která používá L
Meteostanice Arduino využívající BMP280 -DHT11 - teplota, vlhkost a tlak: 8 kroků
Meteostanice Arduino pomocí BMP280 -DHT11 - teplota, vlhkost a tlak: V tomto tutoriálu se naučíme, jak vytvořit meteorologickou stanici, která bude na displeji TFT 7735 zobrazovat TEPLOTU, VLHKOST A TLAK. Podívejte se na ukázkové video
THINGSPEAK TEPLOTA A VLHKOST APLIKACE POUŽITÍ ESP8266: 9 kroků
THINGSPEAK TEPLOTA A VLHKOST APLIKACE S POUŽITÍM ESP8266: Zatímco jsem si pohrával s elektronikou, dostal jsem nápad vytvořit webovou aplikaci o počasí. Tato webová aplikace používá snímač SHT31 pro získávání údajů o teplotě a vlhkosti v reálném čase. Náš projekt jsme nasadili na WiFi modul ESP8266. Online nebo offli
Arduino + Teplota + Vlhkost: 4 kroky
Arduino + Teplota + Vlhkost: Jednoduché teplotní čidlo využívající jeden přesný teplotní senzor LM35, čidlo vlhkosti a Arduino, takže se můžete napojit na své budoucí projekty. Obvod odešle sériové informace o teplotě a vlhkosti, abyste je mohli použít na svém