- सामग्री की आवश्यकता:
- ACS712 करंट सेंसर का कार्य:
- सर्किट आरेख
- कोड और स्पष्टीकरण:
- बिजली की खपत की निगरानी के लिए Android ऐप:
हम सभी विद्युत ऊर्जा मीटर के बारे में जानते हैं जो बिजली की खपत को मापने के लिए हर किसी के घर या कार्यालयों में स्थापित किए जाते हैं। हर महीने के अंत में, हम में से कई उच्च बिजली बिल के बारे में चिंतित हो जाते हैं और हमें ऊर्जा मीटर को एक बार में देखना होगा। लेकिन क्या होगा अगर हम दुनिया में कहीं से भी अपने बिजली के उपयोग की निगरानी कर सकते हैं और जब आपकी ऊर्जा खपत एक सीमा मूल्य तक पहुँच जाती है तो एक एसएमएस / ई-मेल प्राप्त कर सकते हैं। यहां हम ऊर्जा मीटर की IoT आधारित परियोजना का निर्माण कर रहे हैं।
पहले हमने एनर्जी मीटर सर्किट बनाया है जो आपको जीएसएम मॉड्यूल का उपयोग करके बिल के बारे में एसएमएस भेजता है। इस परियोजना में हम Arduino और ESP8266 वाई-फाई मॉड्यूल का उपयोग करके एक स्मार्ट बिजली ऊर्जा मीटर बनाते हैं जो न केवल आपको अपने बिजली बिल का एक एसएमएस / ईमेल भेजता है, बल्कि आप दुनिया में कहीं भी और कभी भी ऊर्जा के उपयोग की निगरानी कर सकते हैं। यहां हमने ऊर्जा की खपत को मापने के लिए करंट सेंसर ACS712 का उपयोग किया है, हम जल्द ही इसके बारे में चर्चा करेंगे।
हम अपने वाई-फाई को एसएमएस / ई-मेल सूचनाओं से जोड़ने के लिए IFTTT प्लेटफॉर्म की मदद लेंगे । हम अपने ऊर्जा उपयोगों की निगरानी के लिए MQTT डैशबोर्ड एंड्रॉइड ऐप का भी उपयोग करेंगे । तो चलो शुरू करते है…।
सामग्री की आवश्यकता:
- अरुडिनो उनो
- ESP12 / NodeMCU
- ACS712-30Amp करंट सेंसर
- कोई एसी उपकरण
- नर-मादा तार
ACS712 करंट सेंसर का कार्य:
परियोजना का निर्माण शुरू करने से पहले हमें ACS712 करंट सेंसर के काम को समझना बहुत जरूरी है क्योंकि यह परियोजना का प्रमुख घटक है। वर्तमान में विशेष रूप से एसी करंट को मापना हमेशा एक कठिन काम होता है, क्योंकि यह अनुचित अलगाव की समस्या के साथ युग्मित शोर के कारण होता है, लेकिन इस ACS712 मॉड्यूल की मदद से, जो कि एलीग्रो चीज़ द्वारा इंजीनियर किया गया था, बहुत आसान हो गया है।
यह मॉड्यूल हॉल-प्रभाव के सिद्धांत पर काम करता है, जिसे डॉ। एडविन हॉल द्वारा खोजा गया था। उनके सिद्धांत के अनुसार, जब एक ले जाने वाले कंडक्टर को एक चुंबकीय क्षेत्र में रखा जाता है, तो इसके किनारों पर दोनों वर्तमान और चुंबकीय क्षेत्र की दिशाओं के लिए एक वोल्टेज उत्पन्न होता है। आइए हम अवधारणा में बहुत गहरे नहीं उतरते हैं, लेकिन, बस हम एक हॉल सेंसर का उपयोग करते हैं, जो वर्तमान ले जाने वाले कंडक्टर के चारों ओर चुंबकीय क्षेत्र को मापता है। यह माप मिलिवोल्ट्स के संदर्भ में होगा जिसे हम हॉल-वोल्टेज के रूप में कहते हैं। यह मापा गया हॉल-वोल्टेज उस धारा के आनुपातिक है जो कंडक्टर के माध्यम से बह रही थी।
ACS712 करंट सेंसर का उपयोग करने का मुख्य लाभ यह है कि दोनों AC और DC करंट को माप सकते हैं और यह लोड (AC / DC लोड) और मेजरिंग यूनिट (माइक्रोकंट्रोलर पार्ट) के बीच अलगाव प्रदान करता है। जैसा कि चित्र में दिखाया गया है कि हमारे पास मॉड्यूल पर तीन पिन हैं जो क्रमशः Vcc, Vout और Ground हैं।
2-पिन टर्मिनल ब्लॉक वह जगह है जहां वर्तमान ले जाने वाले तार को गुजरना चाहिए। मॉड्यूल + 5 वी पर काम करता है इसलिए वीसीसी को 5 वी द्वारा संचालित किया जाना चाहिए और जमीन को सिस्टम के ग्राउंड से जोड़ा जाना चाहिए। वाउट पिन में 2500mV का एक ऑफसेट वोल्टेज होता है, जिसका अर्थ है कि जब तार के माध्यम से कोई धारा प्रवाहित नहीं होती है तो आउटपुट वोल्टेज 2500mV होगा और जब विद्युत प्रवाह सकारात्मक होता है, तो वोल्टेज 2500mV से अधिक होगा और जब प्रवाह प्रवाह नकारात्मक होगा, वोल्टेज 2500mV से कम होगा।
हम मॉड्यूल के आउटपुट वोल्टेज (Vout) को पढ़ने के लिए Arduino के एनालॉग पिन का उपयोग करेंगे, जो कि 512 (2500mV) होगा जब तार के माध्यम से कोई प्रवाह नहीं होता है। यह मान नकारात्मक दिशा में वर्तमान प्रवाह के रूप में कम हो जाएगा और सकारात्मक दिशा में वर्तमान प्रवाह के रूप में बढ़ जाएगा। नीचे दी गई तालिका आपको यह समझने में मदद करेगी कि आउटपुट वोल्टेज और एडीसी मान तार के माध्यम से बहने वाले वर्तमान के आधार पर कैसे भिन्न होता है।
इन मूल्यों की गणना ACS712 की डेटाशीट में दी गई जानकारी के आधार पर की गई थी। आप निम्न सूत्रों का उपयोग करके उनकी गणना भी कर सकते हैं:
वाउट वोल्ट (mV) = (ADC मान / 1023) * 5000 करंट वायर के माध्यम से (A) = (VUT (mv) -2500) / 185
अब, हम जानते हैं कि ACS712 सेंसर कैसे काम करता है और हम इससे क्या उम्मीद कर सकते हैं। आइए हम सर्किट आरेख पर आगे बढ़ें।
हमने इस सेंसर का उपयोग PIC Microcontroller और ACS712 का उपयोग करके डिजिटल एमीटर सर्किट बनाने के लिए किया है।
सर्किट आरेख
चरण 1: अपने क्रेडेंशियल्स के साथ IFTTT में लॉगिन करें।
चरण 2: मेरे सेब पर, नए एप्लेट पर क्लिक करें
स्टेप 3: + इस पर क्लिक करें
चरण 4: AdaFruit खोजें और उस पर क्लिक करें।
चरण 5: मॉनिटर पर फ़ीड पर क्लिक करें AdaFruit IO।
चरण 6: फ़ीड को बिल के रूप में चुनें, संबंध को ' बराबर' और उस सीमा मान को जिस पर आप एक ई-मेल चाहते हैं। क्रिएट एक्शन पर क्लिक करें । मैंने अपने दहलीज ट्रिगर मूल्य के रूप में 4 का उपयोग किया है।
स्टेप 7: + पर क्लिक करें । जी-मेल के लिए खोजें और उस पर क्लिक करें और अपने जी-मेल क्रेडेंशियल्स के साथ लॉगिन करें।
चरण 8: अपने आप को एक ईमेल भेजें पर क्लिक करें ।
चरण 9: दिखाए गए अनुसार अपने विषय और शरीर को लिखें और बनाने के लिए क्लिक करें।
चरण 10: आपकी ' रेसिपी ' तैयार है। इसे रिव्यू करें और फिनिश पर क्लिक करें।
अब, हम वेब एकीकरण के साथ किया जाता है। कोडिंग पार्ट पर चलते हैं।
कोड और स्पष्टीकरण:
हम ESP12 और Arduino के बीच धारावाहिक संचार का उपयोग कर रहे हैं। इसलिए, हमें संचारण और प्राप्त करने के लिए Arduino और NodeMCU दोनों के लिए कोड लिखना होगा।
ट्रांसमीटर भाग यानी Arduino Uno के लिए कोड:
इस ट्यूटोरियल के अंत में पूरा Arduino कोड दिया गया है। हम करंट सेंसर के लिए लाइब्रेरी का उपयोग करेंगे जिसे इस लिंक से डाउनलोड किया जा सकता है।
इस लाइब्रेरी में करंट की गणना के लिए इनबिल्ट फंक्शन है। आप वर्तमान की गणना के लिए अपना कोड लिख सकते हैं लेकिन इस लाइब्रेरी में सटीक वर्तमान मापने वाला एल्गोरिदम है।
सबसे पहले, वर्तमान सेंसर के लिए पुस्तकालय शामिल करें:
# प्राप्त करें "ACS712.h"
NodeMCU को भेजने के लिए पावर स्टोर करने के लिए एक सरणी बनाएं।
चार वाट;
पिन A0 पर ACS712-30Amp का उपयोग करने के लिए एक उदाहरण बनाएँ। यदि आप 20Amp या 5 Amp संस्करण का उपयोग कर रहे हैं, तो पहले तर्क बदलें।
ACS712 सेंसर (ACS712_30A, A0);
में सेटअप समारोह, 115200 के बॉड दर NodeMCU के साथ संवाद करने परिभाषित करते हैं। सटीक रीडिंग प्राप्त करने के लिए करेंट सेंसर को कैलिब्रेट करने के लिए कॉल सेंसर.कैलिब्रेट () फ़ंक्शन।
शून्य सेटअप () { Serial.begin (115200); Sens.calibrate (); }
में पाश समारोह, हम फोन करेगा sensor.getCurrentAC (); फ्लोट वैरिएबल I में करंट वैल्यू और स्टोर पाने के लिए फंक्शन । करंट लगने के बाद, P = V * I फॉर्मूला का उपयोग कर पावर की गणना करें। हम 230V का उपयोग करते हैं क्योंकि यह यूरोपीय देशों में सामान्य मानक है, यदि आवश्यक हो तो अपने स्थानीय में बदलें
शून्य लूप () { फ्लोट वी = 230; फ्लोट I = Sens.getCurrentAC (); फ्लोट P = V * I;
ये रेखाएँ शक्ति को Wh में परिवर्तित करती हैं।
last_time = current_time; current_time = मिली (); Wh = Wh + P * ((current_time -last_time) /3600000.0);
अब, हमें इस dtostrf () के लिए NodeMCU को भेजने के लिए इस Wh को चरित्र रूप में परिवर्तित करना होगा ; एक फ्लोट को चार सरणी में बदल देगा ताकि इसे आसानी से प्रिंट किया जा सके:
dtostrf (Wh, 4, 2, watt);
प्रारूप है:
dtostrf (floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);
Serial.write () का उपयोग करके सीरियल बफ़र के लिए यह वर्ण सरणी लिखें ; समारोह। इस भेज देंगे Wh NodeMCU के लिए मूल्य।
धारावाहिक.लेख (वाट); देरी (10000); }
रिसीवर भाग के लिए कोड NodeMCU ESP12:
इसके लिए हमें AdaFruit MQTT लाइब्रेरी की आवश्यकता है जिसे इस लिंक से डाउनलोड किया जा सकता है।
अब, Arduino IDE खोलें। उदाहरणों पर जाएं -> AdaFruit MQTT पुस्तकालय -> mqtt_esp8266
हम इस कोड को अपनी AIO कुंजियों और Wi-Fi क्रेडेंशियल और Arduino से आने वाले सीरियल डेटा के अनुसार संपादित करेंगे।
सबसे पहले, हमने ESP12 वाई-फाई मॉड्यूल और AdaFruit MQTT के लिए सभी पुस्तकालयों को शामिल किया।
#शामिल
हम आपके वाई-फाई के लिए SSID और पासवर्ड को परिभाषित करते हैं, जिससे आप अपने ESp-12e को जोड़ना चाहते हैं।
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
यह खंड AdaFruit सर्वर और सर्वर पोर्ट को परिभाषित करता है जो क्रमशः "io.adafruit.com" और "1883" के रूप में तय किया गया है।
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
इन क्षेत्रों को अपने उपयोगकर्ता नाम और AIO कुंजियों के साथ बदलें, जिन्हें आपने फ़ीड बनाते समय AdaFruit साइट से कॉपी किया है।
#define AIO_USERNAME "********" #define AIO_KEY "*******************************"
फिर हमने MQTT सर्वर से कनेक्ट करने के लिए ESP12 WiFiClient क्लास बनाई है।
WiFiClient क्लाइंट;
WiFi क्लाइंट और MQTT सर्वर और लॉगिन विवरण में पास करके MQTT क्लाइंट क्लास सेट करें।
Adafruit_MQTT_Client mqtt (और ग्राहक, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
परिवर्तनों को प्रकाशित करने के लिए 'पावर' और 'बिल' नामक फ़ीड सेट करें।
Adafruit_MQTT_Publish Power = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / Power"); Adafruit_MQTT_Publish बिल = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / bill");
में सेटअप समारोह, हम वाई-फाई बात करने के लिए वाई-फाई मॉड्यूल कनेक्ट।
शून्य सेटअप () { Serial.begin (115200); देरी (10); Serial.println (F ("Adafruit MQTT डेमो")); // वाईफाई एक्सेस प्वाइंट से कनेक्ट करें। धारावाहिक.प्रदर्शन (); धारावाहिक.प्रदर्शन (); Serial.print ("कनेक्ट करना"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); …। …। … }
में पाश समारोह, हम Arduino से आने वाले डेटा के लिए जाँच करें और Adafruit आईओ के लिए इस डेटा प्रकाशित करेंगे।
शून्य लूप () { // सुनिश्चित करें कि MQTT सर्वर से कनेक्शन जीवित है (यह पहला // कनेक्शन बना देगा और डिस्कनेक्ट होने पर स्वचालित रूप से पुन: कनेक्ट हो जाएगा)। नीचे MQTT_connect // फ़ंक्शन परिभाषा देखें। MQTT_connect (); int i = 0; फ्लोट watt1;
यह फ़ंक्शन Arduino से आने वाले डेटा की जाँच करता है और इस डेटा को क्रमबद्ध (सीरियल) फ़ंक्शन का उपयोग करके वॉट सरणी में संग्रहीत करता है।
अगर (धारावाहिक। उपलब्ध) ()> 0) { विलंब (100); // सभी धारावाहिकों को एक साथ भेजने की अनुमति देता है, जबकि (सीरियल) उपलब्ध () और & <i> 5) { वाट = सीरियल_डर (); } वाट = '\ 0'; }
atof () फ़ंक्शन अक्षरों को फ्लोट वैल्यू में बदलता है और हम इस फ्लोट वैल्यू को दूसरे फ्लोट वेरिएबल वाट 1 में स्टोर करेंगे।
watt1 = atof (वाट);
ऊर्जा टैरिफ के साथ बिजली (जिसमें) को गुणा करके बिल राशि की गणना करें और KWh में पावर बनाने के लिए इसे 1000 से विभाजित करें।
bill_amount = watt1 * (energyTariff / 1000); // 1 यूनिट = 1kwH
अब हम सामान प्रकाशित कर सकते हैं!
Serial.print (F ("\ NSending Power val")); सिरियल.प्रिंटल (वाट 1); सीरियल.प्रिंट ("…");
कोड का यह टुकड़ा पावर फीड को पावर वैल्यू प्रकाशित कर रहा है
अगर (पॉवर। अप्रकाशन (watt1)) {Serial.println (F ("विफल")); } और { Serial.println (F ("OK!")); }
यह बिजली बिल को बिल फीड में प्रकाशित करेगा ।
if (बिल। अप्रकाशित (बिल_माउंट)) {Serial.println (F ("विफल")); } और { Serial.println (F ("OK!")); }
हमारी बिल राशि तेजी से बदल सकती है लेकिन IFTTT को एप्लेट को ट्रिगर करने में समय लगता है इसलिए ये लाइनें ट्रिगर करने के लिए समय देंगी ताकि हम थ्रेसहोल्ड ईमेल प्राप्त कर सकें।
वह बिल_माउंट मान बदलें, जिस पर आप ईमेल प्राप्त करना चाहते हैं। इसके अलावा, IFTTT AdaFruit IO सेटअप में बदलाव करें।
if (bill_amount == 4) { for (int i = 0; i <= 2; i ++) { bill.publish (बिल_माउंट); देरी (5000); } बिल_माउंट = 6; }
Arduino और NodeMCU ESP12 के लिए पूरा कोड इस ट्यूटोरियल के अंत में दिया गया है।
अब, दोनों बोर्ड को कोड अपलोड करें। सर्किट आरेख और ओपन io.adafruit.com में दिखाए गए अनुसार अपने हार्डवेयर को कनेक्ट करें । आपके द्वारा अभी बनाया गया डैशबोर्ड खोलें। आप देखेंगे कि बिजली की खपत और बिजली का बिल अपडेट हो रहा है।
जब आपका बिल INR 4 तक पहुंच जाएगा तो आपको इस तरह का एक ईमेल मिलेगा ।
बिजली की खपत की निगरानी के लिए Android ऐप:
मूल्यों की निगरानी के लिए आप एंड्रॉइड ऐप का उपयोग कर सकते हैं। इसके लिए प्ले स्टोर से या इस लिंक से एमक्यूटीटी डैशबोर्ड एंड्रॉइड ऐप डाउनलोड करें।
Io.adafruit.com के साथ कनेक्शन सेटअप करने के लिए इन चरणों का पालन करें:
चरण 1: ऐप खोलें और “+” साइन पर क्लिक करें। क्लाइंट आईडी जो भी आप चाहते हैं उसे भरें। स्क्रीनशॉट में दिखाए अनुसार सर्वर और पोर्ट एक समान रहते हैं। आपको नीचे दिखाए गए अनुसार AdaFruit IO डैशबोर्ड से यूजरनेम और पासवर्ड (एक्टिव की) मिलेगा।
एक्टिव की आपका पासवर्ड है।
चरण 2: बिजली मीटर का चयन करें और सदस्यता का चयन करें । सदस्यता में, अनुकूल नाम और विषय दें। टॉपिक फॉर्मेट ' yourusername' / feeds / 'feedname' है और create पर क्लिक करें।
चरण 3: उसी तरह, बिल फीड के लिए सदस्यता लें ।
चरण 4: ऊर्जा का उपभोग करने वाले आपके उपकरण के रूप में, पावर और बिल के तहत अद्यतन मूल्य प्रदर्शित किए जाएंगे ।
इस तरह आप एक स्मार्ट बिजली ऊर्जा मीटर बना सकते हैं, जिसे न केवल दुनिया में कहीं से भी मॉनिटर किया जा सकता है, बल्कि जब आपके पास बिजली की उच्च खपत होती है तो ईमेल को भी ट्रिगर किया जा सकता है।
हमारे सभी IoT प्रोजेक्ट्स को भी देखें।