Բովանդակություն:
Video: Arduino Nano - HTS221 Հարաբերական խոնավության և ջերմաստիճանի տվիչների ձեռնարկ. 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
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, շնչառական սարքավորումներ, ակտիվների և ապրանքների հետևում:
Խորհուրդ ենք տալիս:
Arduino AMS5812_0050-D-B ureնշման և ջերմաստիճանի տվիչների ձեռնարկ ՝ 4 քայլ
Arduino AMS5812_0050-D-B ureնշման և ջերմաստիճանի տվիչների ձեռնարկ. AMS5812 ուժեղացված ճնշման սենսորը անալոգային և թվային արդյունքներով բարձր ճշգրտության տվիչ է `անալոգային լարման ելքով և թվային I2C ինտերֆեյսով: Այն համատեղում է պիեզոռեսիստիվ զգայուն տարրը ազդանշանի կոնդենսացիոն տարրով իր գործունեության համար:
Arduino Nano - SI7050 ջերմաստիճանի տվիչների ձեռնարկ ՝ 4 քայլ
Arduino Nano - SI7050 ջերմաստիճանի տվիչների ձեռնարկ. SI7050- ը թվային ջերմաստիճանի տվիչ է, որն աշխատում է I2C հաղորդակցության արձանագրության վրա և առաջարկում է բարձր ճշգրտություն աշխատանքային լարման և ջերմաստիճանի ողջ տիրույթում: Սենսորի այս բարձր ճշգրտությունը վերագրվում է ազդանշանի նոր մշակման և անալ
Arduino Nano - TCN75A ջերմաստիճանի տվիչների ձեռնարկ ՝ 4 քայլ
Arduino Nano-TCN75A ջերմաստիճանի տվիչների ձեռնարկ. TCN75A- ն երկալար սերիական ջերմաստիճանի տվիչ է, որը ներառված է ջերմաստիճան-թվային փոխարկիչով: Այն ներառված է օգտագործողների կողմից ծրագրավորվող գրանցամատյանների հետ, որոնք ճկունություն են ապահովում ջերմաստիճանը զգացող ծրագրերի համար: Գրանցման կարգավորումները թույլ են տալիս օգտվողներին
Arduino Nano - STS21 ջերմաստիճանի տվիչների ձեռնարկ ՝ 4 քայլ
Arduino Nano - STS21 ջերմաստիճանի տվիչների ձեռնարկ. STS21 թվային ջերմաստիճանի տվիչն առաջարկում է գերազանց կատարում և տարածություն խնայող ոտնահետք: Այն ապահովում է տրամաչափված, գծային ազդանշաններ թվային, I2C ձևաչափով: Այս սենսորի պատրաստումը հիմնված է CMOSens տեխնոլոգիայի վրա, որը վերագրում է բարձրակարգ
Arduino Nano - TMP100 ջերմաստիճանի տվիչների ձեռնարկ ՝ 4 քայլ
Arduino Nano-TMP100 peratերմաստիճանի տվիչի ձեռնարկ ՝ TMP100 Բարձր ճշգրտության, ցածր էներգիայի, թվային ջերմաստիճանի տվիչ I2C MINI մոդուլ: TMP100- ը իդեալական է երկարացված ջերմաստիճանի չափման համար: Այս սարքն առաջարկում է ± 1 ° C ճշգրտություն ՝ առանց չափաբերման կամ արտաքին բաղադրիչի ազդանշանի կոնդիցիոներ պահանջելու: Նա