विषयसूची:
- चरण 1: कुछ विचार
- चरण 2: चलो हार्डवेयर के साथ शुरू करते हैं
- चरण 3: अंतिम डिजाइन
- चरण 4: सॉफ्टवेयर से निपटना
- चरण 5: वी-यूएसबी लाइब्रेरी की स्थापना और विन्यास
- चरण 6: Attiny-IR और Tinytuner पुस्तकालयों की स्थापना
- चरण 7: बूटलोडर्स की स्थापना और विन्यास
- चरण 8: बूटलोडर को जलाना और स्केच अपलोड करना
- चरण 9: Attiny85 आंतरिक घड़ी को कैलिब्रेट करें (यदि आप क्रिस्टल का उपयोग करते हैं तो इसे छोड़ दें)
- चरण 10: अपने रिमोट बटन को डिकोड करें
- चरण 11: अंतिम स्केच लोड हो रहा है और सर्वश्रेष्ठ के लिए आशा है
वीडियो: ATtiny85 IR USB रिसीवर: 11 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
चेतावनी, यह निर्देश अप्रचलित हो गया है
वी-यूएसबी लाइब्रेरी को यूएसबी 1.1 प्रोटोकॉल के साथ काम करने के लिए डिज़ाइन किया गया है जो आजकल शायद ही मौजूद है। USB3 के आगमन के साथ आपको वी-यूएसबी डिवाइस को काम करने के लिए बनाने की कोशिश करने में सिरदर्द से अधिक होगा। अपना मल्टीमीडिया सेंटर बदलने के बाद, मुझे कई स्थिरता के मुद्दे मिले हैं और भले ही रिसीवर काम करता है, थोड़ी देर बाद यह काम करना बंद कर देता है। मैं इसे ठीक करने की कोशिश में असफल रहा हूं। मैंने एक atmega328p संस्करण भी बनाया था, लेकिन इसमें भी वही मुद्दे थे। बोर्ड को समय-समय पर रीसेट करने के लिए वॉचडॉग टाइमर का उपयोग करने से या तो मदद नहीं मिली इसलिए मैंने वी-यूएसबी को छोड़ दिया।
जब तक यह शैक्षिक उद्देश्यों के लिए न हो, तब तक अपने आप पर एक एहसान करें और इस निर्देश के साथ आगे न बढ़ें। मैं इसके बजाय एक चिप मॉड्यूल ATmega 32U4 खरीदने की सलाह देता हूं जो पहले से ही USB इंटरफ़ेस को एकीकृत कर चुका है और इस गाइड का पालन करता है:
www.sparkfun.com/tutorials/337
फिर एक IR सेंसर TSOP31238 में फेंक दें और आप जाने के लिए अच्छे हैं।
हैलो मेकर्स! यह एक Attiny85 माइक्रोकंट्रोलर का उपयोग करके एक कार्यशील USB IR रिसीवर बनाने के लिए एक निर्देश योग्य है। मैंने GNU / Linux OS में कुछ IR रिमोट के लिए समर्थन की कमी (कम से कम पूर्ण समर्थन) को दूर करने के लिए इस परियोजना की शुरुआत की। इस निर्देश का पालन करके आप एक प्रोग्राम योग्य USB IR रिसीवर बना सकते हैं जो कुछ रुपये के लिए किसी भी IR रिमोट के साथ काम करता है।
सबसे पहले, यह निर्देश उन लोगों की कड़ी मेहनत के बिना मौजूद नहीं होगा, जिन्होंने उन पुस्तकालयों का निर्माण किया है जिनका मैं यहाँ उपयोग करता हूँ:
- डेविड ए मेलिस अपने एटिनी कोर के लिए
- उनकी लाइब्रेरी के लिए राउडी डॉग सॉफ्टवेयर TinyTuner
- राउडी डॉग सॉफ्टवेयर उनके छोटे बूटलोडर के लिए
- Rancidbacon (https://rancidbacon.com/) v-usb लाइब्रेरी के अपने arduino पोर्ट के लिए (https://code.google.com/archive/p/vusb-for-arduino/downloads)
- सीजयदी को उनकी आईआर लाइब्रेरी के लिए निर्देशयोग्य https://www.instructables.com/id/Attiny-IR-librar… कोड https://www.instructables.com/id/Attiny-IR की टिप्पणियों पर मिले। -लाइब्रेर…
कभी-कभी किसी पुस्तकालय का सही स्वामी ढूंढना आसान नहीं होता है, इसलिए यदि मुझसे कोई गलती हुई है, तो कृपया एक टिप्पणी छोड़ दें और मैं इस मुद्दे को जल्द से जल्द हल कर दूंगा।
यह गाइड मौजूद है क्योंकि मुझे बॉक्स से बाहर काम करने वाला एक पूर्ण ट्यूटोरियल/गाइड नहीं मिला (यह मौजूद हो सकता है, लेकिन मुझे यह नहीं मिला) इसलिए मैंने वेब पर उपलब्ध सभी जानकारी एकत्र की और अच्छी मात्रा में परीक्षणों के बाद और त्रुटियाँ मैं एक कार्यशील USB IR रिसीवर बनाने के लिए एक पूर्ण मार्गदर्शिका के साथ आया हूँ जो वास्तव में बहुत अच्छी तरह से काम करता है।
जानकारी के मुख्य स्रोत जिनका मैंने अनुसरण किया है:
- https://nathan.chantrell.net/20121014/tinypcremot…
- https://forum.arduino.cc/index.php?PHPSESSID=ap4jg…
- https://blog.petrockblock.com/2012/05/19/usb-keybo…
- https://learn.adafruit.com/using-an-infrared-libr…
- https://codeandlife.com/2012/03/03/diy-usb-passwor…
- https://codeandlife.com/2012/02/22/v-usb-with-atti…
- https://www.instructables.com/id/Attiny-IR-librar…
चरण 1: कुछ विचार
- मेरे पास AVR ISP प्रोग्रामर नहीं है और मुझे वास्तव में एक खरीदना पसंद नहीं है इसलिए मैंने attiny85 प्रोग्राम करने के लिए एक Arduino का उपयोग किया है
- मुझे जीएनयू/लिनक्स के अलावा किसी अन्य ओएस की परवाह नहीं है इसलिए मुझे नहीं पता कि यह अन्यथा काम करेगा या नहीं।
- अन्य आईआर पुस्तकालय हैं लेकिन मैं उन्हें एक आर्डिनो के साथ भी काम नहीं कर सका। हालांकि इस बात पर विचार करें कि मैंने IR पुस्तकालयों के बारे में सीमित ज्ञान के साथ शुरुआत की थी। हो सकता है कि उचित मात्रा में मुद्दों से निपटने के अनुभव के बाद मैं उन्हें अब काम कर सकूं। वैसे भी, सीजयदी द्वारा प्रदान की गई लाइब्रेरी को खोजने से पहले मैं खो गया और हताश था और मैंने तब से इसका उपयोग किया है (बहुत धन्यवाद आदमी!)।
- अन्य हार्डवेयर कॉन्फ़िगरेशन हैं, लेकिन मैंने केवल उसी का उपयोग किया है जो डेटा लाइनों के वोल्टेज को क्लैंप करने के लिए attiny85 और दो 3.6V 0.5W जेनर डायोड को पावर देने के लिए 5V का उपयोग करता है, यह बॉक्स से बाहर काम करता है इसलिए मैंने गड़बड़ नहीं की अन्य विन्यास।
- आप 16Mhz क्रिस्टल का उपयोग कर सकते हैं या आप अपने attiny85 की आंतरिक घड़ी को कैलिब्रेट करने के लिए टिनीट्यूनर लाइब्रेरी का उपयोग कर सकते हैं। मैं क्रिस्टल के उपयोग की दृढ़ता से सलाह देता हूं, यह बहुत अधिक स्थिर है और शायद आपको बहुत सारे सिरदर्द से बचाएगा।
- मैं यहाँ attiny85 के लिए दो अलग-अलग बूटलोडर का उपयोग कर रहा हूँ:
a) राउडी डॉग सॉफ्टवेयर संस्करण, इसने एक सीरियल इंटरफ़ेस को एकीकृत किया है जो बहुत अच्छा है और बहुत छोटा है इसलिए आपके पास अपने कार्यक्रम और अन्य पुस्तकालयों के लिए अधिक स्थान है। समस्या यह है कि कुछ कारणों से भले ही यह बहुत अच्छी तरह से काम करता है, कुछ समय बाद यूएसबी डिवाइस डिस्कनेक्ट हो गया (आप dmesg कमांड के साथ मुद्दों को ढूंढ सकते हैं)। मुझे नहीं पता कि यह कोर की समस्या है या कोर और चुने हुए पुस्तकालयों के मिश्रित संयोजन की समस्या है, इसलिए थोड़ी देर के बाद मैंने इस कोर का उपयोग केवल दूरस्थ कुंजियों को डिकोड करने और घड़ी को कैलिब्रेट करने के लिए करने का निर्णय लिया (जब 16Mhz का उपयोग नहीं कर रहा हो) क्रिस्टल)। उसके बाद, मैं सिर्फ मेलिस बूटलोडर को जलाता हूं और निश्चित स्केच अपलोड करता हूं जो सीरियल इंटरफ़ेस का उपयोग नहीं करता है।
बी) मेलिस संस्करण, स्थिर बूटलोडर, मैंने इसे कई परियोजनाओं में उपयोग किया है। मैं इस बूटलोडर का उपयोग हमेशा करता अगर इसमें एक सीरियल इंटरफ़ेस शामिल होता। मैं अपने रिमोट पर सभी कुंजियों को डिकोड करने के बाद अंतिम स्केच में इस कोर का उपयोग करता हूं।
चरण 2: चलो हार्डवेयर के साथ शुरू करते हैं
आपके लिए आवश्यक उपकरण:
- एक आर्डिनो संगत बोर्ड
- आपकी दूरस्थ कुंजियों को डिकोड करने के लिए USB अडैप्टर के लिए एक सीरियल (बस एक FT232RL का उपयोग करें)
- जीएनयू/लिनक्स के साथ एक पीसी स्थापित और arduino IDE ठीक से कॉन्फ़िगर किया गया है, मैं arduino IDE 1.8.0 का उपयोग कर रहा हूं
- आपके डिवाइस का परीक्षण करने के लिए एक IR रिमोट (यहां तक कि एक भद्दा भी जैसा कि arduino स्टार्टर किट में पाया जाता है) काम करेगा
- आपके बोर्ड को डिबग करने के लिए एक मल्टीमीटर (मुझे आशा है कि आपको इसकी आवश्यकता नहीं होगी, शुभकामनाएँ!)
सामग्री की सूची:
- 1 attiny85
- 2 68R प्रतिरोधक
- 1 1.5K रोकनेवाला
- 1 4.7K रोकनेवाला
- 1 16 मेगाहर्ट्ज क्रिस्टल
- 1 22pF संधारित्र
- 1 0.1uF संधारित्र
- 1 10uF संधारित्र
- 2 3.6V 0.5W जेनर डायोड
- 1 यूएसबी टाइप ए पुरुष कनेक्टर
- बोर्ड को प्रोग्राम और डिबग करने के लिए 6 पिन के साथ 1 स्ट्रिप पिन।
- 1 आईआर सेंसर TSOP31238
- आपको जगाए रखने के लिए ढेर सारी कॉफी
निश्चित बोर्ड को टांका लगाने से पहले, आप शायद परीक्षण उद्देश्यों के लिए एक ब्रेडबोर्ड प्रोटोटाइप बनाना चाहते हैं, इस निर्देश से जुड़ी स्कीमा के बाद इसे बनाने के लिए पर्याप्त होना चाहिए।
Attiny85 को PC से कनेक्ट करने के लिए, अंतिम डिज़ाइन एक USB टाइप A कनेक्टर का उपयोग करता है जिसे बोर्ड में मिलाया जाता है, लेकिन प्रोटोटाइप के लिए आपको एक USB केबल बनाने की आवश्यकता होगी जिसे आप ब्रेडबोर्ड से कनेक्ट कर सकते हैं:
परफ़ॉर्मर 4 पिन के एक छोटे से टुकड़े में मिलाप करें, फिर एक पुराने USB केबल को काटें और पिन को USB केबल के अंदर के 4 तारों में मिला दें:
- लाल वीसीसी है (5V)
- काला GND है
- सफेद डी है-
- हरा डी + है
गर्म गोंद के साथ सब कुछ एक साथ रखें।
अब हमें ISP प्रोग्रामर (Arduino), USB को सीरियल एडॉप्टर (FT232RL) और IR सेंसर को attiny85 से कनेक्ट करने की आवश्यकता है।
आप सभी को एक साथ कनेक्टेड छोड़ सकते हैं ताकि आप विभिन्न बूटलोडर्स को जला सकें, स्केच लोड कर सकें और तारों को बदले बिना सीरियल पोर्ट की जांच कर सकें, ऐसा करने के लिए, इन निर्देशों का पालन करते हुए सब कुछ कनेक्ट करें:
ISP प्रोग्रामर (Arduino): यह हमें बूटलोडर्स को जलाने और स्केच लोड करने की अनुमति देता है
- arduino में attiny85 PB0 (pin5) से pin11 (MOSI)
- arduino. में attiny85 PB1 (pin6) से pin12 (MISO)
- arduino. में attiny85 PB2 (pin7) से pin13 (SCK) तक
- attiny85 RESET (pin1) पुलअप (4.6k से VCC) के साथ arduino में pin10 करने के लिए
- arduino. में attiny85 VCC से 5V तक
- arduino में attiny85 GND से GND में
यूएसबी से सीरियल एडॉप्टर (FT232RL): यह हमें सीरियल पोर्ट की जांच करने की अनुमति देता है
- FT232RL. में attiny85 PB0 (pin5 RX) से TX तक
- FT232RL. में attiny85 PB2 (pin7 TX) से RX तक
- FT232RL. पर attiny85 GND (pin4) से GND तक
- चूँकि attiny85 पहले से ही arduino द्वारा संचालित है, आपको FT232RL पर 5v कनेक्ट करने की आवश्यकता नहीं है, अन्यथा कनेक्ट करें: FT232RL पर attiny85 VCC (pin8) से 5V तक
यूएसबी से सीरियल एडॉप्टर (FT232RL) केवल क्लॉक कैलिब्रेशन के लिए (सिर्फ बूटलोडर "ATtiny85 @ 8MHz (आंतरिक थरथरानवाला; BOD अक्षम)") के लिए
- FT232RL attiny85. में PB4 (pin3 RX) से TX तक
- FT232RL attiny85. में PB3 (pin2 TX) से RX तक
- FT232RL. पर GND से GND तक
- चूँकि attiny85 पहले से ही arduino द्वारा संचालित है, आपको FT232RL पर 5v कनेक्ट करने की आवश्यकता नहीं है, अन्यथा कनेक्ट करें: FT232RL पर attiny85 VCC (pin8) से 5V तक
यदि आप 16 मेगाहर्ट्ज क्रिस्टल का उपयोग करते हैं, तो इसे Attiny85 पिन PB3 (pin2) और PB4 (pin3) से कनेक्ट करें और प्रत्येक पिन को GND के साथ-साथ प्रत्येक 22pF कैप के माध्यम से कनेक्ट करें।
एक 0.1uF और 10uF कैपेसिटर के साथ Attiny85 VCC को फ़िल्टर करें जो उन्हें GND. के समानांतर जोड़ते हैं
IR सेंसर आउटपुट पिन को attiny85 PB1 (pin6) से कनेक्ट करें, इसे पावर दें।
USB इंटरफ़ेस बनाएँ और कनेक्ट करें:
- GND (ब्लैक वायर): इसे सामान्य GND से कनेक्ट करें (सभी आधार एक साथ जुड़े हुए हैं)
- D- (सफेद तार) एक 68R रोकनेवाला के माध्यम से attiny85 PB0 (pin5) से जुड़ा है, इसे 3.6V 0.5W जेनर के माध्यम से जमीन से भी कनेक्ट करें और इसे 1.5K रोकनेवाला के साथ VCC तक खींचें।
- D+ (हरा तार) एक 68R रोकनेवाला के माध्यम से PB2 से जुड़ा है, इसे 3.6V 0.5W जेनर के माध्यम से जमीन से जोड़ता है
- 5V, आप इसे असंबद्ध छोड़ सकते हैं क्योंकि इस स्तर पर सब कुछ Arduino द्वारा संचालित है, अन्यथा इसे attiny85 VCC से कनेक्ट करें
जेनर डायोड जुड़े हुए हैं ताकि एनोड जीएनडी से बंधे हों और कैथोड डेटा लाइनों डी + और डी- से जुड़े हों।
चरण 3: अंतिम डिजाइन
अंतिम डिज़ाइन के लिए आप छेद वाले घटकों के साथ परफ़ॉर्मर का उपयोग कर सकते हैं या अपने स्वयं के बोर्ड को खोद सकते हैं और smd घटकों का उपयोग कर सकते हैं। यह जानने के लिए कि किसी बोर्ड को कैसे उकेरना है, बस इसे गूगल करें, ऑनलाइन बहुत बढ़िया ट्यूटोरियल उपलब्ध हैं।
मैंने अपना बोर्ड खुद बनाया है और मैं अंतिम परिणामों (छोटे, स्थिर और मजबूत बोर्ड) से बहुत खुश हूं। हां, मुझे पता है कि कट बेकार है, लेकिन मैं इतनी देर रात में किसी भी बिजली उपकरण का उपयोग नहीं कर सका और मैं बस मेरी टिन की कतरन कैंची से बोर्ड काट दो।
वैसे, छवियों पर निशान नंगे तांबे नहीं हैं, उन्हें एक खराब रसायन के साथ इलाज किया गया है जो तांबे को थोड़ा सा टिन करता है (यह कैंसर को प्रेरित करने का संदेह है, इसलिए इसे बहुत सावधानी से, लेटेक्स ग्लोब और धूल मास्क के साथ उपयोग करें):
अपने लेआउट को डिजाइन करने के लिए ऊपर दिए गए स्कीमैटिक्स का उपयोग करें या आप अपने बोर्ड को खोदने के लिए मेरे पीसीबी फुटप्रिंट का उपयोग कर सकते हैं।
चरण 4: सॉफ्टवेयर से निपटना
इस परियोजना में सर्किट बहुत आसान है, इसके बजाय सॉफ्टवेयर को एक बड़े प्रयास की आवश्यकता होती है।
यह काम करने के लिए हमें कम से कम 2 पुस्तकालयों (एक और यदि आप क्रिस्टल का उपयोग नहीं कर रहे हैं) प्लस 2 बूटलोडर की आवश्यकता है। जब मैंने इस परियोजना को शुरू किया तो मैंने कुछ पुस्तकालयों का परीक्षण किया, कभी-कभी वे काम नहीं करते थे और कई बार उन्हें बॉक्स से बाहर एक Attiny85 के साथ काम करने के लिए कॉन्फ़िगर नहीं किया गया था (मुझे अभी तक यह नहीं पता था)। तब मुझे पुस्तकालयों / बूटलोडर्स के साथ ओवरलैपिंग इंटरप्ट के साथ समस्याएँ मिलीं। जब मैंने अंतिम सर्किट को अपने पीसी से जोड़ा तो अंत में मुझे उचित मात्रा में त्रुटियों से निपटना पड़ा। हालाँकि मेरे पास यह मार्गदर्शिका नहीं थी, इसलिए मुझे लगता है कि आप ठीक होंगे, बस इस निर्देश में दिए गए चरणों का पालन करें, यदि आप ऐसा करते हैं तो बिना गलती किए आपको ठीक होना चाहिए:)
हमें अब कुछ पुस्तकालयों को स्थापित और कॉन्फ़िगर करने की आवश्यकता है:
- Arduino लाइब्रेरी के लिए v-usb: यह लाइब्रेरी माइक्रोकंट्रोलर को पीसी द्वारा HID USB कीबोर्ड के रूप में पहचाने जाने की अनुमति देती है, और हम इसका उपयोग पीसी को की स्ट्रोक भेजने के लिए करेंगे। इस पुस्तकालय को attiny85. के साथ संगत होने के लिए कुछ परिवर्तनों की आवश्यकता है
- टिनीट्यूनर लाइब्रेरी केवल तभी जब आप 16 मेगाहर्ट्ज क्रिस्टल का उपयोग नहीं करेंगे। फिर आपको माइक्रोकंट्रोलर की आंतरिक घड़ी को कैलिब्रेट करने की आवश्यकता होगी। यह लाइब्रेरी लीक से हटकर काम करती है।
- IR सेंसर के साथ बातचीत करने के लिए Attiny-IR-लाइब्रेरी। यह लाइब्रेरी लीक से हटकर काम करती है।
हमें 2 बूटलोडर भी चाहिए:
- डॉग सॉफ्टवेयर संस्करण, सीरियल इंटरफेस के साथ उपलब्ध है। इस बूटलोडर को attiny85 के साथ काम करने के लिए एक छोटे से ट्वीक की आवश्यकता होती है क्योंकि यह मिलिस () फ़ंक्शन के लिए टाइमर 1 का उपयोग करता है और IR लाइब्रेरी के साथ काम नहीं करेगा। हमें टाइमर को टाइमर 0 में बदलना होगा।
- मेलिस संस्करण, स्थिर बूटलोडर जिसे हम अंतिम चरण में उपयोग करेंगे। यह लीक से हटकर काम करता है।
चरण 5: वी-यूएसबी लाइब्रेरी की स्थापना और विन्यास
लाइब्रेरी को https://code.google.com/archive/p/vusb-for-arduin से डाउनलोड करें… फ़ाइल को अनज़िप करें और फोल्डर लाइब्रेरी/UsbKeyboard को अपने स्केचबुक लाइब्रेरी फोल्डर में कॉपी करें।
अब आपको ATtiny85 के साथ संगत होने के लिए कुछ फाइलों को संपादित करने की आवश्यकता है (इसे arduino के साथ काम करने के लिए कॉन्फ़िगर किया गया है):
ए) usbconfig.h संपादित करें:
"हार्डवेयर कॉन्फ़िग" परिवर्तन के अंतर्गत:
#USB_CFG_IOPORTNAME को परिभाषित करें##USB_CFG_IOPORTNAME B को परिभाषित करें
तथा
#USB_CFG_DMINUS_BIT 4 को परिभाषित करें#USB_CFG_DMINUS_BIT को परिभाषित करें 0
"वैकल्पिक हार्डवेयर कॉन्फ़िग" परिवर्तन के अंतर्गत:
#USB_CFG_PULLUP_IOPORTNAME को परिभाषित करें##USB_CFG_PULLUP_IOPORTNAME B को परिभाषित करें
एक पूर्ण "बूट अनुपालन छिपाई" विनिर्देश बनाने के लिए (अन्यथा कोई मल्टीमीडिया कुंजी काम नहीं करेगी), यह भी बदलें:
# परिभाषित करें USB_CFG_INTERFACE_SUBCLASS 0 // बूटो#परिभाषित USB_CFG_INTERFACE_SUBCLASS 0x01 // बूट
तथा
# परिभाषित करें USB_CFG_INTERFACE_PROTOCOL 0 // कीबोर्ड करने के लिए#USB_CFG_INTERFACE_PROTOCOL 0x01 // कीबोर्ड को परिभाषित करें
वैकल्पिक रूप से आप निम्न परिभाषाओं में निर्माता और डिवाइस का नाम भी बदल सकते हैं:
#USB_CFG_VENDOR_NAME परिभाषित करें
#USB_CFG_DEVICE_NAME परिभाषित करें
बी) UsbKeyboard.h संपादित करें:
परिवर्तन:
पोर्टेड = 0; // TODO: केवल USB पिन के लिए?DDRD |= ~USBMASK;
प्रति
पोर्टब = 0; // TODO: केवल USB पिन के लिए?DDRB |= ~USBMASK;
101 से अधिक कीकोड बदलने की अनुमति देने के लिए भी:
0x25, 0x65, // LOGICAL_MAXIMUM (101) से: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)
तथा
0x29, 0x65, // USAGE_MAXIMUM (कीबोर्ड एप्लिकेशन) से: 0x29, 0xE7, // USAGE_MAXIMUM (कीबोर्ड एप्लिकेशन)
आपको इन 3 फाइलों को भी संपादित करने की आवश्यकता हो सकती है:
usbdrv.husbdrv.cUsbKeyboard.h
और हर बार जब आप PROGMEM को चर प्रकार के नाम से पहले "const" जोड़ते हुए देखते हैं (उदा: PROGMEN char usbHidReportDescriptor[35] ==> PROGMEM const char usbHidReportDescriptor[35])
यदि यह स्पष्ट नहीं है तो https://forum.arduino.cc/index.php?topic=391253.0#… पर जाएं।
आप इन सभी परिवर्तनों से बच सकते हैं यदि आप केवल संलग्न पुस्तकालय को डाउनलोड करते हैं (मैंने यह सभी परिवर्तन स्वयं किए हैं) और बस इसे अपने स्केचबुक लाइब्रेरी फ़ोल्डर के अंदर निकालें:
UsbKeyboard attiny85 के लिए कॉन्फ़िगर किया गया
संपादित करें: हाल ही में मैंने पाया है कि एलेजांद्रो लीवा (https://github.com/gloob) को इस पुस्तकालय का ख्याल रखा गया है और ऐसा लगता है कि यह भी अच्छी तरह से काम करता है। आप उसके संस्करण को उन आवश्यक परिवर्तनों के साथ भी आज़मा सकते हैं जो मैंने इसे अटारी के साथ काम करने के लिए किए थे, इसलिए यदि आप इसे देखना चाहते हैं तो इसे अपने स्केचबुक लाइब्रेरी फ़ोल्डर के अंदर निकालें।
UsbKeyboard attiny85 के लिए कॉन्फ़िगर किया गया (एलेजांद्रो लीवा संस्करण)
चरण 6: Attiny-IR और Tinytuner पुस्तकालयों की स्थापना
ए) अटारी-आईआर पुस्तकालय:
इसे https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… से डाउनलोड करें और फिर इसे अपने स्केचबुक लाइब्रेरी फ़ोल्डर में अनज़िप करें।
बी) टाइनीट्यूनर लाइब्रेरी:
यह केवल तभी आवश्यक है जब आप 16 मेगाहर्ट्ज क्रिस्टल का उपयोग नहीं कर रहे हैं, लेकिन मेरा विश्वास करो, भले ही यह क्रिस्टल के बिना भी काम करता है, यह इसके साथ बहुत अधिक स्थिर है और उनकी कीमत कुछ सेंट है, इसलिए इसे सरल रखें, क्रिस्टल का उपयोग करें और छोड़ें यह पुस्तकालय।
अभी तक आश्वस्त नहीं हैं? ठीक है, लाइब्रेरी को https://storage.googleapis.com/google-code-archive से डाउनलोड करें…फिर इसे अपने स्केचबुक लाइब्रेरी फ़ोल्डर में अनज़िप करें।
हम पुस्तकालयों के साथ कर रहे हैं, अब हम बूटलोडर स्थापित करने के लिए आगे बढ़ते हैं।
चरण 7: बूटलोडर्स की स्थापना और विन्यास
हम दो बूटलोडर स्थापित करने जा रहे हैं मेलिस एक मेरे अनुभव के अनुसार अधिक स्थिर है और हम इसे अंतिम स्केच में उपयोग करेंगे। राउडी डॉग सॉफ्टवेयर द्वारा विकसित दूसरा एक भयानक कोर है, बहुत छोटा और एक एकीकृत सीरियल इंटरफ़ेस उपलब्ध है, लेकिन मेरा रिमोट इसके साथ कुछ समय बाद दुर्घटनाग्रस्त हो गया है, इसलिए हम इस बूटलोडर का उपयोग केवल attiny85 आंतरिक घड़ी को कैलिब्रेट करने और हमारे रिमोट को डिकोड करने के लिए करेंगे। बटन।
मुझे पता है कि attiny85 धारावाहिक क्षमताओं को देने के लिए पुस्तकालय उपलब्ध हैं, लेकिन फिर आपको उन पुस्तकालयों को बदलना होगा जो धारावाहिक वस्तु का उपयोग करते हैं … मुझे यह प्रक्रिया बेहतर लगती है।
आइए स्थापना के साथ शुरू करें:
ए) मेलिस बूटलोडर:
बस Arduino IDE प्राथमिकताएं खोलें और "अतिरिक्त बोर्ड प्रबंधक URL" में जोड़ें:
raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
फिर Arduino IDE बोर्ड मैनेजर खोलें और attiny खोजें, Mellis से बोर्ड इंस्टॉल करें। अब आपको Arduino ID ATtiny25/45/85 और ATtiny24/44/84 बोर्ड देखना चाहिए।
बी) राउडी डॉग सॉफ्टवेयर छोटा बूटलोडर:
बूटलोडर को https://storage.googleapis.com/google-code-archive… से डाउनलोड करें
फ़ाइल को अनज़िप करें और अपनी स्केचबुक/हार्डवेयर के अंदर छोटे फ़ोल्डर को कॉपी करें (यदि यह अभी तक मौजूद नहीं है तो इस फ़ोल्डर को बनाएं)। फिर फ़ोल्डर स्केचबुक/हार्डवेयर/टिनी/एवीआर/में जाएं और:
1) फाइल को कॉपी करें Prospective Boards.txt फाइल में बोर्ड्स.txt
2) platform.txt फ़ाइल को संपादित करें और कुछ बदलाव करें:
वेरिएबल कंपाइलर.पथ को अनकम्मेंट करें और इसे अपने arduino इंस्टॉलेशन फोल्डर के अंदर फोल्डर हार्डवेयर/टूल्स/avr/bin/ की ओर इशारा करते हुए छोड़ दें:
कंपाइलर.पथ={PATH_TO_YOUR_ARDUINO_FOLDER}/हार्डवेयर/टूल्स/avr/बिन/
भीकंपाइलर बदलें।
फिर यह सुनिश्चित करते हुए निम्नलिखित चर बदलें कि सब कुछ अपनी जगह पर है (वे फ़ाइलें मौजूद होनी चाहिए, अन्यथा चर को सही पथ पर इंगित करें):
tools.avrdude.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude
tools.avrdude.config.path={runtime.ide.path}/हार्डवेयर/टूल्स/avr/etc/avrdude.conf
tools.avrdude.cmd.path.linux={runtime.ide.path}/hardware/tools/avr/bin/avrdude
tools.avrdude.config.path.linux={runtime.ide.path}/हार्डवेयर/टूल्स/avr/etc/avrdude.conf
3) फ़ाइल को संपादित करें cores/tiny/core_build_options.h और बदलें:
# TIMER_TO_USE_FOR_MILLIS 1 को परिभाषित करने के लिए#TIMER_TO_USE_FOR_MILLIS 0 परिभाषित करें
यह बहुत महत्वपूर्ण है, अन्यथा आईआर रिसीवर प्रत्येक बटन के लिए शून्य आउटपुट करेगा। यह कथन IR लाइब्रेरी के लिए उपलब्ध टाइमर1 को छोड़कर, मिलिस () फ़ंक्शन के लिए टाइमर 0 को कॉन्फ़िगर करता है। अंतिम स्केच वैसे भी टाइमर 0 को निष्क्रिय कर देगा, इसलिए आपके पास न तो मिलिस () और न ही देरी () फ़ंक्शन उपलब्ध होंगे। आपके पास इसके बजाय देरी माइक्रोसेकंड () फ़ंक्शन उपलब्ध हो सकता है।
यह बूटलोडर न्यूनतम है, लेकिन इसमें सीरियल ऑब्जेक्ट समर्थन शामिल है:
Attiny85 PB2 (pin7) TX है और PB0 (pin5) RX है
आपके पास आईएसपी प्रोग्रामर (आर्डिनो) और सीरियल से यूएसबी एडाप्टर के साथ एक ही समय में एक कॉन्फ़िगरेशन हो सकता है ताकि आपको तारों को अक्सर बदलने की आवश्यकता न हो:
अब हमारे पास पुस्तकालय और बूटलोडर दोनों स्थापित हैं और ठीक से कॉन्फ़िगर किए गए हैं, सबसे कठिन काम पूरा हो गया है और हम चीजों का परीक्षण शुरू कर सकते हैं।
चरण 8: बूटलोडर को जलाना और स्केच अपलोड करना
मैं Arduino IDE प्राथमिकताओं के तहत वर्बोज़ आउटपुट को सक्रिय करने की दृढ़ता से सलाह देता हूं ताकि आप किसी भी अंतिम समस्या का पता लगा सकें।
Attiny85 में बूटलोडर को बर्न करने के लिए आपको Arduino पर ISP उदाहरण अपलोड करना होगा और फिर प्रोग्रामर Arduino को ISP के रूप में चुनना होगा।
अब Arduino पर रीसेट और ग्राउंड पिन के बीच एक 10uF कैपेसिटर रखें (यह जलने की प्रक्रिया के लिए आवश्यक नहीं है, लेकिन यह स्केच को attiny85 पर अपलोड करना है)।
अब arduino बूटलोडर्स को जलाने और स्केच लोड करने के लिए तैयार है। आपको बस अपने एटिनी के अनुकूल सही बोर्ड का चयन करने और उसे जलाने की आवश्यकता है।
Attiny85 में एक स्केच लोड करने के लिए, इसे arduino IDE में लोड करें और "प्रोग्रामर का उपयोग करके अपलोड करें" पर क्लिक करें।
महत्वपूर्ण: स्केच अपलोड करते समय 3 चरण होते हैं, संकलन, लेखन और सत्यापन। यदि संकलन और लेखन ने सफलतापूर्वक काम किया, लेकिन सत्यापन प्रक्रिया विफल हो जाती है, तो संभव है कि स्केच वैसे भी काम करेगा।
चरण 9: Attiny85 आंतरिक घड़ी को कैलिब्रेट करें (यदि आप क्रिस्टल का उपयोग करते हैं तो इसे छोड़ दें)
यदि आप 16Mhz क्रिस्टल का उपयोग नहीं करने का निर्णय लेते हैं, तो आपको अपनी attiny85 घड़ी को कैलिब्रेट करने की आवश्यकता होती है, इसलिए हमें एक सीरियल इंटरफ़ेस के साथ बूटलोडर की आवश्यकता होगी और हम सही कैलिब्रेशन प्राप्त करने के लिए टिनीट्यूनर लाइब्रेरी का उपयोग करेंगे।
अगले चरणों का पालन करें
- टूल के तहत Arduino को ISP प्रोग्रामर के रूप में चुनें
- बोर्ड का चयन करें "ATtiny85 @ 8MHz (आंतरिक थरथरानवाला; बीओडी अक्षम)"
- मुझे लगता है कि आपके पास आईएसपी कनेक्शन तैयार है जैसा कि कनेक्ट करने से पहले वर्णित है अन्यथा कनेक्शन करें
- बर्न बूटलोडर
- इस बूटलोडर ने सीरियल इंटरफ़ेस के लिए अलग-अलग पिन कॉन्फ़िगर किए हैं, इस कॉन्फ़िगरेशन का उपयोग केवल वर्तमान बूटलोडर के लिए करें
- FT232RL attiny85 में PB4 (pin3 RX) से TX तक - FT232RL attiny85 में PB3 (pin2 TX) से RX तक - FT232RL पर GND से GND तक क्योंकि attiny85 पहले से ही arduino द्वारा संचालित है जिसे आपको कनेक्ट करने की आवश्यकता नहीं है FT232RL पर 5v, अन्यथा कनेक्ट करें: FT232RL पर attiny85 VCC (pin8) से 5V तक
- टिनीट्यूनर उदाहरण को attiny85. पर अपलोड करें
- धारावाहिक संचार की निगरानी के लिए स्क्रीन प्रोग्राम खोलें: स्क्रीन / देव / ttyUSB0 9600
- रीसेट पिन (पिन 1) को जीएनडी (बस एक पल) से जोड़ने वाले attiny85 को रीसेट करें, स्क्रीन विंडो पर एक स्वागत संदेश प्रदर्शित होना चाहिए
- अंशांकन समाप्त होने तक एकल 'x' वर्ण (कोई कैरिज-रिटर्न नहीं; कोई लाइन-फ़ीड) भेजना जारी रखें
- अंशांकन के मान को कहीं न कहीं एनोटेट करें (OSCCAL = 0x)। यह वह मान है जिसे आपको अंतिम रेखाचित्रों पर घोषित करने की आवश्यकता होगी
चरण 10: अपने रिमोट बटन को डिकोड करें
अब हमारे रिमोट बटन को डीकोड करने और उन्हें पीसी में विशिष्ट कुंजी स्ट्रोक को असाइन करने का समय है, ऐसा करने के लिए अगले चरणों का पालन करें:
- यदि आप क्रिस्टल का उपयोग नहीं करते हैं, तो "ATtiny85 @ 16MHz (आंतरिक PLL; 4.3V BOD)" बोर्ड का चयन करें, "ATtiny85 @ 16 MHz (बाहरी क्रिस्टल; 4.3 V BOD" अन्यथा, फिर इसे जला दें)
- स्केच लोड करें:
- यदि आप क्रिस्टल का उपयोग नहीं करते हैं, तो OSCCAL चर वाली पंक्ति को असम्बद्ध करें और इसे उस मान पर असाइन करें जो आपने घड़ी का अंशांकन करते समय पाया था
- मुझे लगता है कि सेंसर पहले बताए अनुसार जुड़ा हुआ है, अन्यथा इसे कनेक्ट करें
- मैं यह भी मानता हूं कि FT232RL सीरियल यूएसबी एडेप्टर से जुड़ा है, अन्यथा इसे कनेक्ट करें
- RESET पिन (pin1) को GND से जोड़ने वाले attiny85 को रीसेट करें (बस एक पल)
- अपने रिमोट के बटनों को बार-बार दबाएं और स्क्रीन विंडो चेकआउट करें, आपको प्रत्येक रिकॉर्ड के लिए अंतिम संख्या को एनोटेट करना होगा, प्रत्येक बटन 2 अलग-अलग नंबर उत्पन्न कर सकता है
उदाहरण:
प्राप्त D44 3396प्राप्त 544 1348
आपके द्वारा अभी-अभी हिट किए गए बटन के संबंध में 3396 और 1348 को एनोटेट करें, फिर आपको यह तय करना होगा कि आप उस बटन का क्या करना चाहते हैं। उदाहरण के लिए मैं चाहता हूं कि बटन मल्टीमीडिया कीकोड "वॉल्यूम अप" भेजे, फिर मुझे उस कीकोड के लिए आईडी ढूंढनी होगी। ऐसा करने के लिए, पीडीएफ डाउनलोड करें:
अनुभाग "कीबोर्ड/कीपैड पृष्ठ" पृष्ठ 53 देखें और अपने रिमोट बटन को कीबोर्ड कोड से जोड़ने के लिए कॉलम यूसेज आईडी (दिसंबर) में संख्याओं का उपयोग करें। हमारे उदाहरण में हम देख सकते हैं कि "वॉल्यूम अप" के लिए कीकोड है: 128।
उस v-usb पैकेज से UsbKeyboard लाइब्रेरी के अंदर UsbKeyboard.h फ़ाइल को संपादित करें जिसे हमने पहले स्थापित किया था और मौजूदा परिभाषाओं में जोड़ें यदि यह पहले से मौजूद नहीं है:
#परिभाषित करें KEY_VOL_UP 128
जब हम अपने सभी रिमोट/एस बटनों के साथ कर लेते हैं और UsbKeyboard.h फ़ाइल में सभी परिभाषाएँ तैयार हो जाती हैं, तो हम अंतिम चरण पर जा सकते हैं।
चरण 11: अंतिम स्केच लोड हो रहा है और सर्वश्रेष्ठ के लिए आशा है
अब हमारे पास सभी रिमोट बटन डिकोड हो गए हैं, फ़ाइल UsbKeyboard.h हमारे कीकोड से भर गई है, इसलिए अब हम arduino IDE में निश्चित स्केच लोड कर सकते हैं:
github.com/venumz/ATtiny85-USB-IR-receiver…
यह फ़ाइल ठीक वही फ़ाइल है जिसका उपयोग मैं अपने रिसीवर के लिए कर रहा हूं, और यह 2 अलग-अलग रिमोट के लिए काम कर रहा है, इसलिए स्पष्ट रूप से आपको अपने रिमोट के साथ काम करने के लिए इसे अपडेट करना होगा।
यदि आप क्रिस्टल का उपयोग नहीं करते हैं, तो OSCCAL चर वाली पंक्ति को असम्बद्ध करें और इसे उस मान पर असाइन करें जो आपने घड़ी का अंशांकन करते समय पाया था
ध्यान दें कि लूप फ़ंक्शन में इस तरह के बहुत सारे कथन हैं:
अगर(results.value==3405 || results.value==1357) {// ऊपर तीर
if(lastStroke!=results.value) UsbKeyboard.sendKeyStroke(KEY_ARROW_UP);
}
आपको अपने स्वयं के कथन बनाने होंगे, अपने रिमोट में प्रति बटन एक। "अगर" स्थिति में आपको परिणाम डालना होगा। अपने रिमोट को डिकोड करने वाले मानों को मान दें और UsbKeyboard.sendKeyStroke विधि के तर्क के रूप में आपको UsbKeyboard.h फ़ाइल में पहले से परिभाषित कीकोड में से एक को रखना होगा।
स्थिति "if(lastStroke!=results.value)" की आवश्यकता है क्योंकि कुछ रिमोट प्रति हिट एक ही कोड को दो बार भेजते हैं, और यह दूसरी हिट को रोकता है। मुझे पूरी तरह से यकीन नहीं है और यह आईआर प्रोटोकॉल पर निर्भर हो सकता है जो आपके रिमोट में प्रोग्राम किया गया है (मैं वास्तव में आईआर प्रोटोकॉल का विशेषज्ञ नहीं हूं) लेकिन मेरे अपने रिमोट के साथ मेरे अनुभव के अनुसार, प्रत्येक बटन 2 अलग-अलग कोड उत्पन्न कर सकता है और जब आप बटन दबाते हैं और दबाए रखते हैं, तो यह वही कोड भेजता है, लेकिन यदि आप फिर से बटन दबाते हैं तो यह दूसरे को भेजता है। तो ऐसा लगता है कि कोड एक वैकल्पिक तरीके से भेजे जाते हैं, मुझे लगता है कि यह जानने के लिए एक मानक तरीका है कि आपने वास्तव में कितनी बार बटन दबाया है।
ठीक है, हम लगभग पूरा कर चुके हैं, बस अंतिम स्केच अपलोड करें, इसे पीसी से कनेक्ट करें और देखें कि यह कैसा चल रहा है।
इस चरण के लिए, बेहतर है कि आप Arduino और USB दोनों को सीरियल एडॉप्टर से अनप्लग करें और उसके बाद ही, USB को अपने पीसी पोर्ट में प्लग करें (यदि कुछ गलत हो जाता है तो आपका सर्किट डिबग करना आसान हो जाएगा)।
यदि सब कुछ ठीक काम करता है, जब आप टर्मिनल खोलते हैं और dmesg कमांड भेजते हैं तो आपको इस चरण पर पहली छवि के समान कुछ देखना चाहिए। यदि समस्याएँ थीं, तो आपके पास दूसरी छवि में पाई गई त्रुटियाँ होनी चाहिए और आपको अपने सर्किट और/या सॉफ़्टवेयर को डीबग करना शुरू करना चाहिए। प्रारंभिक त्रुटियों का एक स्रोत जो मेरे पास था वह एक यूएसबी हब था जो मेरे आईआर रिसीवर के साथ काम नहीं करेगा (हालांकि अन्य ने काम किया) … इसलिए इस अंतिम चरण के लिए आईआर रिसीवर को सीधे अपने पीसी पोर्ट पर प्लग करना बेहतर है। अंततः त्रुटियों को खोजना मुश्किल हो सकता है, लेकिन अंत में, मेरी तरह, आप बहुत कुछ सीखेंगे और भुगतान करने की कीमत इसके लायक है, मैं आपको विश्वास दिलाता हूं।
यह सब लोग हैं, मुझे बताएं कि क्या आपको इस निर्देश में कोई त्रुटि दिखाई देती है और अपने ब्रांड के नए IR USB रिसीवर का आनंद लें!
सिफारिश की:
पुराने संचार रिसीवर में एक डिजिटल डिस्प्ले जोड़ें: 6 कदम (चित्रों के साथ)
पुराने संचार रिसीवर में एक डिजिटल डिस्प्ले जोड़ें: पुराने संचार गियर का उपयोग करने की कमियों में से एक यह तथ्य है कि एनालॉग डायल बहुत सटीक नहीं है। आप हमेशा प्राप्त होने वाली आवृत्ति पर अनुमान लगा रहे हैं। AM या FM बैंड में, यह आम तौर पर कोई समस्या नहीं है क्योंकि आप आमतौर पर
Arduino के साथ 2.4Ghz NRF24L01 मॉड्यूल का उपयोग कर वायरलेस रिमोट - क्वाडकॉप्टर के लिए Nrf24l01 4 चैनल / 6 चैनल ट्रांसमीटर रिसीवर - आरसी हेलीकाप्टर - Arduino का उपयोग करते हुए Rc प्लेन: 5 कदम (चित्रों के साथ)
Arduino के साथ 2.4Ghz NRF24L01 मॉड्यूल का उपयोग कर वायरलेस रिमोट | क्वाडकॉप्टर के लिए Nrf24l01 4 चैनल / 6 चैनल ट्रांसमीटर रिसीवर | आरसी हेलीकाप्टर | Arduino का उपयोग करते हुए Rc प्लेन: Rc कार चलाने के लिए | क्वाडकॉप्टर | ड्रोन | आरसी विमान | RC नाव, हमें हमेशा एक रिसीवर और ट्रांसमीटर की आवश्यकता होती है, मान लीजिए कि RC QUADCOPTER के लिए हमें एक 6 चैनल ट्रांसमीटर और रिसीवर की आवश्यकता है और उस प्रकार का TX और RX बहुत महंगा है, इसलिए हम अपने
ऑडियो विज़ुअलाइज़ेशन, बाइनरी क्लॉक और एफएम रिसीवर के साथ डेस्क एम्पलीफायर: 8 कदम (चित्रों के साथ)
ऑडियो विज़ुअलाइज़ेशन के साथ डेस्क एम्पलीफायर, बाइनरी क्लॉक और एफएम रिसीवर: मुझे एम्पलीफायर पसंद हैं और आज, मैं हाल ही में बनाए गए अपने कम पावर डेस्क एम्पलीफायर को साझा करूंगा। मेरे द्वारा डिज़ाइन किए गए एम्पलीफायर में कुछ दिलचस्प विशेषताएं हैं। इसमें एक एकीकृत बाइनरी घड़ी है और यह समय और तारीख दे सकती है और यह ऑडियो की कल्पना कर सकती है जिसे अक्सर ऑडियो कहा जाता है
वाईफाई और आईआर रिमोट और एंड्रॉइड ऐप का उपयोग करके नोडएमसीयू और आईआर रिसीवर के साथ 8 रिले नियंत्रण: 5 कदम (चित्रों के साथ)
वाईफाई और आईआर रिमोट और एंड्रॉइड ऐप का उपयोग करके नोडएमसीयू और आईआर रिसीवर के साथ 8 रिले नियंत्रण: वाईफाई और आईआर रिमोट और एंड्रॉइड ऐप पर नोडएमसीयू और आईआर रिसीवर का उपयोग करके 8 रिले स्विच को नियंत्रित करना। आईआर रिमोट वाईफाई कनेक्शन से स्वतंत्र काम करता है। यहां एक अद्यतन संस्करण क्लिक है यहां
जॉयस्टिक और IR रिसीवर के साथ Arduino- नियंत्रित प्लेटफ़ॉर्मर गेम: 3 चरण (चित्रों के साथ)
जॉयस्टिक और IR रिसीवर के साथ Arduino- नियंत्रित प्लेटफ़ॉर्मर गेम: आज, हम एक साधारण C#-आधारित प्लेटफ़ॉर्मर गेम को नियंत्रित करने के लिए Arduino माइक्रोकंट्रोलर का उपयोग करने जा रहे हैं। मैं जॉयस्टिक मॉड्यूल से इनपुट लेने के लिए Arduino का उपयोग कर रहा हूं, और उस इनपुट को C# एप्लिकेशन को भेजता हूं जो एक सीरियल सी पर इनपुट को सुनता और डिकोड करता है