Indholdsfortegnelse:

Arduino Nano - HTS221 Relativ luftfugtighed og temperatursensor Tutorial: 4 trin
Arduino Nano - HTS221 Relativ luftfugtighed og temperatursensor Tutorial: 4 trin

Video: Arduino Nano - HTS221 Relativ luftfugtighed og temperatursensor Tutorial: 4 trin

Video: Arduino Nano - HTS221 Relativ luftfugtighed og temperatursensor Tutorial: 4 trin
Video: STEMMA Sunday — датчик температуры/влажности TE Connectivity HTU31D 2024, Juli
Anonim
Image
Image

HTS221 er en ultrakompakt kapacitiv digital sensor til relativ luftfugtighed og temperatur. Det inkluderer et følerelement og et blandet signal applikationsspecifikt integreret kredsløb (ASIC) til at levere måleoplysningerne gennem digitale serielle grænseflader. Integreret med så mange funktioner er dette en af de mest passende sensorer til kritiske fugtigheds- og temperaturmålinger. Her er demonstrationen med arduino nano.

Trin 1: Hvad du har brug for..

Hvad du har brug for..!!
Hvad du har brug for..!!

1. Arduino Nano

2. HTS221

3. I²C -kabel

4. I²C Shield til Arduino Nano

Trin 2: Forbindelser:

Tilslutninger
Tilslutninger
Tilslutninger
Tilslutninger
Tilslutninger
Tilslutninger
Tilslutninger
Tilslutninger

Tag et I2C -skjold til Arduino Nano og skub det forsigtigt hen over stifterne på Nano.

Tilslut derefter den ene ende af I2C -kablet til HTS221 -sensoren og den anden ende til I2C -skærmen.

Forbindelser er vist på billedet ovenfor.

Trin 3: Kode:

Kode
Kode

Arduino-koden til HTS221 kan downloades fra vores github-depot- DCUBE Community.

Her er linket til det samme:

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

Vi inkluderer bibliotek Wire.h for at lette I2c -kommunikationen mellem sensoren og Arduino -kortet.

Du kan også kopiere koden herfra, den er givet som følger:

// Distribueret med en fri vilje licens.

// Brug den, som du vil, profit eller gratis, forudsat at den passer ind i licenserne til de tilhørende værker.

// HTS221

// Denne kode er designet til at fungere med HTS221_I2CS I2C Mini Module

#omfatte

// HTS221 I2C -adressen er 0x5F

#define Addr 0x5F

ugyldig opsætning ()

{

// Initialiser I2C -kommunikation som MASTER

Wire.begin ();

// Initialiser seriel kommunikation, indstil baudhastighed = 9600

Serial.begin (9600);

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg gennemsnitligt konfigurationsregister

Wire.write (0x10);

// Temperaturgennemsnitlige prøver = 256, Fugtighedsgennemsnitlige prøver = 512

Wire.write (0x1B);

// Stop I2C -transmission

Wire.endTransmission ();

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg kontrolregister1

Wire.write (0x20);

// Tænd, kontinuerlig opdatering, dataudgangshastighed = 1 Hz

Wire.write (0x85);

// Stop I2C -transmission

Wire.endTransmission ();

forsinkelse (300);

}

hulrum ()

{

usignerede int -data [2];

usigneret int val [4];

usigneret int H0, H1, H2, H3, T0, T1, T2, T3, rå;

// Fugtighedsopkaldelsesværdier

for (int i = 0; i <2; i ++)

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((48 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fugtighedsdata

H0 = data [0] / 2;

H1 = data [1] / 2;

for (int i = 0; i <2; i ++)

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((54 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fugtighedsdata

H2 = (data [1] * 256,0) + data [0];

for (int i = 0; i <2; i ++)

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((58 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fugtighedsdata

H3 = (data [1] * 256,0) + data [0];

// Temperaturopkaldsværdier

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x32);

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x33);

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x35);

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

raw = Wire.read ();

}

rå = rå & 0x0F;

// Konverter temperaturopkaldsværdierne til 10-bit

T0 = ((rå & 0x03) * 256) + T0;

T1 = ((rå & 0x0C) * 64) + T1;

for (int i = 0; i <2; i ++)

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((60 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene

T2 = (data [1] * 256,0) + data [0];

for (int i = 0; i <2; i ++)

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((62 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene

T3 = (data [1] * 256,0) + data [0];

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x28 | 0x80);

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 4 bytes data

Wire.requestFrom (Addr, 4);

// Læs 4 bytes data

// fugtigheds msb, fugtighed lsb, temp msb, temp lsb

hvis (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Konverter dataene

flydefugtighed = (val [1] * 256,0) + val [0];

fugtighed = ((1,0 * H1) - (1,0 * H0)) * (1,0 * fugtighed - 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;

// Output data til seriel skærm

Serial.print ("Relativ luftfugtighed:");

Serielt tryk (fugtighed);

Serial.println (" % RH");

Serial.print ("Temperatur i Celsius:");

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

Serial.print ("Temperatur i Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

forsinkelse (500);

}

Trin 4: Ansøgninger:

HTS221 kan bruges i forskellige forbrugerprodukter som luftfugtere og køleskabe osv. Denne sensor finder også sin anvendelse i en bredere arena, herunder smart hjemmeautomatisering, industriel automatisering, åndedrætsudstyr, aktiv- og varesporing.

Anbefalede: