विषयसूची:

Arduino ब्राउज़र आधारित रिमोट कंट्रोल (लिनक्स): 9 चरण (चित्रों के साथ)
Arduino ब्राउज़र आधारित रिमोट कंट्रोल (लिनक्स): 9 चरण (चित्रों के साथ)

वीडियो: Arduino ब्राउज़र आधारित रिमोट कंट्रोल (लिनक्स): 9 चरण (चित्रों के साथ)

वीडियो: Arduino ब्राउज़र आधारित रिमोट कंट्रोल (लिनक्स): 9 चरण (चित्रों के साथ)
वीडियो: This is How i Control a RC Drift Car by Gesture Sensing 2024, नवंबर
Anonim
Arduino ब्राउज़र आधारित रिमोट कंट्रोल (लिनक्स)
Arduino ब्राउज़र आधारित रिमोट कंट्रोल (लिनक्स)
Arduino ब्राउज़र आधारित रिमोट कंट्रोल (लिनक्स)
Arduino ब्राउज़र आधारित रिमोट कंट्रोल (लिनक्स)

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

चरण 1: पूर्वापेक्षाएँ

आवश्यक शर्तें
आवश्यक शर्तें

हार्डवेयर: Arduino पक्ष: Arduino - मैं एक Arduino Uno R2 ब्रेडबोर्ड का उपयोग कर रहा हूं - आपकी स्थानीय इलेक्ट्रॉनिक्स की दुकान, या रसोई यदि आप एक प्रामाणिक ब्रेडबोर्ड माउंटिंग बाड़े चाहते हैं - मैंने एक पारदर्शी ढक्कन के साथ एक पुराने प्लास्टिक के मामले का उपयोग किया है। एक टूटे हुए रिमोट कंट्रोल से (धन्यवाद किड्स!) इन्फ्रारेड रिसीवर - मुझे एक मैजिक आई रिमोट एक्सटेंडर से मेरा मिला ट्रांजिस्टर - मैंने एक BC547 रेसिस्टर का उपयोग किया - मैंने 1k ओम ब्रेडबोर्ड जम्पर तारों पर सेट 1.5k ओम वैरिएबल रेसिस्टर का उपयोग किया - मुझे मेरा मिल गया एक सॉलिड कोर RJ45 केबल रील से कंप्यूटर साइड: सर्वर USB लीड के रूप में उपयोग करने के लिए कंप्यूटर Arduino सॉफ़्टवेयर: Arduino सॉफ़्टवेयर - arduino.cc इरमोट लाइब्रेरी से - https://www.arcfn.com/2009/08/multi-protocol- से- इंफ्रारेड-रिमोट-लाइब्रेरी.एचटीएमएल (धन्यवाद केन, बढ़िया काम!) अपाचे वेब सर्वर जिसमें PHP स्थापित है - apache.org आंतरिक आईपी पता - मेरा है 192.168.0.9 आपके रिमोट कंट्रोल की तस्वीर - गूगल या आपके कैमरे पर ली गई तस्वीर। मैंने अपना 200x600 रिज़ॉल्यूशन पर सहेजा है

चरण 2: बोर्ड का निर्माण

बोर्ड का निर्माण
बोर्ड का निर्माण

एक आर्डिनो के लिए ब्रेडबोर्ड का उपयोग करने की अत्यधिक अनुशंसा की जाती है। मैंने अपने Arduino और एक ब्रेडबोर्ड को एक ही बाड़े में लगाया और उन सभी पिनों को तार दिया जिनका मैं नियमित रूप से सीधे ब्रेडबोर्ड पर स्थायी रूप से उपयोग करता हूं। इस परियोजना के लिए उपयोग किए गए Arduino पिन: 5v, ग्राउंड डिजिटल पिन 3, 11 (पिन 3 IR LED को नियंत्रित करता है, पिन 11 IR रिसीवर से जुड़ता है)

चरण 3: योजनाबद्ध

ढांच के रूप में
ढांच के रूप में

यह योजनाबद्ध बहुत सरल है, 4 घटक और 6 तार। आईआर एलईडी कनेक्शन: रोकनेवाला के पैरों में से एक को Arduino डिजिटल पिन से कनेक्ट करें 3 रोकनेवाला के दूसरे पैर को ट्रांजिस्टर के बेस पिन से कनेक्ट करें (मेरे मामले में मध्य पैर) ट्रांजिस्टर के एमिटर को जमीन से कनेक्ट करें कलेक्टर को कनेक्ट करें एलईडी के नकारात्मक पैर के लिए ट्रांजिस्टर का (छोटा पैर, एलईडी का सपाट पक्ष) एलईडी के सकारात्मक पैर (लंबे पैर, घुमावदार पक्ष) को 5v पिन IR रिसीवर कनेक्शन से कनेक्ट करें (आपको इसके लिए पिनआउट खोजने की आवश्यकता होगी आपका विशेष IR रिसीवर): GND पिन टू ग्राउंड VS पिन से 5v VO पिन से Arduino डिजिटल पिन 11

चरण 4: Arduino सॉफ़्टवेयर में इरिमोट लाइब्रेरी जोड़ें

Arduino Software में Irremote लाइब्रेरी जोड़ें
Arduino Software में Irremote लाइब्रेरी जोड़ें

इरमोट केन शिरिफ द्वारा लिखित एक महान पुस्तकालय है और https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html पर उनके ब्लॉग से उपलब्ध है https://arcfn से पुस्तकालय डाउनलोड करें.com/files/IRremote.zip और इसे वैसे ही इंस्टॉल करें जैसे आप arduino के लिए किसी अन्य लाइब्रेरी में करेंगे। उनके ब्लॉग में पुस्तकालय और इसे स्थापित करने के तरीके के बारे में बहुत सारी उपयोगी जानकारी है।

चरण 5: अपने रिमोट कंट्रोल से कोड रिकॉर्ड करें

यहाँ उबाऊ (लेकिन अपरिहार्य) भाग की शुरुआत है: रिमोट कंट्रोल पर हर बटन को दबाकर, आउटपुट स्ट्रिंग को सहेजना और इसे वर्चुअल रिमोट कंट्रोल पर मैप करना। आपको इसे केवल एक बार करने की आवश्यकता है, लगभग 20 मिनट या उससे भी अधिक समय लगने की अपेक्षा करें। अपना आउटपुट सहेजने के लिए टेक्स्ट एडिटर शुरू करें। एक नया दस्तावेज़ बनाएं और अपने रिमोट कंट्रोल पर प्रत्येक बटन टाइप करें, प्रति पंक्ति एक: पावर अप डाउन लेफ्ट राइट.. वगैरह Arduino IDE प्रारंभ करें और "फ़ाइलें-> उदाहरण-> IRremote-> IRrecvDump" पर क्लिक करें और इसे अपलोड करें आपका Arduino। यह उदाहरण रिमोट कोड को सीरियल पोर्ट पर डंप कर देगा। सीरियल पोर्ट मॉनिटर शुरू करें और अपने रिमोट कंट्रोल पर एक कुंजी दबाएं। आपको सीरियल मॉनिटर विंडो में एक स्ट्रिंग दिखाई देगी: "डिकोडेड *: * (* बिट्स)"। इस लाइन को कॉपी करें और इसे अपने दस्तावेज़ में उपयुक्त लाइन पर सेव करें। तब तक दोहराएं जब तक कि आपकी सभी कुंजियाँ टेक्स्ट फ़ाइल में संग्रहीत न हो जाएँ। मुझे पता है कि यह बिट कितना मजेदार है, मैंने इसे अब तक दो बार किया है: पी अब हमें टेक्स्ट फ़ाइल में थोड़ी खोज और प्रतिस्थापन करने की ज़रूरत है: "डिकोडेड" की जगह "" के साथ खोजें ": 0x" के साथ बदलें "," के लिए खोजें (" के साथ बदलें "," बिट्स के लिए खोजें)" के साथ बदलें "" तो एक पंक्ति के लिए जैसे: डीकोडेड एनईसी: 0x000110 (15 बिट) अब हमारे पास एक लाइन होनी चाहिए जो कहती है: एनईसी, 000110, १५

चरण 6: अपने रिमोट कंट्रोल के लिए वेब पेज बनाएं

अब हमें आपके रिमोट कंट्रोल की आपकी छवि के बटनों को मैप करने की आवश्यकता है।

मैंने बटनों को मैप करने के लिए https://www.maschek.hu/imagemap/imgmap का उपयोग किया और उस कोड को संशोधित किया जो वेबसाइट आपको इसे काम करने के लिए देती है।

"अपने कंप्यूटर पर एक छवि का उपयोग करें: [फ़ाइल चुनें]" पर क्लिक करें, अपनी छवि का चयन करें, [अपलोड] पर क्लिक करें, प्रत्येक बटन पर आयतों, मंडलियों आदि को छोड़ें [स्वीकार करें] पर क्लिक करें। एचआरईएफ के लिए /remote.php?command= और टेक्स्ट दस्तावेज़ से उस बटन के लिए लाइन उदाहरण के लिए /remote.php?command=NEC, 000110, 15 यदि आप भी भरते हैं तो यह बुद्धिमान होगा (और डिबगिंग में अत्यधिक सहायता) Alt: बटन के नाम के साथ लेकिन यह आप पर निर्भर है।

प्रत्येक बटन के लिए दोहराएं।

सब कुछ कर दिया? फिर हम जारी रखेंगे। उस पेज के नीचे "कोड" है, उस पर क्लिक करें और इमेजमैप के लिए कोड दिखाने वाला एक बॉक्स खुलेगा। उसे कॉपी करें और एक नए टेक्स्ट डॉक्यूमेंट में पेस्ट करें। यह हमारे वेब पेज का मुख्य भाग है।

यहाँ मेरा पूरा वेब पेज है, बस इसे बदलें…

ऊपर अपने स्वयं के कोड के साथ और अपनी रिमोट कंट्रोल छवियों के साथ इसे अपनी वेब निर्देशिका (/var/www on linux) में Remote.php के रूप में सहेजें। अपनी खुद की छवियों के लिए लाइनें बदलें:

"https://www.w3.org/TR/html4/loose.dtd">

Arduino एलईडी नियंत्रण

चरण 7: रिमोट कंट्रोल कोड को अपने Arduino पर अपलोड करें

अपने Arduino पर रिमोट कंट्रोल कोड अपलोड करें
अपने Arduino पर रिमोट कंट्रोल कोड अपलोड करें

एक नया स्केच बनाएं और उसमें निम्नलिखित कोड पेस्ट करें: /* * WebRemote * एक IR LED को Arduino PWM पिन 3 से जोड़ा जाना चाहिए। * संस्करण 0.1 जुलाई, 2009 * यह कोड कॉपीराइट ग्रेगरी फेंटन, https://labby.co। uk/2012/02/irremote-arduino-experimentation/ * IRremote लाइब्रेरी कॉपीराइट 2009 केन शिरिफ, https://arcfn.com */ #include टेम्प्लेट इनलाइन प्रिंट और ऑपरेटर <<(प्रिंट और obj, T arg) { obj.print(arg)); वापसी ओबीजे; } बूलियन समाप्त = झूठा; डेटा में चार [६४]; // उपयुक्त बाइट इंडेक्स के रूप में आकार = 0; #define EOP "\n" आईरसेंड भेजें; शून्य सेटअप () {Serial.begin (९६००); सीरियल << "सीरियल पोर्ट इनिशियलाइज़्ड" << EOP; } शून्य लूप () {स्ट्रिंग pch, sType, sTemp; चार इनचर, एसटेस्ट, के; इंट एसबिट्स; लंबा हेक्स; इंट आई, जे; जबकि (1) { जबकि (सीरियल उपलब्ध ()> 0) {इनचार = सीरियल.रीड (); अगर (सूचकांक == 0) {पीसीएच = ""; } if(inChar == '\r' || inChar == '\n' || inChar == '/') // EOP {समाप्त = सच; सूचकांक = 0; टूटना; } और { अगर (सूचकांक <64) // सरणी आकार {pch + = inChar; सूचकांक++; } } } अगर (समाप्त) {// यहां डेटा में डेटा पार्स करें … pch.toUpperCase (); मैं = pch.indexOf('') != -1 ? pch.indexOf (''): pch.indexOf (','); sType = pch.substring(0, i); मैं++; // स्किप ओवर ',' या '' pch.lastIndexOf(''): pch.lastIndexOf(', '); // j अब हेक्स sHex = 0 के बाद ',' या '' की ओर इशारा करता है; sTemp = pch.substring(i, j); if(sTemp.substring(0, 2) == String("0X")) sTemp = sTemp.substring(2); for(i = 0; i <sTemp.length(); i++) { k = sTemp; if(!((k >= '0' && k = 'A' && k <= 'F')) ब्रेक; हेक्स *= 16; if(k >= '0' && k <= '9') sHex += (k - '0'); और अगर (के >= 'ए' && के <= 'एफ') एसएचएक्स += ((के - 'ए') + 10); if(!((k >= '0' && k = 'A' && k <= 'F')) ब्रेक; } sTemp = pch.substring(j+1); एसबिट्स = 0; for(i = 0; i <sTemp.length(); i++) { k = sTemp; एसबिट्स *= 10; if(k >= '0' && k <= '9') sBits += (k - '0'); } if(sType.length()>0) { सीरियल << pch << EOP << "कोड टाइप:"<< sType << "Hex:"; सीरियल.प्रिंट (sHex, HEX); सीरियल << "बिट्स:" << एसबिट्स; } SendIt (sType, sHex, sBits); पीएचसी = ""; समाप्त = 0; } } } शून्य सेंड इट (स्ट्रिंग एस टाइप, लॉन्ग एसएचएक्स, इंट एसबिट्स) { के लिए (इंट आई = 0; आई < 2; आई ++) { अगर (एस टाइप। बराबर (स्ट्रिंग ("आरसी 6"))) { irsend.sendRC6 (sHex, एसबिट्स); } और अगर (sType.equals(String("RC5"))) {irsend.sendRC5(sHex, sBits); } और अगर (sType.equals(String("SONY"))) {irsend.sendSony(sHex, sBits); } और अगर (sType.equals(String("NEC"))) {if (!i) irsend.sendNEC(sHex, sBits); } और अगर (sType.equals(String(""))) {Serial << "Delaying" << EOP; देरी (450); } देरी (30); } }

चरण 8: अपने कंप्यूटर से वेब सर्वर से कनेक्ट करें

अपने कंप्यूटर से वेब सर्वर से कनेक्ट करें
अपने कंप्यूटर से वेब सर्वर से कनेक्ट करें

.. या फोन या एंड्रॉइड या आईपैड या जो कुछ भी: अपने ब्राउज़र में https://webserver आईपी पते/remote.php पर जाएं मेरे लिए पता https://192.168.0.9/remote.php है लेकिन आपका निस्संदेह अलग होगा। यदि सब कुछ काम कर रहा है तो आपको अपने रिमोट कंट्रोल की एक तस्वीर देखनी चाहिए जिसमें बटन हैं जिन पर आप क्लिक कर सकते हैं।

चरण 9: वैकल्पिक चरण: उपयोग में आसान बनाने के लिए अपनी होस्ट फ़ाइल को संपादित करें

वैकल्पिक चरण: उपयोग में आसान बनाने के लिए अपनी होस्ट फ़ाइल को संपादित करें
वैकल्पिक चरण: उपयोग में आसान बनाने के लिए अपनी होस्ट फ़ाइल को संपादित करें

एक कदम जो मैंने किया वह था मेरी होस्ट फ़ाइल (/etc/linux पर होस्ट, C:\Windows\System32\Drivers\etc\hosts विंडोज़ पर) को संपादित करना। ध्यान दें कि इस फ़ाइल को केवल एक प्रशासनिक कमांड प्रॉम्प्ट (विंडोज़) में संपादित किया जा सकता है या su (linux) द्वारा लाइन जोड़ें ip.add.re.ss रिमोट सर्वर आईपी पते के साथ ip.add.re.ss को बदलें और फ़ाइल को सहेजें. आपको हर उस डिवाइस पर ऐसा करने की आवश्यकता होगी जिसे आप संक्षिप्त नाम के साथ वेब पेज तक पहुंचना चाहते हैं। अब आप रिमोट को https://remote/remote.php के साथ एक्सेस कर सकते हैं यह मेरा पहला उचित निर्देश है, सौम्य रहें और अगर कोई समस्या है तो मुझे बताएं ताकि मैं उन्हें ठीक कर सकूं।

सिफारिश की: