ዝርዝር ሁኔታ:

DHT12 (i2c ርካሽ እርጥበት እና የሙቀት ዳሳሽ) ፣ ፈጣን ቀላል አጠቃቀም 14 ደረጃዎች
DHT12 (i2c ርካሽ እርጥበት እና የሙቀት ዳሳሽ) ፣ ፈጣን ቀላል አጠቃቀም 14 ደረጃዎች

ቪዲዮ: DHT12 (i2c ርካሽ እርጥበት እና የሙቀት ዳሳሽ) ፣ ፈጣን ቀላል አጠቃቀም 14 ደረጃዎች

ቪዲዮ: DHT12 (i2c ርካሽ እርጥበት እና የሙቀት ዳሳሽ) ፣ ፈጣን ቀላል አጠቃቀም 14 ደረጃዎች
ቪዲዮ: AM2320 Digital Temperature and Humidity Sensor with LCD1602 and I2C (code) 2024, ህዳር
Anonim
DHT12 (i2c ርካሽ እርጥበት እና የሙቀት ዳሳሽ) ፣ ፈጣን ቀላል አጠቃቀም
DHT12 (i2c ርካሽ እርጥበት እና የሙቀት ዳሳሽ) ፣ ፈጣን ቀላል አጠቃቀም

በጣቢያዬ ላይ ዝማኔ እና ሌላ ማግኘት ይችላሉ

በ 2 ሽቦ (i2c ፕሮቶኮል) ሊያገለግል የሚችል ዳሳሽ እወዳለሁ ፣ ግን ርካሽ የሆነውን እወዳለሁ።

ይህ ከ i2c ወይም ከአንድ ሽቦ ግንኙነት ጋር ለሚሰሩ በጣም ዝቅተኛ ዋጋ የሙቀት/እርጥበት ዳሳሾች (ከ 1 ዶላር በታች) ለ DHT12 ተከታታይ ይህ አርዱዲኖ እና esp8266 ቤተ -መጽሐፍት ነው።

እርጥበት እና ሙቀትን ለማንበብ እና በ i2c LCD ላይ ለማሳየት esp01 ን (ተከታታይን የሚጠቀሙ ከሆነ 2 ፒን ብቻ አለዎት) ለመጠቀም ከፈለጉ በጣም ጠቃሚ።

አይአይ አንዳንድ ጊዜ መለካት የሚፈልግ ይመስላል ፣ ግን እኔ የዚህ ዛፍ አለኝ እና ከ DHT22 ጋር በጣም ተመሳሳይ እሆናለሁ። ይህንን ችግር መለካት ካለዎት በ github ላይ ጉዳዩን ይክፈቱ እና እኔ ትግበራ እጨምራለሁ።

ደረጃ 1: I2c እንዴት እንደሚሰራ

I2c እንዴት እንደሚሰራ
I2c እንዴት እንደሚሰራ

I2C በሁለት ገመዶች ማለትም SDA (የውሂብ መስመር) እና SCL (የሰዓት መስመር) ጋር አብሮ ይሰራል።

ሁለቱም እነዚህ መስመሮች ክፍት-ፍሳሽ ናቸው ፣ ግን ከተቃዋሚዎች ጋር ተጎተቱ።

ብዙውን ጊዜ በመስመሩ ላይ አንድ ጌታ እና አንድ ወይም ብዙ ባሮች አሉ ፣ ምንም እንኳን ብዙ ጌቶች ሊኖሩ ይችላሉ ፣ ግን ስለዚያ በኋላ እንነጋገራለን።

ሁለቱም ጌቶች እና ባሮች መረጃን ሊያስተላልፉ ወይም ሊቀበሉ ይችላሉ ፣ ስለሆነም አንድ መሣሪያ ከእነዚህ አራት ግዛቶች በአንዱ ሊሆን ይችላል -ማስተር ማስተላለፍ ፣ ማስተር መቀበል ፣ ባሪያ ማስተላለፍ ፣ ባሪያ መቀበል።

ደረጃ 2 ቤተ -መጽሐፍት

የእኔን ቤተ -መጽሐፍት እዚህ ማግኘት ይችላሉ።

ለማውረድ

በላይኛው ቀኝ ጥግ ላይ ያለውን የወረደውን ቁልፍ ጠቅ ያድርጉ ፣ ያልታሸገ አቃፊውን DHT12 እንደገና ይሰይሙ።

የ DHT አቃፊው DHT12.cpp እና DHT12.h የያዘ መሆኑን ያረጋግጡ።

የ DHT ቤተ -መጽሐፍት አቃፊ / ቤተ -መጽሐፍት / አቃፊዎን ያስቀምጡ።

የመጀመሪያ ቤተ -መጽሐፍትዎ ከሆነ የቤተ -መጻህፍት ንዑስ አቃፊን መፍጠር ሊያስፈልግዎት ይችላል።

IDE ን እንደገና ያስጀምሩ።

ደረጃ 3 - ባህርይ

ይህ ሊብራራ የመደበኛ የ DHT ቤተ መፃህፍት ዳሳሾችን (እና ብዙ ኮድ ለመቅዳት) ባህሪን ለመምሰል ይሞክራል ፣ እና i2c olso ን በተመሳሳይ ሁኔታ ለማስተዳደር ኮዱን እጨምራለሁ።

ዘዴው እንደ DHT ቤተ -መጽሐፍት ዳሳሽ ተመሳሳይ ነው ፣ አንዳንዶቹ እንደ ጠል ነጥብ ተግባር ይጨምራሉ።

ደረጃ 4: I2c አጠቃቀም

በ i2c (ነባሪ አድራሻ እና ነባሪ SDA SCL ፒን) ለመጠቀም ገንቢው የሚከተለው ነው

DHT12 dht12;

እና ለ SDA SCL ፒን ነባሪውን እሴት ይውሰዱ።

(ለ ESP-01 አስፈላጊ በሆነው esp8266 በተገለጸው ተቆጣጣሪ እንደገና መወሰን ይቻላል)። ወይም

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> አድራሻ

አድራሻ ለመለወጥ።

ደረጃ 5 - አንድ ሽቦ አጠቃቀም

አንድ ሽቦ ለመጠቀም -

DHT12 dht12 (uint8_t addressOrPin ፣ እውነት)

addressOrPin -> ፒን

የቦሊያን እሴት የአንድWire ወይም i2c ሞድ ምርጫ ነው።

ደረጃ 6 - ግልጽ ያልሆነ ንባብ

“በተዘዋዋሪ” ፣ “በቀላል ንባብ” ወይም በ “ሙሉ ንባብ” ሊጠቀሙበት ይችላሉ - ግልፅ ያልሆነ ፣ የመጀመሪያው ንባብ የአነፍናፊውን ትክክለኛ ንባብ ሲያደርግ ብቻ ፣ ሁለተኛው በ 2 ሰከንዶች ውስጥ ይነበባል። ክፍተት የመጀመሪያ ንባብ የተከማቸ እሴት ነው።

// የኃይል መለኪያን እስካልተላለፉ ድረስ የዳሳሽ ንባቡ 2 ሰከንድ ያለፈው ጊዜ አለው

// የሙቀት መጠንን እንደ ሴልሺየስ (ነባሪው) ተንሳፋፊ t12 = dht12.readTemperature (); // የሙቀት መጠንን እንደ ፋራናይት (isFahrenheit = true) ተንሳፋፊ f12 = dht12.readTemperature (እውነተኛ); // የዳሳሽ ንባቦች እንዲሁ እስከ 2 ሰከንዶች ያረጁ (በጣም ቀርፋፋ ዳሳሽ) ተንሳፋፊ h12 = dht12.readHumidity (); // በፋራናይት (ነባሪው) ተንሳፋፊ hif12 = dht12.computeHeatIndex (f12 ፣ h12) ውስጥ የሙቀት መረጃ ጠቋሚውን ያስሉ ፤ // በሴልሲየስ (isFahreheit = false) ተንሳፋፊ hic12 = dht12.computeHeatIndex (t12 ፣ h12 ፣ ሐሰት) // በፋራናይት (ነባሪው) ተንሳፋፊ dpf12 = dht12.dewPoint (f12 ፣ h12) ውስጥ የጤዛ ነጥብ ያስሉ። // በሴልሲየስ ውስጥ የጤዛ ነጥብን ያስሉ (isFahreheit = false) float dpc12 = dht12.dewPoint (t12 ፣ h12 ፣ ሐሰት);

ደረጃ 7 ቀላል ንባብ

የንባብ ሁኔታን ለማግኘት ቀላል ንባብ።

// የኃይል መለኪያን እስካልተላለፉ ድረስ የዳሳሽ ንባቡ 2 ሰከንድ ያለፈው ጊዜ አለው

bool chk = dht12. ማንበብ (); // እውነተኛ ንባብ ደህና ነው ፣ የሐሰት ንባብ ችግር

// ሙቀትን እንደ ሴልሺየስ ያንብቡ (ነባሪው)

ተንሳፋፊ t12 = dht12.readTemperature (); // የሙቀት መጠንን እንደ ፋራናይት (isFahrenheit = true) ተንሳፋፊ f12 = dht12.readTemperature (እውነተኛ); // የዳሳሽ ንባቦች እንዲሁ እስከ 2 ሰከንዶች ዕድሜ ድረስ (በጣም ቀርፋፋ ዳሳሽ) ተንሳፋፊ h12 = dht12.readHumidity (); // በፋራናይት (ነባሪው) ተንሳፋፊ hif12 = dht12.computeHeatIndex (f12 ፣ h12) ውስጥ የሙቀት መረጃ ጠቋሚውን ያስሉ ፤ // በሴልሲየስ (isFahreheit = false) ተንሳፋፊ hic12 = dht12.computeHeatIndex (t12 ፣ h12 ፣ ሐሰት) // በፋራናይት (ነባሪው) ተንሳፋፊ dpf12 = dht12.dewPoint (f12 ፣ h12) ውስጥ የጤዛ ነጥብ ያስሉ። // በሴልሲየስ ውስጥ የጤዛ ነጥብን ያስሉ (isFahreheit = false) float dpc12 = dht12.dewPoint (t12 ፣ h12 ፣ ሐሰት);

ደረጃ 8: ሙሉ ንባብ

አንድ የተወሰነ ሁኔታ ለማግኘት ሙሉ ንባብ።

// የኃይል መለኪያን እስካልተላለፉ ድረስ የዳሳሽ ንባቡ 2 ሰከንድ ያለፈው ጊዜ አለው

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (ኤፍ ("\ n አንባቢ ዳሳሽ:")); ማብሪያ (chk) {ጉዳይ DHT12:: እሺ: Serial.println (F («እሺ»)); ሰበር; ጉዳይ DHT12:: ERROR_CHECKSUM: Serial.println (F ("Checksum ስህተት")); ሰበር; ጉዳይ DHT12:: ERROR_TIMEOUT: Serial.println (F ("የጊዜ ማብቂያ ስህተት")); ሰበር; ጉዳይ DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F (“በዝቅተኛ ምልክት ላይ የጊዜ ማብቂያ ስህተት ፣ ከፍተኛ የ pullup resistance ን ለመጫን ይሞክሩ”)); ሰበር; ጉዳይ DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F (“በዝቅተኛ ምልክት ላይ የጊዜ ማብቂያ ስህተት ፣ ዝቅተኛ pullup resistance ን ለማስቀመጥ ይሞክሩ”)); ሰበር; ጉዳይ DHT12:: ERROR_CONNECT: Serial.println (F (“የግንኙነት ስህተት”)); ሰበር; ጉዳይ DHT12:: ERROR_ACK_L: Serial.println (F ("AckL ስህተት")); ሰበር; ጉዳይ DHT12:: ERROR_ACK_H: Serial.println (F ("AckH ስህተት")); ሰበር; ጉዳይ DHT12:: ERROR_UNKNOWN: Serial.println (F ("ያልታወቀ ስህተት ተለይቶ")); ሰበር; ጉዳይ DHT12:: የለም: Serial.println (F ("ምንም ውጤት የለም")); ሰበር; ነባሪ: Serial.println (F ("ያልታወቀ ስህተት")); ሰበር; }

// ሙቀትን እንደ ሴልሺየስ ያንብቡ (ነባሪው)

ተንሳፋፊ t12 = dht12.readTemperature (); // የሙቀት መጠን እንደ ፋራናይት (isFahrenheit = true) ተንሳፋፊ f12 = dht12.readTemperature (እውነት); // የዳሳሽ ንባቦች እንዲሁ እስከ 2 ሰከንዶች ያረጁ (በጣም ቀርፋፋ ዳሳሽ) ተንሳፋፊ h12 = dht12.readHumidity (); // በፋራናይት (ነባሪው) ተንሳፋፊ hif12 = dht12.computeHeatIndex (f12 ፣ h12) ውስጥ የሙቀት መረጃ ጠቋሚውን ያስሉ ፤ // በሴልሲየስ (isFahreheit = false) ተንሳፋፊ hic12 = dht12.computeHeatIndex (t12 ፣ h12 ፣ ሐሰት) // በፋራናይት (ነባሪው) ተንሳፋፊ dpf12 = dht12.dewPoint (f12 ፣ h12) ውስጥ የጤዛ ነጥብ ያስሉ። // በሴልሲየስ ውስጥ የጤዛ ነጥብን ያስሉ (isFahreheit = false) float dpc12 = dht12.dewPoint (t12 ፣ h12 ፣ ሐሰት);

ደረጃ 9 የግንኙነት ንድፍ

በምሳሌዎች ፣ የግንኙነት ዲያግራም አለ ፣ ትክክለኛውን pullup resistor መጠቀም አስፈላጊ ነው።

በጊትቡብ ውስጥ (አንዳንድ ኮድ እና ሀሳቦችን የምወስድበት) ለቦባዳስ ፣ ለዲፕላሳ እና ለአዳፍ ፍሬ ምስጋና ይግባው።

ደረጃ 10 አርዱinoኖ OneWire

አርዱinoኖ: OneWire
አርዱinoኖ: OneWire

ደረጃ 11 አርዱinoኖ I2c

አርዱinoኖ: I2c
አርዱinoኖ: I2c

ደረጃ 12 Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

ደረጃ 13 Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

ደረጃ 14: አመሰግናለሁ

የአርዱዲኖ መጫወቻ ስፍራ (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c ፕሮጀክት ተከታታይ (ስብስብ):

  • የሙቀት እርጥበት ዳሳሽ
  • የአናሎግ ማስፋፊያ
  • ዲጂታል ማስፋፊያ
  • ኤልሲዲ ማሳያ

የሚመከር: