विषयसूची:
वीडियो: UChip - सीरियल ओवर IR!: 4 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:20
वायरलेस संचार आजकल हमारी परियोजनाओं में एक प्रमुख विशेषता बन गया है और वायरलेस के बारे में बात करते हुए, मेरे दिमाग में सबसे पहले वाई-फाई या बीटी आता है, लेकिन वाई-फाई या बीटी संचार प्रोटोकॉल को संभालना आसान काम नहीं है और बहुत अधिक खपत करता है एमसीयू संसाधनों की, मेरे आवेदन को कोड करने के लिए छोटी जगह छोड़कर। इसलिए, मैं आमतौर पर भूमिकाओं को विभाजित करने और उच्च स्वतंत्रता प्राप्त करने के लिए माइक्रोकंट्रोलर से क्रमिक रूप से जुड़े बाहरी वाई-फाई / बीटी मॉड्यूल का विकल्प चुनता हूं।
हालांकि, कभी-कभी वाई-फाई और बीटी कम बिटरेट और कम संचार दूरी की आवश्यकता वाले कुछ अनुप्रयोगों के लिए "ओवरकिल" होते हैं। इसके अलावा, वाई-फाई या बीटी का उपयोग करने का मतलब है कि आपके स्मार्टफोन या डिवाइस को उचित प्रमाणीकरण के साथ जोड़ने की आवश्यकता है।
कल्पना कीजिए कि आपको बस बाहरी प्रकाश को चालू/बंद करना है, या दीपक की तीव्रता को बदलना है, या एक विद्युत द्वार खोलना है। क्या वाई-फाई या बीटी का उपयोग करना उचित होगा?
पर्यावरण और अनुप्रयोगों के आधार पर, IR (इन्फ्रारेड) तरंग दैर्ध्य पर वायरलेस संचार काम आ सकता है। IR पर एक सीरियल, कुछ बाहरी घटकों (3 असतत घटकों!) के साथ लागू किया गया, और uChip (एक बहुत छोटा Arduino संगत बोर्ड) वह समाधान हो सकता है जिसकी आपको तलाश थी!
सामग्री का बिल (एक टीएक्स-आरएक्स डिवाइस के लिए):
1 एक्स यूचिप
1 एक्स आईआर एलईडी: 950 एनएम. पर उत्सर्जन शिखर होना
1 x TSOP-38238 (समकक्ष का)
1 एक्स 1KOhm रोकनेवाला
हार्डवेयर
1 एक्स ब्रेडबोर्ड/प्रोटो बोर्ड
1 एक्स ब्लैक प्लास्टिक ट्यूब: आईआर एलईडी के समान आकार का आंतरिक व्यास, टीएसओपी रिसीवर के साथ क्रॉस-टॉक को रोकने के लिए ट्यूब आवश्यक है।
1 एक्स एल्यूमिनियम फोइल (3 सेमी x 3 सेमी)
1 एक्स टेप
सुझाव: यदि आपको सर्किट से अनावश्यक RX/TX हार्डवेयर को हटाकर या स्केच में संबंधित कोड को सक्षम/अक्षम करके एक-दिशा संचार की आवश्यकता है, तो आप केवल-TX या केवल-RX डिवाइस बना सकते हैं।
चरण 1: वायरिंग
योजनाबद्ध के अनुसार घटकों को एक साथ तार करें।
सरल योजनाबद्ध पर कुछ नोट्स। चूंकि TSOP-38238 2.5V से 5V तक बिजली की आपूर्ति की अनुमति देता है और अधिकतम 0.45mA को अवशोषित करता है (आपको यहां डेटाशीट मिलती है), मैं दो पिनों का उपयोग करके रिसीवर को शक्ति प्रदान करूंगा, जो क्रमशः जमीन और बिजली की आपूर्ति प्रदान करेगा। यह मांग पर रिसीवर को चालू / बंद करने और एक बहुत ही सरल हार्डवेयर वायरिंग सेटअप की अनुमति देता है। इसके अलावा, यदि आपको एक-दिशा संचार की आवश्यकता है, तो आप केवल TSOP-38238 को अक्षम/सक्षम करके एक (Tx/Rx)-केवल उपकरण बनाना चुन सकते हैं।
सर्किट कैसे काम करता है?
यह काफी सरल है। TSOP आउटपुट पिन कम खींचा जाता है जब सेंसर 38KHz पर 6 दालों या उससे अधिक की ट्रेन का पता लगाता है, दूसरी ओर ऐसा कोई संकेत नहीं होने पर इसे उच्च खींचा जाता है। इसलिए, IR पर सीरियल डेटा संचारित करने के लिए, सर्किट जो करता है वह एलईडी एनोड को 38KHz PWM के साथ TX सीरियल सिग्नल के साथ संशोधित करता है जो एलईडी कैथोड को कम खींचता है।
नतीजतन, सीरियल TX0 के उच्च स्तर पर, एलईडी पक्षपाती या पक्षपाती नहीं है (कोई दाल नहीं) और TSOP आउटपुट पिन उच्च खींचा जाता है। धारावाहिक पर निम्न स्तर का संचारण, एलईडी संचालित होता है और लागू पीडब्लूएम सिग्नल के अनुसार आईआर दालों को उत्पन्न करता है; इसलिए, TSOP आउटपुट कम खींचा जाता है।
चूंकि ट्रांसमिशन प्रत्यक्ष है (0->0 और 1->1) रिसीवर की तरफ इनवर्टर या अन्य तर्क की कोई आवश्यकता नहीं है।
मैं आवेदन के अनुसार पीडब्लूएम कर्तव्य चक्र का चयन करके एलईडी ऑप्टिकल आउटपुट पावर को नियंत्रित करता हूं। कर्तव्य चक्र जितना अधिक होगा, ऑप्टिकल आउटपुट पावर उतनी ही अधिक होगी और इसलिए, जितना अधिक आप अपना संदेश प्रसारित करेंगे।
ध्यान रखें कि हमें अभी भी दालें उत्पन्न करने की आवश्यकता है! इस प्रकार, आपको 90% कर्तव्य चक्र से ऊपर नहीं जाना चाहिए, अन्यथा TSOP सिग्नल को दालों के रूप में नहीं पहचान पाएगा।
क्या आपको अधिक शक्ति की आवश्यकता है?
करंट बढ़ाने के लिए, क्या हम केवल 1kOhm रेसिस्टर के मान को कम कर सकते हैं?
हो सकता है, बस बहुत अधिक मांग न करें! SAMD21 डेटाशीट में बताए गए अनुसार पोर्ट पिन को सामान्य से अधिक मजबूत (PINCFG. DRVSTR = 1 और VDD> 3V) चलाते समय MCU के पिन से आपको अधिकतम करंट 7mA तक सीमित होता है।
हालाँकि, मानक कॉन्फ़िगरेशन (जो कि डिफ़ॉल्ट रूप से Arduino IDE पुस्तकालयों द्वारा अपनाया गया है) वर्तमान को 2mA तक सीमित करता है। इसलिए, 1kOhm का उपयोग पहले से ही डिफ़ॉल्ट सेटिंग्स के साथ वर्तमान सीमा देता है!
करंट बढ़ाना केवल विद्युत घटकों की बात नहीं है। संक्षेप में:
- रोकनेवाला बदलें (जिसका न्यूनतम मान लगभग 470Ohm -> VDD/470~7mA तक सीमित है);
- संगत रूप से PORT-> PINCFG-> DRVSTR को 1 पर सेट करें;
मैं भविष्य के अपडेट में इस सुविधा सहित कोड प्रदान करूंगा।
लेकिन याद रखें, एमसीयू पिन से उसकी सीमा के करीब करंट को डुबोना और निकालना इतना अच्छा तरीका नहीं है। दरअसल, यह MCU के जीवनकाल और विश्वसनीयता को कम करता है। इसलिए, मेरा सुझाव है कि लंबे समय तक उपयोग के लिए सामान्य ड्राइव की ताकत बनाए रखें।
चरण 2: प्रोग्रामिंग
स्केच "IRSerial.ino" को uChip (या आपके द्वारा उपयोग किए जा रहे Arduino संगत बोर्ड) में लोड करें।
यदि आपको PWM जनरेट करने वाले पिन को बदलने की आवश्यकता है, तो सुनिश्चित करें कि आप TCC टाइमर से जुड़े पिन का उपयोग कर रहे हैं, क्योंकि कोड का यह संस्करण केवल TCC टाइमर के साथ काम करता है (इस जानकारी के लिए अपने बोर्ड के "variant.c" की जाँच करें)) मैं भविष्य के अपडेट में टीसी टाइमर का उपयोग करने के लिए कोड जोड़ूंगा।
कोड काफी सरल है। PIN_5 कम (TSOP GND प्रदान करता है) और PIN_6 उच्च (TSOP को शक्ति प्रदान करता है) सेट करने के बाद, MCU, PIN_1 पर PWM शुरू करता है, टाइमर की अवधि निर्धारित करता है और आवश्यक आवृत्ति मॉड्यूलेशन के अनुसार तुलना करता है (मेरे मामले में यह 38KHz है) और कर्तव्य चक्र (डिफ़ॉल्ट के रूप में 12.5%)। यह PWM पिन पर मानक एनालॉगवर्इट () फ़ंक्शन का उपयोग करके किया जाता है और केवल PER_REG (अवधि रजिस्टर) और CC (कैप्चर तुलना) रजिस्टर को बदलता है (लिखित कोड केवल वायरिंग_एनालॉग लाइब्रेरी से कट-एंड-पेस्ट है)। आप TSOP सेंसर के अनुसार PER_REG (जो कि टाइमर काउंटर को रीसेट करने वाली ऊपरी सीमा है) को बदलने के लिए आवश्यक आवृत्ति सेट कर सकते हैं, जबकि CC को आनुपातिक रूप से अवधि मान के लिए कर्तव्य चक्र के वांछित प्रतिशत पर सेट कर सकते हैं।
इसके बाद, कोड 2400bps की सही बॉड दर का उपयोग करके सीरियल पोर्ट सेट करता है। इतनी कम बॉड दर क्यों ?! उत्तर TSOP डेटाशीट में है जिसे आप यहां पा सकते हैं। चूंकि TSOP में अवांछित स्विचिंग को रोकने के लिए उच्च शोर अस्वीकृति फिल्टर की सुविधा है, इसलिए TSOP आउटपुट पिन को नीचे खींचने के लिए कई दालों की एक ट्रेन भेजना आवश्यक है (दालों की संख्या TSOP संस्करण पर निर्भर करती है, 6 विशिष्ट मूल्य है)। इसी तरह, TSOP आउटपुट कम से कम 10 दालों या उससे अधिक के बराबर समय के बाद उच्च खींचा जाता है। नतीजतन, TSOP आउटपुट को मॉड्यूलेटिंग TX0 सिग्नल के रूप में सेट करने के लिए, निम्नलिखित समीकरण पर विचार करते हुए बॉड दर निर्धारित करना आवश्यक है:
सीरियल बॉड <पीडब्लूएम_फ्रीक्वेंसी/10
38KHz का उपयोग करने से इसका परिणाम 3800bps से कम बॉड्रेट में होता है, जिसका अर्थ है कि उच्च "मानक" अनुमत बॉड दर 2400pbs है, जैसा कि पहले अनुमान लगाया गया था।
क्या आप बॉड दर बढ़ाना चाहते हैं? दो विकल्प हैं।
सबसे आसान विकल्प TSOP को एक उच्च आवृत्ति संस्करण (TSOP38256 के रूप में) में बदलना है, जो आपको बॉड दर (4800bps) को दोगुना करने की अनुमति देगा।
पर्याप्त नहीं?! फिर आपको एक साधारण IR LED+फोटोडायोड और एम्प्लीफिकेशन सर्किटरी का उपयोग करके अपना स्वयं का ऑप्टिकल लिंक बनाने की आवश्यकता है। हालाँकि, इस समाधान के लिए बहुत अधिक कोडिंग और इलेक्ट्रॉनिक्स विशेषज्ञता की आवश्यकता होती है ताकि शोर को प्रसारित डेटा को प्रभावित करने से रोका जा सके और इसलिए इसका कार्यान्वयन बिल्कुल भी आसान नहीं है! हालाँकि, यदि आप पर्याप्त आत्मविश्वास महसूस करते हैं, तो आपका अपना TSOP सिस्टम बनाने का प्रयास करने के लिए स्वागत है!:)
अंत में, मैंने सीरियलयूएसबी पोर्ट (2400 बीपीएस) सेट किया है जिसका उपयोग मैं सीरियल मॉनिटर पर डेटा भेजने और प्राप्त करने के लिए करता हूं।
लूप () फ़ंक्शन में दो धारावाहिकों पर डेटा को पास करने के लिए आवश्यक कोड शामिल होता है और इसे सीधे उदाहरण स्केच से कॉपी किया जाता है SerialPassthrough केवल धारावाहिकों के नाम बदलते हुए।
चरण 3: परिरक्षण आईआर एलईडी
यदि आप "IRSerial.ino" कोड लोड करने के बाद उपरोक्त सर्किटरी को पावर करते हैं, तो Arduino IDE पर सीरियल मॉनिटर की जांच करें और एक स्ट्रिंग भेजने का प्रयास करें। आप शायद देखेंगे कि uChip वही प्राप्त कर रहा है जो वह संचारित कर रहा है! उसी डिवाइस के IR LED और TSOP के बीच ऑप्टिकल संचार के कारण सर्किटरी में क्रॉस-टॉक होता है!
यहाँ इस परियोजना का कठिन हिस्सा आता है, क्रॉस-टॉक को रोकना! IR पर द्विदिश सीरियल संचार करने के लिए लूप को तोड़ा जाना चाहिए।
हम लूप कैसे तोड़ते हैं?
पहला विकल्प, आप पीडब्लूएम कर्तव्य चक्र को कम करते हैं, इस प्रकार एलईडी के ऑप्टिकल पावर आउटपुट को कम करते हैं। हालाँकि, यह दृष्टिकोण उस दूरी को भी कम करता है जिस पर आपको एक विश्वसनीय सीरियल IR चैनल मिलता है। दूसरा विकल्प IR LED को परिरक्षित कर रहा है, इस प्रकार एक दिशात्मक IR "बीम" बना रहा है। यह कोशिश और त्रुटि का मामला है; अंत में, एल्यूमीनियम पन्नी और टेप (विद्युत इन्सुलेशन प्रदान करते हुए) में लिपटे काले वायवीय वायु नली के एक टुकड़े का उपयोग करके मैं क्रॉस टॉक को तोड़ने में कामयाब रहा। ट्रांसमिटिंग IR LED को ट्यूब के अंदर लगाने से उसी डिवाइस के TX और RX के बीच संचार को रोकता है।
मेरा समाधान देखने के लिए तस्वीर को देखें, लेकिन बेझिझक अन्य तरीकों को आजमाएं और/या अपना सुझाव दें! इस मुद्दे का कोई पूर्ण समाधान नहीं है (जब तक कि आपको एक साधारण एक-दिशा चैनल की आवश्यकता न हो) और आपको अपनी आवश्यकताओं के अनुसार सर्किटरी लेआउट, पीडब्लूएम ड्यूटी चक्र और आईआर शील्ड को ट्यून करने की आवश्यकता है।
एक बार जब आप क्रॉस टॉक को तोड़ देते हैं, तो आप यह सत्यापित कर सकते हैं कि IR परावर्तक सतहों पर IR तरंग दैर्ध्य के प्रतिबिंब का शोषण करते हुए डिवाइस Tx-Rx पर एक लूप बनाकर आपका डिवाइस अभी भी काम कर रहा है।
चरण 4: संवाद करें
बस इतना ही
IR डिवाइस पर आपका सीरियल संचार के लिए तैयार है, IR पर डेटा भेजने के लिए उनका उपयोग करें, अपनी पसंद की किसी भी चीज़ को चालू / बंद करें या उस सेंसर की स्थिति की जाँच करें जिसे आप गुप्त रूप से छिपा रहे हैं!
जिस दूरी पर संचार विश्वसनीय है वह वाईफाई या बीटी डिवाइस के लिए उतनी नहीं है। हालांकि, यह दिशात्मक है (एलईडी एपर्चर और कार्यान्वित आईआर शील्डिंग सिस्टम के आधार पर), जो कुछ अनुप्रयोगों में बहुत उपयोगी हो सकता है!
जल्द ही मैं एक वीडियो अपलोड करूंगा जहां आप मेरे द्वारा किए गए आवेदनों के कुछ उदाहरण देख सकते हैं। आनंद लेना!
सिफारिश की:
प्रोग्रामिंग अरुडिनो ओवर द एयर (ओटीए) - अमीबा अरुडिनो: 4 कदम
प्रोग्रामिंग अरुडिनो ओवर द एयर (ओटीए) - अमीबा अरुडिनो: बाजार में कई वाई-फाई माइक्रोकंट्रोलर हैं, कई निर्माता Arduino IDE का उपयोग करके अपने वाई-फाई माइक्रोकंट्रोलर की प्रोग्रामिंग का आनंद लेते हैं। हालांकि, वाई-फाई माइक्रोकंट्रोलर द्वारा पेश की जाने वाली सबसे अच्छी विशेषताओं में से एक को अनदेखा कर दिया जाता है, वह है
ओवर-डिस्चार्ज लीपो (लिथियम पॉलिमर) बैटरियों को बहाल करना / रिचार्ज करना!: 6 कदम
ओवर-डिस्चार्ज लीपो (लिथियम पॉलिमर) बैटरियों को पुनर्स्थापित/रिचार्ज करना!: लीपो बैटरी को कभी भी 3.0V/सेल से नीचे डिस्चार्ज नहीं किया जाना चाहिए, या यह उन्हें स्थायी रूप से नुकसान पहुंचा सकता है। कई चार्जर आपको 2.5V/सेल से कम की LiPo बैटरी चार्ज करने की अनुमति भी नहीं देते हैं। इसलिए, यदि आप गलती से अपने विमान/कार को बहुत लंबा चला देते हैं, तो आपके पास कम नहीं है
ESP32 थिंग और TB6612FNG ड्राइवर के साथ रोलिंग रोबोट, Android ओवर BLE द्वारा नियंत्रित: 11 कदम
ESP32 थिंग और TB6612FNG ड्राइवर के साथ रोलिंग रोबोट, Android ओवर BLE द्वारा नियंत्रित: सभी को नमस्कार यह मेरा पहला निर्देश है। ESP32 थिंग, TB6612 FNG और BLE पर आधारित एक रोलिंग रोबोट (उपनाम रैधो - रन से जो गति से जुड़ा है)। एक हिस्सा जो अजीब लग सकता है वह यह है कि तस्वीरें बनाने की प्रक्रिया से नहीं हैं
दुस्साहस के साथ शौकिया वॉयस-ओवर: १० कदम
ऑडेसिटी के साथ एमेच्योर वॉयस-ओवर: इस गाइड में, मैं आपको दिखाऊंगा कि वॉयस-ओवर जैसे काम के लिए ऑडेसिटी का उपयोग कैसे शुरू किया जाए। ऑडेसिटी एक सहज, फीचर से भरा ऑडियो एडिटिंग प्रोग्राम है जो कई उद्देश्यों के लिए रिकॉर्ड किए गए ऑडियो को संपादित कर सकता है। वॉयस-ओवर के लिए कुछ एप्लिकेशन शामिल होंगे
ओवर-द-बेड कंप्यूटर कार्ट: 8 कदम
ओवर-द-बेड कंप्यूटर कार्ट: क्या आपका लैपटॉप ज़्यादा गरम हो जाता है? स्टेपल से खराब तरीके से बनाए गए कंप्यूटर कार्ट से गर्दन में ऐंठन? यह कार्ट बनाने में आसान है जो आपको और आपके कंप्यूटर को एक ही समय में खुश कर देगा