विषयसूची:

Stm32 में गिरना: होम मीडिया सेंटर के लिए रिमोट कंट्रोल: 4 कदम (चित्रों के साथ)
Stm32 में गिरना: होम मीडिया सेंटर के लिए रिमोट कंट्रोल: 4 कदम (चित्रों के साथ)

वीडियो: Stm32 में गिरना: होम मीडिया सेंटर के लिए रिमोट कंट्रोल: 4 कदम (चित्रों के साथ)

वीडियो: Stm32 में गिरना: होम मीडिया सेंटर के लिए रिमोट कंट्रोल: 4 कदम (चित्रों के साथ)
वीडियो: W5500 Interfacing with STM32 for IoT/Embedded Internet Applications PART I 2024, नवंबर
Anonim
Stm32 में गिरना: होम मीडिया सेंटर के लिए रिमोट कंट्रोल
Stm32 में गिरना: होम मीडिया सेंटर के लिए रिमोट कंट्रोल

यह smt32 माइक्रो कंट्रोलर, stm32f103c8t6 पर आधारित होम मीडिया सेंटर रिमोट कंट्रोल के लिए एक पूर्ण प्रोटोटाइप है जिसे 'ब्लूपिल' बोर्ड के रूप में जाना जाता है। मान लीजिए, आप होम मीडिया सेंटर के लिए एक पीसी का उपयोग कर रहे हैं। यह बहुत लचीला समाधान है, जो आपको विशाल वीडियो लाइब्रेरी को आंतरिक हार्ड ड्राइव में रखने की अनुमति देता है, या आप नेटवर्क से वीडियो चला सकते हैं, उदाहरण के लिए यूट्यूब या तो, आपको कोडेक्स या वीडियो चलाने में कोई परेशानी नहीं है, क्योंकि यह बहुत है सॉफ़्टवेयर प्लेयर को किसी भी समय अपडेट करना आसान है। इस समाधान का मुख्य नुकसान यह है कि आपको अपने प्लेबैक को नियंत्रित करने के लिए माउस और कीबोर्ड का उपयोग करना चाहिए। आईआर रिमोट कंट्रोल इसके लिए काफी सुविधाजनक है।

इस लेख में मैं दिखाऊंगा कि चिप ब्लूपिल बोर्ड का उपयोग करके खुद का रिमोट कंट्रोल कैसे बनाया जाता है।

चरण 1: विचार

विचार
विचार
विचार
विचार

मुख्य विचार बहुत सरल है: ब्लूपिल बोर्ड में यूएसबी पोर्ट एम्बेडेड है और यूएसबी एचआईडी कीबोर्ड के रूप में कार्य कर सकता है। यदि हम IR रिसीवर को बोर्ड से जोड़ते हैं, तो यह आपके IR रिमोट कंट्रोल से कमांड को वर्चुअल कीबोर्ड के 'की प्रेस' में ट्रांसलेट कर सकता है। कोई अतिरिक्त ड्राइवरों की आवश्यकता नहीं है!

हमारे आसपास की दुनिया में कई IR प्रोटोकॉल हैं। वीसीएस विक्रेता के प्रत्येक टीवी का अपना आईआर प्रोटोकॉल होता है। लेकिन इन सभी प्रोटोकॉल में कुछ सामान्य है: वे सिग्नल को एन्कोड करने के लिए पल्स-मॉड्यूलेशन का उपयोग करते हैं। आमतौर पर, कुछ प्रस्तावना होती है: पैकेट में पहले बिट से पहले लंबा आवेग। फिर IR कंट्रोल 0 और 1 के साथ पूरे पैकेट को ट्रांसमिट करता है और फिनिश लॉन्ग पल्स के साथ ट्रांसमिशन को फाइनल करता है। बिट को डिकोड करने के लिए हमें चोटी की लंबाई नाड़ी और लंबाई को मापने की जरूरत है। आमतौर पर, तर्क 0 और तर्क 1 की चरम लंबाई समान होती है, अंतर पूर्ण पल्स लंबाई में होता है।

पीडब्लूएम सिग्नल को कैप्चर करने के लिए stm32 माइक्रो कंट्रोलर में एम्बेडेड फीचर है। माइक्रो कंट्रोलर के हर टाइमर के पास 'पीडब्लूएम सिग्नल कैप्चर मोर' में रखा जा सकता है जब टाइमर के चैनल वेरिएबल्स पल्स की कुल लंबाई और इसकी चोटी की लंबाई को बचाते हैं। यहां मुझे थोड़ा विवरण उजागर करना चाहिए: जब आईआर रिसीवर सिग्नल पकड़ता है, तो उसके काम करने वाले पिन पर वोल्टेज 0 हो जाता है और निष्क्रिय स्थिति में आईआर रिसीवर आपूर्ति वोल्टेज के आधार पर काम करने वाले पिन में वोल्टेज 5 या 3.3 वोल्ट होता है। यानी, रिसीवर सिग्नल को 'इनवर्ट' करता है।

PWM कैप्चर मोड के साथ stm32 माइक्रो कंट्रोलर को IR रिमोट से कीबोर्ड कोड में आसानी से IR रिमोट ट्रांसलेटर में बदला जा सकता है। फिर आप अपना पसंदीदा विज़ुअलाइज़िंग सॉफ़्टवेयर शुरू कर सकते हैं, उदाहरण के लिए मीडिया सेंटर पर अपनी पसंदीदा फिल्म चलाने के लिए वीएलसी का कोडी।

चरण 2: नियंत्रक बनाना

नियंत्रक बनाना
नियंत्रक बनाना
नियंत्रक बनाना
नियंत्रक बनाना
नियंत्रक बनाना
नियंत्रक बनाना
नियंत्रक बनाना
नियंत्रक बनाना

एसटीएम 32 माइक्रो कंट्रोलर प्रोग्राम करने के लिए मैं एसटीएम से मुफ्त सॉफ्टवेयर की सिफारिश करना चाहता हूं: सिस्टम वर्कबेंच (उर्फ एसी 6) और बोर्ड कॉन्फ़िगरेशन टूल क्यूबएमएक्स। सॉफ्टवेयर को माइक्रो कंट्रोलर में अपलोड करने के लिए ST-Link V2 अडैप्टर के चिप क्लोन का उपयोग किया जा सकता है। इस चरण से जुड़ी सिस्टम कार्यक्षेत्र परियोजना फ़ाइलें, F1-IR_remote.zip फ़ाइल।

बोर्ड कॉन्फ़िगरेशन टूल हमारे माइक्रो कंट्रोलर के प्रारंभिक हार्डवेयर कॉन्फ़िगरेशन की प्रक्रिया को सरल करता है।

यदि आप सिस्टम वर्कबेंच टूल का उपयोग कर रहे हैं, तो आप केवल डाउनलोड किए गए प्रोजेक्ट का उपयोग कर सकते हैं। लेकिन अगर आप अधिक विवरण में परियोजना की जांच करना चाहते हैं, तो आप क्यूबएमएक्स में बोर्ड कॉन्फ़िगरेशन बना सकते हैं:

  • नया प्रोजेक्ट बनाएं और बोर्ड चुनें stm32f103c8
  • आरसीसी मेनू में 'हाई स्पीड क्लॉक (एचएसई)' आइटम के लिए 'क्रिस्टल/सिरेमिक रेज़ोनेटर' चुनें।
  • SYS मेनू में 'डीबग' आइटम के लिए 'सीरियल वायर' चुनें।
  • PWM कैप्चर मोड में टाइमर #2 (TIM2 मेनू) को कॉन्फ़िगर करें जैसा कि चित्र में दिखाया गया है:

    • स्लेव मोड -> रीसेट मोड
    • ट्रिगर स्रोत -> TI1FP1
    • घड़ी स्रोत -> आंतरिक घड़ी
    • Channel1 -> इनपुट कैप्चर डायरेक्ट मोड
  • USB मेनू में चेकबॉक्स 'डिवाइस (FS)' सेट करें
  • USB_DEVICE मेनू में 'FS IP की कक्षा' आइटम में 'मानव इंटरफ़ेस डिवाइस क्लास (HID)' पुल-डाउन मेनू तत्व का चयन करें
  • घड़ी विन्यास पैनल में, टाइमर #2 को 72 मेगाहर्ट्ज प्रदान करना सुनिश्चित करें क्योंकि हमें प्रत्येक 1 एमके पर टाइमर की गणना की आवश्यकता है।
  • कॉन्फ़िगरेशन पैनल में चित्र में दिखाए अनुसार USB डिवाइस को कॉन्फ़िगर करें
  • कॉन्फ़िगरेशन पैनल में टाइमर # 2 को निम्न के रूप में कॉन्फ़िगर करें:

    • Prescaller - 71 (0 से 71 तक) - 1 माइक्रो सेकेंड टिक!
    • काउंटर मोड - ऊपर
    • काउंटर अवधि - 39999 (हमें लंबी नाड़ी को मापने में सक्षम होना चाहिए)
    • इनपुट कैप्चर चैनल1 - फॉलिंग एज (याद रखें कि IR रिसीवर से सिग्नल उल्टा है)

PWM कैप्चर मोड में टाइमर # 2 निम्नलिखित कार्य करेगा:

जब फॉलिंग फ्रंट का पता चलता है, तो टाइमर काउंटर चैनल1 रजिस्टर में सेव हो जाएगा और टाइमर काउंटर 0 के साथ रीसेट हो जाएगा। फिर टाइमर दिशा की गिनती करना जारी रखेगा। इसलिए हम नाड़ी की लंबाई को माइक्रो सेकंड में आसानी से माप सकते हैं।

डिफ़ॉल्ट रूप से STM32 USB HID वर्ग USB माउस का अनुकरण करता है। यहां आप कंट्रोलर को कीबोर्ड में बदलने का निर्देश पा सकते हैं।

चरण 3: नियंत्रक की सिलाई

परियोजना पैनासोनिक रिमोट कंट्रोल और कोडी मीडिया सेंटर के साथ काम करती है। अपने स्वयं के नियंत्रक के लिए परियोजना को तैयार करने के लिए आपको अपने रिमोट कंट्रोल के लिए कोड सरणी जोड़नी चाहिए जैसा कि मैंने पैनासोनिक रिमोट कंट्रोल (पैनासोनिक कोड) के लिए इंक/कोड.एच हेडर में किया था। जैसा कि आप देख सकते हैं, प्रत्येक कमांड में अद्वितीय आईडी होती है (आईआरकॉममैंड एनम में)। परियोजना द्वारा मान्यता प्राप्त 24 आदेश (0-23) हैं। आदेश प्रासंगिकता द्वारा क्रमबद्ध हैं।

typedef enum {IR_play = 0, IR_stop, IR_pause, IR_forward, IR_rewind, IR_last_channel, IR_OSD, IR_prevous_menu, IR_left, IR_right, IR_up, IR_down, IR_enter, IR_chapter_next, IR_chapter_previous, IR_info, IR_subtitle, IR_nxt_subtitle, IR_pos_subtitle, IR_teletext, IR_zoom, IR_mark_watched, IR_playlist, आईआर_पावर, आईआर_अज्ञात } आईआरकमांड;

स्थिरांक uint16_t kbrd_kodi = {HID_KEY_P, HID_KEY_X, HID_KEY_SPACE, HID_KEY_F, HID_KEY_R, HID_KEY_0, HID_KEY_M, HID_KEY_BACKSPACE, HID_KEY_LEFT, HID_KEY_RIGHT, HID_KEY_UP, HID_KEY_DOWN, HID_KEY_ENTER, HID_KEY_DOT, HID_KEY_COMMA, HID_KEY_S, HID_KEY_I, HID_KEY_T, HID_KEY_L, (uint16_t (HID_LEFT_CTRL) << 8)| HID_KEY_T, HID_KEY_V, HID_KEY_Z, HID_KEY_W, HID_KEY_C};

panasonicCode = {0xd00505d, 0xd00000d, 0xd00606d, 0xd00525f, 0xd00929f, 0x100eced, 0xd00101d, 0x1002b2a, 0x1007273, 0x100f2f3, 0x1005253, 0x100d2d3, 0x1009293, 0x1002c2d, 0x100acad, 0x1009c9d, 0x1008e8f, 0x1004e4f, 0x100cecf, 0x1000e0f, 0x180c041, 0x1801091 uint32_t स्थिरांक, 0x180a021, 0xd00bcb1};

फिर आपको addRemote() फ़ंक्शन के साथ IR.cpp में init() विधि में अपना रिमोट कंट्रोल जोड़ना चाहिए। फ़ंक्शन तर्क हैं:

  • पैकेट में बिट्स की संख्या
  • पैकेट हैडर लंबाई
  • 'शून्य' बिट लंबाई
  • 'एक' बिट लंबाई
  • कोड सरणी के लिए सूचक
  • सरणी के संख्या तत्व

शून्य IRcmd::init(void) { addRemote(48, 5252, 902, 1755, panasonicCode, sizeof(panasonicCode)/sizeof(uint32_t));

}

कमांड को कीबोर्ड कोड में बदलने के लिए फाइल में एक और टेबल भी है। kbdr_kodi सरणी में कोडी मीडिया केंद्र के लिए प्रमुख कोड होते हैं। आप अपने स्वयं के मीडिया केंद्र कार्यक्रम के लिए एक और सरणी जोड़ सकते हैं, उदाहरण के लिए, वीएलसी प्लेयर। यदि आप एक और मीडिया सेंटर एप्लिकेशन टेबल जोड़ते हैं, तो आप एक अन्य ऑब्जेक्ट KBD बनाएंगे, और इसे main.cpp में इनिशियलाइज़ करेंगे।

चरण 4: सिलाई को आसान बनाने के लिए उपकरण

सिलाई को आसान बनाने के लिए उपकरण
सिलाई को आसान बनाने के लिए उपकरण
सिलाई को आसान बनाने के लिए उपकरण
सिलाई को आसान बनाने के लिए उपकरण

भंडार में दो अन्य परियोजनाएं हैं

  • आईआर जांच - आपके रिमोट के संकेतों के समय मापदंडों को मापने की अनुमति देता है।
  • IR_capture - आपके रिमोट कंट्रोल के HEX कोड को कैप्चर करने की अनुमति देता है।

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

आईआर जांच परियोजना में टाइमर #2 दो चैनलों के साथ पीडब्लूएम कैप्चर मोड में काम कर रहा है: चैनल एक पूरी पल्स लंबाई को कैप्चर करता है और चैनल 2 पीक लेंथ को कैप्चर करता है। जब गिरने वाले सिग्नल किनारे का पता चला, तो टाइमर मान चैनल एक रजिस्टर में सहेजा गया और टाइमर 0 के साथ रीसेट हो गया। जब सिग्नल के बढ़ते किनारे का पता चला, तो टाइमर काउंटर चैनल 2 रजिस्टर में सहेजा गया।

अपने स्वयं के रिमोट कंट्रोल के बटन कोड को कैप्चर करने के लिए, IR_capture प्रोजेक्ट का उपयोग किया जा सकता है। Main.c फ़ाइल में आपको इस तरह की दूरस्थ परिभाषा जोड़नी चाहिए:

IRcode पैनासोनिक = {.hdr = ५२५२,.बिट्स = ४८,.zero = ९०२,.one = १७५५,.dev = ६०};

  • .hdr - हेडर की लंबाई mks. में
  • .bits - पैकेट में बिट्स की संख्या
  • .शून्य - शून्य बिट की लंबाई
  • .one - लंबाई एक एक बिट
  • .dev - विचलन (समय में अंतर जिसे स्वीकार किया जा सकता है)। आमतौर पर यह सबसे छोटी लंबाई का 1/10 होता है।

फिर अपने रिमोट को समर्थित रिमोट की सूची में जोड़ें:

कास्ट आईआरकोड * रिमोट [2] = {& पैनासोनिक, और पायनियर};

सिफारिश की: