Sisukord:

Arduino Nano - HTS221 suhtelise niiskuse ja temperatuurianduri õpetus: 4 sammu
Arduino Nano - HTS221 suhtelise niiskuse ja temperatuurianduri õpetus: 4 sammu

Video: Arduino Nano - HTS221 suhtelise niiskuse ja temperatuurianduri õpetus: 4 sammu

Video: Arduino Nano - HTS221 suhtelise niiskuse ja temperatuurianduri õpetus: 4 sammu
Video: BME280 Sensor Test with Arduino: pressure, humidity and temperature for the New Chronograph Project 2024, November
Anonim
Image
Image

HTS221 on ülikompaktne mahtuvuslik digitaalne andur suhtelise niiskuse ja temperatuuri jaoks. See sisaldab andurielementi ja segasignaalirakenduse spetsiifilist integraallülitust (ASIC), et edastada mõõtmisteavet digitaalsete jadaliideste kaudu. See on integreeritud nii paljude funktsioonidega, see on üks kõige sobivamaid andureid kriitilise niiskuse ja temperatuuri mõõtmiseks. Siin on demonstratsioon arduino nanoga.

Samm: mida vajate..

Mida sa vajad..!!
Mida sa vajad..!!

1. Arduino Nano

2. HTS221

3. I²C kaabel

4. I²C kilp Arduino Nano jaoks

Samm: ühendused:

Ühendused
Ühendused
Ühendused
Ühendused
Ühendused
Ühendused
Ühendused
Ühendused

Võtke Arduino Nano jaoks I2C kilp ja lükake see õrnalt üle Nano tihvtide.

Seejärel ühendage I2C kaabli üks ots HTS221 anduriga ja teine ots I2C varjestusega.

Ühendused on näidatud ülaltoodud pildil.

3. samm: kood:

Kood
Kood

HTS221 arduino koodi saab alla laadida meie githubi hoidlast DCUBE Community.

Siin on link samale:

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

Kaasame raamatukogu Wire.h, et hõlbustada anduri I2c -side Arduino plaadiga.

Siit saate koodi ka kopeerida, see on järgmine:

// Levitatakse vaba tahte litsentsiga.

// Kasutage seda soovitud viisil, kasumit teenides või tasuta, tingimusel et see sobib sellega seotud teoste litsentsidega.

// HTS221

// See kood on loodud töötama koos HTS221_I2CS I2C minimooduliga

#kaasake

// HTS221 I2C aadress on 0x5F

#define Addr 0x5F

tühine seadistus ()

{

// Initsialiseeri I2C side kui MASTER

Wire.begin ();

// Initsialiseeri jadaühendus, määrake edastuskiirus = 9600

Seriaalne algus (9600);

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Valige keskmine konfiguratsiooniregister

Wire.write (0x10);

// Temperatuuri keskmised proovid = 256, Niiskuse keskmised proovid = 512

Wire.write (0x1B);

// Peata I2C edastamine

Wire.endTransmission ();

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Valige juhtregister1

Wire.write (0x20);

// Toide sisse lülitatud, pidev värskendamine, andmete väljundkiirus = 1 Hz

Wire.write (0x85);

// Peata I2C edastamine

Wire.endTransmission ();

viivitus (300);

}

tühine tsükkel ()

{

allkirjastamata int andmed [2];

allkirjastamata int val [4];

allkirjastamata int H0, H1, H2, H3, T0, T1, T2, T3, toores;

// Niiskuse kõne väärtused

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((48 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Loe 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Niiskuse andmete teisendamine

H0 = andmed [0] / 2;

H1 = andmed [1] / 2;

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((54 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Loe 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Niiskuse andmete teisendamine

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

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((58 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Loe 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Niiskuse andmete teisendamine

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

// Temperatuuri määramise väärtused

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write (0x32);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write (0x33);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write (0x35);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Loe 1 bait andmeid

kui (Wire.available () == 1)

{

toores = Wire.read ();

}

toores = toores & 0x0F;

// Teisendage temperatuurikõne väärtused 10-bitisteks

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

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

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((60 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Teisendage andmed

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

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

{

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write ((62 + i));

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 1 baiti andmeid

Wire.requestFrom (Addr, 1);

// Lugege 1 bait andmeid

kui (Wire.available () == 1)

{

andmed = Wire.read ();

}

}

// Teisendage andmed

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

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Andmete registri saatmine

Wire.write (0x28 | 0x80);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotle 4 baiti andmeid

Wire.requestFrom (Addr, 4);

// Loe 4 baiti andmeid

// niiskus msb, niiskus lsb, temp msb, temp lsb

kui (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Teisendage andmed

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

niiskus = ((1,0 * H1) - (1,0 * H0)) * (1,0 * niiskus - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

int temp = (val [3] * 256) + val [2];

ujuk cTemp = ((((T1 - T0) / 8,0) * (temp - T2)) / (T3 - T2) + (T0 / 8,0);

ujuk fTemp = (cTemp * 1,8) + 32;

// Andmete väljastamine jadamonitorile

Serial.print ("Suhteline niiskus:");

Serial.print (niiskus);

Serial.println (" % RH");

Serial.print ("Temperatuur Celsiuse järgi:");

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

Serial.print ("Temperatuur Fahrenheiti järgi:");

Serial.print (fTemp);

Serial.println ("F");

viivitus (500);

}

4. samm: rakendused:

HTS221 saab kasutada mitmesugustes tarbekaupades nagu õhuniisutajad ja külmikud jne. Seda andurit saab kasutada ka laiemal areenil, sealhulgas nutika kodu automatiseerimine, tööstusautomaatika, hingamisteede seadmed, varade ja kaupade jälgimine.

Soovitan: