विषयसूची:

ESP8266: तापमान और आर्द्रता की निगरानी कैसे करें: 12 कदम
ESP8266: तापमान और आर्द्रता की निगरानी कैसे करें: 12 कदम

वीडियो: ESP8266: तापमान और आर्द्रता की निगरानी कैसे करें: 12 कदम

वीडियो: ESP8266: तापमान और आर्द्रता की निगरानी कैसे करें: 12 कदम
वीडियो: ESP8266 ESP01 DHT11 तापमान आर्द्रता सेंसर मॉड्यूल प्रोग्रामिंग | रिमोटएक्सवाई | एफएलप्रोग 2024, जुलाई
Anonim
Image
Image
सभा
सभा

आज के ट्यूटोरियल में, हम DHT22 सेंसर के तापमान और आर्द्रता रीडिंग के लिए ESP-01 का उपयोग करेंगे, जो कॉन्फ़िगरेशन 01 (केवल 2 GPIO के साथ) में ESP8266 है। मैं आपको एक Arduino के साथ एक विद्युत योजनाबद्ध और ESP प्रोग्रामिंग भाग दिखाऊंगा। उदाहरण सरल, समझने में आसान है, और वीडियो में असेंबली में सहायता के लिए उपयोग किए गए पीडीएफ के साथ भी आता है।

डिजाइन में, हमारे पास तब ESP01 है, वह स्रोत जो 110 या 220 को 5 वोल्ट में परिवर्तित करता है, 3v3 का वोल्टेज नियामक और DHT22, जो सेंसर है। स्मार्टफोन स्क्रीन पर, आपके पास ईएसपी द्वारा प्रदान किए गए जावास्क्रिप्ट कोड के अलावा स्थानीय आईपी पता होगा। इसलिए यह स्क्रीन तापमान और आर्द्रता के मापदंडों को प्राप्त करेगी और इन मूल्यों को प्रिंट करेगी, जो हर पांच सेकंड में अपडेट की जाएगी। ऐसा करने के लिए, आपको फ़ोन और टैबलेट पर किसी ऐप की आवश्यकता नहीं होगी, और यह Android OS और IOS दोनों के लिए लागू होता है।

चरण 1: विधानसभा

विद्युत योजना काफी सरल है, जैसा कि विधानसभा के बारे में है, जिसमें सर्वर के रूप में ESP01 शामिल होगा। ESPO1 को प्रोग्राम किया जाएगा जैसे कि यह एक Arduino: C भाषा के माध्यम से हो। मैं इंगित करता हूं कि कोड का हिस्सा ब्राउज़र से मुद्रित होता है। इसका मतलब है कि यह ब्राउज़र को जावास्क्रिप्ट कोड भेजता है। नीचे, मैं इस बारे में बेहतर तरीके से बताऊंगा कि यह कैसे काम करता है।

वायरिंग आरेख पर लौटते हुए, मैंने ESP01 को पावर देने के लिए 3v3 वोल्टेज रेगुलेटर से जुड़ा 5-वोल्ट स्विच्ड सोर्स लगाया। हमारे पास अभी भी चार पिनों वाला DHT22 है। इनमें से एक, डेटा, का उपयोग नहीं किया जाता है। हालाँकि, यह एक पुल अप रोकनेवाला लेता है।

चरण 2: कोड

पहला कदम उन कामों को शामिल करना है जिनका हम उपयोग करेंगे। DHT lib को स्केच विकल्प> लाइब्रेरी शामिल करें> लाइब्रेरी प्रबंधित करें … द्वारा जोड़ा जा सकता है।

खुलने वाली विंडो में, DHT सेंसर लाइब्रेरी देखें।

उसके बाद, हमने ESP8266WebServer प्रकार का एक वेरिएबल बनाया जो हमारा सर्वर होगा और HTTP अनुरोधों (पोर्ट 80) का जवाब देगा।

हम पैरामीटर 0 (जो कि GPIO पिन 0 है) और प्रकार (हमारे मामले में DHT22) के साथ एक DHT वैरिएबल भी बनाते हैं।

#शामिल करें #शामिल करें #शामिल करें // वेरिअवेल डू टिपो डीएचटी क्यू पोसुई फंक्स पैरा कंट्रोलआर्मोस ओ मोडुलो डीएचटी // परमिटिन्डो लेर ए टेम्परेचर और एक उमिडेड डीएचटी डीएचटी (0, डीएचटी 22);

चरण 3: सेटअप

सेटअप में, हम केवल सीरियल को इनिशियलाइज़ करेंगे ताकि हमारे पास एक लॉग हो। यह तब होगा जब सीरियल मॉनिटर का उपयोग करने के लिए ESP8266 सीरियल के माध्यम से कंप्यूटर से जुड़ा हो।

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

// एक सीरियल एपेनस कैसो एस्टेजा कॉम ओ ईएसपी 8266 कोनेक्टैडो एओ कंप्यूटेडर पेला सेर्ला क्वीरा टेर उम लॉग // पैरा फैसिलिटर सेबर ओ क्यू एस्टा एकॉन्टेकेंडो कॉम ओ ईएसपी 8266 सीरियल.बेगिन (115200); // इंस्ट्रुकाओ पैरा ओ ईएसपी8266 से कनेक्टर रीडे। // नो नोसो कासो ओ नोम दा रेडे ई टेस्टेईएसपी ई ए सेन्हा ई 87654321। // फीडबैक इस प्रकार है कि मॉनिटर सीरियल सीरियल।प्रिंट्लन (""); सीरियल.प्रिंट ("कनेक्टैंडो");

हम नेटवर्क से कनेक्ट होने के लिए ESP8266 की प्रतीक्षा करते हैं, और इसके कनेक्ट होने के बाद, हम नेटवर्क सेटिंग्स भेजते हैं। अपने नेटवर्क के अनुसार बदलें।

// एस्पेरामोस एटे क्यू ओ मोडुलो से कनेक्ट à रीडे जबकि (वाईफाई.स्टेटस ()! = WL_CONNECTED) {देरी (500); सीरियल.प्रिंट ("।"); } //Configurações आईपी फिक्सो करते हैं। वोक पॉड अल्टरर एक सु रेडी आईपीएड्रेस आईपी(१९२, १६८, ३, ११) के अनुरूप है; आईपीएड्रेस गेटवे(१९२, १६८, ३, १); आईपीएड्रेस सबनेट (255, 255, 255, 0); सीरियल.प्रिंट ("कॉन्फ़िगरंडो आईपी फिक्सो पैरा:"); सीरियल.प्रिंट्लन (आईपी); // Envia a configuração WiFi.config (आईपी, गेटवे, सबनेट);

अगले आदेश केवल उस स्थिति में हैं जब आपके पास सीरियल के माध्यम से कंप्यूटर से ESP8266 जुड़ा हुआ है, ताकि आपको सीरियल मॉनिटर से फीडबैक मिले।

आप आईपी की जांच कर सकते हैं कि ईएसपी 8266 को यह देखने के लिए मिला है कि यह सेटिंग्स के समान है या नहीं।

// मोस्ट्रामोस नो मॉनिटर सीरियल ओ आईपी कॉम ओ क्वाल ओ एएसपी8266 से कनेक्टो पैरा वेर से एस्टा डे एकॉर्डो कॉम ओ क्यू कॉन्फिगुरामोस सीरियल.प्रिंट्लन (""); Serial.println ("कनेक्टेडो"); सीरियल.प्रिंट ("आईपी:"); Serial.println (वाईफाई.लोकलआईपी ());

यहां, हम परिभाषित करना शुरू करते हैं कि प्रत्येक अनुरोध के लिए कौन से फ़ंक्शन निष्पादित किए जाएंगे।

नीचे दिए गए निर्देश में, हर बार ESP8266 को पथ / तापमान में GET प्रकार का HTTP अनुरोध प्राप्त होता है, getTemperature फ़ंक्शन निष्पादित किया जाएगा।

// एक्वी डिफिनिमोस क्वाल ए फनकाओ सेरा एक्जीक्यूटाडा पैरा ओ कैमिन्हो ई टिपो डेडो। // नेस्से कासो क्वांडो होवर उमा रिक्विसिकेओ एचटीटीपी डो टिपो गेट नो कैमिन्हो https://192.168.2.8/तापमान //(पोड सेर आउट्रो आईपी डिपेंडेंडो दा सुआ कॉन्फिगुराकाओ) एक मजेदार गेटटेम्परेचर सेरा एक्जीक्यूटाडा सर्वर.ऑन("/temperature", HTTP_GET, प्राप्त तापमान);

इस अन्य कथन में, हर बार ESP8266 को पथ / आर्द्रता में GET प्रकार का HTTP अनुरोध प्राप्त होता है, getHumidity फ़ंक्शन निष्पादित किया जाएगा।

// नेस्से आउटो कासो क्वांडो हूवर उमा रिक्विसिस्को एचटीटीपी डू टिपो गेट नो कैमिन्हो https://192.168.2.8/ह्यूमिडिटी //(पॉड सेर आउट्रो आईपी डिपेंडेंडो दा सुआ कॉन्फिगुराकाओ) एक मजेदार गेटह्यूमिडिटी सेरा एक्जीक्यूटाडा सर्वर.ऑन("/humidity", HTTP_GET, ह्यूमिडिटी प्राप्त करें);

इस निर्देश में, हर बार ESP8266 को पथ / मॉनिटर में GET प्रकार का HTTP अनुरोध प्राप्त होता है, फ़ंक्शन शो मॉनिटर निष्पादित किया जाएगा।

शो मॉनिटर फ़ंक्शन मुख्य एचटीएमएल को वापस करने के लिए ज़िम्मेदार है जो तापमान और आर्द्रता के मूल्यों को प्रदर्शित करेगा।

// नेस्से कासो क्वांडो हूवर उमा रिक्विसिस्को एचटीटीपी डू टिपो गेट नो कैमिन्हो https://192.168.2.8/मॉनिटर //(पॉड सेर आउट्रो आईपी डिपेंडेंडो दा सुआ कॉन्फिगुराकाओ) एक मजेदार शो मॉनिटर सेरा एक्जीक्यूटाडा। // एस्टा função retornará a página प्रिंसिपल que mostrará os valores //da tempatura e da umidade e recarregará essas intempos server.on("/monitor", HTTP_GET, showMonitor);

यहां फ़ंक्शन परिभाषा है जिसे अनुरोधित पथ नहीं मिलने पर निष्पादित किया जाना चाहिए।

// एक्वी डिफिनिमोस क्वाल फनकाओ सेरा एक्जीक्यूटाडा कासो ओ कैमिन्हो क्यू ओ क्लाइंट रिक्विसिटौ नो तेन्हा सिडो रजिस्ट्रार सर्वर। ऑन नॉटफाउंड (ऑन नॉटफाउंड);

यहां हम अपने सर्वर को इनिशियलाइज़ करते हैं जिसे हमने पहले पोर्ट 80 पर घोषित किया था।

यह सेटअप का अंत है।

// इनिशियलाइज़्मोस या सर्वर क्यू क्रीमोस और पोर्टा 80 सर्वर.बेगिन (); Serial.println ("सर्विडोर HTTP iniciado"); }

चरण 4: लूप

lib ESP8266WebServer के लिए धन्यवाद, यदि क्लाइंट हैं और अनुरोध पथ क्या है, तो हमें लूप में जाँच करने की आवश्यकता नहीं है। हमें केवल हैंडलक्लाइंट () को कॉल करने की आवश्यकता है, और ऑब्जेक्ट जांच करेगा कि क्या कोई क्लाइंट कोई अनुरोध कर रहा है और संबंधित फ़ंक्शन पर रीडायरेक्ट करेगा जिसे हमने पहले पंजीकृत किया था।

शून्य लूप () {// वेरिफ़िका से है अलगुमा आवश्यक है, डी एल्गम क्लाइंट सर्वर। हैंडल क्लाइंट (); }

चरण 5: अनुरोध नहीं मिला

यह वह फ़ंक्शन है जिसे हमने पहले निष्पादित करने के लिए लॉग किया था जब क्लाइंट कोई भी अनुरोध करता है जो पंजीकृत नहीं किया गया है।

फ़ंक्शन केवल कोड 404 देता है (जब कोई संसाधन नहीं मिलता है तो डिफ़ॉल्ट कोड), लौटाया गया डेटा प्रकार (सादे पाठ के मामले में), और "नहीं मिला" शब्दों वाला एक टेक्स्ट देता है।

// फ़नकाओ क्यू डेफिनिमोस पैरा सेर चमाडा क्वांडो ओ कैमिन्हो रिक्विसिटाडो नो फोई रजिस्ट्राडो शून्य ऑन नॉटफाउंड () { सर्वर.सेंड (404, "टेक्स्ट / प्लेन", "नॉट फाउंड"); }

चरण 6: तापमान लौटाना

यह वह फ़ंक्शन है जो क्लाइंट द्वारा / तापमान पर GET अनुरोध करने पर तापमान डेटा के साथ एक json लौटाएगा।

//Função que definimos que será executada quando o Cliente fizer uma requição//do टिपो GET no caminho https://192.168.2.8/temperature (pode ser outro ip dependendo da sua configuração) void getTemperature() {//Fazemos a leitura दा टेम्परेचर एट्रावेस डू मोडुलो डीएचटी फ्लोट टी = dht.readTemperature (); // क्रिया उम जोंस कॉम ओएस डैडोस दा तापमान स्ट्रिंग जोंस = "{"तापमान\":"+स्ट्रिंग(टी)+"}"; // Envia o json para o Cliente com o código 200, que é o código quando a requireção foi realizada com sucesso server.send (200, "application/json", json); }

चरण 7: वापसी आर्द्रता

यह वह फ़ंक्शन है जो क्लाइंट द्वारा / आर्द्रता में GET अनुरोध करने पर नमी डेटा के साथ एक json लौटाएगा।

//Função que definimos que será executada quando o Cliente fizer uma requição//do टिपो GET no caminho https://192.168.2.8/humidity (pode ser outro ip dependendo da sua configuração) void getHumidity() {//Fazemos a leitura da umidade através do modulo dht float h = dht.readHumidity(); //Cria um json com os dados da umidade String json = "{"humidity\":"+String(h)+"}"; // Envia o json para o Cliente com o código 200, que é o codigo quando a requireção foi realizada com sucesso server.send(200, "application/json", json); }

चरण 8: एचटीएमएल

यह वह फ़ंक्शन है जो क्लाइंट के एक्सेस / मॉनिटर पर जाने पर html लौटाएगा। यह पृष्ठ तापमान और आर्द्रता मान दिखाएगा, और यह समय-समय पर डेटा को पुनः लोड करेगा। वह भाग जो और और शैली के बीच में हो>

पृष्ठ की उपस्थिति को परिभाषित करता है, और आप इसे अपनी पसंद के अनुसार बदल सकते हैं।

//Função que definimos que será executada quando o Cliente fizer uma requireção//do टिपो GET no caminho https://192.168.2.8/monitor (pode ser outro ipनिर्भर da sua configuração) void showMonitor() { String html = "" "" ""

"डीएचटी मॉनिटर"

"तन{"

"पैडिंग: 35 पीएक्स;"

"पृष्ठभूमि का रंग: #222222;" "}"

चरण 9: HTML शैली निरंतरता

"h1{" "रंग: #FFFFFF;" "फ़ॉन्ट-फ़ैमिली: सेन्स-सेरिफ़;" "}" "पी{" "रंग: #EEEEEE;" "फ़ॉन्ट-फ़ैमिली: सेन्स-सेरिफ़;" "फ़ॉन्ट-आकार: 18px;" "}" ""

यहाँ हमारे पास html का मुख्य भाग है। इसमें हमारे पास दो पैराग्राफ हैं जो तापमान और आर्द्रता को दिखाएंगे। पैराग्राफ की आईडी पर ध्यान दें, क्योंकि यह उनके माध्यम से है कि हम मांग के बाद तापमान और आर्द्रता के मूल्यों को दर्ज करने के लिए इन पैराग्राफों को पुनर्प्राप्त करेंगे।

डीएचटी मॉनिटर

तापमान:

नमी:

चरण 10: जावास्क्रिप्ट

यहां हम उस स्क्रिप्ट को परिभाषित करना शुरू करते हैं जो समय-समय पर तापमान और आर्द्रता के मूल्यों को पढ़ेगा। रिफ्रेश () फंक्शन रिफ्रेश टेंपरेचर () और रिफ्रेशहुमडिटी () फंक्शन को कॉल करता है, और सेटइंटरवल रिफ्रेश फंक्शन को हर 5000 मिलीसेकंड (5 सेकंड) में कॉल करता है।

"ताज़ा करें ();" "सेटइंटरवल (ताज़ा करें, 5000);" "फ़ंक्शन रीफ़्रेश ()" "{" "ताज़ा तापमान ()" "रीफ्रेशह्यूमिडिटी ();" "}"

फ़ंक्शन रिफ्रेशटेम्परेचर () / तापमान पर एक अनुरोध करता है, जोंस में निहित जानकारी को पार्स करता है, और पैराग्राफ में आईडी तापमान जोड़ता है।

"फ़ंक्शन रीफ्रेश तापमान ()" "{" "var xmlhttp = नया XMLHttpRequest ();" "xmlhttp.onreadystatechange = function() {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200){" "document.getElementById('temperature').innerHTML = 'Temperature:' + JSON. parse(xmlhttp.responseText).temperature + 'C';" "}" "};" "xmlhttp.open('GET', 'https://192.168.2.8/temperature', true);" "xmlhttp.send ();" "}"

रिफ्रेशह्यूमिडिटी () फ़ंक्शन / आर्द्रता के लिए अनुरोध करता है, जोंस में निहित जानकारी को पार्स करता है, और पैराग्राफ में आईडी आर्द्रता जोड़ता है। और इसके साथ ही, हम उस html को समाप्त करते हैं जिसे हम अनुरोधों में / मॉनिटर में भेजेंगे।

"फ़ंक्शन रिफ्रेशह्यूमिडिटी ()" "{" "var xmlhttp = new XMLHttpRequest ();" "xmlhttp.onreadystatechange = function() {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200){" "document.getElementById('humidity').innerHTML = 'humidity:' + JSON. parse(xmlhttp.responseText).humidity + '%';" "}" "};" "xmlhttp.open('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"

"";

चरण 11: शो मॉनिटर खत्म करना

अब जबकि html के साथ जो स्ट्रिंग हम भेजेंगे वह तैयार है, हम इसे क्लाइंट को भेज सकते हैं। यह शो मॉनिटर फ़ंक्शन और कोड को पूरा करता है।

// एनविया ओ एचटीएमएल पैरा ओ क्लाइंट कॉम ओ कोडिगो 200, क्यू ई ओ कोडिगो क्वांडो ए रिक्विसिस्को फोई रीयलजाडा कॉम सक्सेस सर्वर। सेंड (200, "टेक्स्ट/एचटीएमएल", एचटीएमएल); }

चरण 12: परीक्षण

परिक्षण
परिक्षण

अब अपना ब्राउज़र खोलें और https://192.168.2.8/monitor दर्ज करें (आपको अपने कॉन्फ़िगरेशन के आधार पर एक अलग आईपी की आवश्यकता हो सकती है)।

सिफारिश की: