Sadržaj:
Video: Arduino Nano - HTS221 Vodič za senzor relativne vlažnosti i temperature: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
HTS221 je ultra kompaktni kapacitivni digitalni senzor za relativnu vlažnost i temperaturu. Sadrži osjetljivi element i integrirano kolo za mješoviti signal (ASIC) za mješoviti signal za pružanje mjernih informacija putem digitalnih serijskih sučelja. Integriran s toliko funkcija, ovo je jedan od najprikladnijih senzora za mjerenje kritične vlažnosti i temperature. Evo demonstracije s arduino nano.
Korak 1: Šta vam treba..
1. Arduino Nano
2. HTS221
3. I²C kabel
4. I²C štit za Arduino Nano
Korak 2: Veze:
Uzmite I2C štit za Arduino Nano i lagano ga gurnite preko igala Nano -a.
Zatim spojite jedan kraj I2C kabela na HTS221 senzor, a drugi kraj na I2C štit.
Veze su prikazane na gornjoj slici.
Korak 3: Kod:
Arduino kôd za HTS221 možete preuzeti sa našeg github spremišta- DCUBE zajednice.
Evo linka za isto:
github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino
Uključujemo knjižnicu Wire.h kako bismo olakšali I2c komunikaciju senzora s Arduino pločom.
Kôd možete i kopirati odavde, dat je na sljedeći način:
// Distribuirano s licencom za slobodnu volju.
// Koristite ga kako god želite, profitno ili besplatno, pod uvjetom da se uklapa u licence povezanih djela.
// HTS221
// Ovaj kod je dizajniran za rad s HTS221_I2CS I2C mini modulom
#include
// HTS221 I2C adresa je 0x5F
#define Addr 0x5F
void setup ()
{
// Inicializirajte I2C komunikaciju kao MASTER
Wire.begin ();
// Pokrećemo serijsku komunikaciju, postavljena brzina prijenosa = 9600
Serial.begin (9600);
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Odabir prosječnog registra konfiguracije
Wire.write (0x10);
// Uzorci prosječne temperature = 256, Uzorci prosječne vlažnosti = 512
Wire.write (0x1B);
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Odaberite kontrolni registar1
Wire.write (0x20);
// Uključeno, kontinuirano ažuriranje, Brzina izlaznih podataka = 1 Hz
Wire.write (0x85);
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
kašnjenje (300);
}
void loop ()
{
nepotpisani int podaci [2];
nepotpisani int val [4];
nepotpisani int H0, H1, H2, H3, T0, T1, T2, T3, sirovi;
// Vrijednosti kalibracije vlažnosti
za (int i = 0; i <2; i ++)
{
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Slanje registra podataka
Wire.write ((48 + i));
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr, 1);
// Očitavanje 1 bajta podataka
if (Wire.available () == 1)
{
podaci = Wire.read ();
}
}
// Pretvorimo podatke o vlažnosti
H0 = podaci [0] / 2;
H1 = podaci [1] / 2;
za (int i = 0; i <2; i ++)
{
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Slanje registra podataka
Wire.write ((54 + i));
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr, 1);
// Očitavanje 1 bajta podataka
if (Wire.available () == 1)
{
podaci = Wire.read ();
}
}
// Pretvorimo podatke o vlažnosti
H2 = (podaci [1] * 256,0) + podaci [0];
za (int i = 0; i <2; i ++)
{
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Slanje registra podataka
Wire.write ((58 + i));
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr, 1);
// Očitavanje 1 bajta podataka
if (Wire.available () == 1)
{
podaci = Wire.read ();
}
}
// Pretvorimo podatke o vlažnosti
H3 = (podaci [1] * 256,0) + podaci [0];
// Vrijednosti kalibracije temperature
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Slanje registra podataka
Wire.write (0x32);
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr, 1);
// Očitavanje 1 bajta podataka
if (Wire.available () == 1)
{
T0 = Wire.read ();
}
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Slanje registra podataka
Wire.write (0x33);
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr, 1);
// Očitavanje 1 bajta podataka
if (Wire.available () == 1)
{
T1 = Wire.read ();
}
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Slanje registra podataka
Wire.write (0x35);
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr, 1);
// Očitavanje 1 bajta podataka
if (Wire.available () == 1)
{
raw = Wire.read ();
}
neobrađeno = sirovo & 0x0F;
// Pretvorimo vrijednosti kalibracije temperature u 10-bita
T0 = ((neobrađeno & 0x03) * 256) + T0;
T1 = ((neobrađeno & 0x0C) * 64) + T1;
za (int i = 0; i <2; i ++)
{
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Slanje registra podataka
Wire.write ((60 + i));
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr, 1);
// Očitavanje 1 bajta podataka
if (Wire.available () == 1)
{
podaci = Wire.read ();
}
}
// Pretvorimo podatke
T2 = (podaci [1] * 256,0) + podaci [0];
za (int i = 0; i <2; i ++)
{
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Slanje registra podataka
Wire.write ((62 + i));
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr, 1);
// Očitavanje 1 bajta podataka
if (Wire.available () == 1)
{
podaci = Wire.read ();
}
}
// Pretvorimo podatke
T3 = (podaci [1] * 256,0) + podaci [0];
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr);
// Slanje registra podataka
Wire.write (0x28 | 0x80);
// Zaustavljanje I2C prijenosa
Wire.endTransmission ();
// Zatražite 4 bajta podataka
Wire.requestFrom (Addr, 4);
// Očitavanje 4 bajta podataka
// vlažnost msb, vlažnost lsb, temp msb, temp lsb
if (Wire.available () == 4)
{
val [0] = Wire.read ();
val [1] = Wire.read ();
val [2] = Wire.read ();
val [3] = Wire.read ();
}
// Pretvorimo podatke
vlažnost plovka = (val [1] * 256,0) + val [0];
vlažnost = ((1,0 * H1) - (1,0 * H0)) * (1,0 * vlažnost - 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) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);
float fTemp = (cTemp * 1.8) + 32;
// Izlaz podataka na serijski monitor
Serial.print ("Relativna vlažnost:");
Serial.print (vlažnost);
Serial.println (" % RH");
Serial.print ("Temperatura u Celzijusima:");
Serial.print (cTemp); Serial.println ("C");
Serial.print ("Temperatura u Fahrenheitu:");
Serial.print (fTemp);
Serial.println ("F");
kašnjenje (500);
}
Korak 4: Aplikacije:
HTS221 se može koristiti u raznim proizvodima široke potrošnje poput ovlaživača zraka i hladnjaka itd. Ovaj senzor svoju primjenu nalazi i u široj areni uključujući automatizaciju pametnih kuća, industrijsku automatizaciju, respiratornu opremu, praćenje imovine i robe.
Preporučuje se:
Raspberry Pi SHT25 Senzor vlažnosti i temperature Python Vodič: 4 koraka
Raspberry Pi SHT25 Senzor vlažnosti i temperature Python Vodič: SHT25 I2C Senzor vlažnosti i temperature ± 1,8%RH ± 0,2 ° C I2C mini modul. Senzor vlažnosti i temperature SHT25 visoke preciznosti postao je industrijski standard u pogledu faktora oblika i inteligencije, pružajući kalibrirani, linearizirani signal senzora
Arduino solarni senzor temperature i vlažnosti kao 433mhz Oregonski senzor: 6 koraka
Arduino senzor temperature i vlažnosti na solarni pogon kao 433mhz Oregonski senzor: Ovo je konstrukcija senzora temperature i vlažnosti na solarni pogon. Senzor emulira 433mhz Oregonski senzor i vidljiv je na Telldus Net gatewayu. Šta vam je potrebno: 1x " 10-LED Senzor pokreta solarne energije " sa Ebaya. Provjerite da li piše baterija od 3,7 V
Raspberry Pi - HIH6130 I2C Senzor vlažnosti i temperature Python Vodič: 4 koraka
Raspberry Pi - HIH6130 I2C Senzor vlažnosti i temperature Python Vodič: HIH6130 je senzor vlažnosti i temperature s digitalnim izlazom. Ovi senzori pružaju nivo preciznosti od ± 4% RH. Uz dugoročnu stabilnost, vodeću u industriji, digitalni I2C s kompenzacijom temperature, vodeću pouzdanost u industriji, energetsku učinkovitost
Senzor temperature i vlažnosti sa Arduino i LCD ekranom: 4 koraka
Senzor temperature i vlažnosti sa Arduinom i LCD ekranom: Zdravo momci, dobrodošli nazad u Artuino. Kao što ste vidjeli, započeo sam InstructableToday ćemo napraviti Temperature & Mjerač vlage sa DHT11 modulom. PočnimoP.S. Pretplatite se i lajkujte video
Vodič Kako koristiti DHT11 senzor vlažnosti: 4 koraka
Vodič Kako koristiti DHT11 senzor vlažnosti: Opis: DHT11 Temperatura & Senzor vlažnosti ima temperaturu & kompleks senzora vlažnosti s kalibriranim izlazom digitalnog signala. Korištenjem ekskluzivne tehnike prikupljanja digitalnih signala i temperature & tehnologija mjerenja vlage