Përmbajtje:

Rënia në Stm32: Telekomandë për Qendrën e Mediave Shtëpi: 4 hapa (me fotografi)
Rënia në Stm32: Telekomandë për Qendrën e Mediave Shtëpi: 4 hapa (me fotografi)

Video: Rënia në Stm32: Telekomandë për Qendrën e Mediave Shtëpi: 4 hapa (me fotografi)

Video: Rënia në Stm32: Telekomandë për Qendrën e Mediave Shtëpi: 4 hapa (me fotografi)
Video: How to fix Android stereo won’t turn on, black screen 2024, Nëntor
Anonim
Rënia në Stm32: Telekomandë për Qendrën e Mediave në Shtëpi
Rënia në Stm32: Telekomandë për Qendrën e Mediave në Shtëpi

Ky është një prototip i plotë për telekomandën e qendrës së medias në shtëpi bazuar në mikro kontrolluesin smt32, stm32f103c8t6 i njohur si bordi 'bluepill'. Supozoni, ju jeni duke përdorur një PC për qendrën e mediave në shtëpi. Solutionshtë një zgjidhje shumë fleksibël, e cila ju lejon të vendosni bibliotekë të madhe video në hard diskun e brendshëm, ose mund të luani video nga rrjeti, për shembull youtube ose më shumë, nuk keni asnjë problem me kodikët ose luajtjen e videove, sepse është shumë lehtë për të azhurnuar luajtësin e softuerit në çdo kohë. Disavantazhi kryesor i kësaj zgjidhjeje është se ju duhet të përdorni miun dhe tastierën për të kontrolluar riprodhimin tuaj. Telekomanda IR është shumë e përshtatshme për këtë.

Në këtë artikull do të tregoj se si të krijoni telekomandën tuaj duke përdorur bordin e çipit bluepill.

Hapi 1: Ideja

Ideja
Ideja
Ideja
Ideja

Ideja kryesore është shumë e thjeshtë: bordi bluepill ka futur portin usb dhe mund të veprojë si tastierë USB HID. Nëse bashkojmë marrësin IR në tabelë, ai mund të përkthejë komandën nga telekomanda juaj IR në 'shtypjen e tastit' të tastierës virtuale. Asnjë shofer shtesë nuk kërkohet!

Ka shumë protokolle IR në botën përreth nesh. Çdo TV i shitësit VCS ka protokollin e tij IR. Por të gjithë këta protokolle kanë diçka të përbashkët: ata përdorin modulimin e pulsit për të koduar sinjalin. Zakonisht, ekziston një parathënie: impuls i gjatë para pjesës së parë në paketë. Pastaj kontrolli IR transmeton të gjithë paketën me 0 dhe 1 dhe përfundon transmetimin me një impuls të gjatë përfundimi. Për të deshifruar bitin duhet të matim pulsin e gjatësisë dhe gjatësinë e kulmit. Zakonisht, gjatësia e pikut të logjikës 0 dhe logjikës 1 janë të njëjta, ndryshimi është në gjatësinë e plotë të pulsit.

Mikrokontrolluesit stm32 kanë funksion të integruar për të kapur sinjalin PWM. Pranë çdo kohëmatësi të mikrokontrolluesit mund të futet në 'kapja e sinjalit PWM më shumë' kur ndryshoret e kanalit të kohëmatësit ruajnë gjatësinë totale të pulsit dhe gjatësinë e tij të pikut. Këtu duhet të theksoj detajet e vogla: kur marrësi IR kap sinjalin, tensioni në kunjin e tij të punës bëhet 0 dhe në gjendje boshe tensioni në kunjin e punës është 5 ose 3.3 volt në varësi të tensionit të furnizimit të marrësit IR. Pra, marrësi 'përmbys' sinjalin.

Me modalitetin e kapjes PWM mikrokontrolluesi stm32 mund të shndërrohet lehtësisht në një përkthyes IR të largët nga telekomanda IR në kodet e tastierës. Pastaj mund të filloni programin tuaj të preferuar të vizualizimit, për shembull Kodi i VLC për të luajtur filmin tuaj të preferuar në qendrën e mediave.

Hapi 2: Krijimi i kontrolluesit

Krijimi i kontrolluesit
Krijimi i kontrolluesit
Krijimi i kontrolluesit
Krijimi i kontrolluesit
Krijimi i kontrolluesit
Krijimi i kontrolluesit
Krijimi i kontrolluesit
Krijimi i kontrolluesit

Për të programuar mikrokontrolluesin stm32 do të doja të rekomandoja softuerin falas nga STM: tryeza e sistemit (aka ac6) dhe mjetin e konfigurimit të bordit cubeMX. Për të ngarkuar softuerin në mikrokontrollues mund të përdoret kloni i çipave të përshtatësit ST-Link V2. Skedarët e projektit të tryezës së punës të sistemit i bashkëngjiten këtij hapi, skedari F1-IR_remote.zip.

Mjeti i konfigurimit të bordit thjeshton procesin e konfigurimit fillestar të harduerit të mikrokontrolluesit tonë.

Nëse jeni duke përdorur mjetin e sistemit të punës, thjesht mund të përdorni projektin e shkarkuar. Por nëse dëshironi të hulumtoni projektin në më shumë detaje, mund të krijoni konfigurimin e tabelës në cubeMX:

  • Krijoni një projekt të ri dhe zgjidhni tabelën stm32f103c8
  • Zgjidhni 'Kristal/Rezonator qeramik' për artikullin 'Ora me shpejtësi të lartë (HSE)' në menunë RCC.
  • Zgjidhni 'Serial Wire' për artikullin 'Debug' në menunë SYS.
  • Konfiguroni kohëmatësin #2 (menyja TIM2) në modalitetin e kapjes PWM siç tregohet në figurë:

    • Modaliteti i skllavërisë -> Mënyra e rivendosjes
    • Burimi i aktivizimit -> TI1FP1
    • Burimi i orës -> Ora e brendshme
    • Channel1 -> Hyrja Regjistroni modalitetin e drejtpërdrejtë
  • Vendosni kutinë e zgjedhjes 'Pajisja (FS) në menunë USB
  • Zgjidhni elementin e menysë tërheqëse "Klasa e pajisjes me ndërfaqe njerëzore (HID)" në artikullin "Klasa e FS IP" në menunë USB_DEVICE
  • Në panelin e konfigurimit të orës, sigurohuni që t'i jepni kohëmatësit #2 72 MHz sepse kemi nevojë për numërimin e kohëmatësit në secilën 1 mks.
  • Në panelin e konfigurimit konfiguroni pajisjen USB siç tregohet në figurë
  • Në panelin e konfigurimit konfiguroni kohëmatësin#2 si më poshtë:

    • Prescaller - 71 (nga 0 në 71) - 1 rriqër mikro sekondë!
    • Mënyra e Kundërsulm - Lart
    • Periudha e Kundërsulmit - 39999 (duhet të jemi në gjendje të masim pulsin e gjatë)
    • Kanali i kapjes së hyrjes 1 - Edge në rënie (mbani mend se sinjali nga marrësi IR është i përmbysur)

Në modalitetin e kapjes PWM, kohëmatësi#2 do të funksionojë si më poshtë:

Kur zbulohet pjesa e përparme e rënies, numëruesi i kohëmatësit do të ruhet në regjistrin channel1 dhe numëruesi i kohëmatësit do të rivendoset me 0. Pastaj kohëmatësi do të vazhdonte të numëronte drejtimin. Kështu që ne lehtë mund të matim gjatësinë e pulsit në mikro sekonda.

Si parazgjedhje, klasa STM32 USB HID simulon miun USB. Këtu mund të gjeni udhëzimin për ta kthyer kontrolluesin në tastierë.

Hapi 3: Përshtatja e kontrolluesit

Projekti punon me telekomandën Panasonic dhe qendrën e mediave Kodi. Për të përshtatur projektin për kontrolluesin tuaj, duhet të shtoni grupin e kodit për telekomandën tuaj siç bëra për telekomandën panasonic (panasonicCode) në kokën Inc/code.h. Siç mund ta shihni, çdo komandë ka ID unike (në IRcommmand enum). Janë 24 komanda (0-23) të njohura nga projekti. Komandat renditen sipas rëndësisë.

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_sump_ IR, IR_me_ IR, IR_power, IR_ panjohur} 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};

Atëherë duhet të shtoni telekomandën tuaj në metodën init () në IR.cpp me funksionin addRemote (). Argumentet e funksionit janë:

  • Numri i bitëve në paketë
  • Gjatësia e kokës së paketës
  • Gjatësia e bitit "zero"
  • Gjatësia e një 'bit'
  • Treguesi i grupit të kodit
  • Numri i elementeve të grupit

i pavlefshëm IRcmd:: init (i pavlefshëm) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));

}

Gjithashtu skedari përmban një tabelë tjetër për të kthyer komandat në kodet e tastierës. Grupi kbdr_kodi përmban kodet kryesore për qendrën e mediave Kodi. Ju mund të shtoni një grup tjetër për programin tuaj të qendrës së medias, për shembull, vlc player. Nëse do të shtonit një tabelë tjetër të aplikacionit të qendrës së medias, do të krijonit një objekt tjetër KBD dhe do ta inicializonit atë në main.cpp.

Hapi 4: Mjetet për të thjeshtuar rrobaqepësinë

Mjetet për të thjeshtuar rrobaqepësinë
Mjetet për të thjeshtuar rrobaqepësinë
Mjetet për të thjeshtuar rrobaqepësinë
Mjetet për të thjeshtuar rrobaqepësinë

Ka dy projekte të tjera në depo

  • IR hetoni - ju lejon të matni parametrat e kohës së sinjaleve të telekomandës tuaj.
  • IR_capture - ju lejon të kapni kodet HEX të telekomandës tuaj.

Thjesht ngarkoni projektin IR investigate dhe lidhni portën USB të bordit bluepill në kompjuterin tuaj. Pastaj nisni çdo program terminal në pajisjen portale serike virtuale, që korrespondon me tabelën stm32. Ndërsa shtypni butonat në telekomandë, programi do të masë pulset e marra dhe printon kohët mesatare për puls të ndryshëm. Duhet të thjeshtohet për të zbuluar gjatësinë e pulsit për kokën e paketës, zero dhe një bit.

Në projektin e hetimit IR, kohëmatësi #2 po punon në modalitetin e kapjes PWM me dy kanale: kanali një kap të gjithë gjatësinë e pulsit dhe kanali 2 kap gjatësinë e pikut. Kur zbulohet skaji i sinjalit në rënie, vlera e kohëmatësit ruhet në regjistrin e kanalit një dhe kohëmatësi rivendoset me 0. Kur zbulohet skaji në rritje i sinjalit, numëruesi i kohëmatësit ruhet në regjistrin e kanalit 2.

Për të kapur kodet e butonave të telekomandës tuaj, projekti IR_capture mund të përdoret. Në skedarin main.c duhet të shtoni përkufizimin në distancë si ky:

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

  • .hdr - gjatësia e kokës në mks
  • .bit - numri i bitëve në paketë
  • .zero - gjatësia e bitit zero
  • .një - gjatësia një bit
  • .dev - devijimi (diferenca në kohë që mund të pranohet). Zakonisht është 1/10 e gjatësisë më të vogël.

Pastaj shtoni telekomandën tuaj në listën e telekomandave të mbështetura:

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

Recommended: