विषयसूची:

ESP8266 का उपयोग कर थिंगस्पीक तापमान और आर्द्रता ऐप: 9 चरण
ESP8266 का उपयोग कर थिंगस्पीक तापमान और आर्द्रता ऐप: 9 चरण

वीडियो: ESP8266 का उपयोग कर थिंगस्पीक तापमान और आर्द्रता ऐप: 9 चरण

वीडियो: ESP8266 का उपयोग कर थिंगस्पीक तापमान और आर्द्रता ऐप: 9 चरण
वीडियो: ThingSpeak IOT Cloud with NodeMCU ESP8266- Temperature Monitoring Dashboard 2024, नवंबर
Anonim
ESP8266. का उपयोग कर थिंगस्पीक तापमान और आर्द्रता ऐप
ESP8266. का उपयोग कर थिंगस्पीक तापमान और आर्द्रता ऐप

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

SHT 31 सेंसरियन द्वारा बनाया गया एक तापमान और आर्द्रता सेंसर है। SHT31 ±2% RH के आसपास उच्च स्तर की सटीकता प्रदान करता है। इसकी आर्द्रता सीमा 0 से 100% के बीच है और तापमान सीमा -40 से 125 डिग्री सेल्सियस के बीच है। यह 8 सेकंड के सेंसर प्रतिक्रिया समय के साथ बहुत अधिक विश्वसनीय और तेज़ है। इसकी कार्यक्षमता में उन्नत सिग्नल प्रोसेसिंग और I2C संगतता शामिल है। इसके संचालन के विभिन्न तरीके हैं जो इसे ऊर्जा कुशल बनाते हैं।

इस ट्यूटोरियल में, हमने SHT 31 को Adafruit Huzzah बोर्ड के साथ जोड़ा है। तापमान और आर्द्रता मान पढ़ने के लिए हमने ESP8266 I2C शील्ड का उपयोग किया है। यह एडेप्टर सभी पिनों को उपयोगकर्ता के लिए सुलभ बनाता है और उपयोगकर्ता के अनुकूल I2C वातावरण प्रदान करता है।

चरण 1: हार्डवेयर की आवश्यकता

हार्डवेयर की आवश्यकता
हार्डवेयर की आवश्यकता
हार्डवेयर की आवश्यकता
हार्डवेयर की आवश्यकता
हार्डवेयर की आवश्यकता
हार्डवेयर की आवश्यकता

इस कार्य को पूरा करने के लिए प्रयुक्त हार्डवेयर:

  1. एसएचटी 31
  2. एडफ्रूट हुज़ाह ईएसपी8266
  3. ESP8266 I2C एडाप्टर
  4. I2C केबल

चरण 2: हार्डवेयर कनेक्शन

हार्डवेयर कनेक्शन
हार्डवेयर कनेक्शन

इस चरण में हार्डवेयर हुकअप मार्गदर्शिका शामिल है। यह खंड मूल रूप से सेंसर और ESP8266 के बीच आवश्यक वायरिंग कनेक्शन की व्याख्या करता है। कनेक्शन इस प्रकार हैं।

  1. SHT31 I2C पर काम करता है। उपरोक्त छवि ESP8266 और SHT31 मॉड्यूल के बीच संबंध को प्रदर्शित करती है। हम इसके लिए I2C केबल का उपयोग कर रहे हैं या तो हम 4 F से F जम्पर तारों का उपयोग कर सकते हैं।
  2. एक तार Vcc के लिए, दूसरा तार GND के लिए और अन्य दो SDA और SCL के लिए उपयोग किया जाता है
  3. I2C एडेप्टर के अनुसार एक ESP8266 बोर्ड के पिन 2 और पिन 14 को क्रमशः एसडीए और एससीएल के रूप में उपयोग किया जाता है

चरण 3: कार्य निर्धारण के लिए कोड

कार्य निर्धारण के लिए कोड
कार्य निर्धारण के लिए कोड

इस ट्यूटोरियल में, हम तीन ऑपरेशन कर रहे हैं

  • I2C प्रोटोकॉल का उपयोग करके SHT11 से डेटा पढ़ें
  • वेब सर्वर को होस्ट करें और सेंसर रीडिंग को वेबपेज पर पोस्ट करें
  • ThingSpeak API पर सेंसर रीडिंग पोस्ट करें

इसे प्राप्त करने के लिए हम टास्कशेड्यूलर लाइब्रेरी का उपयोग कर रहे हैं। हमने तीन अलग-अलग नियंत्रण कार्यों के संदर्भ में तीन अलग-अलग कार्यों को निर्धारित किया है। यह अग्रानुसार होगा

  • टास्क 1 सेंसर वैल्यू को पढ़ने के लिए है यह टास्क 1 सेकंड तक चलता है जब तक कि यह 10 सेकंड के टाइमआउट तक नहीं पहुंच जाता।
  • जब टास्क 1 का समय समाप्त हो जाता है तो टास्क 2 सक्षम हो जाता है और टास्क 1 अक्षम हो जाता है।
  • हम इस कॉलबैक में एपी से जुड़ते हैं, एसटीए और एपी के बीच स्विचिंग का ख्याल रखने के लिए दो बूलियन चर लिए जाते हैं
  • टास्क 2 में हम 192.168.1.4 पर एक वेब सर्वर होस्ट कर रहे हैं। यह कार्य प्रत्येक 5 सेकंड के लिए तब तक चलता है जब तक कि यह अपने समय समाप्त नहीं हो जाता जो कि 50 सेकंड है
  • जब टास्क 2 टाइमआउट पर पहुंच जाता है तो टास्क 3 सक्षम हो जाता है और टास्क 2 अक्षम हो जाता है।

  • हम इस कैलबैक में एसटीए (स्थानीय आईपी) से जुड़ते हैंटास्क 3 में हम सेंसर रीडिंग को क्लाउड थिंगस्पीक एपीआई पर पोस्ट कर रहे हैं
  • टास्क 3 हर पांच सेकंड में तब तक चलता है जब तक कि यह अपने टाइमआउट यानी 50 सेकंड. तक नहीं पहुंच जाता
  • जब टास्क 3 अपने समय समाप्त हो जाता है तो टास्क 1 फिर से सक्षम हो जाता है और टास्क 3 अक्षम हो जाता है।
  • जब कोई कॉलबैक नहीं कहा जाता है या डिवाइस निष्क्रिय है तो यह लाइट स्लीप में चला जाता है जिससे बिजली की बचत होती है।

शून्य कार्यI2CCallback ();

शून्य कार्यI2CDisable (); शून्य कार्यAPCallback (); शून्य कार्यAPDisable (); शून्य कार्यWiFiCallback (); शून्य कार्यWiFiDisable (); // i2c के लिए कार्य, वेब सर्वर की मेजबानी करना और चीजों पर पोस्ट करना कार्य tI2C(1 * TASK_SECOND, TASK_FOREVER, &taskI2CCकॉलबैक, &ts, false, NULL, &taskI2CDisable); टास्क tI2C(1 * TASK_SECOND, TASK_FOREVER, &taskI2CCकॉलबैक, &ts, false, NULL, &taskI2CDisable); टास्क tAP(5*TASK_SECOND, TASK_FOREVER, &taskAPCallback, &ts, false, NULL, &taskAPDisable); टास्क tWiFi(5* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable); // कार्यों के लिए समयबाह्य tI2C.setTimeout(10 * TASK_SECOND); tAP.setTimeout(50 * TASK_SECOND); tWiFi.setTimeout (५० * TASK_SECOND); // I2C कार्य सक्षम करें tI2C.enable ();

चरण 4: तापमान और आर्द्रता मान पढ़ने के लिए कोड

तापमान और आर्द्रता मान पढ़ने के लिए कोड
तापमान और आर्द्रता मान पढ़ने के लिए कोड

हम तापमान और आर्द्रता मूल्यों को पढ़ने के लिए Wire.h पुस्तकालय का उपयोग कर रहे हैं। यह पुस्तकालय सेंसर और मास्टर डिवाइस के बीच i2c संचार की सुविधा प्रदान करता है। 0x44 SHT31 के लिए I2C पता है।

SHT31 संचालन के एक अलग मोड में काम करता है। आप उसके लिए डेटाशीट का उल्लेख कर सकते हैं। हम सिंगल शॉट ऑपरेशन के लिए क्रमशः एमएसबी और एलएसबी के रूप में 0x2C और 0x06 का उपयोग कर रहे हैं।

//I2C कार्य कॉलबैक शून्य कार्यI2CCallback(){ Serial.println("taskI2CStarted"); अहस्ताक्षरित इंट रूट [6]; // 0x44 से प्रसारण शुरू करें; Wire.beginTransmission (Addr); // उच्च दोहराव के साथ एक शॉट ट्रांसमिशन के लिए हम 0x2C (MSB) और 0x06 (LSB) वायर.राइट (0x2C) का उपयोग करते हैं; वायर.राइट (0x06); // अंत संचरण Wire.endTransmission (); // 0x44 Wire.beginTransmission (Addr) से बाइट्स का अनुरोध करें; वायर.एंडट्रांसमिशन (); Wire.requestFrom (Addr, 6); अगर (वायर.उपलब्ध() == 6) {// डेटा [0] और डेटा [1] में 16 बिट तापमान होता है। रूट [0] = वायर.रीड (); रूट [1] = वायर.रीड (); // डेटा [2] में 8 बिट सीआरसी रूट [2] = वायर.रीड (); // डेटा [३] और डेटा [४] में १६ बिट ह्यूमिडिटी रूट [३] = वायर.रीड (); रूट [४] = वायर.रीड (); // डेटा [5] में 8 बिट सीआरसी रूट होते हैं [5] = वायर.रीड (); } इंट टेम्प = (रूट [0] * 256) + रूट [1]; // MSB को 8 बिट्स से शिफ्ट करें LSB फ्लोट cTemp = -45.0 + (175.0 * अस्थायी / 65535.0) जोड़ें; फ्लोट fTemp = (cTemp * १.८) + ३२.०; // MSB को 8 बिट्स से शिफ्ट करें, इसमें LSB जोड़ें पूर्ण रिज़ॉल्यूशन द्वारा और *100 प्रतिशत फ्लोट ह्यूमिडिटी के लिए = (100.0 * ((रूट [3] * 256.0) + रूट [4])) / 65535.0; टेम्पसी = सीटीईएमपी; अस्थायी एफ = एफटेम्प; नम = नमी; Serial.print ("सी में तापमान: / t"); Serial.println (स्ट्रिंग (cTemp, 1)); Serial.print ("F:\t में तापमान"); Serial.println (स्ट्रिंग (fTemp, 1)); सीरियल.प्रिंट ("आर्द्रता: / t"); Serial.println (स्ट्रिंग (आर्द्रता, 1)); }

चरण 5: वेबसर्वर को होस्ट करने के लिए कोड

वेबसर्वर को होस्ट करने के लिए कोड
वेबसर्वर को होस्ट करने के लिए कोड
वेबसर्वर को होस्ट करने के लिए कोड
वेबसर्वर को होस्ट करने के लिए कोड

हमने अपने डिवाइस से एक स्थिर आईपी पर एक वेब सर्वर होस्ट किया है।

ESP8266WebServer लाइब्रेरी का उपयोग वेब सर्वर को होस्ट करने के लिए किया जाता है

  • सबसे पहले हमें अपना स्टैटिक आईपी बनाने के लिए आईपी एड्रेस, गेटवे और सबनेट मास्क घोषित करना होगा
  • अब अपने एक्सेस पॉइंट के लिए ssid और पासवर्ड घोषित करें। किसी भी STA डिवाइस से एक्सेस पॉइंट से कनेक्ट करें
  • सर्वर को पोर्ट 80 पर होस्ट करें जो इंटरनेट संचार प्रोटोकॉल के लिए एक डिफ़ॉल्ट पोर्ट है, हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) परिचय वेबपेज के लिए अपने वेब ब्राउज़र पर 192.168.1.4 और सेंसर रीडिंग वेबपेज के लिए 192.168.1.4/वैल्यू दर्ज करें।

// एपीआईपीएड्रेस के लिए स्थिर आईपी ap_local_IP(१९२, १६८, १, ४);आईपीएड्रेस एपी_गेटवे(१९२, १६८, १, २५४); आईपीएड्रेस ap_subnet(255, 255, 255, 0); // ssid और AP STA मोड में स्थानीय वाईफाई के लिए const char WiFissid = "**********"; कॉन्स्ट चार वाईफाईपास = "*********"; // ssid और AP const char APssid के लिए पास = "********"; कास्ट चार एपीपास = "********"; ESP8266वेबसर्वर सर्वर (80); शून्य सेटअप {server.on ("/", onHandleDataRoot); server.on("/Value", onHandleDataFeed); server.onNotFound(onHandleNotFound);} void taskAPCallback(){ Serial.println("taskAP start"); सर्वर.हैंडल क्लाइंट (); } शून्य onHandleDataRoot(){ server.send(200, "text/html", PAGE1); } HandleDataFeed(){ server.send(200, "text/html", PAGE2) पर शून्य; } शून्य onHandleNotFound(){ स्ट्रिंग संदेश = "फ़ाइल नहीं मिली\n\n"; संदेश + = "यूआरआई:"; संदेश + = सर्वर.यूरी (); संदेश + = "\ n विधि:"; संदेश + = (सर्वर.विधि () == HTTP_GET)?" प्राप्त करें: "पोस्ट"; संदेश + = "\ n तर्क:"; संदेश + = सर्वर। args (); संदेश + = "\ n"; server.send(404, "पाठ/सादा", संदेश); } शून्य पुनः कनेक्ट करेंAPWiFi () {वाईफाई.मोड (WIFI_AP_STA); देरी (100); वाईफाई.डिस्कनेक्ट (); बूलियन स्थिति = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); अगर (स्थिति == सच) {सीरियल.प्रिंट ("सॉफ्ट-एपी सेट करना …"); बूलियन एपी = WiFi.softAP (APssid, APpass); if(ap==true){ Serial.print("कनेक्टेड टू:\t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println(WiFi.softAPIP ()); } सर्वर.बेगिन ();

}

चरण 6: थिंग्सपीक सेटअप

थिंग्सपीक सेटअप
थिंग्सपीक सेटअप
थिंग्सपीक सेटअप
थिंग्सपीक सेटअप
थिंग्सपीक सेटअप
थिंग्सपीक सेटअप

थिंगस्पीक एक IoT प्लेटफॉर्म है। थिंगस्पीक एक निःशुल्क वेब सेवा है जो आपको क्लाउड में सेंसर डेटा एकत्र करने और संग्रहीत करने देती है।

इस चरण में, मैं आपको अपना थिंग स्पीक अकाउंट सेट करने की एक संक्षिप्त प्रक्रिया बताऊंगा

  • ThingSpeak. में नए उपयोगकर्ता खाते के लिए साइन अप करें
  • चैनल, मेरे चैनल और फिर नया चैनल चुनकर एक नया चैनल बनाएं
  • अपने क्षेत्र संपादित करें
  • इन फ़ील्ड में आपका सेंसर डेटा होता है
  • एपीआई कुंजी और चैनल आईडी लिखें नोट करें
  • अपने Arduino स्केच पर, आप Arduino के लिए ThingSpeak लाइब्रेरी का उपयोग कर सकते हैं या आप डेटा को सीधे ThingSpeak API पर पोस्ट कर सकते हैं
  • अगला चरण थिंग स्पीक एपीआई में सामग्री पोस्ट करने के बारे में विस्तार से बताता है

चरण 7: थिंग स्पीक में डेटा पोस्ट करने के लिए कोड

थिंग स्पीक में डेटा पोस्ट करने के लिए कोड
थिंग स्पीक में डेटा पोस्ट करने के लिए कोड
थिंग स्पीक में डेटा पोस्ट करने के लिए कोड
थिंग स्पीक में डेटा पोस्ट करने के लिए कोड
थिंग स्पीक में डेटा पोस्ट करने के लिए कोड
थिंग स्पीक में डेटा पोस्ट करने के लिए कोड
थिंग स्पीक में डेटा पोस्ट करने के लिए कोड
थिंग स्पीक में डेटा पोस्ट करने के लिए कोड

यहां हम सेंसर रीडिंग को थिंग स्पीक में पोस्ट कर रहे हैं। इस कार्य को पूरा करने के लिए निम्नलिखित चरणों की आवश्यकता है-

  • बात में अपना खाता बनाएं अपना सेंसर डेटा संग्रहीत करने के लिए चैनल और फ़ील्ड बनाएं
  • हम एपीआई को जीईटी और पोस्ट अनुरोधों का उपयोग करके ईएसपी से बात करने के लिए डेटा प्राप्त और पोस्ट कर सकते हैं और इसके विपरीत।
  • हम अपना डेटा ThingSpeak पर इस प्रकार पोस्ट कर सकते हैं

आईडी कार्यवाईफाईकॉलबैक () {वाईफाई क्लाइंट वाईफाई क्लाइंट; if(wifiClient.connect(hostId, 80)){ String postStr = apiKey; पोस्टस्ट्र +="&field1="; पोस्टस्ट्र + = स्ट्रिंग (आर्द्र); पोस्टस्ट्र +="&field2="; पोस्टस्ट्र + = स्ट्रिंग (अस्थायी); पोस्टस्ट्र +="&field3="; पोस्टस्ट्र + = स्ट्रिंग (अस्थायी); पोस्टस्ट्र + = "\r\n\r\n"; वाईफाई क्लाइंट.प्रिंट ("पोस्ट / अपडेट HTTP / 1.1 / n"); वाईफाई क्लाइंट.प्रिंट ("होस्ट: api.thingspeak.com\n"); वाईफाई क्लाइंट.प्रिंट ("कनेक्शन: बंद करें / n"); wifiClient.print("X-THINGSPEAKAPIKEY:"+apiKey+"\n"); wifiClient.print ("सामग्री-प्रकार: एप्लिकेशन/x-www-form-urlencoded\n"); वाईफाई क्लाइंट.प्रिंट ("सामग्री-लंबाई:"); वाईफाई क्लाइंट।प्रिंट (पोस्टस्ट्र। लम्बाई ()); वाईफाई क्लाइंट.प्रिंट ("\ n / n"); वाईफाई क्लाइंट.प्रिंट (पोस्टस्ट्र); } वाईफाई क्लाइंट.स्टॉप (); }

चरण 8: कुल मिलाकर कोड

समग्र कोड मेरे GitHub रिपॉजिटरी में उपलब्ध है

चरण 9: क्रेडिट

  • अरुडिनो JSON
  • ESP826वेबसर्वर
  • कार्य अनुसूचक
  • एसएचटी 31
  • I2C स्कैन
  • HIH6130 निर्देशयोग्य ट्यूटोरियल
  • वायर
  • एनसीडी.आईओ

सिफारिश की: