INHOUDSOPGAWE:

Arduino Nano - HTS221 Relatiewe humiditeit en temperatuur sensor handleiding: 4 stappe
Arduino Nano - HTS221 Relatiewe humiditeit en temperatuur sensor handleiding: 4 stappe

Video: Arduino Nano - HTS221 Relatiewe humiditeit en temperatuur sensor handleiding: 4 stappe

Video: Arduino Nano - HTS221 Relatiewe humiditeit en temperatuur sensor handleiding: 4 stappe
Video: STC-3028 Thermostat with Heat and Humidity Fully Explained and demonstrated 2024, November
Anonim
Image
Image

HTS221 is 'n ultra kompakte kapasitiewe digitale sensor vir relatiewe humiditeit en temperatuur. Dit bevat 'n waarnemingselement en 'n gemengde seintoepassingspesifieke geïntegreerde stroombaan (ASIC) om die meetinligting deur middel van digitale seriële koppelvlakke te verskaf. Dit is geïntegreer met soveel funksies en is een van die mees geskikte sensors vir kritieke humiditeits- en temperatuurmetings. Hier is die demonstrasie met arduino nano.

Stap 1: wat u nodig het..

Wat jy nodig het..!!
Wat jy nodig het..!!

1. Arduino Nano

2. HTS221

3. I²C -kabel

4. I²C -skild vir Arduino Nano

Stap 2: Verbindings:

Verbindings
Verbindings
Verbindings
Verbindings
Verbindings
Verbindings
Verbindings
Verbindings

Neem 'n I2C -skild vir Arduino Nano en druk dit saggies oor die penne van Nano.

Koppel dan die een kant van die I2C -kabel aan die HTS221 -sensor en die ander kant aan die I2C -skild.

Verbindings word op die foto hierbo getoon.

Stap 3: Kode:

Kode
Kode

Die arduino-kode vir HTS221 kan afgelaai word vanaf ons github repository- DCUBE Community.

Hier is die skakel vir dieselfde:

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

Ons bevat biblioteek Wire.h om die I2c -kommunikasie van die sensor met die Arduino -bord te vergemaklik.

U kan die kode ook hiervandaan kopieer; dit word soos volg gegee:

// Versprei met 'n vrywillige lisensie.

// Gebruik dit op enige manier wat u wil, wins of gratis, mits dit in die lisensies van die gepaardgaande werke pas.

// HTS221

// Hierdie kode is ontwerp om te werk met die HTS221_I2CS I2C Mini Module

#insluit

// HTS221 I2C -adres is 0x5F

#definieer Addr 0x5F

leemte opstelling ()

{

// Initialiseer I2C -kommunikasie as MASTER

Wire.begin ();

// Initialiseer seriële kommunikasie, stel baud rate = 9600 in

Serial.begin (9600);

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Kies gemiddelde konfigurasieregister

Draad.skryf (0x10);

// Temperatuur gemiddelde monsters = 256, Humiditeit gemiddelde monsters = 512

Wire.write (0x1B);

// Stop I2C -oordrag

Wire.endTransmission ();

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Kies kontroleregister1

Draad.skryf (0x20);

// Aan, deurlopende opdatering, data -uitsetsnelheid = 1 Hz

Wire.write (0x85);

// Stop I2C -oordrag

Wire.endTransmission ();

vertraging (300);

}

leemte lus ()

{

ongetekende int data [2];

ongetekende int val [4];

ongetekende int H0, H1, H2, H3, T0, T1, T2, T3, rou;

// Humiditeitsoproepwaardes

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

{

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Stuur dataregister

Wire.write ((48 + i));

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr, 1);

// Lees 1 greep data

as (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Skakel humiditeitsdata om

H0 = data [0] / 2;

H1 = data [1] / 2;

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

{

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Stuur dataregister

Wire.write ((54 + i));

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr, 1);

// Lees 1 greep data

as (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Skakel humiditeitsdata om

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

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

{

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Stuur dataregister

Wire.write ((58 + i));

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr, 1);

// Lees 1 greep data

as (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Skakel humiditeitsdata om

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

// Temperatuur -oproepwaardes

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Stuur dataregister

Wire.write (0x32);

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr, 1);

// Lees 1 greep data

as (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Stuur dataregister

Wire.write (0x33);

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr, 1);

// Lees 1 greep data

as (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Stuur dataregister

Draad.skryf (0x35);

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr, 1);

// Lees 1 greep data

as (Wire.available () == 1)

{

rou = draad.lees ();

}

rou = rou & 0x0F;

// Skakel die temperatuuroproepwaardes om na 10-bis

T0 = ((rou & 0x03) * 256) + T0;

T1 = ((rou & 0x0C) * 64) + T1;

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

{

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Stuur dataregister

Wire.write ((60 + i));

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr, 1);

// Lees 1 greep data

as (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Skakel die data om

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

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

{

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Stuur dataregister

Wire.write ((62 + i));

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr, 1);

// Lees 1 greep data

as (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Skakel die data om

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

// Begin I2C -oordrag

Wire.beginTransmission (Addr);

// Stuur dataregister

Wire.write (0x28 | 0x80);

// Stop I2C -oordrag

Wire.endTransmission ();

// Versoek 4 grepe data

Wire.requestFrom (Addr, 4);

// Lees 4 grepe data

// humiditeit msb, humiditeit lsb, temp msb, temp lsb

as (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Skakel die data om

float humiditeit = (val [1] * 256.0) + val [0];

humiditeit = ((1.0 * H1) - (1.0 * H0)) * (1.0 * humiditeit - 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;

// Uitset data na die seriële monitor

Serial.print ("Relatiewe humiditeit:");

Reeks.afdruk (humiditeit);

Serial.println (" % RH");

Serial.print ("Temperatuur in Celsius:");

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

Serial.print ("Temperatuur in Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

vertraging (500);

}

Stap 4: Aansoeke:

HTS221 kan gebruik word in verskillende verbruikersprodukte, soos lugbevochtigers en yskaste, ens. Hierdie sensor kan ook op 'n wyer gebied toegepas word, insluitend outomatiese huishoudelike outomatisering, industriële outomatisering, respiratoriese toerusting, opsporing van bates en goedere.

Aanbeveel: