विषयसूची:

Arduino PS/2 से USB अडैप्टर: 7 चरण (चित्रों के साथ)
Arduino PS/2 से USB अडैप्टर: 7 चरण (चित्रों के साथ)

वीडियो: Arduino PS/2 से USB अडैप्टर: 7 चरण (चित्रों के साथ)

वीडियो: Arduino PS/2 से USB अडैप्टर: 7 चरण (चित्रों के साथ)
वीडियो: When The Quiet Kid Does Your Homework 💀 #electronics #arduino #engineering 2024, जुलाई
Anonim
Arduino PS/2 से USB अडैप्टर
Arduino PS/2 से USB अडैप्टर
Arduino PS/2 से USB अडैप्टर
Arduino PS/2 से USB अडैप्टर

क्या आपने कभी अपने लैपटॉप या नए डेस्कटॉप पीसी के साथ अपने पुराने पीएस/2 कीबोर्ड का उपयोग करना चाहा और पता चला कि उनके पास अब पीएस/2 पोर्ट नहीं हैं? और फिर एक सामान्य व्यक्ति की तरह एक सस्ता पीएस / 2 यूएसबी एडाप्टर खरीदने के बजाय, अपने Arduino को पीएस / 2 से यूएसबी एडाप्टर के रूप में उपयोग करना चाहता था। तब आप सही जगह पर आए हैं:)

इसमें शामिल होने से पहले निष्पक्ष चेतावनी। जब आप अपने यूएनओ/मेगा का उपयोग यूएसबी-एचआईडी डिवाइस के रूप में कर रहे हैं (कीबोर्ड तक ही सीमित नहीं है, यह माउस, जॉयस्टिक इत्यादि भी हो सकता है) तो आप अस्थायी रूप से Arduino के रूप में इसके कार्यों को खो देंगे। इससे मेरा मतलब है कि आप सीरियल संचार का उपयोग नहीं कर सकते हैं और आप इसे यूएसबी के माध्यम से पुन: प्रोग्राम नहीं कर सकते हैं। ऐसा इसलिए है क्योंकि हम फर्मवेयर को इसके USB इंटरफ़ेस चिप (USB पोर्ट Atmega8U2 और 16U2 के पास संशोधन के आधार पर) पर लिखेंगे। लेकिन चिंता न करें आप वास्तव में अपने यूएनओ/मेगा को ईंट नहीं कर सकते हैं ऐसा करने से यह हमेशा उलटा होता है।

इसके अलावा किसी भी तरह से अगर आपके पास एक Arduino है जिसमें पहले से ही एक USB-HID क्षमता है (Arduino Pro Micro या Leonardo, आदि एक Google खोज करते हैं) तो आप इस निर्देश को भूल सकते हैं जो कभी अस्तित्व में था, सीधे मुसीबत की दुनिया से खुद को बचाने के लिए यहां जाएं, बस मजाक!

आपूर्ति

  • हार्डवेयर

    • Arduino UNO या मेगा
    • पीएस/2 कीबोर्ड
    • वैकल्पिक रूप से एक अतिरिक्त Arduino या किसी भी प्रकार का USB प्रोग्रामर (USBasp, आदि) काम आ सकता है।
  • सॉफ्टवेयर

    • एटमेल फ्लिप
    • Arduino IDE के लिए PS2KeyAdvanced लाइब्रेरी

चरण 1: तारों और स्थापना

तारों और स्थापना
तारों और स्थापना
तारों और स्थापना
तारों और स्थापना
तारों और स्थापना
तारों और स्थापना
तारों और स्थापना
तारों और स्थापना

स्थिति के आधार पर आप या तो ब्रेकआउट बोर्ड ढूंढ सकते हैं या मदरबोर्ड (मेरी दूसरी कोशिश) से एक पुराने बंदरगाह को बचा सकते हैं या यदि आप विशेष रूप से मूडी महसूस कर रहे हैं तो आप बैंगनी जैक को पूरी तरह से काट सकते हैं और 4 तारों को उजागर कर सकते हैं (मेरी पहली कोशिश) और उन्हें यूएनओ से जोड़ें।

कीबोर्ड_Arduino

+5वी (वीसीसी)_+5वी

ग्राउंड_ GND

घड़ी_पिन 2**

डेटा_पिन3*

* आप डेटा पिन को अपनी इच्छानुसार बदल सकते हैं लेकिन स्केच को अपडेट करना याद रखें।

**CLOCK को Arduino पर एक इंटरप्ट पिन से जोड़ा जाना है जो UNO पर केवल पिन 2 या 3 (स्केच को अपडेट करना याद रखें) हो सकता है। अधिक जानकारी और विभिन्न बोर्ड कॉन्फ़िगरेशन के लिए आप PS2KeyAdvanced लाइब्रेरी उदाहरणों के टिप्पणी अनुभाग की जांच कर सकते हैं।

चरण 2: परीक्षण कीबोर्ड

डेक पर जाने से पहले सुनिश्चित करें कि सब कुछ कीबोर्ड और लाइब्रेरी पर काम कर रहा है।

यहाँ मैंने PS2KeyAdvanced लाइब्रेरी उदाहरणों से SimpleTest.ino का एक संशोधित संस्करण अद्यतन घड़ी और डेटा पिन के साथ संलग्न किया है और एक "मेक" और "ब्रेक" प्रतिनिधित्व भी किया है। यहाँ आउटपुट के लिए कुछ स्पष्टीकरण दिया गया है।

  • यह "मेक" और "ब्रेक" स्कैन्कोड सिस्टम और "कोड" जो कि की-प्रेस या की-रिलीज़ में से किसी एक का अलग (c & 0xFF) स्कैनकोड है, PS / 2 से USB रूपांतरण में एक महत्वपूर्ण भूमिका निभाता है और मैं आपको अध्ययन करने की सलाह देता हूं अन्य 2 उदाहरण जो पुस्तकालय के साथ आते हैं एक बेहतर समझ पाने के लिए यदि आप अंतिम स्केच को सुधारने या बदलने (अलग-अलग लेआउट के लिए कुंजियों को फिर से मैप करने) की योजना बना रहे हैं। इसके अलावा, आप '\Documents\Arduino\libraries\PS2KeyAdvanced\src\' से 'PS2KeyAdvanced.h' या 'PS2KeyCode.h' फ़ाइलें खोलकर लाइब्रेरी से PS/2 स्कैन्कोड की पूरी सूची प्राप्त कर सकते हैं।
  • "स्टेटस बिट्स" संशोधक कुंजियों (Ctrl, Alt, Windows, Shift/Caps) को संदर्भित करता है और आप देखेंगे कि प्रत्येक अतिरिक्त संशोधक कुंजी के साथ, यह मान बदल जाता है, जबकि सामान्य (गैर-संशोधक) कुंजी का मुख्य "कोड" अपरिवर्तित रहता है। लेकिन अंतिम स्केच में मैंने इस पद्धति की अवहेलना की है और इन संशोधक कुंजियों को सरल की-प्रेस के रूप में लागू किया है (आप देखेंगे कि इन संशोधक कुंजियों में सामान्य कुंजियों से स्वतंत्र "मेक" और "ब्रेक" स्कैनकोड भी होता है, चाहे कई कुंजियाँ दबाई जाती हैं या नहीं।) क्योंकि यह USB-HID प्रोटोकॉल के साथ चीजों को आसान बनाता है।

चरण 3: PS/2 से USB रूपांतरण पूर्वावलोकन

हमारे Arduino को USB कीबोर्ड के रूप में पहचानने के लिए Atmega8U2 या 16U2 (UNO Rev3) को अपडेट करने से पहले हमें यह सुनिश्चित करना चाहिए कि सभी रूपांतरण सामग्री सही ढंग से काम कर रही है और अंतिम अंतिम स्केच अपलोड किया गया है या अन्यथा यह ओवर-राइटिंग रखने के लिए एक बड़ा दर्द होगा फर्मवेयर बार-बार मूल और यूएसबी-कीबोर्ड हेक्स फाइलों के बीच ताकि आप सही स्केच अपलोड कर सकें। यह विशेष रूप से सच हो जाता है यदि आपके पास ISP के रूप में उपयोग करने के लिए USBasp या अन्य Arduino जैसा कोई बाहरी प्रोग्रामर नहीं है। तो यहां हम चीजों का परीक्षण करने के लिए मानव पठनीय आउटपुट (सीरियल मॉनिटर के माध्यम से) के साथ अंतिम स्केच का 'DEBUG' संस्करण अपलोड करेंगे।

आपके द्वारा देखे जाने वाले आउटपुट को इस तरह स्वरूपित किया जाएगा जब प्रत्येक कुंजी जारी की जाएगी, 00 00 00 00 00 00 00 00

अपेक्षित आउटपुट के लिए यहां एक बुनियादी स्पष्टीकरण दिया गया है,

प्रत्येक नए एकाधिक संशोधक कुंजी-प्रेस के लिए आपको 'xx' के लिए अलग-अलग मानों के साथ एक नई लाइन मिलनी चाहिए। अंत में जब आप सभी संशोधक कुंजियाँ छोड़ते हैं तो 'xx' 00 हो जाना चाहिए।

xx 00 00 00 00 00 00 00

प्रत्येक नए एकाधिक सामान्य कुंजी-प्रेस के लिए (उदाहरण के लिए हम उस क्रम में 'xx', 'yy' और 'zz' मानों के साथ काल्पनिक कुंजी ए, कुंजी बी और कुंजी सी दोनों दबाएंगे) आपको निरंतर प्राप्त करना चाहिए (अनिवार्य नहीं) इस तरह की नई लाइनें,

00 00 xx yy zz 00 00 00

जब आप केवल कुंजी बी छोड़ते हैं तो आउटपुट बदलना चाहिए,

00 00 xx 00 zz 00 00 00

और यदि आप कुंजी a या कुंजी b जारी किए बिना मान 'nn' के साथ नई कुंजी d दबाते हैं तो आपका आउटपुट बदल जाना चाहिए,

00 00 एक्सएक्स एनएन जेडजेड 00 00 00

और अंत में प्रत्येक कुंजी जारी होने पर इस पर वापस आएं,

00 00 00 00 00 00 00 00

और अंत में यदि आप कैप्स लॉक, न्यूम लॉक या स्क्रॉल लॉक दबाते हैं तो आपको एक ही समय में कई लाइनों के साथ ऐसा कुछ मिलना चाहिए,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

अगर यहां सब कुछ होता है तो आप आगे बढ़ने के लिए सुनहरे हैं!

चरण 4: तकनीकी स्पष्टीकरण

तकनीकी स्पष्टीकरण
तकनीकी स्पष्टीकरण
तकनीकी स्पष्टीकरण
तकनीकी स्पष्टीकरण

आप चाहें तो इस स्टेप को छोड़ सकते हैं। यह पिछले आउटपुट के लिए सिर्फ एक स्पष्टीकरण है। आपके द्वारा देखा गया आउटपुट 8 बाइट्स सरणी उपरोक्त चित्र के अनुसार स्वरूपित है। 1 आप इसके बारे में और अधिक जान सकते हैं और यह भी कि संशोधक कुंजी स्थिति बाइट इस विकी से यूएसबी-एचआईडी के बारे में कैसे लिखा जाता है। मूल रूप से मेरा कोड क्या करता है हर बार एक नई कुंजी दबाई जाती है (पीएस/2 प्रोटोकॉल इसे 'मेक' के रूप में संदर्भित करता है) यह सरणी के अंतिम 6 बाइट्स के माध्यम से चक्र करता है जो सामान्य कुंजी-प्रेस के लिए उपयोग किया जाता है, और पहले भरें खाली बाइट यह प्राप्त 'PS/2 स्कैनकोड' के लिए प्रासंगिक 'HID स्कैनकोड' (अंजीर के रूप में दिखाया गया है। 2 इसके अलावा आप संलग्न पीडीएफ से एक पूरी सूची पा सकते हैं) के साथ पाता है। और अंत में जब प्रासंगिक कुंजी जारी की जाती है (PS/2 प्रोटोकॉल इसे 'ब्रेक' के रूप में संदर्भित करता है) कोड वर्तमान बाइट सरणी के माध्यम से चक्र करेगा और केवल प्रासंगिक बाइट को साफ़ करेगा।

यदि आपने यहाँ तक अनुसरण किया है और यदि आप विकी पृष्ठ को भी पढ़ते हैं तो आप देखेंगे कि इस पद्धति में थोड़ी समस्या है, सामान्य रूप से जब कुंजी जारी की जाती है, तो HID प्रोटोकॉल में शेष बाइट्स को खाली बाइट्स से छुटकारा पाने के लिए फिर से व्यवस्थित किया जाता है। शेष गैर-रिक्त बाइट्स के बीच। लेकिन किसी कारण से मैंने कितने तरीकों की कोशिश की, मैं इसे दबाए गए चाबियों के लिए अवांछित बाइट्स को गलती से साफ़ किए बिना इरादे से काम नहीं कर सका। यदि आप इसे काम करने के लिए इसमें सुधार कर सकते हैं तो कृपया एक टिप्पणी छोड़ दें। हालाँकि दिन के अंत में यह समस्या कीबोर्ड की कार्यक्षमता को प्रभावित नहीं करती है, जब तक कि Arduino अभी भी उनके दबाए गए आदेश की परवाह किए बिना प्रत्येक कुंजी-दबाया जाता है (जो व्यावहारिक उपयोग में कुछ भी प्रभावित नहीं करता है)।

चरण 5: अंतिम स्केच अपलोड करना

इसलिए इससे पहले कि आप अपने Arduino को USB कीबोर्ड के रूप में पहचानने के लिए Atmega8U2 या 16U2 (UNO Rev3) के फर्मवेयर को अंत में अपडेट करें, हमें फाइनल स्केच अपलोड करना होगा। इसे अपलोड करने के बाद, यदि आप सीरियल मॉनिटर पर जाते हैं तो आप देखेंगे कि यह हर नई कुंजी के साथ कचरा प्रिंट करता है, यह एक अच्छा शगुन है कि सब कुछ इरादा के अनुसार काम कर रहा है और हम अंतिम चरण पर आगे बढ़ सकते हैं। वाह!!!

चरण 6: फर्मवेयर को अपडेट करना

अंत में आप अपने Arduino के फर्मवेयर को USB कीबोर्ड के रूप में पंजीकृत करने के लिए अपडेट कर सकते हैं। इसके लिए मैं अधिक विवरण में नहीं जा रहा हूँ क्योंकि यह इस निर्देश को बहुत लंबा बना देगा।

  1. arduino.cc से इस गाइड का पालन करें 'DFU का उपयोग करके एक Uno या Mega2560 पर Atmega8U2 और 16U2 को अपडेट करना' के बारे में, लेकिन 'Arduino-usbserial-uno.hex' का उपयोग करने के बजाय संलग्न 'Arduino-keyboard-0.3.hex' का उपयोग करें।
  2. FLIP में अपने Arduino के आधार पर Atmega8U2 या 16U2 के रूप में लक्ष्य डिवाइस का चयन करना याद रखें और संचार माध्यम का चयन करें और अंत में रन का चयन करने से पहले सही हेक्स फ़ाइल लोड करें।
  3. यदि आप ड्राइवर त्रुटि में भागे हैं, तो विंडोज़ डिवाइस मैनेजर पर जाएँ और FLIP '\Program Files (x86)\Atmel\' की स्थापना निर्देशिका के अंदर अज्ञात ड्राइवर को खोजने के लिए चुनें।
  4. यदि आप FLIP से फर्मवेयर को कई बार अपडेट करते समय त्रुटियों में भाग गए, तो FLIP को बंद करें और 'प्रारंभ मेनू\FLIP\' से 'रीसेट प्राथमिकताएं' चलाएं और फिर FLIP को पुनरारंभ करें और फिर से प्रयास करने से पहले कॉन्फ़िगरेशन चरणों को करें यह आमतौर पर मेरे लिए काम करता है।
  5. यदि आप Arduino को उसकी मूल स्थिति में पुनर्स्थापित करना चाहते हैं, तो इस हेक्स फ़ाइल का उपयोग किए बिना पत्र के लिए उपरोक्त arduino.cc गाइड का पालन करें।

चरण 7: आनंद लें ……

आनंद लेना……
आनंद लेना……

अब अपने नए परिवर्तित PS/2 से USB कीबोर्ड का आनंद लें…. पी.एस. यह निर्देश पूरी तरह से Arduino के माध्यम से मेरे लैपटॉप से जुड़े बाहरी PS / 2 कीबोर्ड से लिखा गया था:)

सिफारिश की: