Satura rādītājs:

Mitruma un temperatūras mērīšana, izmantojot HTS221 un daļiņu fotonu: 4 soļi
Mitruma un temperatūras mērīšana, izmantojot HTS221 un daļiņu fotonu: 4 soļi

Video: Mitruma un temperatūras mērīšana, izmantojot HTS221 un daļiņu fotonu: 4 soļi

Video: Mitruma un temperatūras mērīšana, izmantojot HTS221 un daļiņu fotonu: 4 soļi
Video: Zigbee датчик освещенности, температуры и влажности с экраном на электронных чернилах Moes 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.

Šajā apmācībā ir parādīta HTS221 sensora moduļa saskarne ar daļiņu fotonu. Lai nolasītu mitruma un temperatūras vērtības, mēs esam izmantojuši daļiņas ar I2c adapteri. Šis I2C adapteris padara savienojumu ar sensora moduli vieglu un uzticamāku.

1. darbība. Nepieciešamā aparatūra:

Nepieciešamā aparatūra
Nepieciešamā aparatūra
Nepieciešamā aparatūra
Nepieciešamā aparatūra
Nepieciešamā aparatūra
Nepieciešamā aparatūra

Materiāli, kas nepieciešami mūsu mērķa sasniegšanai, ietver šādas aparatūras sastāvdaļas:

1. HTS221

2. Daļiņu fotons

3. I2C kabelis

4. I2C vairogs daļiņu fotonam

2. darbība. Aparatūras savienošana:

Aparatūras savienojums
Aparatūras savienojums
Aparatūras savienojums
Aparatūras savienojums

Aparatūras savienošanas sadaļa pamatā izskaidro nepieciešamos vadu savienojumus starp sensoru un daļiņu fotonu. Pareizu savienojumu nodrošināšana ir pamatvajadzība, strādājot pie jebkuras sistēmas vēlamajam rezultātam. Tātad nepieciešamie savienojumi ir šādi:

HTS221 darbosies, izmantojot I2C. Šeit ir elektroinstalācijas shēmas piemērs, kas parāda, kā savienot katru sensora saskarni.

Izņemot komplektu, tāfele ir konfigurēta I2C saskarnei, tāpēc mēs iesakām izmantot šo savienojumu, ja esat citādi agnostiķis.

Viss, kas Jums nepieciešams, ir četri vadi! Nepieciešami tikai četri savienojumi Vcc, Gnd, SCL un SDA, un tie ir savienoti, izmantojot I2C kabeli.

Šie savienojumi ir parādīti iepriekš redzamajos attēlos.

3. darbība. Mitruma un temperatūras mērīšanas kods:

Mitruma un temperatūras mērīšanas kods
Mitruma un temperatūras mērīšanas kods

Sāksim ar daļiņu kodu tūlīt.

Izmantojot sensoru moduli ar daļiņu, mēs iekļaujam bibliotēku application.h un spark_wiring_i2c.h. Bibliotēkā "application.h" un spark_wiring_i2c.h ir funkcijas, kas atvieglo i2c komunikāciju starp sensoru un daļiņu.

Viss daļiņu kods lietotāja ērtībai ir norādīts zemāk:

#iekļaut

#iekļaut

// HTS221 I2C adrese ir 0x5F

#define Addr 0x5F

divkāršs mitrums = 0,0;

dubultā cTemp = 0,0;

dubultā fTemp = 0,0;

int temp = 0;

anulēts iestatījums ()

{

// Iestatīt mainīgo

Particle.variable ("i2cdevice", "HTS221");

Particle.variable ("Mitrums", mitrums);

Particle.variable ("cTemp", cTemp);

// 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

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);

temp = (val [3] * 256) + val [2]; cTemp = ((((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

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

// Izvadiet datus informācijas panelī

Particle.publish ("Relatīvais mitrums:", String (mitrums));

kavēšanās (1000);

Particle.publish ("Temperatūra pēc Celsija:", String (cTemp));

kavēšanās (1000);

Particle.publish ("Temperatūra pēc Fārenheita:", String (fTemp));

kavēšanās (1000);

}

Funkcija Particle.variable () izveido mainīgos, lai saglabātu sensora izvadi, un Particle.publish () funkcija parāda izvadi vietnes informācijas panelī.

Sensora izeja ir parādīta attēlā iepriekš.

4. darbība. Lietojumprogrammas:

Lietojumprogrammas
Lietojumprogrammas

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

Ieteicams: