ዝርዝር ሁኔታ:

HTS221 ን እና አርዱዲኖ ናኖን በመጠቀም የእርጥበት እና የሙቀት መጠን መለካት - 4 ደረጃዎች
HTS221 ን እና አርዱዲኖ ናኖን በመጠቀም የእርጥበት እና የሙቀት መጠን መለካት - 4 ደረጃዎች

ቪዲዮ: HTS221 ን እና አርዱዲኖ ናኖን በመጠቀም የእርጥበት እና የሙቀት መጠን መለካት - 4 ደረጃዎች

ቪዲዮ: HTS221 ን እና አርዱዲኖ ናኖን በመጠቀም የእርጥበት እና የሙቀት መጠን መለካት - 4 ደረጃዎች
ቪዲዮ: የአርዱብሎክ መተግበሪያን በመጫን ላይ 2024, ሀምሌ
Anonim
Image
Image

HTS221 አንፃራዊ እርጥበት እና የሙቀት መጠን እጅግ በጣም የታመቀ አቅም ያለው ዲጂታል ዳሳሽ ነው። የመለኪያ መረጃን በዲጂታል ተከታታይ በይነገጾች በኩል ለማቅረብ የስሜት ሕዋስ እና የተቀላቀለ የምልክት ትግበራ የተወሰነ የተቀናጀ ወረዳ (ASIC) ያካትታል። ከብዙ ባህሪዎች ጋር የተዋሃደ ይህ ለአስፈላጊ እርጥበት እና የሙቀት መለኪያዎች በጣም ተገቢ ከሆኑ ዳሳሾች አንዱ ነው።

በዚህ መማሪያ ውስጥ የ HTS221 ዳሳሽ ሞዱል ከአርዱዲኖ ናኖ ጋር መገናኘቱ በምስል ተገል hasል። የእርጥበት እና የሙቀት እሴቶችን ለማንበብ እኛ አርዱዲኖን ከ I2c አስማሚ ጋር ተጠቀምን።ይህ I2C አስማሚ ከአነፍናፊ ሞዱል ጋር ግንኙነቱን ቀላል እና የበለጠ አስተማማኝ ያደርገዋል።

ደረጃ 1 ሃርድዌር ያስፈልጋል

ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል

ግባችንን ለማሳካት የሚያስፈልጉን ቁሳቁሶች የሚከተሉትን የሃርድዌር ክፍሎች ያካትታሉ።

1. HTS221

2. አርዱዲኖ ናኖ

3. I2C ኬብል

4. I2C ጋሻ ለአርዱዲኖ ናኖ

ደረጃ 2 የሃርድዌር ማያያዣ;

የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት

የሃርድዌር ማያያዣ ክፍል በመሠረቱ በአነፍናፊው እና በአሩዲኖ ናኖ መካከል የሚፈለጉትን የሽቦ ግንኙነቶች ያብራራል። ለተፈለገው ውጤት በማንኛውም ስርዓት ላይ ሲሰሩ ትክክለኛ ግንኙነቶችን ማረጋገጥ መሠረታዊ አስፈላጊነት ነው። ስለዚህ አስፈላጊዎቹ ግንኙነቶች እንደሚከተለው ናቸው

HTS221 ከ I2C በላይ ይሠራል። እያንዳንዱን የአነፍናፊ በይነገጽ እንዴት ሽቦ ማገናኘት እንደሚቻል የሚያሳይ የምስል ሽቦ ንድፍ ምሳሌ እዚህ አለ።

ከሳጥን ውጭ ፣ ቦርዱ ለ I2C በይነገጽ የተዋቀረ ነው ፣ ስለሆነም እርስዎ ሌላ የማይታወቁ ከሆኑ ይህንን መንጠቆ እንዲጠቀሙ እንመክራለን።

የሚያስፈልግዎት አራት ሽቦዎች ብቻ ናቸው! Vcc ፣ Gnd ፣ SCL እና SDA ፒኖች የሚያስፈልጉት አራት ግንኙነቶች ብቻ ናቸው እና እነዚህ በ I2C ገመድ እገዛ ተገናኝተዋል።

እነዚህ ግንኙነቶች ከላይ ባሉት ሥዕሎች ውስጥ ይታያሉ።

ደረጃ 3 የእርጥበት እና የሙቀት መጠን መለኪያ ኮድ

የእርጥበት እና የሙቀት መጠን መለኪያ ኮድ
የእርጥበት እና የሙቀት መጠን መለኪያ ኮድ

አሁን በአርዱዲኖ ኮድ እንጀምር።

ከአርዲኖ ጋር የአነፍናፊ ሞጁሉን እየተጠቀምን ሳለ የ Wire.h ቤተ -መጽሐፍትን አካተናል። “ሽቦ” ቤተ -መጽሐፍት በአነፍናፊው እና በአርዱዲኖ ቦርድ መካከል ያለውን የ i2c ግንኙነት የሚያመቻቹ ተግባሮችን ይ containsል።

ጠቅላላው የአሩዲኖ ኮድ ለተጠቃሚው ምቾት ከዚህ በታች ተሰጥቷል-

#ያካትቱ

// HTS221 I2C አድራሻ 0x5F ነው

#መግለፅ Addr 0x5F

ባዶነት ማዋቀር ()

{

// የ I2C ግንኙነትን እንደ ማስተር ማስጀመር

Wire.begin ();

// ተከታታይ ግንኙነቶችን ያስጀምሩ ፣ የባውድ መጠን = 9600 ያዘጋጁ

Serial.begin (9600);

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// አማካይ የውቅረት መመዝገቢያ ይምረጡ

Wire.write (0x10);

// የሙቀት አማካይ ናሙናዎች = 256 ፣ የእርጥበት አማካይ ናሙናዎች = 512

Wire.write (0x1B);

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የቁጥጥር መመዝገቢያ ይምረጡ 1

Wire.write (0x20);

// ኃይል በርቷል ፣ ቀጣይነት ያለው ዝመና ፣ የውሂብ ውፅዓት መጠን = 1 Hz

Wire.write (0x85);

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

መዘግየት (300);

}

ባዶነት loop ()

{

ያልተፈረመ int ውሂብ [2];

ያልተፈረመ int val [4];

ያልተፈረመ int H0 ፣ H1 ፣ H2 ፣ H3 ፣ T0 ፣ T1 ፣ T2 ፣ T3 ፣ ጥሬ;

// የእርጥበት መለወጫ እሴቶች

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

{

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይላኩ

Wire.write ((48 + i));

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// የውሂብ 1 ባይት ይጠይቁ

Wire.requestFrom (Addr, 1);

// 1 ባይት ውሂብ ያንብቡ

ከሆነ (Wire.available () == 1)

{

ውሂብ = Wire.read ();

}

}

// የእርጥበት መረጃን ይለውጡ

H0 = ውሂብ [0] / 2;

H1 = ውሂብ [1] / 2;

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

{

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይላኩ

Wire.write ((54 + i));

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// የውሂብ 1 ባይት ይጠይቁ

Wire.requestFrom (Addr, 1);

// 1 ባይት ውሂብ ያንብቡ

ከሆነ (Wire.available () == 1)

{

ውሂብ = Wire.read ();

}

}

// የእርጥበት መረጃን ይለውጡ

H2 = (ውሂብ [1] * 256.0) + ውሂብ [0];

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

{

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይላኩ

Wire.write ((58 + i));

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// የውሂብ 1 ባይት ይጠይቁ

Wire.requestFrom (Addr, 1);

// 1 ባይት ውሂብ ያንብቡ

ከሆነ (Wire.available () == 1)

{

ውሂብ = Wire.read ();

}

}

// የእርጥበት መረጃን ይለውጡ

H3 = (ውሂብ [1] * 256.0) + ውሂብ [0];

// የሙቀት መጠቆሚያ እሴቶች

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይላኩ

Wire.write (0x32);

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// የውሂብ 1 ባይት ይጠይቁ

Wire.requestFrom (Addr, 1);

// 1 ባይት ውሂብ ያንብቡ

ከሆነ (Wire.available () == 1)

{

T0 = Wire.read ();

}

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይላኩ

Wire.write (0x33);

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// የውሂብ 1 ባይት ይጠይቁ

Wire.requestFrom (Addr, 1);

// 1 ባይት ውሂብ ያንብቡ

ከሆነ (Wire.available () == 1)

{

T1 = Wire.read ();

}

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይላኩ

Wire.write (0x35);

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// የውሂብ 1 ባይት ይጠይቁ

Wire.requestFrom (Addr, 1);

// 1 ባይት ውሂብ ያንብቡ

ከሆነ (Wire.available () == 1)

{

ጥሬ = Wire.read ();

}

ጥሬ = ጥሬ & 0x0F;

// የሙቀት መጠኑን እሴቶችን ወደ 10-ቢት ይለውጡ

T0 = ((ጥሬ & 0x03) * 256) + T0;

T1 = ((ጥሬ & 0x0C) * 64) + T1;

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

{

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይላኩ

Wire.write ((60 + i));

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// የውሂብ 1 ባይት ይጠይቁ

Wire.requestFrom (Addr, 1);

// 1 ባይት ውሂብ ያንብቡ

ከሆነ (Wire.available () == 1)

{

ውሂብ = Wire.read ();

}

}

// ውሂቡን ይለውጡ

T2 = (ውሂብ [1] * 256.0) + ውሂብ [0];

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

{

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይላኩ

Wire.write ((62 + i));

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// የውሂብ 1 ባይት ይጠይቁ

Wire.requestFrom (Addr, 1);

// 1 ባይት ውሂብ ያንብቡ

ከሆነ (Wire.available () == 1)

{

ውሂብ = Wire.read ();

}

}

// ውሂቡን ይለውጡ

T3 = (ውሂብ [1] * 256.0) + ውሂብ [0];

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይላኩ

Wire.write (0x28 | 0x80);

// I2C ማስተላለፍን ያቁሙ

Wire.endTransmission ();

// 4 ባይት ውሂብን ይጠይቁ

Wire.requestFrom (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 ();

}

// ውሂቡን ይለውጡ

ተንሳፋፊ እርጥበት = (ቫል [1] * 256.0) + ቫል [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];

ተንሳፋፊ cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

ተንሳፋፊ fTemp = (cTemp * 1.8) + 32;

// የውጤት መረጃን ወደ ተከታታይ ማሳያ

Serial.print ("አንጻራዊ እርጥበት:");

Serial.print (እርጥበት);

Serial.println (" % RH");

Serial.print ("የሙቀት መጠን በሴልሲየስ");

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

Serial.print ("ፋራናይት ውስጥ ያለው ሙቀት:");

Serial.print (fTemp);

Serial.println ("F");

መዘግየት (500);

}

በሽቦ ቤተ -መጽሐፍት ውስጥ Wire.write () እና Wire.read () ትዕዛዞቹን ለመፃፍ እና የአነፍናፊውን ውጤት ለማንበብ ያገለግላሉ።

Serial.print () እና Serial.println () በአርዲኖ አይዲኢ ተከታታይ ሞኒተር ላይ የአነፍናፊውን ውጤት ለማሳየት ያገለግላል።

የአነፍናፊው ውጤት ከላይ በስዕሉ ላይ ይታያል።

ደረጃ 4: ማመልከቻዎች

ማመልከቻዎች
ማመልከቻዎች

HTS221 እንደ አየር እርጥበት እና ማቀዝቀዣዎች ባሉ የተለያዩ የሸማቾች ምርቶች ውስጥ ሊሠራ ይችላል። ይህ አነፍናፊ ስማርት የቤት አውቶማቲክን ፣ የኢንዱስትሪ አውቶማቲክን ፣ የመተንፈሻ መሣሪያዎችን ፣ የንብረት እና የእቃዎችን መከታተያ ጨምሮ በሰፊው ሜዳ ውስጥ መተግበሪያውን ያገኛል።

የሚመከር: