- सामग्री की आवश्यकता:
- चीज़ें काम कैसे करती है?
- ESP8266-01 का प्रोग्रामिंग:
- ESP8266-01 को Arduino के साथ जोड़ना:
- Arduino कार्यक्रम और कार्य:
ईएसपी 8266-01 आईओटी परियोजनाओं के लिए हमारी सभी प्यासों को बुझाने के लिए एक महान मॉड्यूल है। अपनी रिहाई के बाद से, यह एक मजबूत समुदाय विकसित किया है और एक आसान उपयोग करने के लिए विकसित किया है, सस्ते और शक्तिशाली वाई-फाई मॉड्यूल । एक अन्य ओपन-सोर्स प्लेटफ़ॉर्म जो बहुत अधिक लोकप्रिय है, अरुडिनो है, इसके पास पहले से ही कई टन परियोजनाएं हैं। इन दोनों प्लेटफार्मों को मिलाकर कई नवीन परियोजनाओं के लिए दरवाजे खुलेंगे, इसलिए इस ट्यूटोरियल में हम सीखेंगे कि Arduino के साथ ESP8266-01 मॉड्यूल को कैसे इंटरफ़ेस करें । इस तरह हम Arduino और Internet के बीच डेटा भेज या प्राप्त कर पाएंगे।
इस ट्यूटोरियल के उद्देश्य के लिए हम ESP8266-01 के साथ API का उपयोग करके इंटरनेट से समय, दिनांक, तापमान और आर्द्रता पढ़ेंगे। फिर इन मूल्यों को एक Arduino बोर्ड पर भेजें और उन्हें 16 * 2 एलसीडी स्क्रीन पर प्रदर्शित करें। सही लगता है !! तो चलो शुरू करते है।
सामग्री की आवश्यकता:
- Arduino Board (कोई भी संस्करण)
- ESP8266-01
- 3.3V विकल्प के साथ FTDI प्रोग्रामर बोर्ड
- 16x2 एलसीडी
- तनाव नापने का यंत्र
- बटन दबाओ
- तारों को जोड़ना
- ब्रेड बोर्ड
चीज़ें काम कैसे करती है?
इससे पहले कि हम गोता लगाएँ, यह जानना ज़रूरी है कि वास्तव में यह चीज़ कैसे काम करने वाली है। मूल रूप से, हमें ESP8266-01 मॉड्यूल के साथ शुरू करना होगा। हम ESP8266 को प्रोग्राम करने के लिए Arduino IDE का उपयोग करेंगे और HTTP अनुरोध के माध्यम से JSON फ़ाइल पढ़ने के लिए एक एपीआई का उपयोग करने के लिए कोड लिखा जाएगा। तब हम इस JSON फ़ाइल को केवल JSON फ़ाइल की आवश्यक जानकारी निकालने के लिए वाक्यांशित करेंगे।
एक बार जानकारी के बहाने हम सीरियल संचार का उपयोग कर इसे प्रिंट कर लेंगे। ये धारावाहिक रेखाएँ तब Arduino से जुड़ी होंगी, ताकि Arduino ESP8266 से भेजी गई जानकारी को पढ़ सके। एक बार जानकारी पढ़ने और संसाधित होने के बाद हम इसे एलसीडी स्क्रीन पर प्रदर्शित करेंगे।
यह ठीक है, यदि आप इसे पूरी तरह से नहीं समझ पाए हैं, क्योंकि हम इस ट्यूटोरियल के बाकी हिस्सों में भी यही सीख रहे हैं।
ESP8266-01 का प्रोग्रामिंग:
यह ट्यूटोरियल मानता है कि आपको ESP8266 मॉड्यूल के साथ कुछ अनुभव है। यदि नहीं, तो इसके बारे में पूरी तरह से समझने के लिए निम्नलिखित तीन ट्यूटोरियल के माध्यम से पढ़ने की सिफारिश की जाती है।
- ESP8266-01 के साथ आरंभ करना
- प्रोग्रामिंग ESP8266-01 AT आदेशों का उपयोग करके
- Arduino IDE का उपयोग करके ESP8266-01 प्रोग्रामिंग और इसकी मेमोरी को फ्लैश करना
आप यहां हमारी सभी ईएसपी 8266 परियोजनाओं को भी देख सकते हैं।
यहां हम Arduino IDE का उपयोग करके ESP8266-01 मॉड्यूल प्रोग्राम करने जा रहे हैं। हार्डवेयर के लिए हम ESV8266 को प्रोग्राम करने के लिए 3.3V के साथ FTDI बोर्ड का उपयोग कर रहे हैं, क्योंकि यह हार्डवेयर को बहुत सरल बना देगा। आपके ESP8266 को FTDI बोर्ड के साथ जोड़ने के लिए सर्किट आरेख नीचे दिखाया गया है।
सुनिश्चित करें कि निम्नलिखित शर्तें पूरी की गई हैं
1. ESP8266-01 केवल 3.3V सहिष्णु है, 5V का उपयोग न करें। इसलिए केवल 3.3V मोड में FTDI सेट करें।
2. GPIO_0 को प्रोग्रामिंग मोड के लिए आधार बनाया जाना चाहिए
3. रीसेट पिन को बटन के माध्यम से ग्राउंड पिन से जोड़ा जाना चाहिए। कोड अपलोड करने से ठीक पहले इस बटन को दबाया जाना चाहिए। हर बार जब बटन को ईएसपी 8266-01 मॉड्यूल पर नीले एलईडी को दबाया जाता है, तो मॉड्यूल रीसेट होने का संकेत देने के लिए उच्च जाएगा।
एक बार कनेक्शन हो जाने के बाद Arduino IDE खोलें और जांचें कि क्या आप सैंपल प्रोग्राम को सफलतापूर्वक अपलोड करने में सक्षम हैं। यदि आप सुनिश्चित नहीं हैं कि ESP8266 में प्रोग्राम अपलोड करने के लिए Arduino IDE का उपयोग कैसे करें तो इसे सीखने के लिए Arduino के साथ प्रोग्रामिंग ESP8266 का पालन करें। इस बिंदु पर मैं मानता हूं कि आपने ब्लिंक प्रोग्राम को सफलतापूर्वक अपलोड कर दिया है।
। पूरा कार्यक्रम इस पृष्ठ के अंत में दिया गया है और नीचे मैं उन्हें छोटे स्निपेट के रूप में समझा रहा हूं। कार्यक्रम को संकलन करने के लिए Arduino JSON लाइब्रेरी की भी आवश्यकता होती है, इसलिए यदि आपने पहले से ही अपनी Arduino IDE में लाइब्रेरी नहीं जोड़ी है, तो इसे Github से Arduino JSON लाइब्रेरी से डाउनलोड करके जोड़ें।
तारीख, समय, तापमान और आर्द्रता के बारे में डेटा प्राप्त करने के लिए ईएसपी 8266 को इंटरनेट से जोड़ना होगा । तो आपको इसे नीचे दी गई लाइनों में SSID और पासवर्ड साबित करके अपने वाई-फाई से कनेक्ट करने की अनुमति देनी होगी
const char * ssid = "JIO-Fi"; // अपना वाई-फाई SSID कांस्ट चार्ज * पासवर्ड दर्ज करें = "Pas123"; // आपको वाई-फाई पासवर्ड दर्ज करें
सेटअप के अंदर () फ़ंक्शन हम जांचते हैं कि क्या ईएसपी वाई-फाई के साथ कनेक्ट करने में सक्षम है, यदि नहीं, तो यह हमेशा के लिए सीरियल मॉनिटर पर "कनेक्टिंग.." प्रिंट करके इंतजार करेगा।
जबकि (WiFi.status ()! = WL_CONNECTED) {// वाई-फाई कनेक्ट होने तक प्रतीक्षा करें (1000) विलंबित है; Serial.print ("कनेक्टिंग.."); // प्रिंट कनेक्टिंग.. कनेक्शन स्थापित होने तक }
अगला चरण बहुत महत्वपूर्ण कदम है। यदि वाई-फाई कनेक्शन सफल होता है तो हमें इंटरनेट से JSON फाइल पढ़ने के लिए http पाने के लिए अनुरोध करना होगा। इस ट्यूटोरियल में मैं wunderground.com द्वारा प्रदान की गई एपीआई का उपयोग कर रहा हूं। इसलिए यदि आप उसी का उपयोग करने की योजना बना रहे हैं, तो आप मुफ्त एपीआई कुंजी के लिए लिंक और साइनअप कर सकते हैं या अपनी पसंद के किसी भी एपीआई का उपयोग कर सकते हैं। एक बार जब आप अपने एपीआई के साथ अंतिम रूप दे देते हैं तो आप नीचे दिए गए लिंक के साथ कुछ इस तरह समाप्त हो जाएंगे
नोट: मैंने इस लिंक की एपीआई कुंजी बदल दी है, इसलिए यह काम नहीं करेगा। अपनी API कुंजी सुरक्षित रखें और साझा न करें।
मेरा एपीआई यहाँ चेन्नई के मौसम डेटा प्राप्त करने के लिए उपयोग किया जाता है। आप किसी भी एपीआई का उपयोग कर सकते हैं। लेकिन जब आप किसी भी ब्राउज़र में एपीआई को लोड करते हैं तो उसे JSON फाइल वापस करनी चाहिए। उदाहरण के लिए मेरा एपीआई निम्नलिखित JSON फ़ाइल लौटाता है
आपकी फ़ाइल विभिन्न डेटा के साथ एक फ़ाइल लौटा सकती है। हम जाँच सकते हैं कि क्या यह JSON फाइल हमारे ESP8266 द्वारा प्राप्त की गई है, इसे पढ़कर और अपनी लाइनों पर JSON को हमारे सीरियल मॉनिटर पर प्रिंट करके
int httpCode = http.GET (); // एक अनुरोध प्राप्त करें यदि (httpCode> 0) {// रिटर्निंग कोड की जांच करें // पेलोड = http.getString (); // डिबगिंग के लिए वैरिएबल पेलोड पर मूल्य स्टोर करें। Serial.println (पेलोड); // डिबगिंग के लिए पेलोड प्रिंट करें अन्यथा दोनों पंक्तियों पर टिप्पणी करें
मैंने इन पंक्तियों पर टिप्पणी की है, क्योंकि वे केवल परीक्षण के लिए आवश्यक हैं। एक बार जब आप यह सुनिश्चित कर लेते हैं कि ESP8266 JSON डेटा प्राप्त करने में सक्षम है, तो डेटा को फिर से तैयार करने का समय है। जैसा कि आप देख सकते हैं कि यह डेटा बहुत बड़ा है और अधिकांश मूल्य बेकार हैं, हमारे लिए आवश्यक हैं, जैसे हमारे लिए आवश्यक हैं जैसे कि दिनांक, समय, तापमान और आर्द्रता।
इसलिए हम JSON Arduino लाइब्रेरी का उपयोग हमारे लिए आवश्यक मानों को अलग करने और इसे एक चर में संग्रहीत करने के लिए करते हैं । यह संभव है क्योंकि JSON फ़ाइल में मान नाम मान युग्म के रूप में असाइन किए गए हैं। तो यह नाम एक स्ट्रिंग है जो हमारे लिए आवश्यक मूल्य धारण करेगा।
ऐसा करने के लिए हमें एक वेबसाइट पर जाना होगा जो JSON फाइल का विश्लेषण करेगी और हमें Arduino कोड देगी। हाँ यह उतना ही आसान है। Https://arduinojson.org/assistant/ पर आगे बढ़ें और उस JSON फ़ाइल को पेस्ट करें जिसे हमने अपने ब्राउज़र में लोड किया था और एंटर दबाएं। जब किया मेरा कुछ इस तरह नीचे देखा
स्वचालित रूप से बनाए गए phrasing प्रोग्राम को देखने के लिए थोड़ा नीचे स्क्रॉल करें
आपको केवल वह चर चुनना है जो आप चाहते हैं, उन्हें कॉपी करें और अपने Arduino IDE पर पेस्ट करें, जैसे मैंने यहां किया है
/ * JSON librarey * / // का उपयोग करते हुए फ़्रेसिंग डेटा https://arduinojson.org/assistant/ का उपयोग करके अपने JSON स्ट्रिंग कॉन्स्टेबल size_t बफर के लिए वाक्यांशकरण मान प्राप्त करें = JSON_OBJECT_SIZE (0) + JSON_OBJECT_SIZE (1) + JSON_OBJECT_SIJZZ + 2 * JSON_OBJECT_SIZE (3) + JSON_OBJECT_SIZE (8) + JSON_OBJECT_SIZE (12) + JSON_OBJECT_SIZE (56) + 2160; डायनेमिकजसनबफ़र जोंस बफ़र (बफरसाइज़); JsonObject & root = jsonBuffer.parseObject (http.getString ()); / * डेटा का अंत समाप्त हो रहा है * / // वांछित चर के लिए मान को संबोधित करें JsonObject & current_observation = root; // current_observation के तहत JsonObject & current_observation_observation_location = current_observation; // अंडरव्यू_लोकेशन कॉस्ट चार के तहत * करेंट_बॉर्शन_स्टेशन_साइड = करंट_बूत // "ICHENNAI1" // स्थान का पता लगाएं const char * current_observation_local_time_rfc822 = current_observation; // स्थानीय समय // स्थानीय समय प्राप्त करें const char * current_observation_temper_string = current_observation; // "90.7 F (32.6 C)" // तापमान मान प्राप्त करें const char * current_observation_relative_humidity = current_observation; // "73%" // नमी मान प्राप्त करें
मैंने अभी अभी चर_ मौजूदा आरक्षण_स्टेशन_स्टेशन_आईडी, वर्तमान_भूत आरक्षण_काल_समय_प्रबंध_22, करंट_बूत आरक्षण_टेंस_स्ट्रीमिंग और करंट_बोर्सेशन_रेलिव_हुमिडिटी कॉपी किया है । चूंकि हम अपनी एलसीडी स्क्रीन पर केवल उन चार डेटा को प्रदर्शित करने की योजना बना रहे हैं।
अंत में, हमने वह डेटा प्राप्त किया है जिसकी हमें इंटरनेट से आवश्यकता है और इसे एक चर के रूप में सहेजा है जिसे हम आराम से उपयोग कर सकते हैं। Arduino के लिए इन डेटा को भेजने के लिए हमने सीरियल सीरियल की निगरानी के दौरान उन्हें केवल धारावाहिक रूप से लिखा है । निम्न पंक्तियाँ ठीक वैसी ही होंगी
// सीरियल मॉनिटर के माध्यम से चर प्रिंट करें Serial.print (current_observation_station_id); // Arduino देरी (100) के लिए स्थान का विवरण भेजें ; // स्थिरता देरी Serial.print (current_observation_local_time_rfc822); // Arduino देरी (100) के लिए स्थानीय समय विवरण भेजें ; // स्थिरता देरी Serial.print (current_observation_temper_string); // Arduino देरी (100) के लिए तापमान विवरण भेजें ; // स्थिरता देरी Serial.print (current_observation_relative_humidity); // Arduino देरी (100) को नमी विवरण भेजें ; // स्थिरता में देरी
ध्यान दें कि मैंने Serial.print () का उपयोग किया है और Serial.println () कमांड के बाद से Serial.println () डेटा के साथ / n / r को जोड़ देगा जो हमारे लिए आवश्यक नहीं है। हमने 10 सेकंड की देरी भी जोड़ी है, ताकि ईएसपी इन मूल्यों को केवल 10 सेकंड के अंतराल पर Arduino को भेजेगा।
ESP8266-01 को Arduino के साथ जोड़ना:
अब तक हमने अपने ESP8266-01 को 10 सेकंड के अंतराल पर इंटरनेट से आवश्यक डेटा पढ़ने और इसे क्रमिक रूप से भेजने के लिए प्रोग्राम किया है। अब हमें Arduino के साथ ESP को इंटरफ़ेस करना है ताकि हम इस धारावाहिक डेटा को पढ़ सकें। हमें Arduino में 16 * 2 एलसीडी डिस्प्ले भी जोड़ना है ताकि हम ESP8266 मॉड्यूल से प्राप्त डेटा प्रदर्शित कर सकें। सर्किट आरेख इंटरफेस करने Arduino के साथ ESP8266 मॉड्यूल नीचे दिखाया गया है
सुनिश्चित करें कि GPIO_0 पिन खाली छोड़ दिया गया है, मॉड्यूल को केवल 3.3V पिन के साथ Arduino और पावर बटन दबाकर ESP मॉड्यूल को ऑपरेटिंग मॉड्यूल में रखें। अब जो कार्यक्रम हमने ईएसपी पर अपलोड किया है, उसे काम करना शुरू कर देना चाहिए और मॉड्यूल को सीरियल पिन के माध्यम से डेटा Arduino पर भेजना चाहिए। ये सीरियल पिन Arduino पर पिन नंबर 6 और 7 से जुड़े हैं। तो हम पिन्स के इन सीरियल डेटा को पढ़ने के लिए Arduino पर सॉफ़्टवेयर सीरियल विकल्प का उपयोग कर सकते हैं।
Arduino कार्यक्रम और कार्य:
पूरा Arduino कार्यक्रम भी इस पेज के अंत में ईएसपी कोड के साथ दिया जाता है । आप कार्यक्रम को देखने के लिए नीचे स्क्रॉल कर सकते हैं या आगे पढ़ सकते हैं यदि आप कार्यक्रम को समझना चाहते हैं।
इंटरफेसिंग प्रोग्राम बहुत सरल है, हमें बस सॉफ्टवेयर सीरियल लाइब्रेरी का उपयोग पिन 6 और 7 के डेटा को पढ़ने और उन्हें एलसीडी स्क्रीन पर प्रदर्शित करने के लिए करना है। चूंकि प्राप्त किया जा रहा डेटा स्ट्रिंग प्रारूप में है, हमें अपनी आवश्यकता के लिए पेलोड को तोड़ने के लिए विकल्प विकल्प का उपयोग करना होगा या यदि आवश्यक हो तो इसे पूर्णांक में भी बदल सकता है। तो हम पिंस को परिभाषित करके शुरू करते हैं, जिसमें एलसीडी जुड़ा हुआ है ।
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // पिंस जिसमें एलसीडी लिक्विड क्रिस्टल एलसीडी (आरएस, एन, डी 4, डी 5, डी 6, डी 7) से जुड़ा है ;
चूंकि हमने Arduino के 6 और 7 वें पिन के साथ ESP8266 के Rx और Tx पिनों को जोड़ा है, इसलिए हमें उन पिनों के लिए सॉफ़्टवेयर सीरियल को इनिशियलाइज़ करना होगा ताकि हम उनसे सीरियल डेटा प्राप्त कर सकें। मेरे पास ESP_Serial नाम हैं। उन्हें अपनी इच्छानुसार कुछ भी नाम दें
SoftwareSerial ESP_Serial (6,7); // टीएक्स, आरएक्स
सेटअप () फ़ंक्शन के अंदर हम सीरियल मॉनीटर के लिए और सॉफ्टवेयर धारावाहिक के लिए सीरियल संचार को इनिशियलाइज़ करते हैं । यदि आप याद कर सकते हैं कि हमने ईएसपी प्रोग्राम को 9600 बॉड दर पर संप्रेषित करने के लिए बनाया है तो हमें सॉफ्टवेयर सीरियल पोर्ट के लिए उसी बॉड दर का उपयोग करना होगा। हम 2 सेकंड के लिए एलसीडी पर एक छोटा परिचय संदेश भी प्रदर्शित करते हैं।
शून्य सेटअप () {lcd.begin (16, 2); // हम 16 * 2 एलसीडी डिस्प्ले का उपयोग कर रहे हैं lcd.print ("Arduino & ESP"); // एक परिचय संदेश प्रदर्शित करें Serial.begin (115200); ESP_Serial.begin (9600); देरी (2000); lcd.clear (); }
मुख्य लूप () फ़ंक्शन के अंदर हमें जांचना होगा कि ईएसपी 8266 कुछ भी भेज रहा है या नहीं। यदि यह है, तो हम ESP8266 से स्ट्रिंग पढ़ते हैं और इसे पेलोड नामक एक चर में सहेजते हैं । वैरिएबल पेलोड टाइप स्ट्रिंग का है और यह ESP8266 मॉड्यूल भेजे गए पूरी जानकारी को धारण करेगा।
जबकि (ESP_Serial.available ()> 0) {पेलोड = ESP_Serial.readString ();
अब हमें इस स्ट्रिंग को छोटे टुकड़ों में विभाजित करना होगा ताकि हम उन्हें अपने उद्देश्य के लिए उपयोग कर सकें, इस मामले में हमें उन्हें एलसीडी स्क्रीन पर प्रदर्शित करने के लिए विभाजित करना होगा। यह Arduino में घटिया फ़ंक्शन का उपयोग करके आसानी से किया जा सकता है । इस स्थानापन्न फ़ंक्शन का उपयोग करने के लिए आपको प्रत्येक वर्ण की स्थिति को जानना होगा । आप वर्णों की स्थिति जानने के लिए सीरियल मॉनीटर पर पेलोड को प्रिंट कर सकते हैं और उन्हें नीचे दिखाए गए अनुसार सामग्रियों को वर्गीकृत करने के लिए उपयोग कर सकते हैं
local_date = पेलोड.सुबस्ट्रिंग (14, 20); local_time = पेलोड.सुबस्ट्रिंग (26, 31); तापमान = पेलोड.सुबस्ट्रिंग (48, 54); आर्द्रता = पेलोड.सुबस्ट्रिंग (55, 60);
अब मैं आगे जा सकता हूं और इन चर का उपयोग करके या तो उन्हें सीरियल मॉनीटर पर प्रिंट कर सकता हूं या सिर्फ एलसीडी पर प्रिंट कर सकता हूं । हालाँकि, सीरियल मॉनिटर पर उन्हें प्रिंट करने से हमें जाँचने में मदद मिलेगी कि क्या सबस्ट्रिंग सही तरीके से विभाजित हैं। आगे हम केवल निम्नलिखित लाइनों का उपयोग करके एलसीडी डिस्प्ले पर उन्हें प्रिंट करते हैं
lcd.clear (); lcd.setCursor (1, 0); lcd.print (local_date); lcd.setCursor (8, 0); lcd.print (local_time); lcd.setCursor (1, 1); lcd.print (तापमान); lcd.setCursor (10, 1); lcd.print (आर्द्रता);
Arduino पर कार्यक्रम अपलोड करें, और सुनिश्चित करें कि कनेक्शन ऊपर सर्किट आरेख में दिखाए गए हैं। एलसीडी डिस्प्ले के विपरीत को तब तक समायोजित करें जब तक आप चीजों को स्पष्ट रूप से नहीं देखते। आपको एलसीडी पर इंट्रो संदेश देखना चाहिए और फिर कुछ सेकंड के बाद तिथि, समय, तापमान और आर्द्रता जैसे विवरण एलसीडी स्क्रीन में दिखाए जाने चाहिए जैसा कि नीचे दिखाया गया है।
डेटा में आने पर हर बार पलक झपकते ही आप ESP8266 पर नीले रंग का नेतृत्व कर सकते हैं । यदि आप यह नहीं देख सकते हैं तो इसका मतलब है कि ESP प्रोग्रामिंग मोड में नहीं है, रीसेट बटन दबाने की कोशिश करें, कनेक्शन भी जांचें।
इसके समान आप इंटरनेट से किसी भी आवश्यक डेटा को प्राप्त करने के लिए किसी भी एपीआई का उपयोग कर सकते हैं और इसे अरडूइनो को खिला सकते हैं और डूडिनो के साथ अपने काम को प्रोसेस कर सकते हैं। वहाँ इंटरनेट पर उपलब्ध एपीआई के टन है और उन सभी के साथ आप परियोजनाओं की एक असीम संख्या बना सकते हैं। आशा है कि आपने इस परियोजना को समझा और इसके निर्माण का आनंद लिया। यदि आपको किसी समस्या का सामना करना पड़ा है, तो उन्हें नीचे या हमारे मंचों पर टिप्पणी अनुभाग पर पोस्ट करें।
आप हमारे सभी ईएसपी 8266 संबंधित परियोजनाओं को यहां पा सकते हैं।