विषयसूची:

मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण: 5 चरण (चित्रों के साथ)
मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण: 5 चरण (चित्रों के साथ)

वीडियो: मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण: 5 चरण (चित्रों के साथ)

वीडियो: मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण: 5 चरण (चित्रों के साथ)
वीडियो: Lucknow में बिजली चोरी रोकने के लिए किया जा रहा drones का इस्तेमाल! पकड़ी गईं आंटी! 2024, जुलाई
Anonim
मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण
मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण
मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण
मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण
मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण
मुझ पर प्रकाश डालो! एक रीयलटाइम क्रॉस-प्लेटफ़ॉर्म एलईडी पट्टी नियंत्रण

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

सर्वर Node.js में लिखा गया है और इसके लिए क्रॉस-प्लेटफ़ॉर्म करने योग्य है।

मेरे उदाहरण में, मैं लंबे समय तक उपयोग के लिए रास्पबेरी पाई 3 बी का उपयोग करता हूं, लेकिन प्रदर्शन और डिबगिंग के लिए मेरा विंडोज पीसी।

4pin-स्ट्रिप को एक Arduino नैनो टाइप-बोर्ड द्वारा नियंत्रित किया जाता है, जो स्ट्रिप के संबंधित रंग-पिन में +12VDC को स्विच करने वाले तीन ट्रांजिस्टर को PWM सिग्नल भेजने के लिए क्रमिक रूप से दिए गए कमांड को निष्पादित करता है।

लाइटमेअप! सिस्टम अपने स्वयं के तापमान की भी जांच करता है, एक बार जब यह 60 डिग्री सेल्सियस (140 डिग्री फारेनहाइट) से ऊपर हो जाता है तो यह सर्किट जीवनकाल में सुधार के लिए खुद को ठंडा करने के लिए, आवरण में निर्मित दो 12 वीडीसी कंप्यूटर प्रशंसकों को चालू करता है।

LightMeUp की एक और विशेषता! बॉम्बे-नीलम जिन की बोतल को रोशन करना है, लेकिन यह इस निर्देश का फोकस नहीं है।

मन लगाकर पढ़ाई करो:)

आपूर्ति

  • Arduino नैनो (या कोई अन्य ATmega328/उच्च-आधारित माइक्रोकंट्रोलर)
  • रास्पबेरी पाई 3 मॉडल बी Node.js के साथ स्थापित (या कोई अन्य कंप्यूटर)
  • 12 वी आरजीबी 4-पिन एलईडी पट्टी
  • 12 वी 3 ए बिजली की आपूर्ति
  • जम्पर केबल (यदि आप ब्रेडबोर्ड का उपयोग करते हैं तो पुरुष-पुरुष, निश्चित रूप से)
  • ब्रेडबोर्ड (वैकल्पिक)
  • 2 12 वी डीसी कंप्यूटर प्रशंसक (वैकल्पिक)
  • 3x TIP120 डार्लिंगटन ट्रांजिस्टर w / हीटसिंक (4 यदि आप कूलिंग पंखे शामिल करना चाहते हैं)
  • 2 स्थिति एलईडी लाल और हरा (वैकल्पिक)
  • 6, 7K NTC तापमान-आधारित रोकनेवाला + 6, 7K रोकनेवाला (वैकल्पिक)
  • यूएसबी-मिनी से यूएसबी 2.0 डेटा केबल (रास्पबेरी पाई के लिए Arduino के साथ संचार करने के लिए)
  • बाहरी रूप से संचालित यूएसबी-हब (वैकल्पिक, केवल रास्पबेरी पाई के लिए)

चरण 1: सिस्टम को समझें

सिस्टम को समझें
सिस्टम को समझें

मुझ पर प्रकाश डालो! बहुत ही सरल इलेक्ट्रॉनिक सर्किटरी पर आधारित है।

हमारे पास किसी प्रकार का कंप्यूटर है (इस मामले में एक रास्पबेरी पाई) जो हमारे माइक्रोकंट्रोलर बोर्ड के साथ क्रमिक रूप से संचार करता है। यह बोर्ड तब "आरजीबी (255, 255, 255)" जैसे विशिष्ट सीरियल कमांड निष्पादित करता है जो हमारी एलईडी-पट्टी को सफेद कर देगा।

एक बार जब हमें अपने 4pin एलईडी-स्ट्रिप के लिए आवश्यक RED, GREEN और BLUE के लिए हमारे तीन मान मिल गए, तो हम अपने TIP120 ट्रांजिस्टर को PWM सिग्नल की आपूर्ति करने के लिए एनालॉगराइट (पिन, वैल्यू) निष्पादित करते हैं।

यह पीडब्लूएम सिग्नल ट्रांजिस्टर को संबंधित रंग पिन को स्विच करने की अनुमति देता है जो कलेक्टर जमीन से जुड़ा होता है, एक विशिष्ट डिग्री या पूरी तरह से चालू / बंद होता है। हाँ, बहुत सारे "से":)

एलईडी स्ट्रिप्स के रंग पिन में तीन ट्रांजिस्टर आउटपुट को मिलाकर हम मूल रूप से कोई भी रंग बना सकते हैं जो हम चाहते हैं!

अब इस समझ के साथ, हम इस परियोजना की सबसे बड़ी चुनौती, websocketserver और हमारे Arduino से इसके सीरियल कनेक्शन पर हमला कर सकते हैं।

चरण 2: WebSocketServer लिखना

WebSocketServer लिखना
WebSocketServer लिखना

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

कृपया ध्यान दें, कि रीयलटाइम संचार निश्चित रूप से असंभव है, इसमें हमेशा कम से कम कुछ मिलीसेकंड की देरी शामिल होगी, लेकिन मानव आंखों के लिए यह रीयलटाइम के रूप में काफी महत्वपूर्ण है।

यदि आप Node.js का उपयोग करते हैं जैसे मैंने किया तो इसे socket.io लाइब्रेरी का उपयोग करके आसानी से प्राप्त किया जा सकता है। हालाँकि, आप हमेशा अपनी पसंदीदा प्रोग्रामिंग भाषा से चिपके रह सकते हैं।

हम एक वेबसोकेट कनेक्शन के साथ काम करेंगे जो हमें इनपुट डेटा को स्थानांतरित करने की अनुमति देता है जैसे कि आप किस रंग में एलईडी-स्ट्रिप सेट करना चाहते हैं, या स्थिति डेटा जैसे "एलईडी ऑन" बिना रिफ्रेश किए द्विदिश रूप से।

सर्वर के पास एक और बहुत महत्वपूर्ण विशेषता होनी चाहिए, लेकिन इसकी आवश्यकता नहीं है, एक साधारण लॉगिन है। मैंने अपना लॉगिन एक साधारण उपयोगकर्ता नाम और पासवर्ड फ़ील्ड पर आधारित किया है। जानकारी के इन टुकड़ों को तब सर्वर के /लॉगिन रूट पर पोस्ट किया जाता है, जो तब उपयोगकर्ता नाम की तुलना उपयोगकर्ताओं की सूची (.txt फ़ाइल) और इसके SHA256-एन्क्रिप्टेड रूप में संबंधित पासवर्ड से करता है। जब आप अपनी सबसे आरामदायक सीट पर अपने पसंदीदा पेय का आनंद लेते हैं, तो आप नहीं चाहते कि आपके पड़ोसी आपकी एलईडी पट्टी के साथ खिलवाड़ करें, है ना?

अब सर्वर का दिल आता है, धारावाहिक संचार।

आपका सर्वर क्रमिक रूप से संचार करने में सक्षम होना चाहिए - Node.js में इसे "सीरियलपोर्ट" लाइब्रेरी का उपयोग करके एक पोर्ट खोलकर प्राप्त किया जा सकता है। लेकिन पहले सर्वर को होस्ट करने वाले अपने कंप्यूटर पर अपने arduino पोर्ट का नाम निर्धारित करें। आपके ऑपरेटिंग सिस्टम के आधार पर, पोर्ट के अलग-अलग नाम होंगे, अर्थात। विंडोज़ पर इन बंदरगाहों को "COMx" बंदरगाहों का नाम दिया गया है, जबकि लिनक्स पर उन्हें "/ dev/ttyUSBx" नाम दिया गया है, जहां x यूएसबी पोर्ट की संख्या है।

चरण 3: सीरियल कमांड का एक प्रोटोकॉल स्थापित करें

सीरियल कमांड का एक प्रोटोकॉल स्थापित करें
सीरियल कमांड का एक प्रोटोकॉल स्थापित करें

ऊपर की तस्वीर में, आप आरजीबी नियंत्रण के लिए जिम्मेदार वास्तविक Arduino IDE कोड देखते हैं। इस चरण का लक्ष्य है, अपने स्वयं के लिखित सर्वर और Arduino बोर्ड को एक-दूसरे से सफलतापूर्वक बात करना।

एक बार जब आप अपना सीरियल पोर्ट सफलतापूर्वक खोल लेते हैं, तो आपको बोर्ड को कमांड भेजने में सक्षम होना चाहिए जो आपकी इच्छाओं का ख्याल रखता है। उदाहरण के लिए, यदि हम HTML वेबपेज पर रंग बीनने वाले के ऊपर एक उंगली खींचते हैं, तो RGB कोड सर्वर को भेजा जाना चाहिए जो फिर इसे आपके Arduino पर भेजता है ताकि यह सेट किए गए मानों को संसाधित कर सके।

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

सिफारिश की: