- आवश्यक घटक:
- सर्किट आरेख और स्पष्टीकरण:
- कार्य स्पष्टीकरण:
- कोड स्पष्टीकरण:
- "; वेबपेज + =" एयर क्वालिटी है "; वेबपेज + = एयर_क्वालिटी; वेबपेज + =" पीपीएम "; वेबपेज + ="
";
निम्न कोड sendData नामक एक फ़ंक्शन को कॉल करेगा और वेबपेज पर दिखाने के लिए डेटा और संदेश स्ट्रिंग भेजेगा।
sendData (cipSend, 1000, DEBUG); sendData (वेबपेज, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
निम्न कोड एलसीडी पर डेटा प्रिंट करेगा। हमने वायु गुणवत्ता की जांच के लिए विभिन्न शर्तें लागू की हैं, और एलसीडी शर्तों के अनुसार संदेशों को प्रिंट करेगा और बजर भी बीप करेगा यदि प्रदूषण 1000 पीपीएम से अधिक हो जाता है।
lcd.setCursor (0, 0); lcd.print ("एयर क्वालिटी है"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); अगर (air_quality <= 1000) {lcd.print ("ताज़ा हवा"); digitalWrite (8, LOW);
अंत में नीचे दिया गया फंक्शन वेबपेज पर डेटा भेजेगा और दिखाएगा। The वेबपेज ’ नामक स्ट्रिंग में हमारे द्वारा संग्रहित डेटा को । कमांड’ नामक स्ट्रिंग में सहेजा जाएगा । ईएसपी इसके बाद 'कमांड' से एक-एक करके कैरेक्टर को पढ़ेगा और वेबपेज पर प्रिंट करेगा।
स्ट्रिंग sendData (स्ट्रिंग कमांड, कॉन्स्ट इंट टाइमआउट, बूलियन डीबग) {स्ट्रिंग प्रतिक्रिया = ""; esp8266.print (कमांड); // रीड कैरेक्टर को esp8266 लॉन्ग इंट टाइम = मिलिस () में भेजें; जबकि ((टाइम + टाइमआउट)> मिलिस ()) {जबकि (esp8266.available ()) {// डेटा में सीरियल विंडो चार c = esp8266.read () के लिए इसका आउटपुट प्रदर्शित होता है; // अगला चरित्र पढ़ें। प्रतिक्रिया + = c; }} यदि (डिबग) {Serial.print (प्रतिक्रिया); } वापसी प्रतिक्रिया; }
- परियोजना का परीक्षण और आउटपुट:
इस परियोजना में हम एक IoT आधारित वायु प्रदूषण निगरानी प्रणाली बनाने जा रहे हैं जिसमें हम इंटरनेट का उपयोग करते हुए एक वेबसर्वर से अधिक वायु गुणवत्ता की निगरानी करेंगे और जब वायु की गुणवत्ता एक निश्चित स्तर से अधिक हो जाएगी, तो अलार्म बज जाएगा जब पर्याप्त मात्रा में हो। हानिकारक गैसें हवा में मौजूद हैं जैसे CO2, धुआं, शराब, बेंजीन और NH3। यह एलसीडी और साथ ही वेबपेज पर पीपीएम में हवा की गुणवत्ता दिखाएगा ताकि हम इसे बहुत आसानी से मॉनिटर कर सकें।
पहले हमने MQ6 सेंसर का उपयोग करके MQ6 सेंसर और स्मोक डिटेक्टर का उपयोग करके LPG डिटेक्टर का निर्माण किया है लेकिन इस बार हमने MQ135 सेंसर का उपयोग वायु गुणवत्ता सेंसर के रूप में किया है जो वायु गुणवत्ता की निगरानी के लिए सबसे अच्छा विकल्प है क्योंकि यह सबसे हानिकारक गैसों का पता लगा सकता है और उनकी राशि को माप सकता है। सही ढंग से। इस IOT प्रोजेक्ट में, आप अपने कंप्यूटर या मोबाइल का उपयोग करके कहीं से भी प्रदूषण स्तर की निगरानी कर सकते हैं। हम इस सिस्टम को कहीं भी स्थापित कर सकते हैं और कुछ डिवाइस को ट्रिगर भी कर सकते हैं जब प्रदूषण कुछ स्तर से आगे बढ़ जाता है, जैसे हम एग्जॉस्ट फैन पर स्विच कर सकते हैं या उपयोगकर्ता को अलर्ट एसएमएस / मेल भेज सकते हैं।
आवश्यक घटक:
- MQ135 गैस सेंसर
- अरुडिनो उनो
- वाई-फाई मॉड्यूल ESP8266
- 16X2 एलसीडी
- ब्रेड बोर्ड
- 10K पोटेंशियोमीटर
- 1K ओम प्रतिरोधों
- 220 ओम अवरोधक
- बजर
आप उपरोक्त सभी घटकों को यहां से खरीद सकते हैं।
सर्किट आरेख और स्पष्टीकरण:
सबसे पहले हम ESP8266 को Arduino के साथ जोड़ेंगे । ESP8266 3.3V पर चलता है और अगर आप इसे Arduino से 5V देंगे तो यह ठीक से काम नहीं करेगा और इससे नुकसान हो सकता है। Arduino के 3.3V पिन को VCC और CH_PD कनेक्ट करें। ESP8266 का RX पिन 3.3V पर काम करता है और यह Arduino के साथ संवाद नहीं करेगा जब हम इसे सीधे Arduino से जोड़ेंगे। तो, हमें इसके लिए एक वोल्टेज विभक्त बनाना होगा जो 5V को 3.3V में बदल देगा। यह श्रृंखला में तीन प्रतिरोधों को जोड़कर किया जा सकता है जैसे हमने सर्किट में किया था। Arduino के पिन 10 के लिए ESP8266 के TX पिन और प्रतिरोधों के माध्यम से Arduino के पिन 9 को esp8266 के RX पिन से कनेक्ट करें।
ESP8266 वाई-फाई मॉड्यूल आपकी परियोजनाओं को वाई-फाई या इंटरनेट तक पहुंच प्रदान करता है । यह बहुत सस्ता उपकरण है और आपकी परियोजनाओं को बहुत शक्तिशाली बनाता है। यह किसी भी माइक्रोकंट्रोलर के साथ संवाद कर सकता है और यह आईओटी प्लेटफॉर्म में सबसे अग्रणी डिवाइस है। यहाँ Arduino के साथ ESP8266 का उपयोग करने के बारे में अधिक जानें।
फिर हम MQ135 सेंसर को Arduino के साथ जोड़ेंगे । VCC और सेंसर के ग्राउंड पिन को 5V और Arduino के ग्राउंड से कनेक्ट करें और Arduino के A0 को सेंसर का एनालॉग पिन।
बडज़ेर को अरुडिनो के पिन 8 से कनेक्ट करें जो स्थिति के सही होने पर बीप करना शुरू कर देगा।
अंत में, हम एलसीडी को Arduino के साथ जोड़ेंगे। एलसीडी के कनेक्शन निम्नानुसार हैं
- पिन 1 (VEE) को जमीन से कनेक्ट करें।
- 5V (VDD या VCC) को 5V से कनेक्ट करें।
- पिन 3 (V0) को 10K पोटेंशियोमीटर के मध्य पिन से कनेक्ट करें और पोटेंशियोमीटर के अन्य दो सिरों को VCC और GND से कनेक्ट करें। पोटेंशियोमीटर का उपयोग एलसीडी के स्क्रीन कंट्रास्ट को नियंत्रित करने के लिए किया जाता है। 10K के अलावा अन्य मानों के पोटेंशियोमीटर भी काम करेंगे।
- पिन 4 (RS) को Arduino के पिन 12 से कनेक्ट करें।
- पिन 5 (पढ़ें / लिखें) को Arduino के मैदान से कनेक्ट करें। इस पिन का उपयोग अक्सर नहीं किया जाता है इसलिए हम इसे जमीन से जोड़ देंगे।
- पिन 6 (E) को Arduino के पिन 11 से कनेक्ट करें। आरएस और ई पिन नियंत्रण पिन हैं जो डेटा और वर्ण भेजने के लिए उपयोग किए जाते हैं।
- निम्नलिखित चार पिन डेटा पिन हैं जिनका उपयोग Arduino के साथ संवाद करने के लिए किया जाता है।
Arduino के 5 पिन करने के लिए पिन 11 (D4) से कनेक्ट करें।
Arduino के 4 पिन करने के लिए पिन 12 (D5) से कनेक्ट करें।
Arduino के 3 को पिन करने के लिए पिन 13 (D6) से कनेक्ट करें।
Arduino के 2 को पिन करने के लिए पिन 14 (D7) से कनेक्ट करें।
- 220 ओम रोकनेवाला के माध्यम से VCC से पिन 15 कनेक्ट करें। रेसिस्टर का उपयोग बैक लाइट ब्राइटनेस सेट करने के लिए किया जाएगा। बड़े मूल्य पीछे के प्रकाश को और अधिक गहरा बना देंगे।
- पिन 16 को ग्राउंड से कनेक्ट करें।
कार्य स्पष्टीकरण:
MQ135 सेंसर NH3, NOx, शराब, बेंजीन, धुआं, CO2 और कुछ अन्य गैसों को समझ सकता है, इसलिए यह हमारे वायु गुणवत्ता निगरानी परियोजना के लिए एकदम सही गैस सेंसर है । जब हम इसे Arduino से जोड़ेंगे तब यह गैसों का बोध कराएगा, और हम PPM (प्रति मिलियन भाग) में प्रदूषण स्तर प्राप्त करेंगे। MQ135 गैस सेंसर वोल्टेज स्तर के रूप में आउटपुट देता है और हमें इसे पीपीएम में बदलने की आवश्यकता है। पीपीएम में आउटपुट को परिवर्तित करने के लिए, यहाँ हमने MQ135 सेंसर के लिए एक पुस्तकालय का उपयोग किया है, इसे नीचे "कोड स्पष्टीकरण" अनुभाग में विस्तार से बताया गया है।
सेंसर हमें 90 का मूल्य दे रहा था जब इसके पास कोई गैस नहीं थी और हवा की गुणवत्ता का सुरक्षित स्तर 350 पीपीएम है और यह 1000 पीपीएम से अधिक नहीं होना चाहिए। जब यह 1000 पीपीएम की सीमा से अधिक हो जाता है, तो इसके कारण सिरदर्द, नींद और स्थिर होना, बासी, भरी हवा और 2000 पीपीएम से अधिक हो जाता है तो यह हृदय गति और कई अन्य बीमारियों का कारण बन सकता है।
जब मूल्य 1000 पीपीएम से कम होगा, तो एलसीडी और वेबपेज "फ्रेश एयर" प्रदर्शित करेंगे। जब भी मूल्य 1000 पीपीएम बढ़ जाएगा, तब बजर बीप करना शुरू कर देगा और एलसीडी और वेबपेज "खराब हवा, ओपन विंडोज" प्रदर्शित करेगा। अगर यह २००० बढ़ जाएगा तो बजर बजता रहेगा और एलसीडी और वेबपेज "खतरे" को प्रदर्शित करेगा! ताजा हवा में ले जाएँ ”।
कोड स्पष्टीकरण:
इस परियोजना के लिए कोडिंग शुरू करने से पहले, हमें MQ135 गैस सेंसर को पहले कैलिब्रेट करना होगा। पीपीएम मूल्य में सेंसर के आउटपुट को परिवर्तित करने में बहुत सारी गणनाएं शामिल हैं, हमने यह गणना अपने पिछले स्मोक डिटेक्शन प्रोजेक्ट में पहले की है। लेकिन यहां हम MQ135 के लिए लाइब्रेरी का उपयोग कर रहे हैं, आप यहां से इस MQ135 लाइब्रेरी को डाउनलोड और इंस्टॉल कर सकते हैं:
इस लाइब्रेरी का उपयोग करके आप सीधे पीपीएम मान प्राप्त कर सकते हैं, बस नीचे दो पंक्तियों का उपयोग करके:
MQ135 गैस सेंसर = MQ135 (A0); फ्लोट air_quality = gasSensor.getPPM ();
लेकिन इससे पहले हमें MQ135 सेंसर को कैलिब्रेट करने की आवश्यकता है, नीचे दिए गए कोड को अपलोड करने वाले सेंसर को कैलिब्रेट करने के लिए और इसे 12 से 24 घंटे तक चलने दें और फिर RZERO वैल्यू प्राप्त करें ।
#include "MQ135.h" शून्य सेटअप () {Serial.begin (9600); } शून्य लूप () {MQ135 गैस सेंसर = MQ135 (A0); // A0 फ्लोट rzero = gasSensor.getRZero () पिन करने के लिए सेंसर संलग्न करें; सिरियल.प्रिंटल (रोज़रो); देरी (1000); }
RZERO मान प्राप्त करने के बाद । "MQ135.h" डाउनलोड की गई लाइब्रेरी फ़ाइल में RZERO मान रखें: #define RZERO 494.63
अब हम अपनी वायु गुणवत्ता निगरानी परियोजना के लिए वास्तविक कोड शुरू कर सकते हैं।
कोड में, सबसे पहले हमने गैस सेंसर और एलसीडी के लिए पुस्तकालयों और चर को परिभाषित किया है। सॉफ्टवेयर सीरियल लाइब्रेरी का उपयोग करके, हम किसी भी डिजिटल पिन को TX और RX पिन के रूप में बना सकते हैं। इस कोड में, हमने पिन 9 को आरएक्स पिन और पिन 10 को ईएसपी 8266 के लिए TX पिन के रूप में बनाया है। फिर हमने एलसीडी के लिए लाइब्रेरी को शामिल किया है और उसी के लिए पिंस को परिभाषित किया है। हमने दो और चर भी परिभाषित किए हैं: एक सेंसर एनालॉग पिन के लिए और दूसरा एयर_क्वालिटी मान को संचय करने के लिए ।
#शामिल
फिर हम पिन 8 को आउटपुट पिन के रूप में घोषित करेंगे जहां हमने बजर को जोड़ा है। l cd.begin (16,2) कमांड डेटा प्राप्त करने के लिए एलसीडी को शुरू करेगा और फिर हम कर्सर को पहली पंक्ति में सेट करेंगे और 'सर्किटडिगस्ट' प्रिंट करेंगे । फिर हम दूसरी लाइन पर कर्सर सेट करेंगे और 'सेंसर वार्मिंग' प्रिंट करेंगे ।
पिनमोड (8, OUTPUT); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("सेंसर वार्मिंग"); देरी (1000);
फिर हम सीरियल संचार के लिए बॉड दर निर्धारित करेंगे। विभिन्न ईएसपी की अलग-अलग बॉड दरें होती हैं इसलिए इसे अपने ईएसपी की बॉड दर के अनुसार लिखें। फिर हम Arduino के साथ संवाद करने के लिए ESP सेट करने के लिए कमांड भेजेंगे और धारावाहिक मॉनिटर पर आईपी पता दिखाएंगे।
सीरियल.बेगिन (115200); esp8266.begin (115200); SendData ("AT + RST \ r \ n", 2000, DEBUG); sendData ("AT + CWMODE = 2 \ r \ n", 1000, DEBUG); sendData ("AT + CIFSR \ r \ n", 1000, DEBUG); sendData ("AT + CIPMUair_quality = 1 \ r \ n", 1000, DEBUG); sendData ("AT + CIPSERVER = 1,80 \ r \ n", 1000, DEBUG); पिनमोड (सेंसरपिन, INPUT); lcd.clear ();
वेब ब्राउज़र में वेबपेज पर आउटपुट प्रिंट करने के लिए, हमें HTML प्रोग्रामिंग का उपयोग करना होगा । इसलिए, हमने वेबपेज नाम का एक स्ट्रिंग बनाया है और उसमें आउटपुट को स्टोर किया है। हम आउटपुट से 48 घटा रहे हैं क्योंकि रीड () फ़ंक्शन ASCII दशमलव मान लौटाता है और पहला दशमलव नंबर 0 है जो 48 पर शुरू होता है।
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {विलंब (1000); int connectionId = esp8266.read () - 48; स्ट्रिंग वेबपेज = "
आईओटी वायु प्रदूषण निगरानी प्रणाली
"; वेबपृष्ठ + =""; वेबपेज + =" एयर क्वालिटी है "; वेबपेज + = एयर_क्वालिटी; वेबपेज + =" पीपीएम "; वेबपेज + ="
";
निम्न कोड sendData नामक एक फ़ंक्शन को कॉल करेगा और वेबपेज पर दिखाने के लिए डेटा और संदेश स्ट्रिंग भेजेगा।
sendData (cipSend, 1000, DEBUG); sendData (वेबपेज, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
निम्न कोड एलसीडी पर डेटा प्रिंट करेगा। हमने वायु गुणवत्ता की जांच के लिए विभिन्न शर्तें लागू की हैं, और एलसीडी शर्तों के अनुसार संदेशों को प्रिंट करेगा और बजर भी बीप करेगा यदि प्रदूषण 1000 पीपीएम से अधिक हो जाता है।
lcd.setCursor (0, 0); lcd.print ("एयर क्वालिटी है"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); अगर (air_quality <= 1000) {lcd.print ("ताज़ा हवा"); digitalWrite (8, LOW);
अंत में नीचे दिया गया फंक्शन वेबपेज पर डेटा भेजेगा और दिखाएगा। The वेबपेज’ नामक स्ट्रिंग में हमारे द्वारा संग्रहित डेटा को । कमांड’ नामक स्ट्रिंग में सहेजा जाएगा । ईएसपी इसके बाद 'कमांड' से एक-एक करके कैरेक्टर को पढ़ेगा और वेबपेज पर प्रिंट करेगा।
स्ट्रिंग sendData (स्ट्रिंग कमांड, कॉन्स्ट इंट टाइमआउट, बूलियन डीबग) {स्ट्रिंग प्रतिक्रिया = ""; esp8266.print (कमांड); // रीड कैरेक्टर को esp8266 लॉन्ग इंट टाइम = मिलिस () में भेजें; जबकि ((टाइम + टाइमआउट)> मिलिस ()) {जबकि (esp8266.available ()) {// डेटा में सीरियल विंडो चार c = esp8266.read () के लिए इसका आउटपुट प्रदर्शित होता है; // अगला चरित्र पढ़ें। प्रतिक्रिया + = c; }} यदि (डिबग) {Serial.print (प्रतिक्रिया); } वापसी प्रतिक्रिया; }
परियोजना का परीक्षण और आउटपुट:
कोड अपलोड करने से पहले, सुनिश्चित करें कि आप अपने ESP8266 डिवाइस के वाई-फाई से जुड़े हैं। अपलोड करने के बाद, सीरियल मॉनिटर खोलें और यह नीचे दिखाए गए जैसे आईपी पते को दिखाएगा।
अपने ब्राउज़र में इस आईपी पते को टाइप करें, यह आपको नीचे दिखाए अनुसार आउटपुट दिखाएगा। यदि आप वर्तमान एयर क्वालिटी वैल्यू को पीपीएम में देखना चाहते हैं तो आपको फिर से पेज को रिफ्रेश करना होगा।
हमारे पास अपने काम को प्रदर्शित करने के लिए एक स्थानीय सर्वर सेटअप है, आप नीचे दिए गए वीडियो की जांच कर सकते हैं। लेकिन दुनिया में कहीं से भी हवा की गुणवत्ता की निगरानी के लिए, आपको अपने डिवाइस के स्थानीय या निजी आईपी पते (192.168 *) पर पोर्ट 80 (HTTP या इंटरनेट के लिए उपयोग किया जाता है) को फॉरवर्ड करना होगा । पोर्ट फॉरवर्ड करने के बाद आने वाले सभी कनेक्शनों को इस स्थानीय पते पर भेज दिया जाएगा और आप कहीं से भी अपने इंटरनेट के सार्वजनिक आईपी पते को दर्ज करके ऊपर दिखाए गए वेबपेज को खोल सकते हैं। आप अपने राउटर (192.168.1.1) में लॉग इन करके पोर्ट को अग्रेषित कर सकते हैं और पोर्ट अग्रेषण को सेटअप करने का विकल्प खोज सकते हैं।