Բովանդակություն:
- Քայլ 1: Գաղափարը
- Քայլ 2: Ստեղծեք վերահսկիչ
- Քայլ 3: Կառավարիչի հարմարեցում
- Քայլ 4. Գործիքներ `պարզեցնելու համար դերձակը
Video: Ընկնում է Stm32- ում. Հեռակառավարում տան մեդիա կենտրոնի համար. 4 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Սա տնային մեդիա կենտրոնի հեռակառավարման ամբողջական նախատիպն է ՝ հիմնված smt32 միկրոկառավարիչի, stm32f103c8t6- ի վրա, որը հայտնի է որպես «bluepill» տախտակ: Ենթադրենք, դուք համակարգիչ եք օգտագործում տնային մեդիա կենտրոնի համար: Դա շատ ճկուն լուծում է, որը թույլ է տալիս տեղադրել հսկայական վիդեո գրադարան ներքին կոշտ սկավառակի մեջ, կամ կարող եք տեսանյութեր նվագարկել ցանցից, օրինակ ՝ youtube կամ այլ կերպ, ընդհանրապես դժվարություն չունեք կոդեկների կամ տեսանյութերի նվագարկման հետ, քանի որ դա շատ հեշտ է ցանկացած ժամանակ թարմացնել ծրագրակազմի նվագարկիչը: Այս լուծման հիմնական թերությունն այն է, որ դուք պետք է օգտագործեք մկնիկ և ստեղնաշար `ձեր նվագարկումը վերահսկելու համար: IR հեռակառավարման վահանակը շատ հարմար է դրա համար:
Այս հոդվածում ես ցույց կտամ, թե ինչպես ստեղծել սեփական հեռակառավարման վահանակ `չիպերի կապույտ տախտակի միջոցով:
Քայլ 1: Գաղափարը
Հիմնական գաղափարը շատ պարզ է. Bluepill տախտակը ներկառուցված է USB պորտ և կարող է հանդես գալ որպես USB HID ստեղնաշար: Եթե մենք IR ստացողը կցենք տախտակին, այն կարող է թարգմանել ձեր IR հեռակառավարման վահանակի հրամանը վիրտուալ ստեղնաշարի «ստեղն սեղմելու»: Լրացուցիչ վարորդներ չեն պահանջվում:
Մեզ շրջապատող աշխարհում կան բազմաթիվ IR արձանագրություններ: VCS վաճառողի յուրաքանչյուր հեռուստատեսություն ունի իր սեփական IR արձանագրությունը: Բայց այս բոլոր արձանագրությունները մի ընդհանուր բան ունեն. Ազդանշանը կոդավորելու համար օգտագործում են զարկերակային մոդուլյացիա: Սովորաբար, կա մի նախաբան. Երկար իմպուլս մինչև փաթեթի առաջին բիթը: Այնուհետև IR հսկողությունը փոխանցում է ամբողջ փաթեթը 0 -ով և 1 -ով և վերջնականացնում է փոխանցումը ավարտի երկար իմպուլսով: Բիթը վերծանելու համար մենք պետք է չափենք երկարության զարկերակը և գագաթնակետի երկարությունը: Սովորաբար, տրամաբանության գագաթնակետի 0 -ն և տրամաբանությունը 1 -ը նույնն են, տարբերությունը ամբողջ զարկերակի երկարության մեջ է:
Stm32 միկրոկարգավորիչները ներկառուցված են PWM ազդանշանը գրավելու գործառույթ: Միկրոհսկիչի գրեթե յուրաքանչյուր ժամաչափ կարող է դրվել «PWM ազդանշանը ավելի շատ գրավելու» մեջ, երբ ժամաչափի ալիքային փոփոխականները խնայում են զարկերակի ընդհանուր երկարությունը և դրա գագաթնակետը: Այստեղ ես պետք է նշեմ մի փոքր մանրամասնություն. Այսինքն, ստացողը «շրջում» է ազդանշանը:
PWM ֆիքսման ռեժիմով stm32 միկրոհսկիչը կարելի է հեշտությամբ վերածել IR հեռակա թարգմանչի ՝ IR հեռավորությունից ստեղնաշարի կոդերին: Այնուհետև կարող եք սկսել ձեր նախընտրած տեսողական ծրագրակազմը, օրինակ ՝ Kodi of VLC- ն ՝ ձեր նախընտրած ֆիլմը մեդիա կենտրոնում ցուցադրելու համար:
Քայլ 2: Ստեղծեք վերահսկիչ
Stm32 միկրո վերահսկիչ ծրագրավորելու համար ես կցանկանայի խորհուրդ տալ STM- ի անվճար ծրագրակազմ. Softwareրագրակազմը միկրոհսկիչի մեջ ներբեռնելու համար կարող է օգտագործվել ST-Link V2 ադապտեր չիպի կլոնը: Այս քայլին կցված համակարգի աշխատանքային սեղանի նախագծի ֆայլերը ՝ F1-IR_remote.zip ֆայլը:
Տախտակի կազմաձևման գործիքը պարզեցնում է մեր միկրոհսկիչի սկզբնական ապարատային կազմաձևման գործընթացը:
Եթե դուք օգտագործում եք համակարգի աշխատասեղանի գործիքը, կարող եք պարզապես օգտագործել ներբեռնված նախագիծը: Բայց եթե ցանկանում եք ավելի մանրամասն ուսումնասիրել նախագիծը, կարող եք cubeMX- ում ստեղծել տախտակի կազմաձևում.
- Ստեղծեք նոր նախագիծ և ընտրեք տախտակ stm32f103c8
- RCC ընտրացանկում ընտրեք «Բյուրեղապակյա/կերամիկական ռեզոնատոր» ՝ «Բարձր արագության ժամացույց (HSE)» կետի համար:
- SYS ընտրացանկում «Վրիպազերծում» կետի համար ընտրեք «Serial Wire»:
-
Կարգավորեք ժամաչափը #2 (TIM2 ընտրացանկ) PWM ֆիքսման ռեժիմում, ինչպես ցույց է տրված նկարում.
- Ստրուկի ռեժիմ -> Վերագործարկեք ռեժիմ
- Գործարկման աղբյուր -> TI1FP1
- Sourceամացույցի աղբյուր -> Ներքին ժամացույց
- Channel1 -> Input Սևեռման ուղղակի ռեժիմ
- USB ընտրացանկում նշեք «Սարքը (FS)» վանդակը
- USB_DEVICE ընտրացանկում «FS IP դաս» տարրում ընտրեք «Մարդկային միջերեսի սարքի դաս (HID)» ընտրացանկի տարրը:
- Clockամացույցի կազմաձևման վահանակում համոզվեք, որ թիվ 2 ժամաչափին տրամադրեք 72 ՄՀց հաճախականություն, քանի որ մեզ անհրաժեշտ է ժամաչափի հաշվարկ յուրաքանչյուր 1 արկղում:
- Կազմաձևման վահանակում կազմաձևեք USB սարքը, ինչպես ցույց է տրված նկարում
-
Կազմաձևման վահանակում կարգավորեք#2 ժամաչափը հետևյալ կերպ.
- Prescaller - 71 (0 -ից 71) - 1 միկրո վայրկյան տիզ:
- Counter Mode - Up
- Հակահարված - 39999 (մենք պետք է կարողանանք չափել երկար զարկերակը)
- Մուտքային գրավման ալիք 1 - ընկնող եզր (հիշեք, որ IR ընդունիչից ազդանշանը շրջված է)
PWM գրավման ռեժիմում թիվ 2 ժամաչափը կաշխատի հետևյալ կերպ.
Երբ ընկնող ճակատը հայտնաբերվի, ժմչփի հաշվիչը կպահվի Channel1 գրանցամատյանում, և ժմչփի հաշվիչը կվերակայվի 0 -ով: Հետո ժամաչափը կշարունակի հաշվել ուղղությունը: Այսպիսով, մենք կարող ենք հեշտությամբ չափել զարկերակի երկարությունը միկրո վայրկյանում:
Լռելյայն STM32 USB HID դասը նմանակում է USB մկնիկը: Այստեղ դուք կարող եք գտնել հրահանգը ՝ վերահսկիչը ստեղնաշարի վերածելու համար:
Քայլ 3: Կառավարիչի հարմարեցում
Նախագիծն աշխատում է Panasonic հեռակառավարման վահանակի և Kodi մեդիակենտրոնի հետ: Ձեր սեփական վերահսկիչի համար նախագիծը հարմարեցնելու համար դուք պետք է ավելացնեք ձեր հեռակառավարման վահանակի ծածկագիրը, ինչպես դա արեցի panasonic հեռակառավարման վահանակի համար (panasonicCode) Inc/code.h վերնագրին: Ինչպես տեսնում եք, յուրաքանչյուր հրաման ունի եզակի ID (IRcommmand enum- ում): Կան 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_preject, IR_sum_ IR, IR, IR_power, IR_nknown} IR հրահանգ;
const 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};
const uint32_t panasonicCode = {0xd00505d, 0xd00000d, 0xd00606d, 0xd00525f, 0xd00929f, 0x100eced, 0xd00101d, 0x1002b2a, 0x1007273, 0x100f2f3, 0x1005253, 0x100d2d3, 0x1009293, 0x1002c2d, 0x100acad, 0x1009c9d, 0x1008e8f, 0x1004e4f, 0x100cecf, 0x1000e0f, 0x180c041, 0x1801091, 0x180a021, 0xd00bcb1};
Այնուհետև IR.cpp- ում դուք պետք է ավելացնեք ձեր սեփական հեռակառավարման վահանակը ՝ addRemote () գործառույթով: Ֆունկցիայի փաստարկներն են.
- Փաթեթի բիթերի քանակը
- Փաթեթի վերնագրի երկարությունը
- «Eroրո» բիտ երկարություն
- «Մեկ» բիտ երկարություն
- Կոդի զանգվածի ցուցիչ
- Numberանգվածի թվային տարրեր
դատարկ IRcmd:: init (անվավեր) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
Նաև ֆայլը պարունակում է մեկ այլ սեղան ՝ հրամանները ստեղնաշարի կոդերի փոխարկելու համար: Kbdr_kodi զանգվածը պարունակում է Kodi մեդիա կենտրոնի հիմնական կոդերը: Դուք կարող եք ավելացնել մեկ այլ զանգված ձեր սեփական մեդիա կենտրոնի ծրագրի համար, օրինակ ՝ vlc նվագարկիչ: Եթե ավելացնեիք մեդիա կենտրոնի կիրառման այլ աղյուսակ, կստեղծեիք մեկ այլ օբյեկտ KBD և այն նախաստորագրեք main.cpp- ում:
Քայլ 4. Գործիքներ `պարզեցնելու համար դերձակը
Պահեստում կա ևս երկու նախագիծ
- IR հետաքննություն - թույլ է տալիս չափել ձեր հեռակառավարման ազդանշանների ժամանակային պարամետրերը:
- IR_capture - թույլ է տալիս գրավել ձեր հեռակառավարման վահանակի HEX կոդերը:
Պարզապես բեռնեք IR հետաքննության նախագիծը և միացրեք կապի տախտակի USB պորտը ձեր համակարգչին: Այնուհետեւ գործարկեք ցանկացած տերմինալային ծրագիր վիրտուալ սերիալային պորտի սարքի վրա, որը համապատասխանում է stm32 տախտակին: Մինչ հեռակառավարման կոճակները սեղմում եք, ծրագիրը չափում է ստացված իմպուլսները և տպում է տարբեր զարկերակների միջին ժամանակը: Այն պետք է պարզեցնի փաթեթի վերնագրի զրոյական երկարության հայտնաբերումը `զրո և մեկ բիթ:
IR հետազոտական նախագծում թիվ 2 ժամաչափը աշխատում է PWM գրավման ռեժիմում `երկու ալիքով. Առաջին ալիքը գրավում է ամբողջ զարկերակի երկարությունը, իսկ 2 -ը` գագաթնակետի երկարությունը: Երբ ընկնում է ազդանշանի եզրը, ժմչփի արժեքը պահվում է առաջին ալիքի գրանցամատյանում և ժմչփը կարգավորվում է 0 -ով: Երբ ազդանշանի բարձրացող եզրը հայտնաբերվում է, ժամաչափի հաշվիչը պահվում է 2 -րդ ալիքի գրանցամատյանում:
Ձեր հեռակառավարման վահանակի կոճակների կոդերը գրավելու համար կարող է օգտագործվել IR_capture նախագիծը: Main.c ֆայլում դուք պետք է ավելացնեք հեռավոր սահմանումը, ինչպես սա է.
IRCode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};
- .hdr - վերնագրի երկարությունը mks- ում
- .bit - փաթեթում բիթերի քանակը
- .zero - զրո բիտի երկարությունը
- . մեկ - երկարությունը մեկ բիթ
- .dev - շեղումը (ժամանակների տարբերությունը, որը կարելի է ընդունել): Սովորաբար դա ամենափոքր երկարության 1/10 -ն է:
Այնուհետև ձեր հեռակառավարիչը ավելացրեք աջակցվող հեռակառավարման վահանակների ցուցակին.
const IRcode* remote [2] = {& panasonic, & pioneer};
Խորհուրդ ենք տալիս:
Պատի ամրացում IPad- ի համար ՝ որպես տան ավտոմատացման կառավարման վահանակ, օգտագործելով Servo վերահսկվող մագնիսը ՝ էկրանն ակտիվացնելու համար. 4 քայլ (նկարներով)
Պատի ամրացում IPad- ի համար, որպես տան ավտոմատացման կառավարման վահանակ, օգտագործելով Servo վերահսկվող մագնիսը `էկրանի ակտիվացման համար. Ես օգտագործում եմ Domoticz- ը որպես իմ տան ավտոմատացման ծրագիր, մանրամասների համար տե՛ս www.domoticz.com: Գործիքային վահանակի որոնման մեջ, որը ցույց է տալիս Domoticz- ի բոլոր տեղեկությունները միացված
Փոփոխել կենտրոնի բաժինը. 5 քայլ (նկարներով)
Փոփոխել կենտրոնի բաժինը. Ես անջատել եմ լարերը կենտրոնի մարտկոցի հատվածից, որպեսզի ավելի հեշտ լինի աշխատել: Հետո ես օգտագործեցի քայլափայլ կամ Unibit ՝ մարտկոցի հատվածի մեխի միջոցով հորատելու համար: Դուք, հավանաբար, կարող եք օգտագործել ստանդարտ փորվածք, եթե զգույշ լինեք: Ես չէի ուզում գցել
Arduino- ի վրա հիմնված հեռակառավարում Eskate- ի կամ Hydrofoil- ի համար. 5 քայլ (նկարներով)
Arduino- ի վրա հիմնված հեռակառավարման վահանակ Eskate- ի կամ Hydrofoil- ի համար. Այս հրահանգը ցույց կտա ձեզ, թե ինչպես կառուցել ֆիզիկական հեռակառավարիչ `eskate- ով կամ էլեկտրական հիդրոֆայլով օգտագործելու համար, ներառյալ ձեզ անհրաժեշտ բոլոր ծածկագրերն ու սարքավորումները: Soldոդման հետ կապված շատ բան կա, բայց դրա պատրաստումը նույնպես հաճելի է: Ի՞նչ կարող է անել հեռակառավարիչը: Համա
Անվճար փոխակերպեք (պարզապես մոտավորապես) ցանկացած մեդիա ֆայլ (պարզապես մասին) ցանկացած այլ մեդիա ֆայլ: 4 քայլ
Vertանկացած մեդիա ֆայլ անվճար փոխակերպեք (պարզապես մասին) Otherանկացած այլ մեդիա ֆայլ: ավելի ունիվերսալ է, օրինակ
Մեդիա կենտրոնի լուծում Նույնիսկ կինը և երեխաները կօգտագործեն. 9 քայլ
Մեդիակենտրոնի լուծում Նույնիսկ կինը և երեխաները կօգտագործեն. Սա PVR չէ, թե ինչպես կարելի է և թույլ չի տալիս ձայնագրել կամ դադարեցնել ուղիղ հեռուստատեսությունը, չնայած որ ես կառաջարկեմ մի լավ այլընտրանք