विषयसूची:
- चरण 1: बीएलई-एलईडी-स्टिक के लिए हार्डवेयर
- चरण 2: इलेक्ट्रॉनिक्स असेंबली
- चरण 3: फ़ॉन्ट्स कैसे उत्पन्न करें?
- चरण 4: बीएलई नियंत्रण सॉफ्टवेयर
- चरण 5: पहला टेस्ट
- चरण 6: एनिमेशन का चयन करें
- चरण 7: आरजीबी नियंत्रण
- चरण 8: Text_Animation सेवा और स्थायी संग्रहण सेवा
- चरण 9: Android ऐप शुरू करें
- चरण 10: चित्रों में संदेश लिखें
वीडियो: ब्लूटूथ कम ऊर्जा के साथ एलईडी पॉवस्टिक: 10 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
यह निर्देशयोग्य आपको दिखाता है कि आरजीबी एलईडी के साथ एक लाइटराइटर स्टिक कैसे बनाया जाए जो आपके फोन से बीएलई के माध्यम से नियंत्रित हो!
अब जब अंधेरा शुरू हो गया है और आपको लंबी एक्सपोजर तस्वीरें लेने की जरूरत है: इस छड़ी के साथ आप तस्वीर में अपना हस्ताक्षर, या एक प्रेरक उद्धरण, या प्यार की घोषणा, एक क्यूआर-कोड, एक वेब-एड्रेस, या कई लिख सकते हैं अन्य चीजें…
इसमें विकास के कई विषय शामिल हैं:
- हार्डवेयर का निर्माण
- C. के साथ सरू BLE चिपसेट की प्रोग्रामिंग
- इसे नियंत्रित करने के लिए अपना खुद का ऐप बनाएं।
चरण 1: बीएलई-एलईडी-स्टिक के लिए हार्डवेयर
छड़ी के लिए आपको निम्नलिखित की आवश्यकता है:
- एक सरू BLE मॉड्यूल (CY8C4247LQI-BL583)
- एक WS2812b RGB-LED-Strip (64LEDs से 144Led प्रति मीटर स्ट्रिप)
- उपयुक्त धारक के साथ ली-आयन बैटरी (18650)
- एक पुशबटन
- ब्रेडबोर्ड का एक टुकड़ा
स्टिक का हार्डवेयर अपने आप में काफी सरल है।
सरू बीएलई मॉड्यूल ब्रेडबोर्ड के एक टुकड़े पर लगा होता है और एलईडी, बटन और बिजली की आपूर्ति सिर्फ इस ब्रेडबोर्ड से जुड़ी होती है।
सब कुछ लकड़ी की पट्टी के एक छोटे से टुकड़े पर लगाया, चिपकाया या खराब किया गया है, जिसे आंशिक रूप से एक स्पष्ट पॉलीएक्रिल ट्यूब में डाला जाता है। लेकिन ये जरूरी नहीं है। मैं एक ट्यूब के अंदर सब कुछ माउंट करना चाहता था, लेकिन मुझे बीएलई-मॉड्यूल और बैटरी के लिए उपयुक्त नहीं मिला, जो कि एलईडी की तुलना में काफी बड़ी है। पहले शॉट के लिए आपको एक्रिल-ट्यूब की जरूरत नहीं है।
चरण 2: इलेक्ट्रॉनिक्स असेंबली
यह चरण आपको दिखाता है कि बीएलई-मॉड्यूल कैसे लगाया जाता है और किस उद्देश्य के लिए किस पिन का उपयोग किया जाता है।
जैसा कि मेरे कई इंस्ट्रक्शंस में मैंने सरू बीएलई डेवलपमेंट किट का इस्तेमाल किया था। CY8CKIT-042-BLE क्विक स्टार्ट गाइड
यदि आप मॉड्यूल को अपने आप संचालित करना चाहते हैं, तो आपको केवल बिजली के स्रोत और उपयोग किए गए पिन कनेक्ट करने की आवश्यकता है।
हमारी परियोजना के लिए हम केवल एलईडी-पट्टी चलाने के लिए पिन 3.5 का उपयोग करते हैं। लेकिन निश्चित रूप से आप इसे PSoC क्रिएटर के साथ बदल सकते हैं।
जैसा कि आप पीसीबी की तस्वीर में देख सकते हैं, मैंने चिप के सभी कोनों में पिनहेड जोड़े लेकिन मैंने वीआरईएफ पिन को छोड़ दिया।
इस तरह मॉड्यूल ठीक से माउंट किया गया है और मॉड्यूल को गलत तरीके से कनेक्ट करना असंभव है।
चरण 3: फ़ॉन्ट्स कैसे उत्पन्न करें?
खैर, मुझे लगता है कि यह इस परियोजना के दौरान हल की गई सबसे दिलचस्प समस्याओं में से एक थी।
बेशक कोई सिर्फ एक नया फ़ॉन्ट डिज़ाइन कर सकता है और उसे एक सरणी में लिख सकता है, लेकिन यह वास्तव में बहुत काम है!
तो, मैंने क्या किया?
मुझे पता था कि मुझे हेक्स-बिटमैप रूपांतरण के लिए किसी प्रकार का ASCII चाहिए। और मैं भाग्यशाली था, क्योंकि मैं इस समस्या के साथ पहला नहीं था!:-)
सॉफ्टवेयर "जीएलसीडी फॉन्ट जेनरेटर" ने बिल्कुल सही काम किया:
क्योंकि मैं एलईडी-स्टिक का अधिकतम लाभ उठाना चाहता था, मैंने फ़ॉन्ट को बड़े आकार (~ 32 पिक्सेल) में आयात किया। यदि आप केवल बड़े अक्षरों का उपयोग करते हैं, तो आपको आरोही के बारे में परवाह करने की आवश्यकता नहीं है, जो आपके दृश्यमान फ़ॉन्ट-आकार को और कुछ पिक्सेल बढ़ा देगा। लेकिन मैंने बड़े अक्षरों और छोटे अक्षरों दोनों का उपयोग करना चुना। (https://en.wikipedia.org/wiki/Ascender_%28typography%29)
एक बार जब आप जीएलसीडी फ़ॉन्ट जनरेटर में एक फ़ॉन्ट आयात करते हैं तो आप इसे विभिन्न प्रारूपों में निर्यात करना चुन सकते हैं।
मैंने इसे सीधे हेडर में निर्यात करने की कोशिश की जो अच्छा था, लेकिन सही नहीं था। परिणामी निर्यात पहले 128-असीसी वर्ण के प्रत्येक वर्ण के लिए कॉलम के लिए बाइट-हेक्स-मानों के साथ शॉर्ट्स (16 बिट) की एक सरणी है। वह बिल्कुल नहीं जो मैं चाहता था या जिसकी मुझे आवश्यकता थी …
इसलिए मैंने सरणी को एक खुले कार्यालय कैल्क वर्कशीट में आयात किया। फिर मैंने चार में से तीन मानों पर "0x" हटा दिया और उन्हें एक 32 बिट लंबे मान में जोड़ दिया। मैंने व्यक्तिगत बाइट्स की गलत अंतहीनता भी तय की।
परिणामी सरणी 32 बिट मानों की एक एन * एम सरणी है। एम संबंधित वर्ण है और एन कॉलम हैं जो इस अक्षर का प्रदर्शन करते हैं। इस पहले मसौदे में सभी वर्णों में समान संख्या में कॉलम हैं, अर्थात सभी अक्षर समान रूप से चौड़े हैं, जैसे कि प्रसिद्ध कूरियर फ़ॉन्ट में। "i" या "t" जैसे छोटे अक्षर ऐसे दिखते हैं जैसे वे अंतरिक्ष में खो गए हों।
इसलिए मैंने प्रत्येक वर्ण की शुरुआत में यह बताने के लिए एक नया पैरामीटर जोड़ा कि इस वर्ण में कितने स्तंभ हैं या यह वर्ण कितना चौड़ा है। यह मेमोरी बचाता है और टेक्स्ट को बेहतर बनाता है!
चरण 4: बीएलई नियंत्रण सॉफ्टवेयर
बीएलई-सॉफ्टवेयर का सिद्धांत बहुत आसान है:
- शुरुआत में यह बस कुछ नहीं करता है।
- BLE के माध्यम से आप प्रदर्शित होने के लिए विभिन्न एनिमेशन या टेक्स्ट सेट कर सकते हैं।
- एक बार जब आप बटन दबाते हैं, तो एनीमेशन या टेक्स्ट के अलग-अलग कॉलम प्रदर्शित होते हैं।
- पाठ प्रदर्शित होने के बाद, यह फिर से प्रतीक्षा करना जारी रखता है।
बस सरू परियोजना को अपने पीएसओसी-निर्माता में आयात करें और यदि आप चाहें तो इसे संशोधित करें।
PSoC-4 में इतनी रैम और फ्लैश नहीं है कि वह फोंट की पूरी आरजीबी-छवियों को पकड़ सके। इसलिए मुझे पाठ से गतिशील रूप से एलईडी-सामग्री उत्पन्न करने का एक तरीका चाहिए। यह बहुत सीधा है, अब तक कुछ खास नहीं है। कई अक्षरों वाले पाठ से, एल्गोरिथ्म एक अक्षर लेता है और इसे एक काले-सफेद-बिटमैप सरणी में परिवर्तित करता है। फिर यह इस एक-अक्षर-बिटमैप के प्रत्येक कॉलम को लेता है और सफेद के बजाय, यह वर्तमान आरजीबी-रंग को एलईडी-सरणी में लिखता है। इस तरह आप सिंगल-कलर टेक्स्ट जेनरेट कर सकते हैं या एक अतिरिक्त फ़ंक्शन द्वारा प्रत्येक कॉलम, प्रत्येक अक्षर या प्रत्येक पिक्सेल के बाद भी रंग बदल सकते हैं।
एक "अक्षर" को एक बाइट-चर में संग्रहीत किया जा सकता है जबकि एक काले और सफेद बिटमैप को किसी प्रकार की सरणी में संग्रहीत करने की आवश्यकता होती है।
डेटा-संरचना यह है:
स्ट्रिंग: न्यूटेक्स्ट = "हैलो";
फ़ॉन्ट: uint32 वर्ण = { FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn, … SecondCharacter_ColumnCount, SecondCharacter_FirstColumn, … … LastCharacter_ColumnCount, … LastCharacter_LastColumn }; रंग: uint32 rgbcolor = 0xHHBBGGRR; // चमक, नीला, हरा, लाल प्रत्येक 8 बिट मान के रूप में
प्रदर्शन के लिए एक स्ट्रिंग को बदलने के लिए हम निम्नलिखित कार्य करते हैं:
getCharacter (): एच (8 बिट)
getColumn(int i): कॉलम (32 बिट) (मैं पहले कॉलम से शुरू होता है, आखिरी तक चलता है।) अगर (कॉलम में बिट 1 है) स्ट्रिप में एलईडी रंग में सेट है। एलईडी-स्ट्रिप ऐरे 64 एल ई डी है जिसमें प्रत्येक 32 बिट रंग हैं!
और यदि यह कॉलम प्रदर्शित होता है तो हम अगले के साथ जारी रखते हैं।
यह इतना आसान है।
चरण 5: पहला टेस्ट
अब जब सॉफ्टवेयर चलता है, हम पहले परीक्षणों के लिए तैयार हैं।
एम्बेडेड फ़ंक्शन का परीक्षण करने का सबसे आसान तरीका ब्लूटूथ कम ऊर्जा परीक्षण ऐप है। नॉर्डिक या सरू ऐप्स की तरह।
नॉर्डिक: मोबाइल के लिए एनआरएफ कनेक्ट
सरू: साइस्मार्ट
पोव-स्टिक शुरू करें और देखें कि डेमो-स्ट्रिंग कैसे प्रदर्शित होगी। एक बार यह समाप्त हो जाने के बाद ऐप शुरू करने का समय आ गया है। पोवस्टिक डिवाइस खोजें और कनेक्ट पर क्लिक करें।
एक बार कनेक्शन स्थापित हो जाने के बाद ऐप स्वचालित रूप से सभी परिभाषित सेवाओं और विशेषताओं की खोज करता है।
पहली सेवा की तलाश करें (0000ccce से शुरू होनी चाहिए…)। इसे खोलने के लिए उस पर क्लिक करें और पहली विशेषता प्रदर्शित करें (0000ccc1 से शुरू होता है)। फिर लिखें (या अपलोड करें) बटन दबाएं और इस विशेषता के लिए 01 लिखें।
एक बार जब आप भेजें हिट करते हैं, तो पीओवीस्टिक रंग-नाइट-राइडर एनीमेशन उर्फ लार्सन स्कैनर को बदलते रंगों के साथ शुरू कर देगा।
बधाई हो आपने BLE के माध्यम से अपना पहला मान भेजा!
चरण 6: एनिमेशन का चयन करें
सॉफ्टवेयर में हमने निम्नलिखित मानों के साथ एक एनम "e_Animation" परिभाषित किया है:
टाइपिफ़ एनम {नाइटराइडर = 0, कलरनाइटराइडर, रेनबोस्विर्ल, वैल्यूस्विर्ल, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_Control, TextAnimation, Animation_Max; e_Animation;
ये वे मान हैं जो ccc1 विशेषता के लिए मान्य हैं। यदि आप कैंडीकेन-एनीमेशन देखना चाहते हैं तो आपको इस विशेषता के लिए 4, 5 या 6 लिखना होगा। वे रंगों में भिन्न होते हैं।
दो विशेष एनिमेशन RGB_Control और TextAnimation हैं। यदि आपने इन्हें सक्रिय करना चुना है, तो स्टिक स्पष्ट रूप से पहले कुछ भी नहीं दिखाएगा। लेकिन यह आपको अन्य सेवाओं के साथ स्टिक को नियंत्रित करने के लिए अतिरिक्त विकल्प प्रदान करता है।
चरण 7: आरजीबी नियंत्रण
आरजीबी-कंट्रोल को साइस्मार्ट ऐप के साथ बहुत आसानी से परीक्षण किया जा सकता है क्योंकि मैंने इस विशेषता के लिए उसी यूयूआईडी का उपयोग किया है जैसे साइप्रस डेमो में।
CySmart ऐप शुरू करें और Povstick से कनेक्ट करें। सबसे पहले आपको ccc1 विशेषता के लिए "0x0A" लिखना होगा।
0x0A 10 के लिए हेक्स-वैल्यू है, जो एनम में आरजीबी-कंट्रोल एनीमेशन है।
फिर आप CySmart ऐप में RGB-LED कंट्रोल पैनल पर स्विच कर सकते हैं। हो सकता है कि आपको इस स्क्रीन पर आने के लिए ऐप को पुनरारंभ करना पड़े। फिर आप इस आरजीबी-आरेख के साथ सभी एल ई डी के रंग को नियंत्रित कर सकते हैं।
बेशक आप मूल्यों को सीधे विशेषता में भी लिख सकते हैं।
चरण 8: Text_Animation सेवा और स्थायी संग्रहण सेवा
इन सेवाओं का परीक्षण करना इतना आसान नहीं है।
तकनीकी रूप से आप इसके लिए नॉर्डिक ऐप का भी इस्तेमाल कर सकते हैं, लेकिन आपको यह जानना होगा कि किस विशेषता के लिए कौन से मूल्य लिखे जाएं।
इसलिए यदि आप इनका परीक्षण करना चाहते हैं, तो आपको पीएसओसी परियोजना पर एक नज़र डालनी चाहिए, जिसमें यूयूआईडी की विशेषता है।
"सेट-स्पीड" विशेषता पर एक महत्वपूर्ण है। इस विशेषता से आप नियंत्रित कर सकते हैं कि एनिमेशन कितने तेज़ हैं।
PersistentStorageService की "Set_Animation" विशेषता के साथ आप टेक्स्ट स्ट्रिंग के फोंट और रंगों को नियंत्रित कर सकते हैं। मान्य मान "povanimation.h", दो फ़ॉन्ट "मोनो" और "सेरिफ़" और एकल रंग और इंद्रधनुष-रंग में परिभाषित किए गए हैं। मान 0 और 1 टेक्स्ट को एक निश्चित रंग के साथ प्रदर्शित करते हैं, जिसे RGB_Control विशेषता के माध्यम से नियंत्रित किया जा सकता है। मान २ और ३ प्रत्येक कॉलम के लिए रंग बदलते हैं और स्ट्रिंग को एक अच्छा इंद्रधनुष देते हैं।
"Write_Text_Service" एक तरह से अलग है। आप "Set_Character" विशेषता के लिए अलग-अलग वर्ण लिखकर डिवाइस में एक नई स्ट्रिंग लिख सकते हैं। प्रत्येक लेखन पर, आपको स्ट्रिंग की वर्तमान लंबाई की सूचना वापस मिल जाएगी।
एक नई स्ट्रिंग शुरू करने के लिए, "Clear_String" पर "सत्य" लिखें।
यह सबसे अच्छा कार्यान्वयन नहीं है, लेकिन यह एमटीयू आकार को बदले बिना 250 वर्णों तक किसी भी स्ट्रिंग के लिए काम करता है।
पॉवस्टिक पर बटन दबाए जाने पर प्रारंभ के साथ एक नई स्ट्रिंग का प्रदर्शन।
चरण 9: Android ऐप शुरू करें
यह एक महत्वपूर्ण कदम है, लेकिन इस निर्देश के दायरे से बाहर है। उसके लिए खेद है!
हो सकता है कि मैं अपना टेस्ट-ऐप प्ले स्टोर पर अपलोड कर दूं, लेकिन यह अभी तक समाप्त या रिलीज करने योग्य नहीं है।
चरण 10: चित्रों में संदेश लिखें
खैर, यही कारण है कि मैं इस पोवस्टिक को सबसे पहले बनाता हूं: चित्रों में संदेश लिखने के लिए।
आपको एक तिपाई, लंबे समय तक एक्सपोजर वाले कैमरे और कुछ अच्छे स्थान की आवश्यकता है।
कैमरा सेट करें और पहले परीक्षण के लिए एक्सपोज़र समय को 10s तक समायोजित करें।
रिलीज को ट्रिगर करें और स्टिक पर टेक्स्ट-डिस्प्ले शुरू करते हुए, चित्र के माध्यम से चलना शुरू करें।
एट वोइला वहाँ हम हैं!
एलईडी-ब्राइटनेस, अपर्चर और एक्सपोज़र टाइम के सही संयोजन के साथ भोर में तस्वीरें लेना और भी संभव है।
इस चरण की तीन तस्वीरें संभावनाओं का पूरा स्पेक्ट्रम दिखाती हैं।
पहले में, एल ई डी ओवरएक्सपोज्ड होते हैं और एक जादुई चमक पैदा करते हैं। लेकिन यही कारण है कि जमीन पर प्रतिबिंब दिखाई दे रहे हैं और पृष्ठभूमि काफी अच्छी है।
दूसरी तस्वीर एल ई डी के लिए सामने आई है, लेकिन यह पृष्ठभूमि को पूरी तरह से काला कर देती है।
और तीसरा सूर्यास्त के तुरंत बाद मंद एलईडी दिखाता है। एल ई डी अन्य चित्रों की तरह उज्ज्वल हैं, लेकिन वातावरण इतना उज्ज्वल था कि मुझे कम एपर्चर और कम आईएसओ का उपयोग करना पड़ा ताकि एलईडी अंधेरे दिखाई दें।
मेक इट ग्लो कॉन्टेस्ट 2018 में दूसरा पुरस्कार
सिफारिश की:
Arduino/ब्लूटूथ के साथ डिफ्यूज्ड एलईडी स्ट्रिप साइन: 8 कदम (चित्रों के साथ)
Arduino/ब्लूटूथ के साथ डिफ्यूज्ड एलईडी स्ट्रिप साइन: मैंने अपने स्थानीय हैकरस्पेस, NYC रेसिस्टर में 8 वें वार्षिक इंटरएक्टिव शो में डीजे बूथ के लिए यह चिन्ह बनाया। इस साल की थीम थी द रनिंग मैन, 1987 की विज्ञान-फाई फिल्म, जो 2017 में हुई थी। साइन फोमकोर से बनाया गया है।
साउंड रिएक्टिव फ्लेम, ब्लूटूथ स्पीकर और एनिमेटेड एलईडी के साथ फायर पिट: 7 कदम (चित्रों के साथ)
साउंड रिएक्टिव फ्लेम, ब्लूटूथ स्पीकर और एनिमेटेड एलईडी के साथ फायर पिट: गर्मी का समय आग से आराम करने जैसा कुछ नहीं कहता है। लेकिन क्या आप जानते हैं कि आग से बेहतर क्या है? आग और संगीत! लेकिन हम एक कदम आगे बढ़ सकते हैं, नहीं, दो कदम आगे… आग, संगीत, एलईडी लाइट्स, साउंड रिएक्टिव फ्लेम! यह महत्वाकांक्षी लग सकता है, लेकिन यह इंस
सौर ऊर्जा संचालित एलईडी पार्किंग सेंसर: 8 कदम (चित्रों के साथ)
सौर ऊर्जा संचालित एलईडी पार्किंग सेंसर: हमारे गैरेज में बहुत अधिक गहराई नहीं है, और अंत में अलमारियाँ हैं जो गहराई को और कम करती हैं। मेरी पत्नी की कार फिट होने के लिए काफी छोटी है, लेकिन यह करीब है। मैंने यह सेंसर पार्किंग की प्रक्रिया को आसान बनाने के लिए बनाया है, और यह सुनिश्चित करने के लिए कि कार भर रही है
सौर ऊर्जा जनरेटर - दैनिक घरेलू उपकरणों को चलाने के लिए सूर्य से ऊर्जा: 4 कदम
सौर ऊर्जा जनरेटर | दैनिक घरेलू उपकरणों को चलाने के लिए सूर्य से ऊर्जा: यह एक बहुत ही सरल विज्ञान परियोजना है जो सौर ऊर्जा को प्रयोग करने योग्य विद्युत ऊर्जा में परिवर्तित करने पर आधारित है। यह वोल्टेज नियामक का उपयोग करता है और कुछ नहीं। सभी घटकों को चुनें और अपने आप को एक भयानक परियोजना बनाने के लिए तैयार करें जो आपकी मदद करेगी
अपने ब्लूटूथ हेडसेट को वायर्ड ब्लूटूथ हेडसेट में बदलें: 5 कदम (चित्रों के साथ)
अपने ब्लूटूथ हेडसेट को वायर्ड ब्लूटूथ हेडसेट में बदलें: आज मैं आपको यह बताने जा रहा हूं कि आप अपना खुद का वायर्ड ब्लूटूथ हेडसेट कैसे बना सकते हैं या परिवर्तित कर सकते हैं। मेरे कदम का पालन करें और आप इसे बदलने के लिए कुछ कदम पीछे हैं