Satura rādītājs:

Arduino Nano - HTS221 relatīvā mitruma un temperatūras sensora apmācība: 4 soļi
Arduino Nano - HTS221 relatīvā mitruma un temperatūras sensora apmācība: 4 soļi

Video: Arduino Nano - HTS221 relatīvā mitruma un temperatūras sensora apmācība: 4 soļi

Video: Arduino Nano - HTS221 relatīvā mitruma un temperatūras sensora apmācība: 4 soļi
Video: BME280 Sensor Test with Arduino: pressure, humidity and temperature for the New Chronograph Project 2024, Novembris
Anonim
Image
Image

HTS221 ir īpaši kompakts kapacitatīvs digitālais sensors relatīvajam mitrumam un temperatūrai. Tas ietver sensoru elementu un jauktu signālu lietojumprogrammu integrētu shēmu (ASIC), lai sniegtu mērījumu informāciju, izmantojot digitālās sērijas saskarnes. Integrēts ar tik daudzām funkcijām, tas ir viens no vispiemērotākajiem sensoriem kritiskiem mitruma un temperatūras mērījumiem. Šeit ir demonstrācija ar arduino nano.

1. solis: kas jums nepieciešams..

Ko tev vajag..!!
Ko tev vajag..!!

1. Arduino Nano

2. HTS221

3. I²C kabelis

4. I²C vairogs Arduino Nano

2. darbība. Savienojumi:

Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi

Paņemiet I2C vairogu Arduino Nano un viegli piespiediet to pār Nano tapām.

Pēc tam pievienojiet I2C kabeļa vienu galu HTS221 sensoram un otru galu pie I2C vairoga.

Savienojumi ir parādīti attēlā iepriekš.

3. darbība: kods:

Kods
Kods

HTS221 arduino kodu var lejupielādēt no mūsu github repozitorija DCUBE Community.

Šeit ir saite uz to pašu:

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

Mēs iekļaujam bibliotēku Wire.h, lai atvieglotu sensora I2c komunikāciju ar Arduino plati.

Varat arī nokopēt kodu no šejienes, tas ir norādīts šādi:

// Izplatīts ar brīvās gribas licenci.

// Izmantojiet to jebkurā veidā, bez peļņas vai bez maksas, ja tas iekļaujas saistīto darbu licencēs.

// HTS221

// Šis kods ir paredzēts darbam ar mini moduli HTS221_I2CS I2C

#iekļaut

// HTS221 I2C adrese ir 0x5F

#define Addr 0x5F

anulēts iestatījums ()

{

// Inicializēt I2C komunikāciju kā MASTER

Wire.begin ();

// Inicializēt seriālo komunikāciju, iestatīt pārraides ātrumu = 9600

Sērijas sākums (9600);

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Izvēlieties vidējo konfigurācijas reģistru

Wire.write (0x10);

// Vidējie temperatūras paraugi = 256, vidējie mitruma paraugi = 512

Wire.write (0x1B);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet vadības reģistru1

Wire.write (0x20);

// Ieslēgšana, nepārtraukta atjaunināšana, datu izvades ātrums = 1 Hz

Wire.write (0x85);

// Apturēt I2C pārraidi

Wire.endTransmission ();

kavēšanās (300);

}

tukša cilpa ()

{

neparakstīti int dati [2];

neparakstīts int val [4];

neparakstīts int H0, H1, H2, H3, T0, T1, T2, T3, neapstrādāts;

// Mitruma zvana vērtības

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

{

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Sūtīt datu reģistru

Wire.write ((48 + i));

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 1 baitu datu

Wire.requestFrom (Addr, 1);

// Lasīt 1 baitu datu

ja (Wire.available () == 1)

{

dati = Wire.read ();

}

}

// Pārvērst mitruma datus

H0 = dati [0] / 2;

H1 = dati [1] / 2;

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

{

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Sūtīt datu reģistru

Wire.write ((54 + i));

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 1 baitu datu

Wire.requestFrom (Addr, 1);

// Lasīt 1 baitu datu

ja (Wire.available () == 1)

{

dati = Wire.read ();

}

}

// Pārvērst mitruma datus

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

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

{

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Sūtīt datu reģistru

Wire.write ((58 + i));

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 1 baitu datu

Wire.requestFrom (Addr, 1);

// Lasīt 1 baitu datu

ja (Wire.available () == 1)

{

dati = Wire.read ();

}

}

// Pārvērst mitruma datus

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

// Temperatūras zvana vērtības

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Sūtīt datu reģistru

Wire.write (0x32);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 1 baitu datu

Wire.requestFrom (Addr, 1);

// Lasīt 1 baitu datu

ja (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Sūtīt datu reģistru

Wire.write (0x33);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 1 baitu datu

Wire.requestFrom (Addr, 1);

// Lasīt 1 baitu datu

ja (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Sūtīt datu reģistru

Wire.write (0x35);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 1 baitu datu

Wire.requestFrom (Addr, 1);

// Lasīt 1 baitu datu

ja (Wire.available () == 1)

{

raw = Wire.read ();

}

neapstrādāts = neapstrādāts & 0x0F;

// Konvertējiet temperatūras zvana vērtības uz 10 bitiem

T0 = ((neapstrādāts & 0x03) * 256) + T0;

T1 = ((neapstrādāta & 0x0C) * 64) + T1;

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

{

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Sūtīt datu reģistru

Wire.write ((60 + i));

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 1 baitu datu

Wire.requestFrom (Addr, 1);

// Lasīt 1 baitu datu

ja (Wire.available () == 1)

{

dati = Wire.read ();

}

}

// Konvertēt datus

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

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

{

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Sūtīt datu reģistru

Wire.write ((62 + i));

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 1 baitu datu

Wire.requestFrom (Addr, 1);

// Lasīt 1 baitu datu

ja (Wire.available () == 1)

{

dati = Wire.read ();

}

}

// Konvertēt datus

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

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Sūtīt datu reģistru

Wire.write (0x28 | 0x80);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 4 baitus datu

Wire.requestFrom (Addr, 4);

// Lasīt 4 baitus datu

// mitrums msb, mitrums lsb, temp msb, temp lsb

ja (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Konvertēt datus

pludiņa mitrums = (val [1] * 256,0) + val [0];

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

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

pludiņš cTemp = ((((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

pludiņš fTemp = (cTemp * 1.8) + 32;

// Izvadiet datus uz seriālo monitoru

Serial.print ("Relatīvais mitrums:");

Sērijas nospiedums (mitrums);

Serial.println (" % RH");

Serial.print ("Temperatūra pēc Celsija:");

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

Serial.print ("Temperatūra pēc Fārenheita:");

Sērijas nospiedums (fTemp);

Serial.println ("F");

kavēšanās (500);

}

4. darbība. Lietojumprogrammas:

HTS221 var izmantot dažādās patēriņa precēs, piemēram, gaisa mitrinātājos un ledusskapjos uc

Ieteicams: