Orodha ya maudhui:

Kuanguka kwa Stm32: Udhibiti wa Kijijini kwa Kituo cha Vyombo vya Habari vya Nyumbani: Hatua 4 (na Picha)
Kuanguka kwa Stm32: Udhibiti wa Kijijini kwa Kituo cha Vyombo vya Habari vya Nyumbani: Hatua 4 (na Picha)

Video: Kuanguka kwa Stm32: Udhibiti wa Kijijini kwa Kituo cha Vyombo vya Habari vya Nyumbani: Hatua 4 (na Picha)

Video: Kuanguka kwa Stm32: Udhibiti wa Kijijini kwa Kituo cha Vyombo vya Habari vya Nyumbani: Hatua 4 (na Picha)
Video: BigTreeTech - SKR 3 - TMC2130 with Sensorless Homing 2024, Julai
Anonim
Kuanguka kwa Stm32: Udhibiti wa Kijijini kwa Kituo cha Vyombo vya Habari vya Nyumbani
Kuanguka kwa Stm32: Udhibiti wa Kijijini kwa Kituo cha Vyombo vya Habari vya Nyumbani

Huu ni mfano kamili wa kituo cha media cha nyumbani kudhibiti kijijini kulingana na mdhibiti mdogo wa smt32, stm32f103c8t6 inayojulikana kama bodi ya 'bluepill'. Tuseme, unatumia PC kwa kituo cha media cha nyumbani. Ni suluhisho rahisi sana, ambayo hukuruhusu kuweka maktaba kubwa ya video kwenye gari ngumu ya ndani, au unaweza kucheza video kutoka kwa mtandao, kwa mfano youtube au hivyo, hauna shida na kodeki au kucheza video kabisa, kwa sababu ni rahisi kusasisha kicheza programu wakati wowote. Ubaya kuu wa suluhisho hili ni kwamba unapaswa kutumia panya na kibodi kudhibiti uchezaji wako. Udhibiti wa kijijini wa IR ni hali rahisi kwa hii.

Katika kifungu hiki nitaonyesha jinsi ya kuunda udhibiti wa kijijini mwenyewe ukitumia bodi ya mpango wa chip.

Hatua ya 1: Wazo

Wazo
Wazo
Wazo
Wazo

Wazo kuu ni rahisi sana: bodi ya mipango imeingiza bandari ya usb na inaweza kufanya kama kibodi ya USB HID. Ikiwa tunaambatanisha mpokeaji wa IR kwenye ubao, inaweza kutafsiri amri kutoka kwa udhibiti wako wa kijijini wa IR kuwa 'kitufe cha kubonyeza' cha kibodi. Hakuna madereva ya ziada yanahitajika!

Kuna itifaki nyingi za IR katika ulimwengu unaotuzunguka. Kila TV ya muuzaji wa VCS ina itifaki yake ya IR. Lakini itifaki hizi zote zina jambo la kawaida: hutumia mwendo wa mpigo kusimba ishara. Kawaida, kuna utangulizi: msukumo mrefu kabla ya kidogo kwenye pakiti. Kisha udhibiti wa IR hupitisha pakiti nzima na 0 na 1 na inakamilisha usambazaji na pigo refu la kumaliza. Kuamua kidogo tunahitaji kupima urefu wa kunde na urefu wa kilele. Kawaida, urefu wa mantiki 0 na mantiki 1 ni sawa, tofauti ni katika urefu kamili wa kunde.

Vidhibiti vidogo vya stm32 vimeweka kipengee cha kukamata ishara ya PWM. Karibu kila kipima muda cha kidhibiti kidogo kinaweza kuwekwa kwenye 'PWM ya kukamata ishara zaidi' wakati vigeuzi vya kituo vya timer vinaokoa urefu wa jumla wa mapigo na urefu wake wa kilele. Hapa lazima nionyeshe maelezo kidogo: wakati mpokeaji wa IR anashika ishara, voltage kwenye pini yake ya kufanya kazi huwa 0 na katika hali ya uvivu voltage kwenye pini inayofanya kazi ni volts 5 au 3.3 kulingana na voltage ya usambazaji wa mpokeaji wa IR. Yaani, mpokeaji 'hubadilisha' ishara.

Na hali ya kukamata ya PWM mdhibiti mdogo wa stm32 anaweza kugeuzwa kwa urahisi kuwa mtafsiri wa kijijini wa IR kutoka kwa kijijini cha IR kwenda kwa nambari za kibodi. Kisha unaweza kuanza programu unayopenda ya kuibua picha, kwa mfano Kodi ya VLC kucheza sinema yako uipendayo kwenye kituo cha media.

Hatua ya 2: Kuunda Kidhibiti

Kuunda Kidhibiti
Kuunda Kidhibiti
Kuunda Kidhibiti
Kuunda Kidhibiti
Kuunda Kidhibiti
Kuunda Kidhibiti
Kuunda Kidhibiti
Kuunda Kidhibiti

Kupanga mdhibiti mdogo wa stm32 ningependa kupendekeza programu ya bure kutoka kwa STM: workbench ya mfumo (aka ac6) na chombo cha usanidi wa bodi cubeMX. Ili kupakia programu ndani ya kidhibiti kidogo dhana ya chip ya ST-Link V2 adapta inaweza kutumika. Faili za mradi wa benchi ya kazi iliyoambatishwa na hatua hii, faili ya F1-IR_remote.zip.

Zana ya usanidi wa bodi inarahisisha mchakato wa usanidi wa vifaa vya awali vya mdhibiti wetu mdogo.

Ikiwa unatumia zana ya mfumo wa kazi, unaweza kutumia tu mradi uliopakuliwa. Lakini ikiwa unataka kuchunguza mradi huo kwa maelezo zaidi, unaweza kuunda usanidi wa bodi kwenye cubeMX:

  • Unda mradi mpya na uchague bodi stm32f103c8
  • Chagua 'Crystal / Kauri Resonator' ya kipengee cha 'High Speed Clock (HSE)' kwenye menyu ya RCC.
  • Chagua 'Serial Wire' kwa kipengee cha 'Debug' kwenye menyu ya SYS.
  • Sanidi kipima saa # 2 (menyu ya TIM2) katika hali ya kukamata ya PWM kama inavyoonekana kwenye picha:

    • Njia ya Mtumwa -> Rudisha Hali
    • Chanzo cha Kuchochea -> TI1FP1
    • Chanzo cha Saa -> Saa ya Ndani
    • Channel1 -> Ingiza Njia ya kukamata moja kwa moja
  • Weka sanduku la kuangalia 'Kifaa (FS) kwenye menyu ya USB
  • Chagua kipengee cha menyu ya kuvuta chini ya 'Dashibodi ya Kiolesura cha Binadamu (HID)' katika kipengee cha 'Hatari ya FS IP' kwenye menyu ya USB_DEVICE
  • Katika paneli ya usanidi wa saa, hakikisha kutoa 72 MHz kwa kipima muda # 2 kwa sababu tunahitaji hesabu ya saa kwenye kila mks 1.
  • Kwenye paneli la usanidi sanidi kifaa cha USB kama inavyoonekana kwenye picha
  • Katika paneli ya usanidi sanidi kipima muda # 2 kama ifuatavyo:

    • Prescaller - 71 (kutoka 0 hadi 71) - 1 alama ya pili ndogo!
    • Njia ya Kukabiliana - Juu
    • Kipindi cha Kukabiliana - 39999 (tunapaswa kupima mapigo marefu)
    • Kituo cha kukamata pembejeo1 - Kuanguka kwa Makali (kumbuka kuwa ishara kutoka kwa mpokeaji wa IR imegeuzwa)

Katika hali ya kukamata PWM kipima muda # 2 kitafanya kazi yafuatayo:

Mbele inayoanguka ilipogunduliwa, kaunta ya saa ingeokolewa kwenye daftari la kituo1 na kaunta ya kipima muda ingewekwa upya na 0. Kisha kipima muda kitaendelea kuhesabu mwelekeo. Kwa hivyo tunaweza kupima urefu wa kunde kwa sekunde ndogo.

Kwa chaguo-msingi darasa la STM32 USB HID linafananisha panya ya USB. Hapa unaweza kupata maagizo ya kugeuza kidhibiti kuwa kibodi.

Hatua ya 3: Kushona Mdhibiti

Mradi unafanya kazi na Panasonic kudhibiti kijijini na Kituo cha media cha Kodi. Kubadilisha mradi kwa mdhibiti wako mwenyewe unapaswa kuongeza safu ya nambari ya udhibiti wa kijijini kama nilivyofanya kwa udhibiti wa kijijini wa panasonic (panasonicCode) kwa kichwa cha Inc / code.h. Kama unavyoona, kila amri ina kitambulisho cha kipekee (katika enum ya IRcommmand). Kuna amri 24 (0-23) zinazotambuliwa na mradi huo. Amri hupangwa kwa umuhimu.

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, IR_power, IR_unknown} IRcommand;

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};

Kisha unapaswa kuongeza udhibiti wako wa kijijini katika njia ya init () katika IR.cpp na kazi ya addRemote (). Hoja za kazi ni:

  • Idadi ya bits kwenye pakiti
  • Urefu wa kichwa cha pakiti
  • 'Zero' urefu kidogo
  • 'Moja' urefu kidogo
  • Elekeza kwa safu ya msimbo
  • Nambari ya safu ya safu

batili IRcmd:: init (batili) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode) / sizeof (uint32_t));

}

Faili pia ina jedwali lingine la kubadilisha amri kuwa nambari za kibodi. Safu ya kbdr_kodi ina nambari muhimu za kituo cha media cha Kodi. Unaweza kuongeza safu nyingine kwa programu yako ya kituo cha media, kwa mfano, vlc player. Ikiwa ungeongeza jedwali lingine la matumizi ya kituo cha media, ungeunda kitu kingine cha KBD, na kukianzisha katika main.cpp.

Hatua ya 4: Zana za Kurahisisha Ushonaji

Zana za Kurahisisha Ushonaji
Zana za Kurahisisha Ushonaji
Zana za Kurahisisha Ushonaji
Zana za Kurahisisha Ushonaji

Kuna miradi mingine miwili katika hazina

  • Uchunguzi wa IR - kuruhusu kupima vigezo vya muda wa ishara za kijijini chako.
  • IR_capture - kuruhusu kukamata misimbo ya HEX ya udhibiti wako wa kijijini.

Pakia tu mradi wa uchunguzi wa IR na unganisha bandari ya USB ya bodi ya mpango kwenye kompyuta yako. Kisha uzindua programu yoyote ya wastaafu kwenye kifaa halisi cha bandari, inayolingana na bodi ya stm32. Wakati unabonyeza vifungo kwenye kijijini chako, programu hiyo ingeweza kupima kunde zilizopokelewa na kuchapisha nyakati za wastani kwa mpigo tofauti. Inapaswa kurahisisha kugundua urefu wa kunde kwa kichwa cha pakiti, sifuri na bits moja.

Katika mradi wa uchunguzi wa IR kipima muda # 2 kinafanya kazi katika hali ya kukamata ya PWM na njia mbili: kituo kimoja kinachukua urefu wa mapigo yote na chaneli2 inakamata urefu wa kilele. Wakati kingo ya ishara inayoanguka ilipogunduliwa, thamani ya kipima muda ilihifadhiwa kwenye daftari la kituo na kipima muda kikawa na 0. Wakati kingo inayoinuka ya ishara iligunduliwa, kaunta ya kipima muda ilihifadhiwa kwenye kituo 2 sajili.

Ili kunasa nambari za kifungo za udhibiti wako wa kijijini, mradi wa IR_capture unaweza kutumika. Katika faili kuu.c unapaswa kuongeza ufafanuzi wa kijijini kama hii:

IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};

  • .hdr - urefu wa kichwa katika mks
  • biti - idadi ya bits kwenye pakiti
  • sifuri - urefu wa sifuri kidogo
  • moja - urefu moja kidogo
  • dev - kupotoka (tofauti katika nyakati ambazo zinaweza kukubalika). Kawaida ni 1/10 ya urefu mdogo zaidi.

Kisha ongeza kijijini chako kwenye orodha ya vidokezo vinavyoungwa mkono:

const IRcode * kijijini [2] = {& panasonic, & pioneer};

Ilipendekeza: