विषयसूची:

Arduino और ईथरनेट के साथ शुरुआत करना: 8 कदम
Arduino और ईथरनेट के साथ शुरुआत करना: 8 कदम

वीडियो: Arduino और ईथरनेट के साथ शुरुआत करना: 8 कदम

वीडियो: Arduino और ईथरनेट के साथ शुरुआत करना: 8 कदम
वीडियो: What is Arduino with Full Information? – [Hindi] – Quick Support 2024, जुलाई
Anonim
Arduino और ईथरनेट के साथ शुरुआत करना
Arduino और ईथरनेट के साथ शुरुआत करना

आपका Arduino एक वायर्ड ईथरनेट कनेक्शन के माध्यम से बाहरी दुनिया के साथ आसानी से संवाद कर सकता है। हालाँकि इससे पहले कि हम शुरू करें, यह मान लिया जाएगा कि आपको कंप्यूटर नेटवर्किंग की बुनियादी समझ है, जैसे कि RJ45 केबल के साथ कंप्यूटर को हब/राउटर से कैसे जोड़ा जाए, IP और MAC पता क्या है, इत्यादि। इसके अलावा, यहाँ ईथरनेट के बारे में एक अच्छा त्वरित विवरण है।

आपको ईथरनेट शील्ड के साथ एक Arduino Uno या संगत बोर्ड की आवश्यकता होगी जो छवि के अनुसार W5100 ईथरनेट नियंत्रक IC (उनमें से बहुत अधिक) का उपयोग करता है।

इसके अलावा आपको बाहरी डीसी सॉकेट के माध्यम से बोर्ड को पावर देने की आवश्यकता होगी - W5100 IC USB पावर की आपूर्ति की तुलना में अधिक करंट का उपयोग करता है। एक 9वी 1.5ए प्लग पैक/वॉल वार्ट पर्याप्त होगा।

चरण 1:

छवि
छवि

अंत में - ढालें गर्म हो जाती हैं - इसलिए सावधान रहें कि विस्तारित उपयोग के बाद W5100 को स्पर्श न करें। यदि आप निश्चित नहीं हैं - यह W5100 IC है।

चरण 2:

एक बार जब आपके पास आपका ईथरनेट-सक्षम Arduino हो, और बाहरी शक्ति जुड़ी हो - तो यह एक अच्छा विचार है कि यह सभी काम करता है। Arduino IDE खोलें और फ़ाइल > उदाहरण > ईथरनेट > वेबसर्वर चुनें। यह एक साधारण स्केच लोड करता है जो एक वेब ब्राउज़र पर एनालॉग इनपुट से एकत्रित डेटा प्रदर्शित करेगा। हालाँकि इसे अभी तक अपलोड न करें, इसमें थोड़े संशोधन की आवश्यकता है।

आपको ईथरनेट शील्ड का आईपी पता निर्दिष्ट करने की आवश्यकता है - जो स्केच के अंदर किया जाता है। यह आसान है, लाइन पर जाएं:

आईपीएड्रेस आईपी(10, 1, 1, 77);

और इसे अपने स्वयं के सेटअप से मेल खाने के लिए बदलें। उदाहरण के लिए, हमारे घर में राउटर का आईपी एड्रेस 10.1.1.1 है, प्रिंटर 10.1.1.50 है और सभी पीसी …50 से नीचे हैं। इसलिए मैं लाइन को बदलकर अपना शील्ड आईपी 10.1.1.77 पर सेट करूंगा:

बाइट मैक = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

हालाँकि यदि आपके पास केवल एक ढाल है तो इसे छोड़ दें। आपके मौजूदा हार्डवेयर के समान मैक एड्रेस होने की बहुत, बहुत, सांख्यिकीय रूप से दुर्लभ संभावना हो सकती है, इसलिए इसे बदलने का एक और समय होगा।

चरण 3:

छवि
छवि

हालाँकि यदि आपके पास केवल एक ढाल है तो इसे छोड़ दें। आपके मौजूदा हार्डवेयर के समान मैक एड्रेस होने की बहुत, बहुत, सांख्यिकीय रूप से दुर्लभ संभावना हो सकती है, इसलिए इसे बदलने का एक और समय होगा।

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

क्या हो रहा है?

Arduino को एनालॉग इनपुट द्वारा मापे गए मानों के साथ एक साधारण वेब पेज की पेशकश करने के लिए प्रोग्राम किया गया है। आप अपडेट किए गए मान प्राप्त करने के लिए ब्राउज़र को रीफ़्रेश कर सकते हैं। इस बिंदु पर - कृपया ध्यान दें कि ईथरनेट शील्ड डिजिटल पिन 10 ~ 13 का उपयोग करते हैं, इसलिए आप किसी अन्य चीज़ के लिए उनका उपयोग नहीं कर सकते हैं। कुछ Arduino ईथरनेट शील्ड में एक माइक्रोएसडी कार्ड सॉकेट भी हो सकता है, जो एक अन्य डिजिटल पिन का भी उपयोग करता है - इसलिए यह पता लगाने के लिए कि कौन सा है, दस्तावेज़ीकरण की जाँच करें।

चरण 4:

फिर भी, अब जब हम देख सकते हैं कि ईथरनेट शील्ड काम कर रही है तो हम कुछ और उपयोगी चीजों पर आगे बढ़ सकते हैं। आइए पिछले उदाहरण को सरल तरीके से विच्छेदित करें, और देखें कि हम नेटवर्क पर अधिक दिलचस्प डेटा कैसे वितरित और प्रदर्शित कर सकते हैं। संदर्भ के लिए, ईथरनेट से संबंधित सभी कार्यों को ईथरनेट Arduino लाइब्रेरी द्वारा नियंत्रित किया जाता है। यदि आप पिछले स्केच की जांच करते हैं जिसका हमने अभी उपयोग किया है, तो वह खंड जो रुचि का होगा:

के लिए (इंट एनालॉग चैनल = 0; एनालॉग चैनल <6; एनालॉग चैनल ++) {इंट सेंसर रीडिंग = एनालॉग रीड (एनालॉग चैनल); क्लाइंट.प्रिंट ("एनालॉग इनपुट"); क्लाइंट.प्रिंट (एनालॉग चैनल); क्लाइंट.प्रिंट ("है"); क्लाइंट.प्रिंट (सेंसर रीडिंग); क्लाइंट.प्रिंट्लन (""); } क्लाइंट.प्रिंट्लन ("");

उम्मीद है कि स्केच का यह खंड परिचित होना चाहिए - याद रखें कि हमने कैसे सीरियल का उपयोग किया है। प्रिंट (); अतीत में सीरियल मॉनिटर बॉक्स में डेटा भेजते समय? ठीक है अब हम वही काम कर सकते हैं, लेकिन अपने ईथरनेट शील्ड से डेटा वापस वेब ब्राउज़र पर भेज रहे हैं - दूसरे शब्दों में, एक बहुत ही बुनियादी प्रकार का वेब पेज। हालाँकि कुछ ऐसा है जिसे आप प्रारूपित करने के लिए सीखना चाहते हैं या नहीं। एक पठनीय प्रारूप में आउटपुट - HTML कोड। मैं एक वेबसाइट डेवलपर नहीं हूं (!) इसलिए HTML में बहुत अधिक जानकारी नहीं दूंगा।

हालाँकि यदि आप अपने Arduino वगैरह के साथ अच्छी तरह से स्वरूपित वेब पेजों की सेवा करना चाहते हैं, तो यहां एक अच्छी शुरुआत होगी। सादगी के हित में, निम्नलिखित दो कार्य सबसे उपयोगी होंगे:

क्लाइंट.प्रिंट ("है");

क्लाइंट.प्रिंट (); हमें वेब पेज पर टेक्स्ट या डेटा वापस भेजने की अनुमति देता है। यह उसी तरह से काम करता है जैसे serial.print(), इसलिए वहां कुछ भी नया नहीं है। आप डेटा प्रकार को उसी तरह निर्दिष्ट कर सकते हैं जैसे serial.print() के साथ। स्वाभाविक रूप से आप इसका उपयोग डेटा वापस भेजने के लिए भी कर सकते हैं। अन्य उपयोगी पंक्ति है:

क्लाइंट.प्रिंट्लन ("");

जो HTML कोड को वेब ब्राउज़र पर वापस भेजता है और उसे एक नई लाइन शुरू करने के लिए कहता है। वह हिस्सा जो वास्तव में कैरिज रिटर्न/नई लाइन का कारण बनता है

जो एक नई लाइन के लिए एक HTML कोड (या "टैग") है।

इसलिए यदि आप अधिक विस्तृत वेब पेज डिस्प्ले बना रहे हैं, तो आप क्लाइंट में अन्य HTML टैग्स डाल सकते हैं। प्रिंट (); बयान। यदि आप HTML कमांड के बारे में अधिक जानना चाहते हैं, तो यहां एक अच्छी ट्यूटोरियल साइट है।

अंत में - ध्यान दें कि स्केच केवल तभी डेटा भेजेगा जब उसका अनुरोध किया गया हो, यानी जब उसे वेब ब्राउज़र से अनुरोध प्राप्त हुआ हो।

चरण 5: इंटरनेट पर अपने Arduino तक पहुंचना

इंटरनेट पर अपने Arduino तक पहुंचना
इंटरनेट पर अपने Arduino तक पहुंचना

अब तक सब ठीक है। लेकिन क्या होगा अगर आप अपने Arduino को स्थानीय नेटवर्क के बाहर से एक्सेस करना चाहते हैं?

आपको एक स्थिर आईपी पते की आवश्यकता होगी - यानी, आपके इंटरनेट सेवा प्रदाता द्वारा आपके कनेक्शन को निर्दिष्ट किया गया आईपी पता वही रहने की आवश्यकता है। यदि आपके पास स्थिर आईपी नहीं है, तो जब तक आप अपने मॉडेम/राउटर को स्थायी रूप से अपने आईपी पर स्विच छोड़ देते हैं, तब तक नहीं बदलना चाहिए। हालांकि यह एक इष्टतम समाधान नहीं है।

यदि आपका आईएसपी आपको एक स्थिर आईपी बिल्कुल भी नहीं दे सकता है, तो भी आप एक ऐसे संगठन का उपयोग करके परियोजना के साथ आगे बढ़ सकते हैं जो एक गतिशील डीएनएस प्रदान करता है। ये संगठन आपको एक नंबर के बजाय अपना खुद का स्थिर आईपी होस्ट नाम (जैसे mojo.monkeynuts.com) प्रदान करते हैं, अपने बदलते आईपी पते पर नज़र रखें और इसे नए होस्ट नाम से लिंक करें। मैं जो कुछ भी इकट्ठा कर सकता हूं, आपके मॉडेम को इन डीडीएनएस सेवाओं का समर्थन (इन-बिल्ट क्लाइंट …) की आवश्यकता है।

उदाहरण के तौर पर, दो कंपनियां No-IP औरDynDNS.com हैं। कृपया ध्यान दें कि मैंने उन दोनों का उपयोग नहीं किया है, उन्हें केवल उदाहरण के रूप में पेश किया गया है। अब, अपना आईपी पता खोजने के लिए … आमतौर पर यह आपके राउटर के प्रशासन पृष्ठ में लॉग इन करके पाया जा सकता है - यह आमतौर पर 192.168.0.1 होता है लेकिन यह अलग हो सकता है। अपने आपूर्तिकर्ता या ISP से जाँच करें कि क्या उन्होंने हार्डवेयर की आपूर्ति की है। इस उदाहरण के लिए, यदि मैं वेब ब्राउज़र में 10.1.1.1 दर्ज करता हूं, और अपना मॉडेम प्रशासन पासवर्ड दर्ज करने के बाद, छवि के अनुसार निम्न स्क्रीन प्रस्तुत की जाती है।

चरण 6:

छवि
छवि

आप जो खोज रहे हैं वह आपका WAN IP पता है, जैसा कि आप ऊपर की छवि में देख सकते हैं। मसखराओं को दूर रखने के लिए मैंने अपना कुछ पता ब्लैक आउट कर दिया है।

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

ईथरनेट सर्वर सर्वर (125);

हमारे स्केच में फ़ंक्शन ने पोर्ट संख्या को 125 पर सेट कर दिया है। प्रत्येक मॉडेम की कॉन्फ़िगरेशन स्क्रीन अलग दिखाई देगी, लेकिन यहां एक उदाहरण के रूप में छवि में एक है।

चरण 7:

छवि
छवि

तो आप ऊपर की छवि में लाइन नंबर एक से देख सकते हैं, इनबाउंड पोर्ट नंबर 125 पर सेट किए गए हैं, और ईथरनेट शील्ड का आईपी पता 10.1.1.77 पर सेट किया गया है - स्केच के समान ही।

सेटिंग्स को सेव करने के बाद, हम पूरी तरह तैयार हैं। मेरे ईथरनेट शील्ड का बाहरी पता WAN:125 होगा, इसलिए Arduino को एक्सेस करने के लिए मैं अपना WAN पता टाइप करूंगा: 125 रिमोट वेब डिवाइस के ब्राउज़र में अंत में, जो एकाकी ईथरनेट हार्डवेयर से घर वापस संपर्क करेगा।

इसके अलावा, पोर्ट 125 को आने वाले अनुरोधों के लिए "खुला" होने की अनुमति देने के लिए, आपको अपने मॉडेम की फ़ायरवॉल सेटिंग्स को बदलने की आवश्यकता हो सकती है। यह कैसे करना है, इस बारे में अधिक जानकारी के लिए कृपया अपने मॉडेम के दस्तावेज़ देखें। अब मूल रूप से मुक्त दुनिया में किसी भी इंटरनेट से जुड़े डिवाइस से, मैं यूआरएल फ़ील्ड में अपना वैन और पोर्ट नंबर दर्ज कर सकता हूं और परिणाम प्राप्त कर सकता हूं। उदाहरण के लिए, किसी फ़ोन से जब वह LTE मोबाइल डेटा के माध्यम से इंटरनेट से कनेक्ट होता है।

तो इस स्तर पर अब आप अपने Arduino द्वारा बनाए गए एक साधारण वेब पेज पर डेटा प्रदर्शित कर सकते हैं और इसे अप्रतिबंधित इंटरनेट एक्सेस के साथ कहीं से भी एक्सेस कर सकते हैं। अपने पिछले Arduino ज्ञान के साथ अब आप सेंसर या स्केच के अन्य हिस्सों से डेटा का उपयोग कर सकते हैं और इसे पुनर्प्राप्ति के लिए प्रदर्शित कर सकते हैं।

चरण 8: वेब पेज पर सेंसर डेटा प्रदर्शित करना

वेब पेज पर सेंसर डेटा प्रदर्शित करना
वेब पेज पर सेंसर डेटा प्रदर्शित करना

वेब पेज पर सेंसर डेटा प्रदर्शित करने के एक उदाहरण के रूप में, आइए एक सस्ते और लोकप्रिय तापमान और आर्द्रता सेंसर - DHT22 का उपयोग करें। आपको DHT22 Arduino लाइब्रेरी स्थापित करने की आवश्यकता होगी जो इस पृष्ठ पर पाई जा सकती है। यदि आप DHT22 के साथ पहली बार हैं, तो उदाहरण स्केच के साथ प्रयोग करें जो पुस्तकालय में शामिल है ताकि आप समझ सकें कि यह कैसे काम करता है।

डेटा पिन के साथ DHT22 को Arduino D2, Vin से 5V पिन और GND को… GND से कनेक्ट करें। अब हमारे स्केच के लिए - वेब पेज पर तापमान और आर्द्रता प्रदर्शित करने के लिए। यदि आप HTML पर नहीं हैं तो आप कोड उत्पन्न करने के लिए इस तरह की ऑनलाइन सेवाओं का उपयोग कर सकते हैं, जिसे आप स्केच में उपयोग करने के लिए संशोधित कर सकते हैं। नीचे दिए गए उदाहरण में, DHT22 से तापमान और आर्द्रता डेटा एक साधारण वेब पेज में परोसा जाता है:

#शामिल "SPI.h"#शामिल "Ethernet.h"

// DHT22 सेंसर के लिए

#"DHT.h" शामिल करें #DHTPIN 2 को परिभाषित करें #DHTTYPE DHT22 को परिभाषित करें

// नीचे अपने नियंत्रक के लिए एक मैक पता और आईपी पता दर्ज करें।

// आईपी पता आपके स्थानीय नेटवर्क पर निर्भर होगा: बाइट मैक = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; आईपीएड्रेस आईपी(10, 1, 1, 77);

// ईथरनेट सर्वर लाइब्रेरी को इनिशियलाइज़ करें

// उस आईपी पते और पोर्ट के साथ जिसका आप उपयोग करना चाहते हैं // (पोर्ट 80 HTTP के लिए डिफ़ॉल्ट है): ईथरनेट सर्वर सर्वर (125); डीएचटी डीएचटी (डीएचटीपीआईएन, डीएचटीटीपीई);

व्यर्थ व्यवस्था()

{ dht.begin (); // सीरियल संचार खोलें और पोर्ट के खुलने की प्रतीक्षा करें: Serial.begin(9600); जबकि (! सीरियल) {; // सीरियल पोर्ट के कनेक्ट होने की प्रतीक्षा करें। केवल लियोनार्डो के लिए आवश्यक } // ईथरनेट कनेक्शन और सर्वर शुरू करें: ईथरनेट.begin(mac, ip); सर्वर। शुरू (); Serial.print ("सर्वर चालू है"); Serial.println (ईथरनेट.लोकलआईपी ()); }

शून्य लूप ()

{// आने वाले क्लाइंट के लिए सुनें इथरनेट क्लाइंट क्लाइंट = सर्वर.उपलब्ध (); अगर (क्लाइंट) { Serial.println ("नया क्लाइंट"); // एक http अनुरोध एक खाली लाइन बूलियन के साथ समाप्त होता है currentLineIsBlank = true; जबकि (क्लाइंट.कनेक्टेड ()) {अगर (क्लाइंट.उपलब्ध ()) {चार सी = क्लाइंट.रीड (); सीरियल.राइट (सी); // यदि आप पंक्ति के अंत तक पहुँच गए हैं (एक नई पंक्ति // वर्ण प्राप्त हुआ है) और रेखा खाली है, तो http अनुरोध समाप्त हो गया है, // तो आप एक उत्तर भेज सकते हैं यदि (c == 'n' && currentLineIsBlank) {// एक मानक http प्रतिक्रिया हेडर क्लाइंट भेजें। client.println ("सामग्री-प्रकार: टेक्स्ट/एचटीएमएल"); client.println ("कनेक्शन: बंद करें"); // प्रतिक्रिया क्लाइंट के पूरा होने के बाद कनेक्शन बंद हो जाएगा। println ("ताज़ा करें: 30"); // पृष्ठ को हर 30 सेकंड में स्वचालित रूप से ताज़ा करें। Println (); क्लाइंट.प्रिंट्लन ("");

क्लाइंट.प्रिंट्लन ("");

// DHT22 सेंसर से डेटा प्राप्त करें

फ्लोट एच = dht.readHumidity (); फ्लोट टी = dht.readTemperature (); सीरियल.प्रिंट्लन (टी); सीरियल.प्रिंट्लन (एच);

// यहां से हम वेब पेज बनाने के लिए अपना खुद का HTML कोड दर्ज कर सकते हैं

client.print( कार्यालय मौसम

कार्यालय का तापमान - );

क्लाइंट.प्रिंट (टी);

क्लाइंट.प्रिंट ("डिग्री सेल्सियस"

);

क्लाइंट.प्रिंट ("

नमी - );

क्लाइंट.प्रिंट (एच);

क्लाइंट.प्रिंट ("प्रतिशत"

);

क्लाइंट.प्रिंट ("

पृष्ठ हर 30 सेकंड में ताज़ा होता है<

. );

टूटना;

} अगर (c == 'n') {// आप एक नई लाइन शुरू कर रहे हैं currentLineIsBlank = true; } और अगर (सी! = 'आर') {// आपको वर्तमान लाइन पर एक चरित्र मिल गया है currentLineIsBlank = false; } } } // डेटा विलंब प्राप्त करने के लिए वेब ब्राउज़र को समय दें(1); // कनेक्शन बंद करें: क्लाइंट.स्टॉप (); Serial.println ("क्लाइंट डिस्कनेक्ट किया गया"); } }

यह IDE के वेबसर्वर उदाहरण स्केच का एक संशोधन है जिसका हमने पहले उपयोग किया था - कुछ संशोधनों के साथ। सबसे पहले, वेबपेज स्वचालित रूप से हर 30 सेकंड में रीफ्रेश होगा - यह पैरामीटर लाइन में सेट है:

client.println ("ताज़ा करें: 30"); // हर 30 सेकंड में पेज को अपने आप रिफ्रेश करें

… और हमारे वेब पेज के लिए कस्टम HTML लाइन के नीचे शुरू होता है:

// यहां से हम वेब पेज बनाने के लिए अपना खुद का HTML कोड दर्ज कर सकते हैं

फिर आप अपनी जरूरत के लेआउट को बनाने के लिए क्लाइंट.प्रिंट () फ़ंक्शन के अंदर बस आवश्यक HTML सम्मिलित कर सकते हैं। अंत में - यहाँ काम पर उदाहरण स्केच का एक उदाहरण स्क्रीन शॉट है।

तो आपके पास यह है, अपने Arduino को बाहरी दुनिया के साथ बातचीत करने का एक और उपयोगी तरीका। यह पोस्ट आपके लिए pmdway.com द्वारा लाया गया है - निर्माताओं और इलेक्ट्रॉनिक्स उत्साही लोगों के लिए सब कुछ, दुनिया भर में मुफ्त डिलीवरी के साथ।

सिफारिश की: