विषयसूची:

DHT12 (i2c सस्ता आर्द्रता और तापमान सेंसर), तेज़ आसान उपयोग: 14 कदम
DHT12 (i2c सस्ता आर्द्रता और तापमान सेंसर), तेज़ आसान उपयोग: 14 कदम

वीडियो: DHT12 (i2c सस्ता आर्द्रता और तापमान सेंसर), तेज़ आसान उपयोग: 14 कदम

वीडियो: DHT12 (i2c सस्ता आर्द्रता और तापमान सेंसर), तेज़ आसान उपयोग: 14 कदम
वीडियो: Measure Temperature / Humidity and Heat Index using DHT 21 (AM 2301) + Arduino + LCD 2024, जुलाई
Anonim
DHT12 (i2c सस्ता आर्द्रता और तापमान सेंसर), तेज़ आसान उपयोग
DHT12 (i2c सस्ता आर्द्रता और तापमान सेंसर), तेज़ आसान उपयोग

आप मेरी साइट https://www.mischianti.org/2019/01/01/dht12-library-en/ पर अपडेट और अन्य पा सकते हैं।

मुझे सेंसर पसंद है जिसका उपयोग 2 तार (i2c प्रोटोकॉल) के साथ किया जा सकता है, लेकिन मुझे सस्ता पसंद है।

यह बहुत कम लागत वाले तापमान/आर्द्रता सेंसर (1$ से कम) की DHT12 श्रृंखला के लिए एक Arduino और esp8266 पुस्तकालय है जो i2c या एक तार कनेक्शन के साथ काम करता है।

बहुत उपयोगी है यदि आप आर्द्रता और तापमान को पढ़ने और इसे i2c LCD पर प्रदर्शित करने के लिए esp01 (यदि आप धारावाहिक का उपयोग करते हैं तो आपके पास केवल 2 पिन हैं) का उपयोग करना चाहते हैं।

एआई ने पढ़ा कि कभी-कभी ऐसा लगता है कि अंशांकन की आवश्यकता है, लेकिन मेरे पास इसका पेड़ है और डीएचटी 22 के समान मूल्य प्राप्त करता है। यदि आपके पास इस समस्या का अंशांकन है, तो जीथब पर खुला मुद्दा और मैं कार्यान्वयन जोड़ता हूं।

चरण 1: I2c कैसे काम करता है

I2c कैसे काम करता है
I2c कैसे काम करता है

I2C इसके दो तारों, SDA (डेटा लाइन) और SCL (क्लॉक लाइन) के साथ काम करता है।

ये दोनों लाइनें ओपन-ड्रेन हैं, लेकिन प्रतिरोधों के साथ खींची गई हैं।

आमतौर पर लाइन पर एक मास्टर और एक या एक से अधिक दास होते हैं, हालांकि कई स्वामी हो सकते हैं, लेकिन हम इसके बारे में बाद में बात करेंगे।

स्वामी और दास दोनों डेटा संचारित या प्राप्त कर सकते हैं, इसलिए, एक उपकरण इन चार राज्यों में से एक में हो सकता है: मास्टर ट्रांसमिट, मास्टर रिसीव, स्लेव ट्रांसमिट, स्लेव रिसीव।

चरण 2: पुस्तकालय

आप यहां मेरी लाइब्रेरी पा सकते हैं।

डाउनलोड करने के लिए।

ऊपरी दाएं कोने में डाउनलोड बटन पर क्लिक करें, असम्पीडित फ़ोल्डर DHT12 का नाम बदलें।

जांचें कि DHT फ़ोल्डर में DHT12.cpp और DHT12.h है।

DHT लाइब्रेरी फोल्डर को अपने /लाइब्रेरी/फोल्डर में रखें।

यदि आपकी पहली लाइब्रेरी है तो आपको लाइब्रेरी सबफ़ोल्डर बनाने की आवश्यकता हो सकती है।

आईडीई को पुनरारंभ करें।

चरण 3: व्यवहार

यह लाइब्रे मानक डीएचटी लाइब्रेरी सेंसर के व्यवहार का अनुकरण करने का प्रयास करता है (और बहुत सारे कोड कॉपी करता है), और मैं उसी तरह से i2c olso को प्रबंधित करने के लिए कोड जोड़ता हूं।

विधि DHT लाइब्रेरी सेंसर के समान है, जिसमें कुछ ओस बिंदु फ़ंक्शन की तरह जोड़ते हैं।

चरण 4: I2c उपयोग

i2c (डिफ़ॉल्ट पता और डिफ़ॉल्ट SDA SCL पिन) के साथ उपयोग करने के लिए कंस्ट्रक्टर है:

डीएचटी12 डीएचटी12;

और एसडीए एससीएल पिन के लिए डिफ़ॉल्ट मान लें।

(ESP-01 के लिए आवश्यक esp8266 के लिए निर्दिष्ट निर्माता के साथ फिर से परिभाषित करना संभव है)। या

DHT12 dht12(uint8_t पताOrPin)

पताओरपिन -> पता

पता बदलने के लिए।

चरण 5: एक तार का उपयोग

एक तार का उपयोग करने के लिए:

DHT12 dht12(uint8_t पतायापिन, सच)

एड्रेसऑरपिन -> पिन

बूलियन मान वनवायर या i2c मोड का चयन है।

चरण 6: लागू पढ़ें

आप इसे "अंतर्निहित", "सरल पढ़ने" या "पूर्ण पढ़ने" के साथ उपयोग कर सकते हैं: लागू, केवल सेंसर का सही पढ़ने वाला पहला पढ़ने वाला, दूसरा पढ़ने जो 2 सेकेंड में बन जाता है। अंतराल पहले पढ़ने का संग्रहीत मूल्य है।

// सेंसर के पढ़ने में 2 सेकंड का समय बीत चुका है, जब तक कि आप बल पैरामीटर पास नहीं करते हैं

// तापमान को सेल्सियस के रूप में पढ़ें (डिफ़ॉल्ट) फ्लोट t12 = dht12.readTemperature (); // तापमान को फ़ारेनहाइट के रूप में पढ़ें (फ़ारेनहाइट = सत्य) फ्लोट f12 = dht12.readTemperature (सत्य); // सेंसर रीडिंग 2 सेकंड तक 'पुरानी' हो सकती है (इसका बहुत धीमा सेंसर) फ्लोट h12 = dht12.readHumidity(); // फारेनहाइट में गणना गर्मी सूचकांक (डिफ़ॉल्ट) फ्लोट hif12 = dht12.computeHeatIndex(f12, h12); // सेल्सियस में हीट इंडेक्स की गणना करें (isFahreheit = false) फ्लोट hic12 = dht12.computeHeatIndex(t12, h12, false); // फारेनहाइट में गणना ओस बिंदु (डिफ़ॉल्ट) फ्लोट dpf12 = dht12.dewPoint (f12, h12); // सेल्सियस में ओस बिंदु की गणना करें (isFahreheit = false) फ्लोट dpc12 = dht12.dewPoint (t12, h12, false);

चरण 7: सरल पढ़ें

पढ़ने की स्थिति प्राप्त करने के लिए सरल पढ़ें।

// सेंसर के पढ़ने में 2 सेकंड का समय बीत चुका है, जब तक कि आप बल पैरामीटर पास नहीं करते हैं

बूल chk = dht12.read (); // सच पढ़ना ठीक है, गलत पढ़ने की समस्या

// तापमान को सेल्सियस के रूप में पढ़ें (डिफ़ॉल्ट)

फ्लोट t12 = dht12.readTemperature (); // तापमान को फ़ारेनहाइट के रूप में पढ़ें (फ़ारेनहाइट = सत्य) फ्लोट f12 = dht12.readTemperature (सत्य); // सेंसर रीडिंग 2 सेकंड तक 'पुरानी' हो सकती है (इसका बहुत धीमा सेंसर) फ्लोट h12 = dht12.readHumidity(); // फारेनहाइट में गणना गर्मी सूचकांक (डिफ़ॉल्ट) फ्लोट hif12 = dht12.computeHeatIndex(f12, h12); // सेल्सियस में हीट इंडेक्स की गणना करें (isFahreheit = false) फ्लोट hic12 = dht12.computeHeatIndex(t12, h12, false); // फारेनहाइट में गणना ओस बिंदु (डिफ़ॉल्ट) फ्लोट dpf12 = dht12.dewPoint (f12, h12); // सेल्सियस में ओस बिंदु की गणना करें (isFahreheit = false) फ्लोट dpc12 = dht12.dewPoint (t12, h12, false);

चरण 8: पूरा पढ़ें

निर्दिष्ट स्थिति प्राप्त करने के लिए पूर्ण पढ़ें।

// सेंसर के पढ़ने में 2 सेकंड का समय बीत चुका है, जब तक कि आप बल पैरामीटर पास नहीं करते हैं

DHT12:: रीडस्टैटस chk = dht12.readStatus (); सीरियल.प्रिंट (एफ ("\ n सेंसर पढ़ें: ")); स्विच (chk) {केस DHT12::OK: Serial.println(F("OK")); टूटना; मामला DHT12:: ERROR_CHECKSUM: Serial.println (F ("चेकसम त्रुटि")); टूटना; मामला DHT12:: ERROR_TIMEOUT: Serial.println (F ("टाइमआउट त्रुटि")); टूटना; मामला DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("कम सिग्नल पर टाइमआउट त्रुटि, उच्च पुलअप प्रतिरोध डालने का प्रयास करें")); टूटना; मामला DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("कम सिग्नल पर टाइमआउट त्रुटि, कम पुलअप प्रतिरोध डालने का प्रयास करें")); टूटना; मामला DHT12::ERROR_CONNECT: Serial.println(F("Connect error")); टूटना; मामला DHT12::ERROR_ACK_L: Serial.println(F("AckL error")); टूटना; मामला DHT12::ERROR_ACK_H: Serial.println(F("AckH error")); टूटना; मामला DHT12:: ERROR_UNKNOWN: Serial.println (F ("अज्ञात त्रुटि का पता लगाया गया")); टूटना; मामला DHT12:: कोई नहीं: Serial.println (F ("कोई परिणाम नहीं")); टूटना; डिफ़ॉल्ट: Serial.println (F ("अज्ञात त्रुटि")); टूटना; }

// तापमान को सेल्सियस के रूप में पढ़ें (डिफ़ॉल्ट)

फ्लोट t12 = dht12.readTemperature (); // तापमान को फ़ारेनहाइट के रूप में पढ़ें (फ़ारेनहाइट = सत्य) फ्लोट f12 = dht12.readTemperature (सत्य); // सेंसर रीडिंग 2 सेकंड तक 'पुरानी' हो सकती है (इसका बहुत धीमा सेंसर) फ्लोट h12 = dht12.readHumidity(); // फारेनहाइट में गणना गर्मी सूचकांक (डिफ़ॉल्ट) फ्लोट hif12 = dht12.computeHeatIndex(f12, h12); // सेल्सियस में हीट इंडेक्स की गणना करें (isFahreheit = false) फ्लोट hic12 = dht12.computeHeatIndex(t12, h12, false); // फारेनहाइट में गणना ओस बिंदु (डिफ़ॉल्ट) फ्लोट dpf12 = dht12.dewPoint (f12, h12); // सेल्सियस में ओस बिंदु की गणना करें (isFahreheit = false) फ्लोट dpc12 = dht12.dewPoint (t12, h12, false);

चरण 9: कनेक्शन आरेख

उदाहरणों के साथ, कनेक्शन आरेख हैं, सही पुलअप रोकनेवाला का उपयोग करना महत्वपूर्ण है।

जीथब में कोड साझा करने के लिए बोबादास, डीप्लासा और एडफ्रूट का धन्यवाद (जहां मैं कुछ कोड और विचार लेता हूं)।

चरण 10: अरुडिनो: वनवायर

अरुडिनो: वनवायर
अरुडिनो: वनवायर

चरण 11: Arduino: I2c

अरुडिनो: I2c
अरुडिनो: I2c

चरण 12: Esp8266 (D1Mini) वनवायर

Esp8266 (D1Mini) वनवायर
Esp8266 (D1Mini) वनवायर

चरण 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

चरण 14: धन्यवाद

Arduino खेल का मैदान (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c परियोजना श्रृंखला (संग्रह):

  • तापमान आर्द्रता सेंसर
  • एनालॉग विस्तारक
  • डिजिटल विस्तारक
  • एलसीडी प्रदर्शन

सिफारिश की: