विषयसूची:

BME280 और फोटॉन इंटरफेसिंग का उपयोग करके आर्द्रता, दबाव और तापमान की गणना: 6 कदम
BME280 और फोटॉन इंटरफेसिंग का उपयोग करके आर्द्रता, दबाव और तापमान की गणना: 6 कदम

वीडियो: BME280 और फोटॉन इंटरफेसिंग का उपयोग करके आर्द्रता, दबाव और तापमान की गणना: 6 कदम

वीडियो: BME280 और फोटॉन इंटरफेसिंग का उपयोग करके आर्द्रता, दबाव और तापमान की गणना: 6 कदम
वीडियो: Nextion Display Upload using Serial UART and SD Card 2024, नवंबर
Anonim
BME280 और फोटॉन इंटरफेसिंग का उपयोग करके आर्द्रता, दबाव और तापमान की गणना।
BME280 और फोटॉन इंटरफेसिंग का उपयोग करके आर्द्रता, दबाव और तापमान की गणना।

हम विभिन्न परियोजनाओं में आते हैं जिनके लिए तापमान, दबाव और आर्द्रता की निगरानी की आवश्यकता होती है। इस प्रकार हम महसूस करते हैं कि ये पैरामीटर वास्तव में विभिन्न वायुमंडलीय परिस्थितियों में एक प्रणाली की कार्यकुशलता का अनुमान लगाने में महत्वपूर्ण भूमिका निभाते हैं। औद्योगिक स्तर और व्यक्तिगत प्रणालियों दोनों पर प्रणाली के पर्याप्त प्रदर्शन के लिए एक इष्टतम तापमान, आर्द्रता और बैरोमीटर का दबाव स्तर आवश्यक है।

यही कारण है कि हम इस सेंसर पर एक संपूर्ण ट्यूटोरियल प्रदान करते हैं, इस ट्यूटोरियल में हम कण फोटॉन के साथ BME280 आर्द्रता, दबाव और तापमान सेंसर के काम करने की व्याख्या करने जा रहे हैं।

चरण 1: BME280 अन्वेषण

BME280 अन्वेषण
BME280 अन्वेषण

इलेक्ट्रॉनिक क्षेत्र ने अपने खेल को BME280 सेंसर, तापमान, बैरोमीटर के दबाव और आर्द्रता के साथ एक पर्यावरण सेंसर के साथ आगे बढ़ाया है! यह सेंसर सभी प्रकार के मौसम/पर्यावरण संवेदन के लिए बहुत अच्छा है और इसे I2C में भी इस्तेमाल किया जा सकता है।

यह सटीक सेंसर BME280 ± 3% सटीकता के साथ आर्द्रता मापने के लिए सबसे अच्छा सेंसिंग समाधान है, ± 1 hPa पूर्ण सटीकता के साथ बैरोमीटर का दबाव, और ± 1.0 डिग्री सेल्सियस सटीकता के साथ तापमान। क्योंकि ऊंचाई के साथ दबाव बदलता है, और दबाव माप बहुत अच्छे होते हैं, आप इसे ± 1 मीटर या बेहतर सटीकता के साथ एक altimeter के रूप में भी उपयोग कर सकते हैं! तापमान सेंसर को सबसे कम शोर और उच्चतम रिज़ॉल्यूशन के लिए अनुकूलित किया गया है और इसका उपयोग तापमान मुआवजे के लिए किया जाता है दबाव सेंसर और परिवेश के तापमान के आकलन के लिए भी इस्तेमाल किया जा सकता है। BME280 के साथ माप उपयोगकर्ता द्वारा किया जा सकता है या नियमित अंतराल में किया जा सकता है।

डेटाशीट: BME280 सेंसर की डेटाशीट का पूर्वावलोकन या डाउनलोड करने के लिए क्लिक करें।

चरण 2: हार्डवेयर आवश्यकता सूची

हार्डवेयर आवश्यकता सूची
हार्डवेयर आवश्यकता सूची

हमने पूरी तरह से Dcube Store पुर्ज़ों का उपयोग किया क्योंकि वे उपयोग में आसान हैं, और एक सेंटीमीटर ग्रिड पर अच्छी तरह से फिट होने वाली हर चीज़ के बारे में कुछ वास्तव में हमें जा रहा है। आप जो चाहें उपयोग कर सकते हैं, लेकिन वायरिंग आरेख मान लेगा कि आप इन भागों का उपयोग कर रहे हैं।

  • BME280 सेंसर I²C मिनी मॉड्यूल
  • कण फोटॉन के लिए I²C शील्ड
  • कण फोटॉन
  • आई²सी केबल
  • बिजली अनुकूलक

चरण 3: इंटरफेसिंग

इंटरफ़ेस
इंटरफ़ेस

इंटरफेसिंग सेक्शन मूल रूप से सेंसर और कण फोटॉन के बीच आवश्यक वायरिंग कनेक्शन की व्याख्या करता है। वांछित आउटपुट के लिए किसी भी सिस्टम पर काम करते समय सही कनेक्शन सुनिश्चित करना मूलभूत आवश्यकता है। तो, अपेक्षित कनेक्शन इस प्रकार हैं:

BME280 I2C पर काम करेगा। यहाँ उदाहरण वायरिंग आरेख है, जिसमें दिखाया गया है कि सेंसर के प्रत्येक इंटरफ़ेस को कैसे वायर किया जाए। आउट-ऑफ-द-बॉक्स, बोर्ड को I2C इंटरफ़ेस के लिए कॉन्फ़िगर किया गया है, इसलिए यदि आप अन्यथा अज्ञेयवादी हैं तो हम इस इंटरफेसिंग का उपयोग करने की सलाह देते हैं। आपको बस चार तार चाहिए! केवल चार कनेक्शन की आवश्यकता होती है Vcc, Gnd, SCL और SDA पिन और ये I2C केबल की मदद से जुड़े होते हैं। इन कनेक्शनों को ऊपर की तस्वीरों में दिखाया गया है।

चरण 4: तापमान, दबाव और आर्द्रता निगरानी कोड

तापमान, दबाव और आर्द्रता निगरानी कोड
तापमान, दबाव और आर्द्रता निगरानी कोड
तापमान, दबाव और आर्द्रता निगरानी कोड
तापमान, दबाव और आर्द्रता निगरानी कोड

इसे चलाने के लिए हम जिस कोड का उपयोग करेंगे उसका स्वच्छ संस्करण यहां उपलब्ध है।

Arduino के साथ सेंसर मॉड्यूल का उपयोग करते समय, हम application.h और Spark_wiring_i2c.h लाइब्रेरी को शामिल करते हैं। "application.h" और Spark_wiring_i2c.h लाइब्रेरी में ऐसे कार्य हैं जो सेंसर और कण के बीच i2c संचार की सुविधा प्रदान करते हैं।

डिवाइस मॉनिटरिंग के लिए वेबपेज खोलने के लिए यहां क्लिक करें

कोड को अपने बोर्ड पर अपलोड करें और यह काम करना शुरू कर देगा! जैसा कि चित्र में दिखाया गया है, सभी डेटा वेबपेज पर प्राप्त किए जा सकते हैं।

कोड नीचे दिया गया है:

// एक फ्री-विल लाइसेंस के साथ वितरित।// इसे किसी भी तरह से उपयोग करें, लाभ या मुफ्त, बशर्ते यह इसके संबंधित कार्यों के लाइसेंस में फिट बैठता है। // BME280 // यह कोड Controleverything.com से उपलब्ध BME280_I2CS I2C मिनी मॉड्यूल के साथ काम करने के लिए डिज़ाइन किया गया है। #शामिल करें #शामिल करें // BME280 I2C पता 0x76 (108) है # Addr 0x76 डबल cTemp = 0, fTemp = 0, दबाव = 0, आर्द्रता = 0 परिभाषित करें; शून्य सेटअप () {// चर सेट करें Particle.variable ("i2cdevice", "BME280"); article.variable("cTemp", cTemp); Particle.variable("fTemp", fTemp); कण। चर ("दबाव", दबाव); कण। चर ("आर्द्रता", आर्द्रता); // I2C संचार को मास्टर वायर के रूप में प्रारंभ करें। शुरू (); // सीरियल कम्युनिकेशन शुरू करें, बॉड रेट सेट करें = 9600 Serial.begin (9600); देरी (300); } शून्य लूप () { अहस्ताक्षरित int b1 [२४]; अहस्ताक्षरित इंट डेटा [8]; इंट डिग_एच1 = 0; for(int i = 0; i <24; i++) {// I2C ट्रांसमिशन वायर शुरू करें।beginTransmission(Addr); // डेटा रजिस्टर चुनें Wire.write((136+i)); // I2C ट्रांसमिशन वायर को रोकें। एंडट्रांसमिशन (); // अनुरोध 1 बाइट डेटा Wire.requestFrom (Addr, 1); // डेटा के 24 बाइट्स पढ़ें अगर (वायर.उपलब्ध () == 1) {b1 = Wire.read (); } } // डेटा कनवर्ट करें // अस्थायी गुणांक int dig_T1 = (b1 [0] और 0xff) + ((b1 [1] और 0xff) * 256); int dig_T2 = b1[2] + (b1[3] * 256); int dig_T3 = b1[4] + (b1[5] * 256); // दबाव गुणांक int dig_P1 = (b1 [6] और 0xff) + ((b1 [7] और 0xff) * 256); int dig_P2 = b1[8] + (b1[9] * 256); int dig_P3 = b1[10] + (b1[11] * 256); int dig_P4 = b1[12] + (b1[13] * 256); int dig_P5 = b1[14] + (b1[15] * 256); int dig_P6 = b1[16] + (b1[17] * 256); int dig_P7 = b1[18] + (b1[19] * 256); int dig_P8 = b1[20] + (b1[21] * 256); int dig_P9 = b1[22] + (b1[23] * 256); for(int i = 0; i <7; i++) {// I2C ट्रांसमिशन वायर शुरू करें।beginTransmission(Addr); // डेटा रजिस्टर चुनें Wire.write((225+i)); // I2C ट्रांसमिशन वायर को रोकें। एंडट्रांसमिशन (); // अनुरोध 1 बाइट डेटा Wire.requestFrom (Addr, 1); // डेटा के 7 बाइट्स पढ़ें अगर (वायर.उपलब्ध () == 1) {b1 = वायर.रीड (); } } // डेटा कनवर्ट करें // आर्द्रता गुणांक int dig_H2 = b1 [0] + (b1 [1] * 256); int dig_H3 = b1[2] और 0xFF; int dig_H4 = (b1[3] * 16) + (b1[4] और 0xF); int dig_H5 = (b1[4] / 16) + (b1[5] * 16); इंट डिग_एच6 = बी1[6]; // I2C ट्रांसमिशन वायर शुरू करें। बेगिनट्रांसमिशन (Addr); // डेटा रजिस्टर चुनें Wire.write(161); // I2C ट्रांसमिशन वायर को रोकें। एंडट्रांसमिशन (); // अनुरोध 1 बाइट डेटा Wire.requestFrom (Addr, 1); // डेटा का 1 बाइट पढ़ें अगर (वायर.उपलब्ध () == 1) {dig_H1 = Wire.read (); } // I2C ट्रांसमिशन वायर शुरू करें। बेगिनट्रांसमिशन (Addr); // नियंत्रण आर्द्रता रजिस्टर चुनें Wire.write(0xF2); // नमूना दर से अधिक आर्द्रता = 1 वायर.राइट (0x01); // I2C ट्रांसमिशन वायर को रोकें। एंडट्रांसमिशन (); // I2C ट्रांसमिशन वायर शुरू करें। बेगिनट्रांसमिशन (Addr); // नियंत्रण माप रजिस्टर चुनें Wire.write(0xF4); // सामान्य मोड, तापमान और नमूना दर पर दबाव = 1 वायर.राइट (0x27); // I2C ट्रांसमिशन वायर को रोकें। एंडट्रांसमिशन (); // I2C ट्रांसमिशन वायर शुरू करें। बेगिनट्रांसमिशन (Addr); // कॉन्फ़िगरेशन रजिस्टर चुनें Wire.write(0xF5); // स्टैंडबाय टाइम = 1000ms वायर.राइट (0xA0); // I2C ट्रांसमिशन वायर को रोकें। एंडट्रांसमिशन (); for(int i = 0; i <8; i++) {// I2C ट्रांसमिशन वायर शुरू करें।beginTransmission(Addr); // डेटा रजिस्टर चुनें Wire.write((247+i)); // I2C ट्रांसमिशन वायर को रोकें। एंडट्रांसमिशन (); // अनुरोध 1 बाइट डेटा Wire.requestFrom (Addr, 1); // डेटा के 8 बाइट्स पढ़ें अगर (वायर.उपलब्ध () == 1) {डेटा = वायर.रीड (); } } // दबाव और तापमान डेटा को 19-बिट लंबे adc_p = (((लंबा) (डेटा [0] और 0xFF) * 65536) में बदलें + ((लंबा) (डेटा [1] और 0xFF) * 256) + (लंबा) (डेटा [2] और 0xF0)) / 16; लंबा adc_t = (((लंबा) (डेटा [3] और 0xFF) * 65536) + ((लंबा) (डेटा [4] और 0xFF) * 256) + (लंबा) (डेटा [5] और 0xF0)) / 16; // आर्द्रता डेटा को लंबे समय तक परिवर्तित करें adc_h = ((लंबा) (डेटा [6] और 0xFF) * 256 + (लंबा) (डेटा [7] और 0xFF)); // तापमान ऑफसेट गणना डबल var1 = (((डबल) adc_t) / 16384.0 - ((डबल) dig_T1) / 1024.0) * ((डबल) dig_T2); डबल var2 = ((((डबल)adc_t) / 131072.0 - ((डबल) dig_T1) / 8192.0) * (((डबल) adc_t)/131072.0 - ((डबल) dig_T1)/8192.0)) * ((डबल) dig_T3); डबल t_fine = (लंबा) (var1 + var2); डबल cTemp = (var1 + var2) / 5120.0; डबल fTemp = cTemp * १.८ + ३२; // दबाव ऑफसेट गणना var1 = ((डबल) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((डबल) dig_P6) / 32768.0; var2 = var2 + var1 * ((डबल) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((डबल) dig_P4) * ६५५३६.०); var1 = (((डबल) dig_P3) * var1 * var1 / 524288.0 + ((डबल) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((डबल) dig_P1); डबल पी = 1048576.0 - (डबल) एडीसी_पी; पी = (पी - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((डबल) dig_P9) * p * p / २१४७४८३६४८.०; var2 = p * ((डबल) dig_P8) / ३२७६८.०; दोहरा दबाव = (पी + (var1 + var2 + ((डबल) dig_P7)) / 16.0) / 100; // आर्द्रता ऑफसेट गणना डबल var_H = (((डबल) t_fine) - ७६८००.०); var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H)); दोहरी आर्द्रता = var_H * (1.0 - dig_H1 * var_H / 524288.0); अगर (आर्द्रता> १००.०) {आर्द्रता = १००.०; } और अगर (आर्द्रता <0.0) {आर्द्रता = 0.0; } // डैशबोर्ड पर आउटपुट डेटा Particle.publish ("सेल्सियस में तापमान:", स्ट्रिंग (cTemp)); Particle.publish ("फ़ारेनहाइट में तापमान:", स्ट्रिंग (fTemp)); Particle.publish ("दबाव:", स्ट्रिंग (दबाव)); Particle.publish ("सापेक्ष आर्द्रता:", स्ट्रिंग (आर्द्रता)); देरी (1000); }

चरण 5: आवेदन:

अनुप्रयोग
अनुप्रयोग

BME280 तापमान, दबाव और सापेक्ष आर्द्रता सेंसर में विभिन्न औद्योगिक अनुप्रयोग हैं जैसे तापमान की निगरानी, कंप्यूटर परिधीय थर्मल संरक्षण, उद्योग में दबाव की निगरानी। हमने इस सेंसर को मौसम स्टेशन अनुप्रयोगों के साथ-साथ ग्रीनहाउस निगरानी प्रणाली में भी नियोजित किया है।

अन्य अनुप्रयोगों में शामिल हो सकते हैं:

  1. प्रसंग जागरूकता, उदा. त्वचा का पता लगाना, कमरे में बदलाव का पता लगाना।
  2. स्वास्थ्य की निगरानी / भलाई - सूखापन या उच्च तापमान के बारे में चेतावनी।
  3. मात्रा और वायु प्रवाह का मापन।
  4. गृह स्वचालन नियंत्रण।
  5. हीटिंग, वेंटिलेशन, एयर कंडीशनिंग (HVAC) को नियंत्रित करें।
  6. चीजों की इंटरनेट।
  7. जीपीएस एन्हांसमेंट (उदाहरण के लिए समय-से-पहले-ठीक सुधार, मृत गणना, ढलान का पता लगाना)।
  8. इनडोर नेविगेशन (फर्श का पता लगाने में परिवर्तन, लिफ्ट का पता लगाना)।
  9. आउटडोर नेविगेशन, अवकाश और खेल अनुप्रयोग।
  10. मौसम पूर्वानुमान।
  11. लंबवत वेग संकेत (वृद्धि/सिंक गति)..

चरण 6: वीडियो ट्यूटोरियल

प्रोजेक्ट को इंटरफ़ेस करने और पूरा करने के सभी चरणों के माध्यम से जाने के लिए हमारा वीडियो ट्यूटोरियल देखें।

अन्य सेंसर के इंटरफेसिंग और काम करने वाले ब्लॉग के लिए बने रहें।

सिफारिश की: