विषयसूची:

जावा में बीएमई२८० के साथ रास्पबेरी पाई का उपयोग कर व्यक्तिगत मौसम स्टेशन: ६ कदम
जावा में बीएमई२८० के साथ रास्पबेरी पाई का उपयोग कर व्यक्तिगत मौसम स्टेशन: ६ कदम

वीडियो: जावा में बीएमई२८० के साथ रास्पबेरी पाई का उपयोग कर व्यक्तिगत मौसम स्टेशन: ६ कदम

वीडियो: जावा में बीएमई२८० के साथ रास्पबेरी पाई का उपयोग कर व्यक्तिगत मौसम स्टेशन: ६ कदम
वीडियो: Java Tutorial for Beginners | Learn Java in 2 Hours 2024, जुलाई
Anonim
Image
Image
आवश्यक उपकरण का बिल
आवश्यक उपकरण का बिल

खराब मौसम हमेशा खिड़की से खराब दिखता है।

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

चरण 1: आवश्यक उपकरण का बिल

आवश्यक उपकरण का बिल
आवश्यक उपकरण का बिल
आवश्यक उपकरण का बिल
आवश्यक उपकरण का बिल
आवश्यक उपकरण का बिल
आवश्यक उपकरण का बिल

1. एक रास्पबेरी पाई

रास्पबेरी पाई बोर्ड पर अपना हाथ रखना पहला कदम है। रास्पबेरी पाई एक लिनक्स संचालित सिंगल बोर्ड कंप्यूटर है। इसका लक्ष्य प्रोग्रामिंग कौशल और हार्डवेयर समझ में सुधार करना है। इसे नवीन परियोजनाओं के लिए शौक़ीन और इलेक्ट्रॉनिक्स उत्साही लोगों द्वारा जल्दी से अपनाया गया था।

2. रास्पबेरी पाई के लिए आई²सी शील्ड

INPI2(I2C अडैप्टर) कई I²C उपकरणों के साथ उपयोग के लिए रास्पबेरी पाई 2/3 एक I²C पोर्ट प्रदान करता है। यह Dcube Store पर उपलब्ध है

3. डिजिटल आर्द्रता, दबाव और तापमान सेंसर, BME280

BME280 एक आर्द्रता, दबाव और तापमान सेंसर है जिसमें तेजी से प्रतिक्रिया समय और उच्च समग्र सटीकता है। हमने इस सेंसर को Dcube Store. से खरीदा है

4. आई²सी कनेक्टिंग केबल

हमारे पास Dcube Store पर I²C कनेक्टिंग केबल उपलब्ध थी

5. माइक्रो यूएसबी केबल

रास्पबेरी पाई को पावर देने के लिए माइक्रो यूएसबी केबल बिजली की आपूर्ति एक आदर्श विकल्प है।

6. ईथरनेट केबल/वाईफाई एडाप्टर के माध्यम से इंटरनेट एक्सेस की व्याख्या करें

पहली चीजों में से एक जो आप करना चाहते हैं वह है अपने रास्पबेरी पाई को इंटरनेट से जोड़ना। हम ईथरनेट केबल का उपयोग करके कनेक्ट कर सकते हैं। एक अन्य संभावना यह है कि आप USB वायरलेस एडेप्टर का उपयोग करके वायरलेस नेटवर्क से कनेक्ट कर सकते हैं।

7. एचडीएमआई केबल (डिस्प्ले और कनेक्टिविटी केबल)

कोई भी एचडीएमआई/डीवीआई मॉनिटर और किसी भी टीवी को पीआई के लिए डिस्प्ले के रूप में काम करना चाहिए। लेकिन यह वैकल्पिक है। रिमोट एक्सेस (जैसे-एसएसएच) की संभावना से भी इंकार नहीं किया जा सकता है। आप पुट्टी सॉफ्टवेयर से भी पहुंच प्राप्त कर सकते हैं।

चरण 2: सेटअप के लिए हार्डवेयर कनेक्शन

सेटअप के लिए हार्डवेयर कनेक्शन
सेटअप के लिए हार्डवेयर कनेक्शन
सेटअप के लिए हार्डवेयर कनेक्शन
सेटअप के लिए हार्डवेयर कनेक्शन

दिखाए गए योजनाबद्ध के अनुसार सर्किट बनाएं।

सीखते समय, हमने हार्डवेयर और सॉफ्टवेयर ज्ञान के संबंध में इलेक्ट्रॉनिक्स की मूल बातें अच्छी तरह से प्राप्त कीं। हम इस परियोजना के लिए एक साधारण इलेक्ट्रॉनिक योजना बनाना चाहते थे। इलेक्ट्रॉनिक स्कीमैटिक्स इलेक्ट्रॉनिक्स के लिए ब्लूप्रिंट की तरह हैं। एक खाका तैयार करें और डिजाइन का ध्यानपूर्वक पालन करें। हमने यहां इलेक्ट्रॉनिक्स की कुछ मूल बातें लागू की हैं। तर्क आपको ए से बी तक ले जाता है, कल्पना आपको हर जगह ले जाएगी!

रास्पबेरी पाई और आई²सी शील्ड का कनेक्शन

सबसे पहले रास्पबेरी पाई लें और उस पर I²C शील्ड (इनवर्ड फेसिंग I²C पोर्ट के साथ) लगाएं। पीआई के जीपीआईओ पिन पर शील्ड को धीरे से दबाएं और हम इस चरण के साथ पाई के रूप में आसान हो गए हैं (तस्वीर देखें)।

सेंसर और रास्पबेरी पाई का कनेक्शन

सेंसर लें और इसके साथ I²C केबल कनेक्ट करें। सुनिश्चित करें कि I²C आउटपुट हमेशा I²C इनपुट से कनेक्ट होता है। रास्पबेरी पाई के लिए उसी का पालन करना होगा, जिसके ऊपर GPIO पिन लगे I²C शील्ड के साथ। हमारे पास I²C शील्ड और हमारी तरफ कनेक्टिंग केबल एक बहुत बड़ी राहत और एक बहुत बड़ा लाभ है क्योंकि हमारे पास केवल बचा है प्लग एंड प्ले विकल्प। कोई और पिन और वायरिंग समस्या नहीं है और इसलिए, भ्रम दूर हो गया है। जरा कल्पना कीजिए कि आप तारों के जाल में हैं और उसमें प्रवेश कर रहे हैं। इससे एक राहत। यह चीजों को जटिल बनाता है।

नोट: भूरे रंग के तार को हमेशा एक डिवाइस के आउटपुट और दूसरे डिवाइस के इनपुट के बीच ग्राउंड (जीएनडी) कनेक्शन का पालन करना चाहिए।

इंटरनेट कनेक्टिविटी एक आवश्यकता है

आपके पास वास्तव में यहां एक विकल्प है। आप रास्पबेरी पाई को लैन केबल या वाईफाई कनेक्टिविटी के लिए वायरलेस नैनो यूएसबी एडेप्टर से जोड़ सकते हैं। किसी भी तरह से, मैनिफेस्ट इंटरनेट से कनेक्ट करना है जो पूरा हो गया है।

सर्किट की शक्ति

माइक्रो यूएसबी केबल को रास्पबेरी पाई के पावर जैक में प्लग करें। पंच अप और वॉयला! जाने के लिए सब कुछ अच्छा है और हम तुरंत शुरू करेंगे।

प्रदर्शन के लिए कनेक्शन

हम एचडीएमआई केबल को मॉनिटर या टीवी से कनेक्ट कर सकते हैं। हम रास्पबेरी पाई को -एसएसएच (दूसरे कंप्यूटर से पीआई की कमांड लाइन तक पहुंच) का उपयोग करके मॉनिटर से कनेक्ट किए बिना एक्सेस कर सकते हैं। इसके लिए आप पुट्टी सॉफ्टवेयर का भी इस्तेमाल कर सकते हैं। यह विकल्प उन्नत उपयोगकर्ताओं के लिए है इसलिए हम इसे यहां विस्तार से कवर नहीं करेंगे।

मैंने सुना है कि मंदी आने वाली है, मैंने इसमें भाग नहीं लेने का फैसला किया है।

चरण 3: जावा में रास्पबेरी पाई प्रोग्रामिंग

जावा में रास्पबेरी पाई प्रोग्रामिंग
जावा में रास्पबेरी पाई प्रोग्रामिंग

रास्पबेरी पाई और BME280 सेंसर के लिए जावा कोड। यह हमारे जीथब भंडार में उपलब्ध है।

कोड पर जाने से पहले, सुनिश्चित करें कि आपने रीडमी फ़ाइल में दिए गए निर्देशों को पढ़ लिया है और उसके अनुसार अपना रास्पबेरी पाई सेटअप करें। ऐसा करने में बस एक पल लगेगा। एक व्यक्तिगत मौसम स्टेशन एक निजी व्यक्ति, क्लब, संघ या यहां तक कि व्यवसाय द्वारा संचालित मौसम-मापने वाले उपकरणों का एक सेट है। व्यक्तिगत मौसम स्टेशन पूरी तरह से मालिक के आनंद और शिक्षा के लिए संचालित हो सकते हैं, लेकिन कई व्यक्तिगत मौसम स्टेशन ऑपरेटर भी अपना डेटा दूसरों के साथ साझा करते हैं, या तो मैन्युअल रूप से डेटा संकलित करके और इसे वितरित करके, या इंटरनेट या शौकिया रेडियो के उपयोग के माध्यम से।

कोड अपने सबसे सरल रूप में है जिसकी आप कल्पना कर सकते हैं और आपको इसके साथ कोई समस्या नहीं होनी चाहिए, लेकिन पूछें कि क्या आपके पास है। भले ही आप एक हजार चीजें जानते हों, फिर भी किसी ऐसे व्यक्ति से पूछें जो जानता हो।

आप इस सेंसर के लिए काम कर रहे जावा कोड को यहां से भी कॉपी कर सकते हैं।

// एक फ्री-विल लाइसेंस के साथ वितरित।// इसे किसी भी तरह से उपयोग करें, लाभ या मुफ्त, बशर्ते यह इसके संबंधित कार्यों के लाइसेंस में फिट बैठता है। // BME280 // यह कोड Controleverything.com से उपलब्ध BME280_I2CS I2C मिनी मॉड्यूल के साथ काम करने के लिए डिज़ाइन किया गया है। //

आयात com.pi4j.io.i2c. I2CBus;

आयात com.pi4j.io.i2c. I2CDउपकरण; आयात com.pi4j.io.i2c. I2CFactory; java.io. IOException आयात करें;

सार्वजनिक वर्ग BME280

{सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args ) अपवाद फेंकता है {// I2C बस बनाएं I2CBus बस = I2CFactory.getInstance (I2CBus. BUS_1); // I2C डिवाइस प्राप्त करें, BME280 I2C पता 0x76 (108) I2CDevice डिवाइस = bus.getDevice (0x76) है; // पता 0x88 (136) बाइट से डेटा के 24 बाइट्स पढ़ें b1 = नया बाइट [24]; डिवाइस.रीड (0x88, बी 1, 0, 24); // डेटा कनवर्ट करें // अस्थायी गुणांक int dig_T1 = (b1 [0] और 0xFF) + ((b1 [1] और 0xFF) * 256); int dig_T2 = (b1[2] और 0xFF) + ((b1[3] और 0xFF) * 256); अगर(dig_T2 > ३२७६७) { dig_T2 -= ६५५३६; } int dig_T3 = (b1[4] और 0xFF) + ((b1[5] और 0xFF) * 256); अगर(dig_T3 > ३२७६७) { dig_T3 -= ६५५३६; } // दबाव गुणांक int dig_P1 = (b1[6] और 0xFF) + ((b1[7] और 0xFF) * 256); int dig_P2 = (b1[8] और 0xFF) + ((b1[9] और 0xFF) * 256); अगर(dig_P2 > ३२७६७) { dig_P2 -= ६५५३६; } int dig_P3 = (b1[10] और 0xFF) + ((b1[11] और 0xFF) * 256); अगर(dig_P3 > ३२७६७) { dig_P3 -= ६५५३६; } int dig_P4 = (b1[12] और 0xFF) + ((b1[13] और 0xFF) * 256); अगर(dig_P4 > ३२७६७) {dig_P4 -= ६५५३६; } int dig_P5 = (b1[14] और 0xFF) + ((b1[15] और 0xFF) * 256); अगर (dig_P5> 32767) {dig_P5 - = 65536; } int dig_P6 = (b1[16] और 0xFF) + ((b1[17] और 0xFF) * 256); अगर(dig_P6 > ३२७६७) {dig_P6 -= ६५५३६; } int dig_P7 = (b1[18] और 0xFF) + ((b1[19] और 0xFF) * 256); अगर(dig_P7 > ३२७६७) {dig_P7 -= ६५५३६; } int dig_P8 = (b1[20] और 0xFF) + ((b1[21] और 0xFF) * 256); अगर(dig_P8 > ३२७६७) {dig_P8 -= ६५५३६; } int dig_P9 = (b1[22] और 0xFF) + ((b1[23] और 0xFF) * 256); अगर (dig_P9 > 32767) { dig_P9 - = 65536; } // पता 0xA1(161) int dig_H1 = ((बाइट) डिवाइस से 1 बाइट डेटा पढ़ें। पढ़ें (0xA1) और 0xFF); // पता 0xE1 (225) डिवाइस से डेटा के 7 बाइट्स पढ़ें। पढ़ें (0xE1, b1, 0, 7); // डेटा कनवर्ट करें // आर्द्रता गुणांक int dig_H2 = (b1 [0] और 0xFF) + (b1 [1] * 256); अगर(dig_H2 > ३२७६७) { dig_H2 -= ६५५३६; } int dig_H3 = b1[2] और 0xFF; int dig_H4 = ((b1[3] और 0xFF) * 16) + (b1[4] और 0xF); अगर(dig_H4 > ३२७६७) {dig_H4 -= ६५५३६; } int dig_H5 = ((b1[4] और 0xFF) / 16) + ((b1[5] और 0xFF) * 16); अगर (dig_H5 > 32767) { dig_H5 - = 65536; } int dig_H6 = b1[6] और 0xFF; अगर (dig_H6> 127) {dig_H6 - = 256; } // कंट्रोल ह्यूमिडिटी रजिस्टर चुनें // सैंपलिंग रेट पर ह्यूमिडिटी = 1 डिवाइस। राइट (0xF2, (बाइट) 0x01); // नियंत्रण माप रजिस्टर का चयन करें // सामान्य मोड, अस्थायी और नमूना दर पर दबाव = 1 डिवाइस। लिखें (0xF4, (बाइट) 0x27); // कॉन्फिग रजिस्टर चुनें // स्टैंडबाय टाइम = 1000 एमएस डिवाइस। राइट (0xF5, (बाइट) 0xA0); // पता 0xF7 (247) से डेटा के 8 बाइट्स पढ़ें // दबाव msb1, दबाव msb, दबाव lsb, अस्थायी msb1, अस्थायी msb, अस्थायी lsb, आर्द्रता lsb, आर्द्रता msb बाइट डेटा = नया बाइट [८]; डिवाइस.रीड (0xF7, डेटा, 0, 8); // दबाव और तापमान डेटा को 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; }//आउटपुट डेटा स्क्रीन करने के लिए System.out.printf ("सेल्सियस में तापमान:%.2f C% n", cTemp); System.out.printf ("फ़ारेनहाइट में तापमान:%.2f F% n", fTemp); System.out.printf ("दबाव:%.2f hPa% n", दबाव); System.out.printf ("सापेक्ष आर्द्रता:%.2f%% RH% n", आर्द्रता); } }

चरण 4: कोड व्यावहारिकता

कोड व्यावहारिकता
कोड व्यावहारिकता

अब, कोड डाउनलोड (या git pull) करें और इसे रास्पबेरी पाई में खोलें।

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

चरण 5: रचनात्मक दुनिया में उपयोग

BME280 आर्द्रता और दबाव माप की आवश्यकता वाले सभी अनुप्रयोगों में उच्च प्रदर्शन प्राप्त करता है। ये उभरते हुए अनुप्रयोग संदर्भ जागरूकता हैं, उदा। स्किन डिटेक्शन, रूम चेंज डिटेक्शन, फिटनेस मॉनिटरिंग / वेलबीइंग, ड्राईनेस या हाई टेम्परेचर के बारे में चेतावनी, वॉल्यूम और एयर फ्लो का मापन, होम ऑटोमेशन कंट्रोल, कंट्रोल हीटिंग, वेंटिलेशन, एयर कंडीशनिंग (HVAC), इंटरनेट ऑफ थिंग्स (IoT), जीपीएस एन्हांसमेंट (जैसे टाइम-टू-फर्स्ट-फिक्स इंप्रूवमेंट, डेड रेकनिंग, स्लोप डिटेक्शन), इंडोर नेविगेशन (फ्लोर डिटेक्शन, एलेवेटर डिटेक्शन में बदलाव), आउटडोर नेविगेशन, लीजर एंड स्पोर्ट्स एप्लीकेशन, वेदर फोरकास्ट और वर्टिकल वेलोसिटी इंडिकेशन (राइज / सिंक) गति)।

चरण 6: निष्कर्ष

जैसा कि आप देख सकते हैं, यह परियोजना इस बात का एक बड़ा प्रदर्शन है कि हार्डवेयर और सॉफ्टवेयर क्या करने में सक्षम हैं। थोड़े समय में, कोई इतनी प्रभावशाली परियोजना का निर्माण कर सकता है! बेशक, यह अभी शुरुआत है। ऑटोमेटेड एयरपोर्ट पर्सनल वेदर स्टेशन जैसे अधिक परिष्कृत पर्सनल वेदर स्टेशन बनाने में एनीमोमीटर (हवा की गति), ट्रांसमिसोमीटर (दृश्यता), पायरानोमीटर (सौर विकिरण) आदि जैसे कुछ और सेंसर शामिल हो सकते हैं। हमारे पास यूट्यूब पर एक वीडियो ट्यूटोरियल है जिसमें बुनियादी कामकाज है रास्प पाई के साथ I²C सेंसर। I²C संचार के परिणामों और कार्यप्रणाली को देखना वाकई आश्चर्यजनक है। इसे भी चेक कर लें। निर्माण और सीखने का मज़ा लें! कृपया हमें बताएं कि आप इस निर्देश के बारे में क्या सोचते हैं। यदि आवश्यक हो तो हम कुछ सुधार करना पसंद करेंगे।

सिफारिश की: