विषयसूची:

एक ESP8266-आधारित बोर्ड के साथ DHT11/DHT22 सेंसर को क्लाउड से कनेक्ट करना: 9 चरण
एक ESP8266-आधारित बोर्ड के साथ DHT11/DHT22 सेंसर को क्लाउड से कनेक्ट करना: 9 चरण

वीडियो: एक ESP8266-आधारित बोर्ड के साथ DHT11/DHT22 सेंसर को क्लाउड से कनेक्ट करना: 9 चरण

वीडियो: एक ESP8266-आधारित बोर्ड के साथ DHT11/DHT22 सेंसर को क्लाउड से कनेक्ट करना: 9 चरण
वीडियो: Send DHT11 Data to MySQL Server over internet Using NodeMCU with working Code 2024, जून
Anonim
एक ESP8266-आधारित बोर्ड के साथ DHT11/DHT22 सेंसर को क्लाउड से कनेक्ट करना
एक ESP8266-आधारित बोर्ड के साथ DHT11/DHT22 सेंसर को क्लाउड से कनेक्ट करना

पिछले लेख में, मैंने अपने ESP8266-आधारित NodeMCU बोर्ड को Cloud4RPi सेवा से जोड़ा था। अब, यह एक वास्तविक परियोजना का समय है!

आपूर्ति

हार्डवेयर आवश्यकताएँ:

  • ESP8266 चिप पर आधारित कोई भी बोर्ड (उदाहरण के लिए, NodeMCU)
  • एक DHT11 या DHT22 सेंसर

सॉफ्टवेयर और सेवाएं:

  • एडफ्रूट द्वारा डीएचटी सेंसर लाइब्रेरी - v1.3.7
  • एडफ्रूट यूनिफाइड सेंसर - v1.0.3
  • Cloud4rpi-esp-arduino - v0.1.0
  • Cloud4RPI - IoT उपकरणों के लिए क्लाउड कंट्रोल पैनल
  • VSCode के लिए PlatformIO IDE

चरण 1: तापमान और आर्द्रता मापें

तापमान और आर्द्रता मापें
तापमान और आर्द्रता मापें

मेरे पास पहले से ही एक DHT11 सेंसर था, इसलिए मैंने इसे तापमान और आर्द्रता माप के लिए उपयोग करने का निर्णय लिया। आइए सेंसर डेटा पढ़ने के लिए एक Arduino लाइब्रेरी चुनें।

Arduino रजिस्ट्री में कई पुस्तकालय हैं, जिनमें से मैंने सबसे लोकप्रिय का चयन किया है।

उनके GitHub रिपॉजिटरी के अनुसार, हमें Adafruit Unified Sensor पैकेज जोड़ने की भी आवश्यकता है।

चरण 2: प्रोजेक्ट बनाएं और कॉन्फ़िगर करें

प्रोजेक्ट बनाएं और कॉन्फ़िगर करें
प्रोजेक्ट बनाएं और कॉन्फ़िगर करें

मैंने पहले ही वर्णन किया है कि कैसे एक PlatformIO प्रोजेक्ट बनाया जाए और पहले भाग में लाइब्रेरी स्थापित की जाए। मेरी परियोजना को "MyNodeMCU" कहा जाता है। संरचना ऊपर दिखाई गई है।

यह प्रोजेक्ट थोड़ा संशोधित Cloud4RPi उदाहरण है। मैंने कोड के बजाय कॉन्फ़िगरेशन फ़ाइल में डिवाइस टोकन और वाई-फाई क्रेडेंशियल्स को संग्रहीत करने का निर्णय लिया।

Platform.io फ़ाइल इस प्रकार दिखती है:

[प्लेटफॉर्मियो] default_envs = nodemcuv2 [env: nodemcuv2] प्लेटफॉर्म = एस्प्रेसिफ8266 फ्रेमवर्क = arduino बोर्ड = nodemcuv2

चरण 3: पुस्तकालय स्थापित करें

पुस्तकालय स्थापित करें
पुस्तकालय स्थापित करें

पुस्तकालयों की स्थापना काफी सरल है। आप इसे IDE के ग्राफिकल इंटरफ़ेस से, या platform.io फ़ाइल के lib_deps अनुभाग में आवश्यक लाइब्रेरी नाम जोड़कर कर सकते हैं:

; …lib_deps = cloud4rpi-esp-arduino एडफ्रूट यूनिफाइड सेंसर DHT सेंसर लाइब्रेरी बिल्ड_फ्लैग्स = -D MQTT_MAX_PACKET_SIZE=1024 -D MQTT_MAX_TRANSFER_SIZE=128 -D CLOUD4RPI_DEBUG=0 -D SSID_NAME=\_W डी CLOUD4RPI_TOKEN=\"_Your_DEVICE_TOKEN_\"

जोड़े गए पुस्तकालय स्वचालित रूप से प्रोजेक्ट के सबफ़ोल्डर में स्थापित हो जाएंगे।

main.cpp शीर्षलेख इस प्रकार दिखता है:

#शामिल करें #शामिल करें #शामिल करें "डीएचटी.एच" शामिल करें

चरण 4: एक DHT11 सेंसर कनेक्ट करें

Adafruit एक सेंसर कनेक्शन का DHTtester.ino उदाहरण प्रदान करता है।

यह कोड एक सेंसर को इनिशियलाइज़ करता है और माप परिणाम को संग्रहीत करने के लिए एक संरचना को परिभाषित करता है (यदि यह सफल रहा हो):

#define DHTPIN 2 // DHT सेंसर से जुड़ा डिजिटल पिन#DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE) को परिभाषित करें; dht.begin (); //… संरचना DHT_Result {फ्लोट एच; फ्लोट टी; }; DHT_परिणाम dhtResult;

अगला फ़ंक्शन दिखाता है कि सेंसर डेटा को कैसे पढ़ा जाए और इसे ऊपर वर्णित डेटा संरचना में संग्रहीत किया जाए

शून्य रीड सेंसर () {फ्लोट एच = dht.readHumidity (); // तापमान को सेल्सियस के रूप में पढ़ें (डिफ़ॉल्ट) फ्लोट टी = dht.readTemperature ();

// जांचें कि क्या कोई पठन विफल हुआ है और बाहर निकलें

if (isnan(h) || isnan(t)) { Serial.println(F("DHT sensor से पढ़ने में विफल!")); वापसी; } dhtResult.h = ज; dhtResult.t = टी; }

चरण 5: क्लाउड पर डेटा भेजना

एक बार हमारे पास वह डेटा हो जाने के बाद, अगला कदम इसे Cloud4RPi सेवा को भेजना है।

Arduino पृष्ठ के लिए Cloud4RPi लाइब्रेरी API का वर्णन करता है, जो निम्न के लिए उपयोग की जाने वाली विधियों का एक सेट है:

  • वैरिएबल बनाएं, पढ़ें और अपडेट करें,
  • MQTT प्रोटोकॉल का उपयोग करके वेरिएबल मान को क्लाउड में भेजें।

पुस्तकालय तीन चर प्रकारों का समर्थन करता है: बूल, न्यूमेरिक और स्ट्रिंग।

लायब्रेरी वर्कफ़्लो की शुरुआत क्लाउड4rpi.io वेबसाइट से डिवाइस टोकन का उपयोग करके एक एपीआई इंस्टेंस बनाने से होती है (विवरण के लिए लेख का भाग 1 देखें)।

#if परिभाषित (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!!_NO_DEVICE_TOKEN_!!!"); #अगर अंत

फिर, DHT11 रीडिंग के लिए वेरिएबल घोषित करें:

c4r.declareNumericVariable("DHT11_Temp");c4r.declareNumericVariable("DHT11_Hum");

फिर, सेंसर से डेटा प्राप्त करें, उन्हें वेरिएबल में सहेजें और डेटा को Cloud4RPi पर प्रकाशित करें:

c4r.setVariable("DHT11_Temp", dhtResult.t);c4r.setVariable("DHT11_Hum", dhtResult.h); c4r.publishData ();

तापमान और आर्द्रता जल्दी नहीं बदलते हैं, इसलिए प्रति 5 मिनट में एक से अधिक मान भेजने की आवश्यकता नहीं है।

चरण 6: निदान

Cloud4RPi वैरिएबल वैल्यू के साथ डायग्नोस्टिक डेटा को सपोर्ट करता है। मैंने डायग्नोस्टिक डेटा के रूप में अपटाइम, वाई-फाई सिग्नल स्ट्रेंथ और आईपी एड्रेस का इस्तेमाल किया:

c4r.declareDiagVariable("IP_Address");c4r.declareDiagVariable("RSSI"); // वाईफाई सिग्नल की ताकत c4r.declareDiagVariable ("अपटाइम");

नोट: मिलिस फ़ंक्शन जिसका उपयोग मैं अपटाइम रीसेट को हर ~ ५० दिनों में शून्य पर प्राप्त करने के लिए करता हूं। जो मेरे प्रोजेक्ट के लिए पर्याप्त से अधिक है।

निम्न कोड नैदानिक चर मान सेट करता है:

c4r.setDiagVariable("RSSI", (स्ट्रिंग)WiFi. RSSI() + "dBm");c4r.setDiagVariable("IP_Address", WiFi.localIP().toString()); c4r.setDiagVariable("अपटाइम", uptimeHumanReadable(currentMillis)); c4r.publishDiag ();

uptimeHumanReadable फ़ंक्शन मिलीसेकंड को सुविधाजनक रूप में परिवर्तित करता है:

स्ट्रिंग अपटाइमHumanReadable(अहस्ताक्षरित लंबी मिलीसेकंड) {स्थैतिक चार uptimeStr [32]; अहस्ताक्षरित लंबे सेकंड = मिलीसेकंड / 1000; अहस्ताक्षरित लंबे मिनट = सेकंड / ६०; अहस्ताक्षरित इंट घंटे = मिनट / 60; अहस्ताक्षरित इंट दिन = घंटे / 24; सेकंड - = मिनट * ६०; मिनट - = घंटे * 60; घंटे -= दिन * 24; sprintf (uptimeStr, "%d दिन% 2.2d:% 2.2d:% 2.2d", (बाइट) दिन, (बाइट) घंटे, (बाइट) मिनट, (बाइट) सेकंड); वापसी स्ट्रिंग (uptimeStr); }

फ़ंक्शन एक अजीब बड़ी संख्या के बजाय 5 दिन 10:23:14 की तरह एक स्ट्रिंग आउटपुट करता है।

चरण 7: प्रोजेक्ट प्रारंभ करें और डीबग करें

प्रोजेक्ट शुरू करें और डीबग करें
प्रोजेक्ट शुरू करें और डीबग करें

बनाए गए कोड को संकलित करने और इसे NodeMCU में फ्लैश करने के बाद, डिवाइस क्लाउड सेवा से जुड़ जाता है और डेटा भेजना शुरू कर देता है।

आप CLOUD4RPI_DEBUG प्रीप्रोसेसर वैरिएबल को 1 पर सेट करके लॉगिंग वर्बोसिटी बढ़ा सकते हैं (प्लेटफ़ॉर्म.io फ़ाइल में build_flags सेक्शन में -D CLOUD4RPI_DEBUG=1 जोड़ें)।

इसके बाद, Cloud4rpi.io साइट खोलें और नए डिवाइस को ऑनलाइन देखें। डिवाइस से प्राप्त सभी चर मान देखने के लिए इसे खोलें: सेंसर और डायग्नोस्टिक्स।

चरण 8: डैशबोर्ड कॉन्फ़िगरेशन

डैशबोर्ड कॉन्फ़िगरेशन
डैशबोर्ड कॉन्फ़िगरेशन

इस चरण में, क्लाउड से डेटा कनेक्शन चालू है। अब, डेटा के दृश्य प्रतिनिधित्व को कॉन्फ़िगर करते हैं।

मैंने निम्नलिखित डैशबोर्ड बनाने के लिए डैशबोर्ड कॉन्फ़िगरेशन UI का उपयोग किया है।

डैशबोर्ड साझा करने योग्य है, इसलिए मैं इसे तुरंत अपने मित्र के साथ साझा करता हूं।

चरण 9: निष्कर्ष

निष्कर्ष
निष्कर्ष

संपूर्ण परियोजना का कोड सार में उपलब्ध है।

अभी के लिए इतना ही!

टिप्पणियों में प्रश्नों और सुझावों का स्वागत है।

सिफारिश की: