- रास्पबेरी पाई स्मार्ट एनर्जी मीटर ब्लॉक आरेख
- आवश्यक घटक
- पाई तैयार करना
- पाई ऊर्जा मीटर सर्किट आरेख
- पाय एनर्जी मीटर के लिए पायथन कोड
- डेमो
एनर्जी मॉनिटर्स, चाहे पूरे अपार्टमेंट को कवर करने के लिए या सिर्फ एक उपकरण की निगरानी के लिए तैनात किया गया हो, आपको अपनी खपत का हिसाब रखने और बेहतर समायोजन करने के लिए एक रास्ता प्रदान करता है। जबकि वे तेजी से बाजार पर उपलब्ध हो रहे हैं, मुझ में निर्माता अभी भी लगता है कि यह एक DIY संस्करण बनाने के लिए एक महान विचार होगा जो विशिष्ट व्यक्तिगत आवश्यकताओं को पूरा करने के लिए सिलवाया जा सकता है। जैसे, आज के ट्यूटोरियल के लिए, हम रास्पबेरी पाई पावर कंजम्पशन मॉनिटर का निर्माण करेंगे, जो ऊर्जा की खपत प्राप्त करने में सक्षम है और Adafruit.io पर अपलोड हो रहा है।
आप Arduino आधारित IoT एनर्जी मीटर और प्रीपेड GSM एनर्जी मीटर की जांच कर सकते हैं जो हमने पहले बनाए थे।
रास्पबेरी पाई स्मार्ट एनर्जी मीटर ब्लॉक आरेख
एक ब्लॉक आरेख यह दिखाता है कि सिस्टम कैसे काम करता है नीचे दिखाया गया है।
इकाइयों को एक के बाद एक लेने के लिए;
वर्तमान सेंसिंग इकाई: वर्तमान संवेदन इकाई से बना है SCT -013 वर्तमान सेंसर कि 100A के लिए माप सकते हैं, संस्करण आप खरीद पर निर्भर करता है। सेंसर उस तार से गुजरने वाले करंट को बदल देता है, जिस पर इसे एक छोटे से करंट में जकड़ा जाता है, जिसे बाद में वोल्टेज डिवाइडर के नेटवर्क के माध्यम से एडीसी में फीड किया जाता है।
वोल्टेज सेंसिंग यूनिट: जब मैं वोल्टेज सेंसर मॉड्यूल पर अपने हाथों को रखने में असमर्थ था, हम एक DIY ट्रांसफॉर्मर वोल्टेज सेंसर का निर्माण करेंगे जो वोल्टेज डिवाइडर के सिद्धांत का उपयोग करके वोल्टेज को मापता है। DIY वोल्टेज सेंसर में वोल्टेज विभक्त चरण शामिल होता है जहां उच्च वोल्टेज एडीसी के इनपुट के लिए उपयुक्त मूल्य में बदल जाता है।
प्रसंस्करण इकाई: प्रसंस्करण इकाई में ADC और रास्पबेरी पाई शामिल हैं। एडीसी एनालॉग सिग्नल लेता है और इसे रास्पबेरी पाई पर भेजता है, जो तब खपत होने वाली बिजली की सही मात्रा की गणना करता है और इसे निर्दिष्ट डिवाइस क्लाउड पर भेजता है। इस ट्यूटोरियल के उद्देश्य के लिए, हम अपने डिवाइस क्लाउड के रूप में Adafruit.io का उपयोग करेंगे । हमने दूसरे का भी निर्माण किया है
अस्वीकरण: इससे पहले कि हम शुरू करें, यह उल्लेख करना महत्वपूर्ण है कि इस परियोजना में एक एसी आपूर्ति का कनेक्शन शामिल है जो खतरनाक है, और सुरक्षित रूप से नियंत्रित नहीं किए जाने पर घातक हो सकता है। सुनिश्चित करें कि आपके पास प्रयास करने से पहले एसी के आसपास काम करने का अनुभव हो।
तैयार? में गोता लगाते हैं।
आवश्यक घटक
इस परियोजना के निर्माण के लिए निम्नलिखित घटकों की आवश्यकता होती है;
- रास्पबेरी पाई 3 या 4 (यह प्रक्रिया वाईफाई डोंगल के साथ RPI2 के लिए समान होनी चाहिए)
- ADS1115 16bit I2C ADC
- YHDC SCT-013-000
- 2.5 ए 5 वी माइक्रोयूएसबी पावर एडाप्टर
- 2W 10K रेसिस्टर (1)
- 1 / 2W 10K रेसिस्टर (2)
- 33 ग्राम रेसिस्टर (1)
- 2W 3.3k रोकनेवाला (1)
- IN4007 डायोड (4)
- 3.6 ज़ेनर डायोड (1)
- 10k पोटेंशियोमीटर (या प्रीसेट) (1)
- 50v 1uf कैपेसिटर
- 50 वी 10 फू कैपेसिटर (2)
- ब्रेड बोर्ड
- जम्पर तार
- रास्पबेरी पाई के उपयोग के लिए अन्य सहायक उपकरण।
ऊपर सूचीबद्ध हार्डवेयर घटकों के अनुसार, परियोजना को कुछ सॉफ्टवेयर निर्भरता और पुस्तकालयों की भी आवश्यकता होती है जिन्हें हम चलते ही स्थापित कर देंगे।
हालांकि यह ट्यूटोरियल उपयोग किए गए रास्पबेरी पाई ओएस के बावजूद काम करेगा, मैं रासबेरी पाई बस्टर ओएस का उपयोग पीआई 3 पर चलाऊंगा (पीआई 4 पर भी काम करना चाहिए) और मैं मान लूंगा कि आप रास्पबेरी पाई को स्थापित करने से परिचित हैं। रास्पियन बस्टर ओएस (पिछले संस्करणों के रूप में बहुत ही प्रक्रिया), और आप जानते हैं कि हाइपर जैसे टर्मिनल सॉफ़्टवेयर का उपयोग करके इसमें एसएसएच कैसे किया जाता है। यदि आपके पास इसमें से कोई भी समस्या है, तो इस वेबसाइट पर बहुत सारे रास्पबेरी पाई ट्यूटोरियल हैं जो मदद कर सकते हैं
पाई तैयार करना
इससे पहले कि हम घटकों को तार करना शुरू करें और कोडिंग करें, रास्पबेरी पाई पर प्रदर्शन करने के लिए कुछ सरल कार्य करने की आवश्यकता है, ताकि हम सुनिश्चित कर सकें कि हम जाने के लिए तैयार हैं।
चरण 1: पाई I2C को सक्षम करना
आज की परियोजना के मूल में रास्पबेरी पाई ही नहीं बल्कि ADS1115 16bit I2C- आधारित ADC है। एडीसी हमें एनालॉग सेंसर को रास्पबेरी पाई से जोड़ने की अनुमति देता है क्योंकि पाई में इनबिल्ट एडीसी नहीं है। यह अपने स्वयं के एडीसी के माध्यम से डेटा में ले जाता है और इसे I2C के माध्यम से रास्पबेरी पाई पर भेज देता है। जैसे, हमें पाई पर I2C संचार को सक्षम करने की आवश्यकता है ताकि यह इसके साथ संवाद कर सके।
Pi की I2C बस को रास्पबेरी पाई के कॉन्फिग पेज के माध्यम से सक्षम या अक्षम किया जा सकता है। इसे लॉन्च करने के लिए, डेस्कटॉप पर पाई आइकन पर क्लिक करें और रास्पबेरी पाई कॉन्फ़िगरेशन के बाद प्राथमिकताएं चुनें।
यह कॉन्फ़िगर पृष्ठ को खोलना चाहिए। I2C के लिए सक्षम रेडियो बटन की जाँच करें और इसे बचाने के लिए OK पर क्लिक करें और परिवर्तनों को प्रभावित करने के लिए Pi को रिबूट करें।
यदि आप पाई को हेडलेस मोड में चला रहे हैं, तो रास्पियन कॉन्फ़िगरेशन पेज को sudo raspi-config चलाकर एक्सेस किया जा सकता है ।
चरण 2: Adafruit से ADS11xx लाइब्रेरी स्थापित करना
दूसरी चीज़ जो हमें करने की ज़रूरत है वह है ADS11xx पायथन लाइब्रेरी को स्थापित करना जिसमें फ़ंक्शंस और रूटीन होते हैं जो हमारे लिए ADC से मान प्राप्त करने के लिए एक पायथन स्क्रिप्ट लिखना आसान बनाते हैं।
ऐसा करने के लिए नीचे दिए गए चरणों का पालन करें।
- अपनी पीआई को अपडेट करके चलाएं; उपयुक्त sudo- मिल अद्यतन पीछा द्वारा sudo apt-get उन्नयन इस अनुकरणीय सुनिश्चित वहाँ किसी भी नए सॉफ्टवेयर को स्थापित करने के लिए चुन लिए कोई संगतता समस्याओं अपडेट करेगा।
- इसके बाद, यह सुनिश्चित करने के लिए कि आप होम डायरेक्टरी में हैं, cd ~ कमांड चलाएँ।
- इसके बाद, रन करके बिल्ड-एसेंशियल इंस्टॉल करें; sudo apt-get install बिल्ड-एसेंशियल-पायथन-देव पायथन-स्मबस गिट
- इसके बाद, ADS लाइब्रेरी वाले Adafruit git फ़ोल्डर को चलाकर क्लोन करें; git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
- क्लोन फ़ाइल की निर्देशिका में बदलें और सेटअप फ़ाइल का उपयोग करके चलाएं; cd Adafruit_Python_ADS1x1z के बाद sudo python setup.py स्थापित
हो जाएगा। ऐसा होने के साथ, स्थापना अब पूरी होनी चाहिए।
आप ADS1115 को जोड़कर लाइब्रेरी इंस्टॉलेशन का परीक्षण कर सकते हैं जैसा कि नीचे दिए गए स्कीमैटिक्स अनुभाग में दिखाया गया है और पहले से लाइब्रेरी के साथ आए नमूना कोड को चलाकर, इसके फोल्डर का उपयोग करके बदल दिया गया है; सीडी उदाहरण और उदाहरण का उपयोग कर चल रहा है; python simpletest.py
चरण 3: Adafruit.IO Python मॉड्यूल इंस्टॉल करें
जैसा कि परिचय के दौरान उल्लेख किया गया है, हम वोल्टेज और करंट सेंसर से एडाफ्टो आईओ क्लाउड पर रीडिंग प्रकाशित करेंगे, जहां से इसे दुनिया भर में देखा जा सकता है या जो कुछ भी आप चाहते हैं उसे करने के लिए आईएफटीटीटी से जुड़ा हो सकता है।
Adafruit.IO अजगर मॉड्यूल में उप-रेखाएँ और फ़ंक्शंस होते हैं, जिनका उपयोग हम क्लाउड पर डेटा को आसानी से स्ट्रीम करने के लिए करेंगे। मॉड्यूल को स्थापित करने के लिए नीचे दिए गए चरणों का पालन करें।
- घर निर्देशिका में लौटने के लिए सीडी ~ चलाएँ ।
- अगला, कमांड चलाएं; sudo pip3 स्थापित adafruit-io । इसे Adafruit IO python मॉड्यूल को स्थापित करना चाहिए।
चरण 4: अपना Adafruit.io खाता सेटअप करें
Adafruit IO का उपयोग करने के लिए निश्चित रूप से पहले एक खाता बनाने और AIO कुंजी प्राप्त करने की आवश्यकता होगी। आपके उपयोगकर्ता नाम के साथ इस AIO कुंजी का उपयोग Adyruit IO क्लाउड सेवा तक पहुंचने के लिए आपकी अजगर स्क्रिप्ट द्वारा किया जाएगा। एक खाता बनाने के लिए, पर जाएं; https://io.adafruit.com/, मुफ्त बटन के लिए आरंभ करें पर क्लिक करें और सभी आवश्यक मापदंडों को भरें। साइन अप पूरा होने के साथ, आपको अपने होम पेज के दाईं ओर व्यू एआईओ कुंजी बटन देखना चाहिए।
अपनी AIO कुंजी प्राप्त करने के लिए उस पर क्लिक करें।
कॉपी की गई कुंजी के साथ, हम जाने के लिए तैयार हैं। हालाँकि, क्लाउड सेवा में डेटा भेजने की प्रक्रिया को आसान बनाने के लिए, आप फ़ीड भी बना सकते हैं कि किस डेटा को भेजा जाएगा। (AIO फ़ीड क्या है, इसके बारे में अधिक जानकारी यहाँ मिल सकती है)। चूंकि हम मूल रूप से बिजली की खपत भेज रहे हैं, इसलिए हम बिजली के लिए एक फ़ीड बनाएंगे। फ़ीड बनाने के लिए, AIO पृष्ठ के शीर्ष पर "फ़ीड्स" पर क्लिक करें और नए फ़ीड जोड़ें पर क्लिक करें।
इसे आप जो भी नाम देना चाहते हैं लेकिन चीजों को सरल रखने के लिए, मैं इसे ऊर्जा की खपत कहूंगा। आप वोल्टेज और करंट के लिए फीड बनाने और उनके लिए डेटा प्रकाशित करने के लिए कोड को अनुकूलित करने का निर्णय भी ले सकते हैं।
इस सब के साथ, हम अब परियोजना का निर्माण शुरू करने के लिए तैयार हैं।
पाई ऊर्जा मीटर सर्किट आरेख
रास्पबेरी पाई एनर्जी मॉनिटर परियोजना के लिए योजनाबद्ध संरचना अपेक्षाकृत जटिल है और इसमें पहले से वर्णित एसी वोल्टेज से जुड़ना शामिल है, कृपया सुनिश्चित करें कि आप बिजली के झटके से बचने के लिए आवश्यक सभी सावधानी बरतें। यदि आप एसी वोल्टेज को सुरक्षित रूप से संभालने से परिचित नहीं हैं, तो इसे शक्ति के बिना, ब्रेडबोर्ड पर इसे लागू करने की खुशी दें।
स्कीमैटिक्स में एडीसी में वोल्टेज और करंट सेंसर यूनिट को जोड़ना शामिल है जो तब सेंसर से डेटा को रास्पबेरी पाई में भेजता है। कनेक्शन का पालन करना आसान बनाने के लिए, प्रत्येक इकाई के लिए योजनाबद्ध अपने आप ही प्रस्तुत किया जाता है।
वर्तमान सेंसर योजनाबद्ध
वर्तमान सेंसर के लिए घटकों को कनेक्ट करें जैसा कि नीचे दिए गए योजनाबद्ध में दिखाया गया है।
इस परियोजना में उपयोग किया जाने वाला वर्तमान ट्रांसफार्मर नीचे दिखाया गया है, जैसा कि आप देख सकते हैं कि हमारे पास इसके तीन तार हैं, अर्थात् जमीन, कूट और 3.3V
वोल्टेज सेंसर स्कैमेटिक्स
वोल्टेज सेंसर के लिए घटकों को कनेक्ट करें जैसा कि नीचे दिए गए योजनाबद्ध में दिखाया गया है।
प्रसंस्करण इकाई स्कैमेटिक्स
रास्पबेरी पाई से जुड़े एडीसी (ADS1115) के साथ सब कुछ कनेक्ट करें और क्रमशः ADS1115 के A0 और A1 से जुड़े वर्तमान और वोल्टेज सेंसर का आउटपुट।
सुनिश्चित करें कि दोनों संवेदन इकाइयों के GND पिन ADC या रास्पबेरी पाई के GND से जुड़े हैं।
चीजों को थोड़ा कम अस्थिर बनाने के लिए, मैंने एक प्रोटोबार्ड पर वोल्टेज और वर्तमान सेंसर को लागू किया। साथ ही, ब्रेडबोर्ड पर एसी मेन्स सर्किट बनाने की अनुशंसा नहीं की जाती है। यदि आप भी ऐसा ही करते हैं, तो आपका अंतिम सेटअप नीचे की छवि जैसा लग सकता है;
कनेक्शन पूरा होने के साथ, अब हम प्रोजेक्ट के लिए कोड लिखने के लिए तैयार हैं।
पाय एनर्जी मीटर के लिए पायथन कोड
हमारी रास्पबेरी पाई परियोजनाओं के साथ हमेशा की तरह, हम अजगर का उपयोग करके परियोजना के लिए कोड विकसित करेंगे। डेस्कटॉप पर रास्पबेरी पाई आइकन पर क्लिक करें, प्रोग्रामिंग का चयन करें और जो भी अजगर आप उपयोग करना चाहते हैं उसका संस्करण लॉन्च करें। मैं अजगर 3 का उपयोग कर रहा हूँ और अजगर 3 में कुछ कार्य अजगर 2.7 के लिए काम नहीं कर सकते हैं। यदि आप 2.7 python का उपयोग करना चाहते हैं तो कोड में कुछ महत्वपूर्ण बदलाव करने की आवश्यकता हो सकती है। मैं छोटे स्निपेट में कोड का एक ब्रेकडाउन करूंगा और अंत में आपके साथ पूरा कोड साझा करूंगा।
तैयार? ठंडा।
कोड के पीछे एल्गोरिथ्म सरल है। हमारे अजगर स्क्रिप्ट वोल्टेज और वर्तमान रीडिंग के लिए ADS1115 (I2C पर) पर सवाल उठाते हैं। प्राप्त एनालॉग मूल्य प्राप्त किया जाता है, नमूना किया जाता है और वोल्टेज और वर्तमान के मूल माध्य वर्ग मान प्राप्त किए जाते हैं। किलोवाट में शक्ति की गणना की जाती है और विशिष्ट अंतराल के बाद Adafruit IO फ़ीड को भेजा जाता है।
हम उन सभी पुस्तकालयों को शामिल करके स्क्रिप्ट शुरू करते हैं, जिनका हम उपयोग करेंगे। इसमें समय और गणित पुस्तकालय और पहले स्थापित किए गए अन्य पुस्तकालय जैसे अंतर्निर्मित पुस्तकालय शामिल हैं।
आयात समय आयात Adafruit_ADS1x15 Adafruit_IO आयात * आयात गणित से
अगला, हम ADS1115 लाइब्रेरी का एक उदाहरण बनाते हैं, जिसका उपयोग आगे जाने वाले भौतिक ADC को संबोधित करने के लिए किया जाएगा।
# ADS1115 ADC (16-बिट) उदाहरण बनाएँ.. adc1 = Adafruit_ADS1x15.ADS1115 ()
इसके बाद, अपना विज्ञापन IO उपयोगकर्ता नाम और "AIO" कुंजी प्रदान करें।
उपयोगकर्ता नाम = 'अपना उपयोगकर्ता नाम इस AIO_KEY =' अपनी aio कुंजी ' aio = ग्राहक (उपयोगकर्ता नाम, AIO_KEY) के बीच दर्ज करें
कृपया कुंजी सुरक्षित रखें। इसका उपयोग आपकी अनुमति के बिना आपके adafruit io खाते तक पहुंचने के लिए किया जा सकता है।
अगला, हम एडीसी के लिए कुछ वैरिएबल बनाते हैं, जितने नमूने हम चाहते हैं और राउंडिंग सेट करते हैं जो निश्चित रूप से महत्वपूर्ण नहीं है।
GAIN = 1 # संभावित मूल्यों के लिए ads1015 / 1115 प्रलेखन देखें। ads1115 स्थानों से लिए गए नमूनों के 200 = # नंबर = int (2) # सेट गोलाई
अगला, हम करंट और वोल्टेज की निगरानी के लिए थोड़ी देर का लूप बनाते हैं और अंतराल पर डेटा को Adafruit io को भेजते हैं। जबकि लूप सभी चर को शून्य पर सेट करके शुरू होता है।
जबकि सत्य: # रीसेट चर गिनती = int (0) डेटाई = दाताव = अधिकतम परिमाण = ० # नमूना के भीतर अधिकतम मान within वैल्यू = ० # नमूना के भीतर ० मीक्स वोल्टेज मान ० मी ० = ० # # थ्रोट वर्जन करंट वर्म्स १ = ० # रूट माध्य वर्ग वोल्टेज ampsA0 = 0 # समवर्ती शिखर voltsA1 = 0 # वोल्ट वोल्टेज किलोवाट = फ्लोट (0)
चूँकि हम AC सर्किट के साथ SCT-013 के आउटपुट पर काम कर रहे हैं और वोल्टेज सेंसर एक sinewave होगा, इस प्रकार साइन वेव से करंट और वोल्टेज की गणना करने के लिए, हमें पीक मान प्राप्त करने की आवश्यकता होगी। चोटी के मूल्यों को प्राप्त करने के लिए, हम वोल्टेज और वर्तमान (200 नमूने) दोनों का नमूना लेंगे, और उच्चतम मान (शिखर मान) पाएंगे।
श्रेणी में गणना के लिए (नमूने): datai.insert (गणना, (abs (adc1.read_adc (0, गेन = GAIN)))) datav.insert (गणना, (abs (adc1.read_adc (1, गेन = गण))))) # यदि आप एक नया MAXVALUE है प्रिंट (दटाई) यदि दटाई> maxIValue: maxIValue = दटाई अगर datav> maxVValue: maxVValue = datav
इसके बाद, हम ADC मानों को वास्तविक मान में परिवर्तित करके मानों को मानकीकृत करते हैं जिसके बाद हम RMS वोल्टेज और करंट को खोजने के लिए रूट मीन स्क्वायर समीकरण का उपयोग करते हैं।
# नमूना डेटा का उपयोग करते हुए #calculate करंट # sct-013 का उपयोग किया जा रहा है 1000mV आउटपुट @ 30A के लिए कैलिब्रेटेड है। IrmsA0 = float (अधिकतम परिचलन / फ़्लोट (2047) * 30) IrmsA0 = दौर (IrmsA0, स्थान) ampsA0 = IrmsA0 / math.sqrt (2) ampsA0 = दौर (ampsA0, स्थान) # गणना वोल्टेज VrmsA1 = float (maxValueue) फ्लोट (2047)) VrmsA1 = राउंड (VrmsA1, स्थान) voltsA1 = VrmsA1 / math.sqrt (2) voltsA1 = राउंड (voltsA1, स्थान) प्रिंट ('वोल्ट: {0} स्वरूप' (voltsA1)) प्रिंट ('करंट' )। : {0} '। प्रारूप (ampsA0))
ऐसा किए जाने के साथ, शक्ति की गणना की जाती है और डेटा को adafruit.io पर प्रकाशित किया जाता है
# पॉवर पॉवर = राउंड (ampsA0 * voltsA1, स्थानों) प्रिंट ('पावर: {0}'। format (पावर)) #post डेटा को adafruit.io EnergyUsage = aio.feeds ('EnergyUsage') aio.send_data (' ) के लिए । एनर्जीयूज ', पावर)
नि: शुल्क खातों के लिए, विज्ञापन की मांग है कि अनुरोधों या डेटा अपलोड के बीच कुछ समय की देरी है।
# लूप समय दोहराने से पहले प्रतीक्षा करें। सो (0)
पूरा कोड परियोजना के लिए इस पृष्ठ के तल पर उपलब्ध है
डेमो
कोड पूरा होने के साथ, इसे सेव करें और अजगर IDE पर रन बटन दबाएं। इससे पहले, सुनिश्चित करें कि Pi वाईफाई या लैन के माध्यम से इंटरनेट से जुड़ा है, और आपकी aio कुंजी और उपयोगकर्ता नाम सही हैं। थोड़ी देर बाद, आपको Adafruit.io पर फ़ीड पर प्रदर्शित ऊर्जा डेटा (पावर) को देखना शुरू करना चाहिए। डेमो के दौरान मेरा हार्डवेयर सेटअप इस तरह था
चीजों को और आगे ले जाने के लिए, आप adafruit.io पर एक डैशबोर्ड बना सकते हैं और एक ग्राफ घटक जोड़ सकते हैं ताकि आप डेटा का चित्रमय दृश्य प्राप्त कर सकें जैसा कि नीचे दी गई छवि में दिखाया गया है।
यही कारण है कि दोस्तों, अब आप दुनिया में कहीं से भी अपनी ऊर्जा खपत की निगरानी कर सकते हैं। यह ध्यान रखना महत्वपूर्ण है कि निश्चित रूप से एक बहुत अधिक ठीक-ट्यूनिंग और अंशांकन है जो इसे वास्तव में सटीक समाधान में बदलने के लिए किया जाता है, लेकिन मेरा मानना है कि यह आपको लगभग सब कुछ देता है जिसे आपको आगे बढ़ने की आवश्यकता है।
टिप्पणी अनुभाग के माध्यम से परियोजना के बारे में मेरे सवालों को शूट करने के लिए स्वतंत्र महसूस करें। मैं यथासंभव जवाब देने की कोशिश करूंगा। अगली बार तक।