Satura rādītājs:

Iekļūšana Stm32: tālvadības pults mājas multivides centram: 4 soļi (ar attēliem)
Iekļūšana Stm32: tālvadības pults mājas multivides centram: 4 soļi (ar attēliem)

Video: Iekļūšana Stm32: tālvadības pults mājas multivides centram: 4 soļi (ar attēliem)

Video: Iekļūšana Stm32: tālvadības pults mājas multivides centram: 4 soļi (ar attēliem)
Video: Iekļūšana Latvijā liegta ap 100 migrantu 2024, Novembris
Anonim
Ietilpst Stm32: Home Media Center tālvadības pults
Ietilpst Stm32: Home Media Center tālvadības pults

Šis ir pilnīgs mājas mediju centra tālvadības pults prototips, kura pamatā ir smt32 mikrokontrolleris stm32f103c8t6, kas pazīstams kā “bluepill” dēlis. Pieņemsim, ka mājas multivides centram izmantojat datoru. Tas ir ļoti elastīgs risinājums, kas ļauj ievietot milzīgu video bibliotēku iekšējā cietajā diskā, vai arī varat atskaņot video no tīkla, piemēram, YouTube vai tā, jums nav problēmu ar kodekiem vai video atskaņošanu vispār, jo tas ir ļoti viegli atjaunināt programmatūras atskaņotāju jebkurā laikā. Šī risinājuma galvenais trūkums ir tas, ka atskaņošanas kontrolei jāizmanto pele un tastatūra. IR tālvadības pults tam ir ļoti ērts režīms.

Šajā rakstā es parādīšu, kā izveidot savu tālvadības pulti, izmantojot mikroshēmas bluepill dēli.

1. solis: ideja

Ideja
Ideja
Ideja
Ideja

Galvenā ideja ir ļoti vienkārša: bluepill panelī ir iebūvēts USB ports un tā var darboties kā USB HID tastatūra. Ja mēs pie paneļa pievienosim IR uztvērēju, tas varētu pārvērst komandu no jūsu IR tālvadības pults uz virtuālās tastatūras taustiņa nospiešanu. Nav nepieciešami papildu draiveri!

Apkārtējā pasaulē ir daudz IR protokolu. Katram VCS pārdevēja televizoram ir savs IR protokols. Bet visiem šiem protokoliem ir kaut kas kopīgs: signāla kodēšanai tie izmanto impulsa modulāciju. Parasti ir kāda preambula: garš impulss pirms pirmā bita paketē. Tad IR vadība pārraida visu paketi ar 0 un 1 un pabeidz pārraidi ar garu impulsu. Lai atšifrētu bitu, mums jāizmēra pīķa garums un pīķa garums. Parasti loģikas 0 pīķa garums un loģika 1 ir vienādi, atšķirība ir pilnā impulsa garumā.

Mikro kontrolieriem stm32 ir iegulta funkcija PWM signāla uztveršanai. Gandrīz katru mikrokontrollera taimeri var ievietot “PWM signāla uztveršanā vairāk”, ja taimera kanāla mainīgie saglabā pulsa kopējo garumu un maksimālo garumu. Šeit man ir jāuzsver sīkāka informācija: kad IR uztvērējs uztver signālu, spriegums uz tā tapas kļūst 0 un tukšgaitā spriegums darba tapā ir 5 vai 3,3 volti atkarībā no IR uztvērēja barošanas sprieguma. T.i., uztvērējs “apgriež” signālu.

Izmantojot PWM uztveršanas režīmu, stm32 mikrokontrolleri var viegli pārvērst par IR tālvadības tulkotāju no IR tālvadības uz tastatūras kodiem. Pēc tam varat sākt savu iecienītāko vizualizācijas programmatūru, piemēram, Vodi Kodi, lai multivides centrā atskaņotu iecienītāko filmu.

2. darbība: kontroliera izveide

Kontroliera izveide
Kontroliera izveide
Kontroliera izveide
Kontroliera izveide
Kontroliera izveide
Kontroliera izveide
Kontroliera izveide
Kontroliera izveide

Lai ieprogrammētu mikrokontrolleri stm32, es vēlētos ieteikt bezmaksas programmatūru no STM: sistēmas darbgaldu (aka ac6) un tāfeles konfigurācijas rīku cubeMX. Lai augšupielādētu programmatūru mikrokontrollerī, var izmantot ST-Link V2 adaptera mikroshēmas klonu. Sistēmas darbagalda projekta faili, kas pievienoti šim solim, fails F1-IR_remote.zip.

Plāksnes konfigurācijas rīks vienkāršo mūsu mikrokontrollera sākotnējās aparatūras konfigurācijas procesu.

Ja izmantojat sistēmas darbgalda rīku, varat vienkārši izmantot lejupielādēto projektu. Bet, ja vēlaties detalizētāk izpētīt projektu, varat izveidot tāfeles konfigurāciju cubeMX:

  • Izveidojiet jaunu projektu un atlasiet dēli stm32f103c8
  • RCC izvēlnes vienumam “High Speed Clock (HSE)” atlasiet “Crystal/Ceramic Resonator”.
  • SYS izvēlnes vienumam “Atkļūdot” atlasiet “Sērijas vads”.
  • PWM uztveršanas režīmā konfigurējiet taimeri #2 (izvēlne TIM2), kā parādīts attēlā:

    • Vergu režīms -> Atiestatīšanas režīms
    • Aktivizētāja avots -> TI1FP1
    • Pulksteņa avots -> Iekšējais pulkstenis
    • Kanāls1 -> Ievades uztveršanas tiešais režīms
  • USB izvēlnē iestatiet izvēles rūtiņu Ierīce (FS)
  • USB_DEVICE izvēlnes vienumā “FS IP klase” atlasiet nolaižamo izvēlnes elementu “Cilvēka saskarnes ierīču klase (HID)”
  • Pulksteņa konfigurācijas panelī noteikti nodrošiniet 72 MHz taimerim #2, jo mums ir nepieciešams taimera skaitlis katrā 1 mks.
  • Konfigurācijas panelī konfigurējiet USB ierīci, kā parādīts attēlā
  • Konfigurācijas panelī konfigurējiet taimeri#2 šādi:

    • Prescaller - 71 (no 0 līdz 71) - 1 mikrosekundes ērce!
    • Skaitītāja režīms - uz augšu
    • Skaitītāja periods - 39999 (mums vajadzētu būt iespējai izmērīt garo impulsu)
    • Ievades uztveršanas kanāls1 - krītošā mala (atcerieties, ka signāls no IR uztvērēja ir apgriezts)

PWM uztveršanas režīmā taimeris#2 darbojas šādi:

Kad tiek konstatēta krītošā fronte, taimera skaitītājs tiks saglabāts kanāla 1 reģistrā un taimera skaitītājs tiks atiestatīts ar 0. Tad taimeris turpinās skaitīt virzienu augšup. Tātad mēs varam viegli izmērīt impulsa garumu mikrosekundēs.

Pēc noklusējuma STM32 USB HID klase simulē USB peli. Šeit jūs varat atrast instrukciju, kā kontrolieri pārvērst par tastatūru.

3. darbība. Kontroliera pielāgošana

Projekts darbojas ar Panasonic tālvadības pulti un Kodi mediju centru. Lai pielāgotu projektu savam kontrolierim, pievienojiet galvenei Inc/code.h tālvadības pults kodu masīvu, kā es to darīju panasonic tālvadības pults (panasonicCode) gadījumā. Kā redzat, katrai komandai ir unikāls ID (IRcommmand enum). Ir 24 komandas (0-23), ko atpazīst projekts. Komanda ir sakārtota pēc atbilstības.

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_chap_next, IR_info, IR_jauda, IR_nezināms} IRkomanda;

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

Tad jums jāpievieno sava tālvadības pults init () metodē IR.cpp ar funkciju addRemote (). Funkcijas argumenti ir šādi:

  • Bitu skaits iepakojumā
  • Pakotnes galvenes garums
  • “Nulles” bitu garums
  • “Viena” bita garums
  • Rādītājs uz kodu masīvu
  • Masīva skaitļu elementi

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

}

Arī failā ir cita tabula, lai komandas pārvērstu tastatūras kodos. Masīvā kbdr_kodi ir Kodi multivides centra galvenie kodi. Savai multivides centra programmai varat pievienot citu masīvu, piemēram, vlc player. Ja pievienotu citu multivides centra lietojumprogrammu tabulu, jūs izveidotu citu objektu KBD un inicializētu to main.cpp.

4. solis: rīki, kas vienkāršo pielāgošanu

Rīki drēbnieku vienkāršošanai
Rīki drēbnieku vienkāršošanai
Rīki drēbnieku vienkāršošanai
Rīki drēbnieku vienkāršošanai

Krātuvē ir vēl divi projekti

  • IR izmeklēšana - ļauj izmērīt tālvadības pults signālu laika parametrus.
  • IR_capture - ļauj uztvert tālvadības pults HEX kodus.

Vienkārši ielādējiet IR izmeklēšanas projektu un pievienojiet datoram bluepill plates USB portu. Pēc tam virtuālajā seriālā porta ierīcē palaidiet jebkuru termināļa programmu, kas atbilst stm32 plāksnei. Nospiežot tālvadības pults pogas, programma izmērīs saņemtos impulsus un izdrukās vidējo laiku dažādiem impulsiem. Tam vajadzētu vienkāršot pakešu galvenes, nulles un viena bita impulsa garuma noteikšanu.

IR izpētes projektā taimeris Nr. 2 darbojas PWM uztveršanas režīmā ar diviem kanāliem: pirmais kanāls uztver visu impulsa garumu un 2. kanāls pīķa garumu. Kad tiek konstatēta krītošā signāla mala, taimera vērtība tiek saglabāta pirmā kanāla reģistrā un taimeris tiek atiestatīts ar 0. Kad tiek konstatēta signāla pieaugošā mala, taimera skaitītājs tiek saglabāts 2. kanāla reģistrā.

Lai uztvertu savas tālvadības pults pogu kodus, var izmantot projektu IR_capture. Failā main.c jāpievieno šāda attālā definīcija:

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

  • .hdr - galvenes garums mks
  • .bits - bitu skaits paketē
  • . nulle - nulles bita garums
  • .viens - garums viens viens bits
  • .dev - novirze (atšķirības laikos, ko var pieņemt). Parasti tas ir 1/10 no mazākā garuma.

Pēc tam pievienojiet tālvadības pulti atbalstīto tālvadības pulti:

const IRcode* tālvadības [2] = {& panasonic, & pioneer};

Ieteicams: