विषयसूची:
- चरण 1: आपको क्या चाहिए, इससे पहले कि आपको क्या चाहिए
- चरण 2: आपको क्या चाहिए - हार्डवेयर
- चरण 3: आपको क्या चाहिए - सॉफ्टवेयर
- चरण 4: SQL सर्वर डेटाबेस
- चरण 5: ASP.NET सिग्नलआर हब वेब अनुप्रयोग
- चरण 6: पायथन सिग्नलआर सर्विस क्लाइंट
- चरण 7: Arduino UNO IR ट्रांसमिशन स्केच और कोड
- चरण 8: सिस्टम को जोड़ना और परीक्षण करना
- चरण 9: सिस्टम इन एक्शन
- चरण 10: स्वचालन प्रणाली और संबंधित सुधारों को बढ़ाना
- चरण 11: ज्ञात मुद्दे और सुरक्षा संबंधी चिंताएं
वीडियो: रास्पबेरी पाई-अरुडिनो-सिग्नलआर होम ऑटोमेशन हब: 11 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
यहाँ और यहाँ प्रकाशित मेरे कुछ प्रस्ताव IBLE के बाद, यह परियोजना एक कार्यात्मक होम ऑटोमेशन हब के मूल संस्करण के निर्माण की दिशा में पहला कदम उठाती है।
मैंने यह समझने के प्रयास में कई अलग-अलग तकनीकों का उपयोग किया है कि मैं उन सभी चीजों का उपयोग कैसे कर सकता हूं जो मैंने अतीत में सीखी हैं और नई चीजें जो मैं दिन की प्रगति के रूप में सीखना जारी रखता हूं।
इसलिए, इस ऑटोमेशन हब में निम्नलिखित घटक शामिल हैं:
एक SQL सर्वर 2012 डेटाबेस जो:
- एक अद्वितीय "कोड कुंजी" के साथ एक तालिका में पूर्व-निर्धारित इन्फ्रारेड (IR) कोड की एक सूची संग्रहीत करता है
- कोड कुंजियों को सहज रूप से (उपयोगकर्ता द्वारा) नाम दिया जाता है ताकि उनके संबद्ध IR कोड के उद्देश्य की पहचान की जा सके
एक रीयल-टाइम ASP. NET SignalR हब वेब अनुप्रयोग जो:
- HTML क्लाइंट का सामना करने वाले उपयोगकर्ता से कमांड के रूप में "कोड कीज़" की प्रतीक्षा करता है और प्राप्त करता है
- प्राप्त होने पर, SQL डेटाबेस से जुड़ता है और आपूर्ति किए गए कोड कुंजी का उपयोग करके एक IR कोड पुनर्प्राप्त करता है
- पुनर्प्राप्त IR कोड को Python SignalR क्लाइंट को रिले करता है
HTML सिग्नलआर डैशबोर्ड क्लाइंट का सामना करने वाला एक उपयोगकर्ता जो:
- jQuery सिग्नलआर क्लाइंट एपीआई के माध्यम से हब के लिए एक अद्वितीय कोड कुंजी का संचार करता है
- डैशबोर्ड पर प्रत्येक बटन SQL डेटाबेस तालिका में दर्ज एक अद्वितीय कोड कुंजी का प्रतिनिधित्व करेगा
रास्पबेरी पाई 2.0 पर चलने वाला एक पायथन सिग्नलआर पृष्ठभूमि सेवा अनुप्रयोग जो:
- हब से कमांड के रूप में IR कोड प्राप्त करता है
- IR कोड में सीमांकक की तलाश करता है और बहुत लंबे कोड को खंडों में तोड़ता है
- सीरियल पोर्ट पर Arduino के लिए संचार करता है और उत्तराधिकार में प्रत्येक खंड को लिखता है
एक Arduino IR ट्रांसमीटर स्केच जो:
- सीरियल पोर्ट पर प्रत्येक आईआर कोड सेगमेंट की प्रतीक्षा करता है और प्राप्त करता है
- कोड सेगमेंट को IR कोड बफर ऐरे में असेंबल करता है
- IRLib Arduino लाइब्रेरी का उपयोग करके बफर को IR ट्रांसमिट कमांड में पैकेज करता है
यदि लक्ष्य उपकरण IR ट्रांसमीटर के आसपास के क्षेत्र में है, तो उपकरण Arduino द्वारा प्रेषित IR सिग्नल पर प्रतिक्रिया कर सकता है (हो सकता है)
ध्यान दें
हालांकि, इस प्रदर्शन में मैं जिस लक्ष्य उपकरण का उपयोग करता हूं, वह IR संकेतों पर प्रतिक्रिया करता है, आप मेरे अन्य IBLE के इस खंड को उन कारणों से पढ़ना चाह सकते हैं, जिनके कारण मैं कहता हूं कि उपकरण IR सिग्नल पर प्रतिक्रिया कर सकता है।
रोल करने का समय।
चरण 1: आपको क्या चाहिए, इससे पहले कि आपको क्या चाहिए
यह निर्देश पूर्व में किए गए कुछ कार्यों के साथ शुरू होता है, जिसके परिणामस्वरूप मेरा अंतिम IBLE भी हुआ।
इसलिए, इससे पहले कि हम इस IBLE के लिए जो आवश्यक हैं, उसमें कदम रखें, यह अनुशंसा की जाती है कि आप इस निर्देश को कुछ पृष्ठभूमि के लिए पढ़ें:
- Arduino IRLib इन्फ्रारेड लाइब्रेरी की स्थापना की गई थी
- इस IBLE में उपयोग किए गए IR कोड को IR रिसीवर का उपयोग करके कैसे कैप्चर किया गया?
- आईआर ट्रांसमीटर के माध्यम से लक्षित उपकरण को नियंत्रित करने के लिए कैप्चर किए गए आईआर कोड का उपयोग कैसे किया गया था
इस IBLE के पूरा होने के बाद, मैंने एक ASP. NET IR कोड रिकॉर्डर वेब एप्लिकेशन को तैनात किया जो:
- एक वेब फॉर्म के माध्यम से इनपुट के रूप में एक सहज रूप से नामित कोड कुंजी के साथ कैप्चर किए गए IR कोड को स्वीकार करें
- Arduino Uno की सीरियल बफर सीमा के तहत रहने के लिए बहुत लंबे IR कोड को 64 वर्णों से कम के खंडों में तोड़ें
- कोड का अंतिम खंड "ई" के साथ पूर्व-निर्धारित होगा जो Arduino को इंगित करता है कि उसे कोड का अंतिम खंड प्राप्त हुआ है
- प्रत्येक खंड को एक लंबी स्ट्रिंग में वापस इकट्ठा करने से पहले एक पाइप सीमांकक द्वारा अलग किया जाएगा
- अंत में, खंडित IR कोड अपनी कोड कुंजी के साथ SQL Server 2012 डेटाबेस में संग्रहीत किया गया था
यह SQL डेटाबेस है जो इस IBLE में विस्तृत होम ऑटोमेशन हब के घटकों में से एक बनाता है।
ध्यान दें
आईआर कोड रिकॉर्डर वेब एप्लिकेशन निम्नलिखित कारणों से यहां चर्चा का हिस्सा नहीं है:
- आप Arduino Sketch का उपयोग करके कोड को मैन्युअल रूप से कैप्चर कर सकते हैं, उन्हें पाइप-सीमांकित अनुभागों में विभाजित कर सकते हैं और एक विस्तृत वेब एप्लिकेशन बनाने के बिना उन्हें डेटाबेस में संग्रहीत कर सकते हैं।
- इस IBLE के विपरीत, IR रिकॉर्डर Arduino से रास्पबेरी पाई तक रिवर्स संचार पर ध्यान केंद्रित करता है
इसलिए इस परियोजना पर विवरण एक अन्य IBLE के लिए एक विषय होगा
चरण 2: आपको क्या चाहिए - हार्डवेयर
एक कामकाजी रास्पबेरी पाई 2.0 - मैं उबंटू मेट को स्थापित करने की सलाह देता हूं क्योंकि इसमें ओपनलिबर ऑफिस सहित सुविधाओं का एक समृद्ध सेट है, जो कि रास्पबेरी पाई पर, इस निर्देश को दस्तावेज करने में अपरिहार्य था।
इसके अलावा, Pi, आपको निम्नलिखित बाहरी की आवश्यकता होगी:
- Arduino Uno प्रोटोटाइप प्लेटफॉर्म या क्लोन
- एक आईआर ट्रांसमीटर एलईडी - मैंने Amazon.com से थ्री लेग्स नाम के एक ब्रांड का इस्तेमाल किया
- ३३० या २२० ओम रेसिस्टर्स - मैंने २२० (रंग कोड रेड-रेड-ब्राउन) का उपयोग किया क्योंकि मेरे पास कई काम थे
- सामान्य ब्रेड बोर्ड, कनेक्टर, और Arduino पर्यावरण के साथ एक पीसी स्थापित
- एक परीक्षण उम्मीदवार - जैसे रिमोट के साथ सर्वव्यापी सैमसंग एलईडी मॉनिटर
चरण 3: आपको क्या चाहिए - सॉफ्टवेयर
सभी टुकड़ों को एक साथ लाने के लिए, निम्नलिखित सॉफ़्टवेयर सेटअप को स्थापित और चलाना होगा:
रास्पबेरी पाई पर, आपको निम्नलिखित स्थापित करने की आवश्यकता होगी:
- Arduino IDE - स्केच बनाने और इसे UNO में फ्लैश करने के लिए उपयोग किया जाता है
- Arduino के लिए पायथन मॉड्यूल - UNO और Pi. के बीच सीरियल संचार के लिए
- पायथन सिग्नलआर क्लाइंट लाइब्रेरी - आप यहां संलग्न निर्देशों का उल्लेख कर सकते हैं
निम्नलिखित विकास वातावरण के साथ एक विंडोज मशीन स्थापित:
- सिग्नलआर हब और वेब क्लाइंट एप्लिकेशन बनाने के लिए माइक्रोसॉफ्ट विजुअल स्टूडियो एक्सप्रेस 2013 का मुफ्त संस्करण
- बैक-एंड डेटाबेस को डिज़ाइन और बनाने के लिए SQL Server 2012 एक्सप्रेस का निःशुल्क संस्करण
एक विंडोज़ इंटरनेट सूचना सर्वर (आईआईएस) होस्टिंग वातावरण:
- सिग्नलआर हब और वेब क्लाइंट के निर्माण और परीक्षण के बाद, इसे स्थानीय आईआईएस सर्वर पर तैनात करने की आवश्यकता होगी
- मेरे मामले में, मैं अपने होम नेटवर्क पर आईआईएस के साथ विंडोज 7 चलाने वाले पुराने लैपटॉप का उपयोग करने की योजना बना रहा हूं
ध्यान दें
सभी निर्देश Python 2.7.x संस्करण पर लागू होते हैं। संस्करण 3.0 को फिर से लिखने की आवश्यकता हो सकती है
चरण 4: SQL सर्वर डेटाबेस
संलग्न योजनाबद्ध इस एप्लिकेशन में उपयोग किए गए मूल SQL सर्वर डेटाबेस की संरचना को दिखाता है और इसमें केवल दो टेबल होते हैं।
टेबल ऑटोहबकोड
इस तालिका में दो महत्वपूर्ण स्तंभ हैं:
AutoCodeKey - कोड कुंजी का उपयोगकर्ता के अनुकूल नाम संग्रहीत करता है
प्रत्येक कोड कुंजी एक स्वचालन क्लाइंट द्वारा प्रेषित की जाती है - हमारे मामले में, एक वेब पेज से एक HTML बटन
AutoCodeVal - कच्चे IR कोड अनुक्रम को संग्रहीत करता है
यह वास्तविक आईआर कोड है जो सिग्नलआर हब द्वारा प्रतिक्रिया में क्लाइंट को वापस प्रेषित किया जाता है
इस मामले में, हब के साथ निरंतर संचार में एक पायथन क्लाइंट IR कोड अनुक्रम प्राप्त करता है और इसे सीरियल पोर्ट पर Arduino UNO तक पहुंचाता है
टेबल ऑटोहबलॉग
- ऑटोमेशन क्लाइंट द्वारा अनुरोधित कोड को लॉग करता है।
- यह ट्रैक करने का एक उपाय है कि सिस्टम का उपयोग किसने और कब किया, और किस कोड का अनुरोध किया गया था
जैसा कि उल्लेख किया गया है, मैंने अपनी पसंद के डेटाबेस प्लेटफॉर्म के रूप में SQL Server 2012 का उपयोग किया है। आप इस सरल डिज़ाइन को किसी भिन्न डेटाबेस प्लेटफ़ॉर्म जैसे MySQL, Oracle, आदि पर फिर से बना सकते हैं।
फिर भी, इस डेटाबेस को बनाने के लिए SQL स्क्रिप्ट यहाँ संलग्न की गई है।
ध्यान दें
- सिग्नलआर हब के लिए कोड को SQL सर्वर 2012 डेटाबेस से कनेक्ट करने के लिए डिज़ाइन किया गया है
- एक अलग डेटाबेस के साथ काम करने का मतलब होगा हब को एक अलग डेटाबेस ड्राइवर का उपयोग करने के लिए बदलना
चरण 5: ASP. NET सिग्नलआर हब वेब अनुप्रयोग
ASP. NET सिग्नलआर हब वेब एप्लिकेशन में संयुक्त रूप से निम्नलिखित घटक शामिल हैं जैसा कि संलग्न योजनाबद्ध में दर्शाया गया है:
खंड 1 - सिग्नलआर हब जो क्लाइंट से अनुरोध प्राप्त करता है और प्रतिक्रिया देता है
सेक्शन 2, 4 - HTML क्लाइंट वेब पेज और इसकी स्टाइल शीट जो सामूहिक रूप से ऑटोमेशन सिस्टम का फ्रंट एंड बनाती है और ऑटोमेशन हब को कमांड जारी करती है
धारा 3 - HTML क्लाइंट द्वारा ऑटोमेशन हब से संचार करने के लिए उपयोग किए जाने वाले jQuery सिग्नलआर एपीआई
धारा 5 - सिग्नलआर हब सीधे डेटाबेस से संचार नहीं करता है। यह एंटिटी फ्रेमवर्क का उपयोग करके उत्पन्न मध्यवर्ती वर्गों के माध्यम से ऐसा करता है
ये कक्षाएं फ्रंट एंड एप्लिकेशन से डेटाबेस विवरण को सार करती हैं
धारा 6 - डेटाबेस सेवा वर्ग जो इकाई फ्रेमवर्क कक्षाओं का उपयोग करके SQL डेटाबेस (पहले वर्णित) पर रीड-राइट ऑपरेशन करने में मदद करता है
ASP. NET और SignalR Microsoft प्रौद्योगिकियाँ हैं और यह ट्यूटोरियल आपको बताएगा कि कैसे एक साधारण SignalR एप्लिकेशन बनाया और तैनात किया जाता है।
मैंने यहां जो बनाया है वह इस ट्यूटोरियल से प्राप्त मूलभूत बातों पर आधारित है। तैनात होने पर, एप्लिकेशन दूसरी तस्वीर में दिखाए गए वेब पेज के समान दिखना चाहिए
कोड पर ध्यान दें
कोड के स्ट्रिप्ड डाउन संस्करण वाली एक ज़िप फ़ाइल संलग्न की गई है
फ़ोल्डर संरचना जैसा कि दृश्य में दिखाया गया है - हालांकि, अनुलग्नक के आकार को कम करने के लिए सभी ढांचे वर्गों और jQuery स्क्रिप्ट को हटा दिया गया है
अनुशंसा यह है कि इस कोड को एक गाइड के रूप में उपयोग किया जाए क्योंकि जब आप ऊपर दिए गए ट्यूटोरियल लिंक का पालन करके एक नया सिग्नलआर वेब एप्लिकेशन बनाते हैं, तो नवीनतम jQuery लाइब्रेरी और ASP. NET फ्रेमवर्क क्लासेस स्वचालित रूप से जुड़ जाएंगे।
साथ ही, index.html पेज में jQuery स्क्रिप्ट के संदर्भों को jQuery सिग्नलआर क्लाइंट लाइब्रेरी के नवीनतम संस्करण को प्रतिबिंबित करने के लिए बदलना होगा जो आपके वेब एप्लिकेशन का निर्माण करते समय स्वचालित रूप से जुड़ जाएगा।
अंत में, वेब.कॉन्फिग* नाम की फाइलों में अपने डेटाबेस से मिलान करने के लिए कनेक्शन स्ट्रिंग को बदलना होगा।
चरण 6: पायथन सिग्नलआर सर्विस क्लाइंट
जबकि HTML सिग्नलआर क्लाइंट एक फ्रंट फेसिंग यूजर इंटरफेस है, पायथन क्लाइंट एक बैक एंड सर्विस एप्लिकेशन है जिसका मुख्य कार्य हब द्वारा प्रेषित आईआर कोड प्राप्त करना है और इसे सीरियल संचार पर Arduino UNO को रूट करना है।
संलग्न कोड स्व-व्याख्यात्मक है और इसकी कार्यक्षमता का वर्णन करने के लिए पर्याप्त रूप से प्रलेखित है।
जैसा कि समग्र स्क्रीन शॉट में दिखाया गया है, HTML क्लाइंट और पायथन सर्विस क्लाइंट सिग्नलआर हब के माध्यम से निम्नानुसार संवाद करते हैं:
- स्वचालन प्रणाली का उपयोगकर्ता एक बटन क्लिक के माध्यम से हब को एक आदेश जारी करता है
- प्रत्येक बटन IR कुंजी कोड से जुड़ा होता है और जब क्लिक किया जाता है, तो यह कोड हब को प्रेषित किया जाता है
-
हब इस कोड को प्राप्त करता है, डेटाबेस से जुड़ता है और कच्चे IR सिग्नल कोड को पुनः प्राप्त करता है और इसे सभी जुड़े ग्राहकों को वापस भेजता है
उसी समय, हब AutoHubLog डेटाबेस तालिका में एक प्रविष्टि लॉग करता है जो कोड को रिकॉर्ड करता है और दूरस्थ क्लाइंट द्वारा अनुरोध किया गया दिनांक और समय
- पायथन सेवा क्लाइंट IR कोड प्राप्त करता है और इसे आगे की प्रक्रिया के लिए Arduino UNO को रिले करता है
चरण 7: Arduino UNO IR ट्रांसमिशन स्केच और कोड
Arduino सर्किट जैसा कि दृश्यों में दिखाया गया है, इस प्रणाली के लिए बहुत सरल है और इसलिए इसे संक्षेप में वर्णित किया गया है:
- रंगहीन IR LED को UNO पर डिजिटल पिन 3 से जोड़ा जाना चाहिए - यह IRLib Arduino लाइब्रेरी की आवश्यकता है
- IRLib लाइब्रेरी से संबंधित अनुभाग में रिमोट क्लोनिंग पर मेरे पहले के IBLE में कारणों का वर्णन किया गया है
- डिजिटल पिन 4 से जुड़ी ग्रीन एलईडी एक दृश्य संकेतक है जो तब रोशनी करता है जब यूएनओ को रास्पबेरी पाई पर चलने वाले पायथन क्लाइंट से आईआर कोड के सभी खंड प्राप्त होते हैं।
- यह एलईडी लाइट अप इस बात की पुष्टि करेगा कि रास्पबेरी पाई और यूएनओ के बीच सीरियल संचार काम कर रहा है
- सीरियल संचार को सक्षम करने के लिए, यूएनओ यूएसबी पोर्ट के माध्यम से रास्पबेरी पाई से जुड़ा है
- संलग्न Arduino Sketch को इसके कार्य का वर्णन करने के लिए पर्याप्त रूप से टिप्पणी की गई है
- कोड के शीर्ष पर टिप्पणी यह भी बताती है कि सर्किट को कैसे तार-तार करने की आवश्यकता है
ध्यान दें
व्यवहार में, Arduino और Pi को संयुक्त रूप से एक संचालित USB हब से जोड़ा जा सकता है जो Pi, Arduino को चलाने के लिए पर्याप्त मजबूत हो और IR LED के माध्यम से एक मजबूत संकेत भी प्रसारित कर सके।
चरण 8: सिस्टम को जोड़ना और परीक्षण करना
- अपने स्थानीय होम नेटवर्क पर एक इंटरनेट सूचना सर्वर (IIS) के लिए SQL Server 2012 डेटाबेस के साथ ASP. NET SignalR हब, HTML क्लाइंट का निर्माण और परिनियोजन
-
HTTP पर HTML सिग्नलआर क्लाइंट खोलकर वेब एप्लिकेशन तक पहुंचें
इस पेज का यूआरएल आमतौर पर https://yourComputer:port_number/ होगा।
-
कंट्रोल पैनल पर एक बटन पर क्लिक करें, और यदि एप्लिकेशन को सही तरीके से तैनात किया गया है, तो हब IR कोड को वापस करके और कंट्रोल पैनल से सटे ग्रे पैनल में प्रदर्शित करके जवाब देगा।
याद रखना! आपको IR रिसीवर लाइब्रेरी सेट करके और मेरे पिछले IBLE में वर्णित कोड को कैप्चर करके अपने डेटाबेस में कोड लोड करने होंगे।
-
USB पर Arduino को रास्पबेरी पाई से कनेक्ट करें - Pi पर Arduino IDE खोलें और सुनिश्चित करें कि UNO Pi के साथ संबंध स्थापित कर सकता है
ये Arduino ट्यूटोरियल लेख आपको इसे बहुत जल्दी प्राप्त करने में मदद करेंगे
-
पायथन कोड खोलें और अपने परिवेश पर लागू होने वाले निम्नलिखित परिवर्तन करें
- चरण 4 से प्राप्त आपके यूएनओ का सीरियल पोर्ट पता
- चरण 2 से आपके स्थानीय यूआरएल से मेल खाने के लिए सिग्नलआर हब का यूआरएल - इस उदाहरण में, यह https://yourComputer:port_number/signalr होगा
- अंत में, रास्पबेरी पाई पर Arduino IDE में Arduino Sketch खोलें और इसे UNO में फ्लैश करें
- सर्किट को नियंत्रित करने वाले उपकरण के पास सर्किट रखने वाले ब्रेड बोर्ड की स्थिति बनाएं - IR LED में उपकरण के IR रिसीवर पोर्ट के साथ दृष्टि की एक स्पष्ट रेखा होनी चाहिए
- Python IDLE टूल बार पर F5 बटन दबाकर रास्पबेरी पाई पर पायथन प्रोग्राम शुरू करें
- HTML क्लाइंट प्रोग्राम (चरण 2) पर कंट्रोल पैनल पर लौटें और एक बटन पर क्लिक करें (जैसे पावर ऑन या वॉल्यूम अप)
यदि सिस्टम सही ढंग से स्थापित किया गया है, तो आप अपने फोन या टैबलेट पर एचटीएमएल क्लाइंट पेज लाने और अपने एचटीएमएल क्लाइंट पेज पर बटन के साथ अपने उपकरण को नियंत्रित करने में सक्षम होना चाहिए।
चरण 9: सिस्टम इन एक्शन
ऊपर दिए गए दृश्य होम ऑटोमेशन सिस्टम को एक बार सेटअप होने के बाद कार्य करते हुए दिखाते हैं।
इस IBLE को प्रकाशित करने के बाद से, मैंने अपने VIZIO LED TV से कुछ IR कोड कैप्चर करके इंटरफ़ेस का विस्तार किया है
जैसा कि पहले दृश्य में फ़ैक्टरी टीवी रिमोट के साथ कंधे से कंधा मिलाकर दिखाया गया है, इस रिमोट के कुछ आवश्यक कार्यों को मेरे टैबलेट के माध्यम से एक्सेस किए गए वेब UI में बनाया गया है
बाद के दृश्य टैबलेट को अग्रभूमि में टीवी के साथ वेब इंटरफ़ेस से जारी आदेशों का जवाब देते हुए दिखाते हैं:
- पावर ऑफ कमांड - टीवी बंद हो जाता है
- पावर ऑन कमांड - टीवी चालू होता है और स्क्रीन पावर के रूप में "वी" लोगो दिखाई देता है
- म्यूट ऑन कमांड - एक हॉरिजॉन्टल बार स्पीकर के म्यूट के साथ आता है
सभी परीक्षणों में, टैबलेट स्क्रीन पर डैशबोर्ड के साथ ग्रे क्षेत्र क्लाइंट द्वारा जारी किए गए आदेश को प्रदर्शित करता है, और प्रतिक्रिया दूरस्थ सिग्नलआर हब द्वारा वापस भेजी जाती है
चरण 10: स्वचालन प्रणाली और संबंधित सुधारों को बढ़ाना
विभिन्न प्रणालियों से लिए गए अधिक कोड जोड़कर इस प्रणाली को बढ़ाया जा सकता है। जबकि यह हिस्सा आसान है, दो अन्य कारक हैं जिन पर आपको ध्यान देना होगा।
एन्हांसमेंट 1 (त्वरित): विभिन्न लंबाई के आईआर सिग्नल के साथ कार्य करना
-
एक ही निर्माता के दो उत्पादों के बीच भी विभिन्न प्रणालियों के IR कोड अलग-अलग लंबाई के होते हैं।
उदाहरण के लिए, इस मामले में, एलईडी टीवी के लिए IR कोड सरणी की लंबाई 67 है जबकि सैमसंग साउंड बार की लंबाई लगभग 87 है।
- जिसका अर्थ है, अगर मैंने पहले साउंड बार चालू किया, तो Arduino स्केच में IR बफ़र सरणी एक IR कोड अनुक्रम से भर जाएगी जिसमें 87 कोड होते हैं
- इसके बाद, अगर मैंने एलईडी टीवी चालू किया, तो यह आईआर बफर सरणी को केवल 67 कोड से भर देगा, लेकिन पिछले ऑपरेशन के शेष 20 कोड अभी भी आसपास होंगे
परिणाम? एलईडी टीवी चालू नहीं होता है क्योंकि आईआर कोड बफर पिछले ऑपरेशन से साफ नहीं किए गए अतिरिक्त 20 कोड से दूषित हो गया है!
फिक्स 1 (आसान तरीका, अनुशंसित नहीं)
Arduino स्केच को इस प्रकार बदलें:
निम्न फ़ंक्शन कॉल को लूप में बदलें () {} फ़ंक्शन
ट्रांसमिटआईआरकोड ();
संचारित करने के लिएआईआरकोड (सी);
उपरोक्त फ़ंक्शन के हस्ताक्षर में परिवर्तन करें:
शून्य ट्रांसमिटआईआरकोड (इंट कोडलेन) {// रॉबीयूएफ निरंतर कोडलेन आईआरट्रांसमीटर के साथ बदल दिया गया है। आईआरएसएंडरॉ:: भेजें (आईआरकोडबफर, कोडलेन, 38); }
हालांकि यह आसान है, सरणी वास्तव में पूरी तरह से साफ़ नहीं हो जाती है और इसलिए यह एक बहुत ही साफ समाधान नहीं है
फिक्स 2 (कठिन नहीं, अनुशंसित)
टिप्पणी अनुभाग के बाद, Arduino स्केच के शीर्ष पर एक अतिरिक्त चर घोषित करें:
अहस्ताक्षरित int EMPTY_INT_VALUE;
इसे सेटअप () फ़ंक्शन के शीर्ष पर जोड़ें:
// एक खाली अहस्ताक्षरित पूर्णांक चर की प्राकृतिक स्थिति को कैप्चर करेंEMPTY_INT_VALUE = IRCodeBuffer [0];
नीचे स्क्रॉल करें और ट्रांसमिटआईआरकोड () फ़ंक्शन के तुरंत बाद स्केच में एक नया फ़ंक्शन जोड़ें:
शून्य clearIRCodeBuffer(int codeLen){//सरणी से सभी कोड साफ़ करें//नोट: सरणी तत्वों को 0 पर सेट करना समाधान नहीं है! for(int i=1;i<=codeLen;i++){IRCodeBuffer[i-1]=EMPTY_INT_VALUE;}}
अंत में, लूप () फ़ंक्शन में निम्न स्थान पर उपरोक्त नए फ़ंक्शन को कॉल करें:
// रीसेट - सीरियल पोर्टक्लेयरआईआरकोडबफर (सी) पढ़ना फिर से शुरू करें;…
यह एक अधिक स्वच्छ दृष्टिकोण है क्योंकि यह वास्तव में IR बफ़र सरणी में उन सभी स्थानों को रीसेट करता है जो सबसे हाल के IR कोड सिग्नल द्वारा बिना कोई मौका छोड़े पॉप्युलेट किए गए थे।
एन्हांसमेंट 2 (अधिक शामिल): कुछ उपकरणों के लिए आईआर सिग्नल ट्रांसमिशन को दोहराना
कुछ उपकरणों को प्रतिक्रिया देने के लिए एक ही सिग्नल को कई बार प्रसारित करने की आवश्यकता होती है उदाहरण: इस मामले में, सैमसंग साउंड बार को एक ही कोड को 1 सेकंड के अंतराल के साथ दो बार भेजने की आवश्यकता होती है।
फिक्स इन कॉन्सेप्ट पर यहां चर्चा की गई है क्योंकि यह थोड़ा अधिक शामिल है और इसके परीक्षण की आवश्यकता होगी।
अर्दुनियो स्केच में रिपीट फंक्शनलिटी जोड़ने का मतलब यह होगा कि आपको हर बार अपने होम ऑटोमेशन सिस्टम में एक नया डिवाइस जोड़ने पर स्केच को फ्लैश करना होगा।
इसके बजाय, इस फिक्स को HTML सिग्नलआर क्लाइंट और पायथन सिग्नलआर सर्विस एप्लिकेशन में जोड़ने से समाधान बहुत अधिक लचीला हो जाता है। और यह सिद्धांत रूप में इस प्रकार प्राप्त किया जा सकता है:
हब को दोहराने की जानकारी संचारित करने के लिए सिग्नलआर एचटीएमएल क्लाइंट को संशोधित करें
index.html खोलें और रिपीट वैल्यू को HTML बटन में इस तरह एम्बेड करें:
value="SMSNG-SB-PWR-ON" बन जाएगा value="SMSNG-SB-PWR-ON_2_1000"
जहां, 2 रिपीट वैल्यू है और 1000 दो रिपीट सिग्नल के बीच मिलीसेकंड में डिले वैल्यू है
जब आप इस बटन पर क्लिक करते हैं, तो SignalR हब को Key Code+Repeat_Spec. प्राप्त होगा
केवल कुंजी कोड को पार्स करने के लिए सिग्नलआर सर्वर साइड विधियों को संशोधित करें:
- हमेशा की तरह डेटाबेस से IR कोड प्राप्त करने के लिए कुंजी कोड का उपयोग करें
- कुंजी कोड+Repeat_Spec और IRCode को सिंगलआर क्लाइंट को हमेशा की तरह ट्रांसमिट करें
रिपीट वैल्यू का उपयोग करके सिग्नल ट्रांसमिट करने के लिए पायथन सिग्नलआर सर्विस एप्लिकेशन को संशोधित करें:
पायथन क्लाइंट खोलें और निम्नलिखित दो कार्यों को संशोधित करें:
def print_command_from_hub(buttonId, cmdSrc):
# बटन आईडी मान से रिपीट कोड को पार्स करें
def TransmitToArduino(IRSignalCode, delim, endPrefix):
# वांछित आवृत्ति पर सिग्नल संचारित करने के लिए थोड़ी देर या लूप के लिए सेट करें
- इस तरह, Arduino को बार-बार फ्लैश करने की आवश्यकता नहीं है
- इस प्रणाली में कितनी भी बारंबार आवृत्तियाँ बनाई जा सकती हैं
- इसके अलावा, यदि आप यूएनओ का उपयोग कर रहे हैं, तो आपके स्केच के आकार की एक सीमा है!
चरण 11: ज्ञात मुद्दे और सुरक्षा संबंधी चिंताएं
जैसा कि पहली बार बनाए गए सिस्टम के मामले में है, इसमें कुछ समस्याएं हैं जो परीक्षण के दौरान सामने आईं।
समस्या 1: बटन क्लिक के बीच एक सेकंड से भी कम देरी के साथ तेजी से उत्तराधिकार में फायरिंग कमांड के कारण सिस्टम पहले दो बार प्रतिक्रिया देने के बाद अनुत्तरदायी हो गया।
- पायथन सिग्नलआर क्लाइंट को पुनरारंभ करना सिस्टम को सामान्य संचालन पर वापस लाता है
- पायथन सिग्नलआर क्लाइंट और अरुडिनो स्केच दोनों में अवांछित डिबग आउटपुट को हटाने और इन परीक्षणों को दोहराने के लिए तत्काल संकल्प हो सकता है
- देखने के लिए एक और जगह सीरियल संचार ही होगा - क्या बफर को तेजी से फ्लश करने के लिए कोड जोड़ना संभव होगा?
उस ने कहा, मैंने देखा है कि मेरा टीवी अपने कारखाने के रिमोट पर अच्छी प्रतिक्रिया नहीं देता है - इसलिए मेरे टीवी के आईआर संचार की प्रकृति भी एक योगदान कारक हो सकती है।
समस्या 2: HTML स्क्रीन लंबे समय तक निष्क्रियता के बाद बटन क्लिक का जवाब देना बंद कर देती है
आमतौर पर पेज को रीफ्रेश करने से इस व्यवहार का समाधान हो जाता है - हालांकि इस व्यवहार का कारण अभी भी स्पष्ट नहीं है
सुरक्षा चिंताएं
इस प्रणाली को केवल स्थानीय (घरेलू) नेटवर्क उपयोग के लिए डिज़ाइन किया गया है और इसमें इंटरनेट पर उपयोग करने के लिए आवश्यक सुरक्षा सुरक्षा उपाय नहीं हैं
इसलिए यह अनुशंसा की जाती है कि सिग्नलआर हब को आपके स्थानीय/घरेलू नेटवर्क पर स्थानीय मशीन पर तैनात किया जाए।
मेरे IBLE को पढ़ने के लिए धन्यवाद और मुझे आशा है कि आपको मज़ा आया होगा!
सिफारिश की:
रास्पबेरी पाई के साथ होम ऑटोमेशन रिले बोर्ड का उपयोग करना: 7 कदम
रिले बोर्ड का उपयोग करके रास्पबेरी पाई के साथ होम ऑटोमेशन: लोगों की एक बड़ी संख्या बहुत आराम चाहती है लेकिन उचित मूल्य पर। हम हर शाम जब सूरज ढलते हैं और अगली सुबह घरों में रोशनी करने में आलस महसूस करते हैं, तो फिर से लाइट बंद कर देते हैं या एयर कंडीशनर / पंखे / हीटर को चालू / बंद कर देते हैं जैसा कि पहले था
रास्पबेरी पाई मैट्रिक्स वॉयस और स्निप्स का उपयोग करके होम ऑटोमेशन (भाग 2): 8 कदम
रास्पबेरी पाई मैट्रिक्स वॉयस और स्निप्स का उपयोग कर होम ऑटोमेशन (भाग 2): रास्पबेरी पाई मैट्रिक्स वॉयस और स्निप्स का उपयोग करके होम ऑटोमेशन का अपडेट। इसमें PWM का उपयोग बाहरी LED और सर्वो मोटर को नियंत्रित करने के लिए किया जाता है, भाग 1 में दिए गए सभी विवरणhttps://www.instructables.com/id/Controlling-Light
रास्पबेरी पाई 3 बी में एचडीएमआई के बिना रास्पियन स्थापित करना - रास्पबेरी पाई 3बी के साथ शुरुआत करना - अपना रास्पबेरी पाई सेट करना 3: 6 कदम
रास्पबेरी पाई 3 बी में एचडीएमआई के बिना रास्पियन स्थापित करना | रास्पबेरी पाई 3बी के साथ शुरुआत करना | अपना रास्पबेरी पाई 3 सेट करना: जैसा कि आप में से कुछ लोग जानते हैं कि रास्पबेरी पाई कंप्यूटर काफी शानदार हैं और आप पूरे कंप्यूटर को सिर्फ एक छोटे बोर्ड पर प्राप्त कर सकते हैं। रास्पबेरी पाई 3 मॉडल बी में क्वाड-कोर 64-बिट एआरएम कोर्टेक्स ए 53 है। 1.2 गीगाहर्ट्ज़ पर क्लॉक किया गया। यह पाई 3 को लगभग 50
रास्पबेरी पाई 3 और एंड्रॉइड थिंग्स का उपयोग करके सरल होम ऑटोमेशन: 5 चरण (चित्रों के साथ)
रास्पबेरी पीआई3 और एंड्रॉइड थिंग्स का उपयोग करके सरल होम ऑटोमेशन: विचार एक “स्मार्ट होम” जिसमें एंड्रॉइड थिंग्स और रास्पबेरी पाई का उपयोग करके घरेलू उपकरणों को नियंत्रित किया जा सकता है। इस परियोजना में लाइट, फैन, मोटर आदि जैसे घरेलू उपकरणों को नियंत्रित करना शामिल है। आवश्यक सामग्री: रास्पबेरी पाई 3एचडीएमआई सीए
रास्पबेरी पाई के साथ सस्ता और प्रभावी होम ऑटोमेशन: 11 कदम (चित्रों के साथ)
रास्पबेरी पाई के साथ सस्ता और प्रभावी होम ऑटोमेशन: मैं हमेशा वायरलेस तरीके से रोशनी को नियंत्रित करने में सक्षम होना चाहता था, लेकिन वाणिज्यिक विकल्प आमतौर पर महंगे होते हैं। फिलिप्स ह्यू लाइट्स की कीमत लगभग $ 70 है, और वाईफाई से जुड़ी लाइटें भी महंगी हैं। यह ट्यूटोरियल आपको बताएगा कि अधिकतम पांच लाइट्स/लीटर को कैसे नियंत्रित किया जाए