Turinys:

„Arduino Nano“- HTS221 santykinio drėgmės ir temperatūros jutiklio pamoka: 4 žingsniai
„Arduino Nano“- HTS221 santykinio drėgmės ir temperatūros jutiklio pamoka: 4 žingsniai

Video: „Arduino Nano“- HTS221 santykinio drėgmės ir temperatūros jutiklio pamoka: 4 žingsniai

Video: „Arduino Nano“- HTS221 santykinio drėgmės ir temperatūros jutiklio pamoka: 4 žingsniai
Video: Arduino Nano 33 BLE Sense — плата с голосовым управлением, IMU, датчиком цвета и метеосенсором. 2024, Liepa
Anonim
Image
Image

HTS221 yra ypač kompaktiškas talpinis skaitmeninis jutiklis, skirtas santykiniam drėgnumui ir temperatūrai. Jame yra jutimo elementas ir mišraus signalo taikymo integruotas grandynas (ASIC), skirtas pateikti matavimo informaciją per skaitmenines nuoseklias sąsajas. Integruotas su daugybe funkcijų, tai yra vienas tinkamiausių jutiklių kritiniams drėgmės ir temperatūros matavimams. Štai demonstracija su arduino nano.

1 žingsnis: ko jums reikia..

Ko tau reikia..!!
Ko tau reikia..!!

1. „Arduino Nano“

2. HTS221

3. I²C kabelis

4. „I²C Shield“, skirtas „Arduino Nano“

2 žingsnis: jungtys:

Sujungimai
Sujungimai
Sujungimai
Sujungimai
Sujungimai
Sujungimai
Sujungimai
Sujungimai

Paimkite „Arduino Nano“I2C skydą ir švelniai stumkite jį per „Nano“kaiščius.

Tada vieną I2C kabelio galą prijunkite prie HTS221 jutiklio, o kitą - prie I2C skydo.

Sujungimai parodyti aukščiau esančiame paveikslėlyje.

3 žingsnis: kodas:

Kodas
Kodas

HTS221 arduino kodą galima atsisiųsti iš mūsų „github“saugyklos- „DCUBE Community“.

Čia yra nuoroda į tą patį:

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

Įtraukiame „Wire.h“biblioteką, kad palengvintume jutiklio I2c ryšį su „Arduino“plokšte.

Taip pat galite nukopijuoti kodą iš čia, jis pateikiamas taip:

// Platinama su laisvos valios licencija.

// Naudokite bet kokiu būdu, pelningai ar nemokamai, jei jis atitinka susijusių darbų licencijas.

// HTS221

// Šis kodas skirtas dirbti su „HTS221_I2CS I2C Mini“moduliu

#įtraukti

// HTS221 I2C adresas yra 0x5F

#define Addr 0x5F

negaliojanti sąranka ()

{

// Inicijuoti I2C komunikaciją kaip MASTER

Wire.begin ();

// Inicijuoti nuoseklųjį ryšį, nustatyti duomenų perdavimo spartą = 9600

Serial.begin (9600);

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite vidutinį konfigūracijos registrą

Wire.write (0x10);

// Temperatūros vidurkio mėginiai = 256, Vidutinės drėgmės mėginiai = 512

Wire.write (0x1B);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite valdymo registrą1

Wire.write (0x20);

// Įjungimas, nuolatinis atnaujinimas, duomenų išvesties sparta = 1 Hz

Wire.write (0x85);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

vėlavimas (300);

}

tuštumos kilpa ()

{

nepasirašyti int duomenys [2];

unsigned int val [4];

nepasirašytas int H0, H1, H2, H3, T0, T1, T2, T3, neapdorotas;

// Drėgmės nustatymo vertės

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((48 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti drėgmės duomenis

H0 = duomenys [0] / 2;

H1 = duomenys [1] / 2;

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((54 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti drėgmės duomenis

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

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((58 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti drėgmės duomenis

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

// Temperatūros nustatymo vertės

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write (0x32);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write (0x33);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write (0x35);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

raw = Wire.read ();

}

žaliavas = žalias & 0x0F;

// Konvertuokite temperatūros iškvietimo reikšmes į 10 bitų

T0 = ((neapdorotas ir 0x03) * 256) + T0;

T1 = ((neapdorota ir 0x0C) * 64) + T1;

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((60 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti duomenis

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

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((62 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti duomenis

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

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write (0x28 | 0x80);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 4 baitų duomenų

Wire.requestFrom (Addr, 4);

// Perskaitykite 4 baitus duomenų

// drėgmė msb, drėgmė lsb, temp msb, temp lsb

jei (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Konvertuoti duomenis

plūdės drėgmė = (val [1] * 256,0) + val [0];

drėgmė = ((1,0 * H1) - (1,0 * H0)) * (1,0 * drėgmė - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

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

plūdė cTemp = ((((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

plūdė fTemp = (cTemp * 1.8) + 32;

// Duomenų išvedimas į serijinį monitorių

Serial.print ("Santykinė drėgmė:");

Serijinis atspaudas (drėgmė);

Serial.println (" % RH");

Serial.print ("Temperatūra Celsijaus laipsniais:");

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

Serial.print ("Temperatūra Farenheitu:");

Serial.print (fTemp);

Serial.println ("F");

vėlavimas (500);

}

4 žingsnis: programos:

HTS221 gali būti naudojamas įvairiose plataus vartojimo prekėse, tokiose kaip oro drėkintuvai ir šaldytuvai ir tt

Rekomenduojamas: