Բովանդակություն:

Arduino Nano - HTS221 Հարաբերական խոնավության և ջերմաստիճանի տվիչների ձեռնարկ. 4 քայլ
Arduino Nano - HTS221 Հարաբերական խոնավության և ջերմաստիճանի տվիչների ձեռնարկ. 4 քայլ

Video: Arduino Nano - HTS221 Հարաբերական խոնավության և ջերմաստիճանի տվիչների ձեռնարկ. 4 քայլ

Video: Arduino Nano - HTS221 Հարաբերական խոնավության և ջերմաստիճանի տվիչների ձեռնարկ. 4 քայլ
Video: How to use On-Board Temperature and Humidity Sensor in Arduino Nano 33 BLE Sense 2024, Նոյեմբեր
Anonim
Image
Image

HTS221- ը ծայրահեղ կոմպակտ տարողունակ թվային սենսոր է հարաբերական խոնավության և ջերմաստիճանի համար: Այն ներառում է զգայուն տարր և խառը ազդանշանների կիրառման հատուկ ինտեգրալ միացում (ASIC) `թվային սերիական միջերեսների միջոցով չափման տեղեկատվությունը տրամադրելու համար: Ինտեգրված այսքան շատ հատկանիշներով սա խոնավության և ջերմաստիճանի կրիտիկական չափումների ամենահարմար սենսորներից է: Ահա ցուցադրումը arduino nano- ով:

Քայլ 1: Այն, ինչ ձեզ հարկավոր է..

Այն, ինչ ձեզ պետք է.. !!
Այն, ինչ ձեզ պետք է.. !!

1. Արդուինո Նանո

2. HTS221

3. I²C մալուխ

4. I²C վահան Arduino Nano- ի համար

Քայլ 2: Միացումներ

Միացումներ
Միացումներ
Միացումներ
Միացումներ
Միացումներ
Միացումներ
Միացումներ
Միացումներ

Վերցրեք I2C վահան Arduino Nano- ի համար և նրբորեն մղեք այն Նանոյի կապանքների վրա:

Այնուհետև I2C մալուխի մի ծայրը միացրեք HTS221 սենսորին, իսկ մյուս ծայրը ՝ I2C վահանին:

Կապերը ցուցադրվում են վերևի նկարում:

Քայլ 3: Կոդ

Կոդ
Կոդ

HTS221- ի arduino կոդը կարելի է ներբեռնել մեր github պահոցից ՝ DCUBE համայնքից:

Ահա նույնի հղումը.

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

Մենք ներառում ենք Wire.h գրադարանը ՝ սենսորի I2c հաղորդակցումը Arduino տախտակի հետ հեշտացնելու համար:

Այստեղից կարող եք նաև պատճենել կոդը, այն տրվում է հետևյալ կերպ.

// Տարածված է ազատ կամքի լիցենզիայով:

// Օգտագործեք այն ինչպես ցանկանում եք, շահույթ կամ անվճար, պայմանով, որ այն տեղավորվում է դրա հետ կապված աշխատանքների լիցենզիաներում:

// HTS221

// Այս կոդը նախատեսված է HTS221_I2CS I2C մինի մոդուլի հետ աշխատելու համար

#ներառում

// HTS221 I2C հասցեն ՝ 0x5F

#սահմանեք Addr 0x5F

դատարկ կարգավորում ()

{

// Նախնականացնել I2C հաղորդակցությունը որպես ՎԱՐՊԵՏ

Wire.begin ();

// Նախնականացնել սերիական հաղորդակցությունը, սահմանել բաուդ արագություն = 9600

Serial.begin (9600);

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ընտրեք միջին կազմաձևման գրանցամատյան

Wire.write (0x10);

// averageերմաստիճանի միջին նմուշներ = 256, Խոնավության միջին նմուշներ = 512

Wire.write (0x1B);

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ընտրեք հսկիչ գրանցամատյան 1

Wire.write (0x20);

// Միացում, անընդհատ թարմացում, Տվյալների ելքային արագություն = 1 Հց

Wire.write (0x85);

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

ուշացում (300);

}

դատարկ շրջան ()

{

անստորագիր int տվյալներ [2];

անստորագիր int val [4];

անստորագիր int H0, H1, H2, H3, T0, T1, T2, T3, հում;

// Խոնավության բարձրացման արժեքներ

համար (int i = 0; i <2; i ++)

{

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ուղարկել տվյալների գրանցամատյան

Wire.write ((48 + i));

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr, 1);

// Կարդացեք տվյալների 1 բայթ

եթե (Wire.available () == 1)

{

տվյալներ = Wire.read ();

}

}

// Փոխարկել Խոնավության տվյալները

H0 = տվյալներ [0] / 2;

H1 = տվյալներ [1] / 2;

համար (int i = 0; i <2; i ++)

{

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ուղարկել տվյալների գրանցամատյան

Wire.write ((54 + i));

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr, 1);

// Կարդացեք տվյալների 1 բայթ

եթե (Wire.available () == 1)

{

տվյալներ = Wire.read ();

}

}

// Փոխարկել Խոնավության տվյալները

H2 = (տվյալներ [1] * 256.0) + տվյալներ [0];

համար (int i = 0; i <2; i ++)

{

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ուղարկել տվյալների գրանցամատյան

Wire.write ((58 + i));

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr, 1);

// Կարդացեք տվյալների 1 բայթ

եթե (Wire.available () == 1)

{

տվյալներ = Wire.read ();

}

}

// Փոխարկել Խոնավության տվյալները

H3 = (տվյալներ [1] * 256.0) + տվյալներ [0];

// Temերմաստիճանի ազատման արժեքներ

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ուղարկեք տվյալների գրանցամատյան

Wire.write (0x32);

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr, 1);

// Կարդացեք տվյալների 1 բայթ

եթե (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ուղարկել տվյալների գրանցամատյան

Wire.write (0x33);

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr, 1);

// Կարդացեք տվյալների 1 բայթ

եթե (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ուղարկել տվյալների գրանցամատյան

Wire.write (0x35);

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr, 1);

// Կարդացեք տվյալների 1 բայթ

եթե (Wire.available () == 1)

{

raw = Wire.read ();

}

հում = հում & 0x0F;

// Փոխակերպեք ջերմաստիճանի բացթողնման արժեքները 10 բիթ

T0 = ((հում և 0x03) * 256) + T0;

T1 = ((հում և 0x0C) * 64) + T1;

համար (int i = 0; i <2; i ++)

{

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ուղարկեք տվյալների գրանցամատյան

Wire.write ((60 + i));

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr, 1);

// Կարդացեք տվյալների 1 բայթ

եթե (Wire.available () == 1)

{

տվյալներ = Wire.read ();

}

}

// Փոխարկել տվյալները

T2 = (տվյալներ [1] * 256.0) + տվյալներ [0];

համար (int i = 0; i <2; i ++)

{

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ուղարկել տվյալների գրանցամատյան

Wire.write ((62 + i));

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr, 1);

// Կարդացեք տվյալների 1 բայթ

եթե (Wire.available () == 1)

{

տվյալներ = Wire.read ();

}

}

// Փոխարկել տվյալները

T3 = (տվյալներ [1] * 256.0) + տվյալներ [0];

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ուղարկեք տվյալների գրանցամատյան

Wire.write (0x28 | 0x80);

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 4 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr, 4);

// Կարդացեք 4 բայթ տվյալներ

// խոնավություն msb, խոնավություն lsb, temp msb, temp lsb

եթե (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Փոխարկել տվյալները

բոց խոնավություն = (val [1] * 256.0) + val [0];

խոնավություն = ((1.0 * H1) - (1.0 * H0)) * (1.0 * խոնավություն - 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;

// Ելքային տվյալները սերիական մոնիտորին

Serial.print ("Հարաբերական խոնավություն:");

Serial.print (խոնավություն);

Serial.println (" % RH");

Serial.print ("Cերմաստիճանը Celsius:");

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

Serial.print («Fերմաստիճանը Ֆարենհայտում.»);

Serial.print (fTemp);

Serial.println ("F");

ուշացում (500);

}

Քայլ 4: Դիմումներ

HTS221- ը կարող է օգտագործվել սպառողական տարբեր ապրանքների մեջ, ինչպիսիք են օդի խոնավացուցիչները և սառնարանները և այլն: Այս սենսորը նաև իր կիրառությունն է գտնում ավելի լայն ասպարեզում, ներառյալ Smart home automation, Industrial automation, շնչառական սարքավորումներ, ակտիվների և ապրանքների հետևում:

Խորհուրդ ենք տալիս: