Obsah:

Falling in Stm32: Remote Control for Home Media Center: 4 Steps (with Pictures)
Falling in Stm32: Remote Control for Home Media Center: 4 Steps (with Pictures)

Video: Falling in Stm32: Remote Control for Home Media Center: 4 Steps (with Pictures)

Video: Falling in Stm32: Remote Control for Home Media Center: 4 Steps (with Pictures)
Video: The Most Controversial Lawn on the Internet 2024, November
Anonim
Spadá do Stm32: diaľkové ovládanie pre domáce mediálne centrum
Spadá do Stm32: diaľkové ovládanie pre domáce mediálne centrum

Toto je kompletný prototyp diaľkového ovládača domáceho mediálneho centra založený na mikroovládači smt32, stm32f103c8t6 známom ako doska „bluepill“. Predpokladajme, že používate počítač pre domáce mediálne centrum. Je to veľmi flexibilné riešenie, ktoré vám umožní umiestniť veľkú video knižnicu na interný pevný disk, alebo môžete prehrávať video zo siete, napríklad z youtube alebo podobne, nemáte problém s kodekmi alebo s prehrávaním videa, pretože je to veľmi softvérový prehrávač je možné kedykoľvek ľahko aktualizovať. Hlavnou nevýhodou tohto riešenia je, že na ovládanie prehrávania by ste mali používať myš a klávesnicu. Infračervený diaľkový ovládač je na to veľmi vhodný režim.

V tomto článku vám ukážem, ako si vytvoriť vlastné diaľkové ovládanie pomocou čipovej bluepill dosky.

Krok 1: Myšlienka

Nápad
Nápad
Nápad
Nápad

Hlavná myšlienka je veľmi jednoduchá: doska bluepill má vstavaný port USB a môže fungovať ako klávesnica USB HID. Ak k doske pripojíme infračervený prijímač, môže príkaz z vášho diaľkového ovládača IR preložiť na „stlačenie klávesu“virtuálnej klávesnice. Nie sú potrebné žiadne ďalšie ovládače!

Vo svete okolo nás existuje mnoho IR protokolov. Každý televízor dodávateľa VCS má svoj vlastný IR protokol. Ale všetky tieto protokoly majú niečo spoločné: na kódovanie signálu používajú impulznú moduláciu. Obvykle existuje nejaká preambula: dlhý impulz pred prvým bitom v pakete. Potom IR ovládanie vyšle celý paket s 0 a 1 a dokončí prenos dokončením dlhého impulzu. Na dekódovanie bitu potrebujeme zmerať dĺžkový impulz a dĺžku píku. Špičková dĺžka logiky 0 a logiky 1 sú zvyčajne rovnaké, rozdiel je v úplnej dĺžke impulzu.

Mikroprocesory stm32 majú vstavanú funkciu na zachytenie signálu PWM. Takmer do každého časovača mikroovládača je možné vložiť „viac zachytávania signálu PWM“, keď kanálové premenné časovača uložia celkovú dĺžku impulzu a jeho maximálnu dĺžku. Tu musím zdôrazniť malý detail: keď infračervený prijímač zachytí signál, napätie na jeho pracovnom kolíku sa zmení na 0 a v kľudovom stave je napätie na pracovnom kolíku 5 alebo 3,3 voltov v závislosti od napájacieho napätia infračerveného prijímača. To znamená, že prijímač signál „invertuje“.

V režime snímania PWM je možné z mikrokontroléra stm32 ľahko urobiť IR diaľkový prekladač z IR diaľkového ovládača na kódy klávesnice. Potom môžete spustiť svoj obľúbený vizualizačný softvér, napríklad Kodi z VLC, na prehrávanie vášho obľúbeného filmu v mediálnom centre.

Krok 2: Vytvorenie ovládača

Vytvorenie ovládača
Vytvorenie ovládača
Vytvorenie ovládača
Vytvorenie ovládača
Vytvorenie ovládača
Vytvorenie ovládača
Vytvorenie ovládača
Vytvorenie ovládača

Na programovanie mikroovládača stm32 by som chcel odporučiť bezplatný softvér od STM: systémový pracovný stôl (aka ac6) a nástroj na konfiguráciu dosky cubeMX. Na nahranie softvéru do mikroovládača je možné použiť čipový klon adaptéra ST-Link V2. K tomuto kroku sú priložené súbory projektu systému Windows Workbench, súbor F1-IR_remote.zip.

Nástroj na konfiguráciu dosky zjednodušuje proces počiatočnej hardvérovej konfigurácie nášho mikrokontroléra.

Ak používate nástroj systémový pracovný stôl, môžete použiť iba stiahnutý projekt. Ak však chcete projekt preskúmať podrobnejšie, môžete v cubeMX vytvoriť konfiguráciu dosky:

  • Vytvorte nový projekt a vyberte dosku stm32f103c8
  • Vyberte položku „Kryštálový/keramický rezonátor“pre položku „Vysokorýchlostné hodiny (HSE)“v ponuke RCC.
  • V položke „Debug“v ponuke SYS vyberte „Sériový vodič“.
  • Nakonfigurujte časovač č. 2 (ponuka TIM2) v režime snímania PWM, ako je znázornené na obrázku:

    • Režim Slave -> Obnoviť režim
    • Zdroj spúšťača -> TI1FP1
    • Zdroj hodín -> Interné hodiny
    • Channel1 -> Input Capture priamy režim
  • Začiarknite políčko „Zariadenie (FS) v ponuke USB
  • V položke „Trieda IP IP“v ponuke USB_DEVICE vyberte prvok rozbaľovacej ponuky „Trieda zariadenia ľudského rozhrania (HID)“
  • Na paneli konfigurácie hodín nezabudnite poskytnúť časovaču č. 2 časovač 72 MHz, pretože potrebujeme počet časovačov pri každom 1 mks.
  • Na konfiguračnom paneli nakonfigurujte zariadenie USB podľa obrázku
  • Na konfiguračnom paneli nakonfigurujte časovač č. 2 nasledovne:

    • Vyvolávač - 71 (od 0 do 71) - 1 mikrosekundový kliešť!
    • Režim počítadla - hore
    • Počítadlo - 39 999 (mali by sme byť schopní zmerať dlhý impulz)
    • Vstupný zachytávací kanál 1 - Falling Edge (pamätajte, že signál z IR prijímača je invertovaný)

V režime snímania PWM by časovač č. 2 fungoval nasledovne:

Keď sa zistí padajúca predná časť, počítadlo časovača sa uloží do registra kanála 1 a počítadlo časovača sa vynuluje pomocou 0. Potom časovač pokračuje v počítaní smeru. Môžeme teda ľahko zmerať dĺžku impulzu v mikrosekundách.

Štandardne trieda STM32 USB HID simuluje myš USB. Tu nájdete pokyny na zmenu ovládača na klávesnicu.

Krok 3: Prispôsobenie ovládača

Projekt funguje s diaľkovým ovládaním Panasonic a mediálnym centrom Kodi. Na prispôsobenie projektu pre váš vlastný ovládač by ste mali pridať pole kódu pre diaľkové ovládanie, ako som to urobil pre diaľkové ovládanie panasonic (panasonicCode), do hlavičky Inc/code.h. Ako vidíte, každý príkaz má jedinečné ID (vo výčte IRcommmand). Projekt rozpoznáva 24 príkazov (0-23). Príkazy sú zoradené podľa relevantnosti.

typový výčet {IR_play = 0, IR_power, IR_unknown} IR príkaz;

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

Potom by ste mali pridať vlastné diaľkové ovládanie metódou init () vo funkcii IR.cpp s funkciou addRemote (). Argumenty funkcie sú:

  • Počet bitov v pakete
  • Dĺžka hlavičky paketu
  • Bit „nuly“
  • „Jedna“bitová dĺžka
  • Ukazovateľ na pole kódu
  • Číselné prvky poľa

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

}

Súbor tiež obsahuje ďalšiu tabuľku na prevod príkazov na kódy klávesnice. Pole kbdr_kodi obsahuje kľúčové kódy pre mediálne centrum Kodi. Môžete pridať ďalšie pole pre svoj vlastný program mediálneho centra, napríklad vlc player. Ak by ste pridali ďalšiu tabuľku aplikácií centra médií, vytvorili by ste ďalší objekt KBD a inicializovali by ste ho v súbore main.cpp.

Krok 4: Nástroje na zjednodušenie krajčírstva

Nástroje na zjednodušenie krajčírstva
Nástroje na zjednodušenie krajčírstva
Nástroje na zjednodušenie krajčírstva
Nástroje na zjednodušenie krajčírstva

V úložisku sú ďalšie dva projekty

  • IR vyšetrovanie - umožňuje merať časové parametre signálov vášho diaľkového ovládača.
  • IR_capture - umožňuje zachytiť HEX kódy vášho diaľkového ovládača.

Stačí načítať projekt IR Investate a pripojiť USB port dosky bluepill k počítaču. Potom spustite na zariadení virtuálneho sériového portu ľubovoľný terminálový program zodpovedajúci doske stm32. Kým stlačíte tlačidlá na diaľkovom ovládači, program zmeria prijaté impulzy a vytlačí priemerné časy pre rôzne impulzy. Malo by sa zjednodušiť zisťovanie dĺžky impulzu pre hlavičku paketu, nula a jeden bit.

V projekte IR vyšetrovania pracuje časovač č. 2 v režime zachytávania PWM s dvoma kanálmi: kanál jeden zachytáva celú dĺžku impulzu a kanál 2 zachytáva dĺžku píku. Keď sa zistí klesajúca hrana signálu, hodnota časovača sa uloží do registra prvého kanála a časovač sa vynuluje 0. Keď sa zistí stúpajúca hrana signálu, počítadlo časovača sa uloží do registra kanála 2.

Na zachytenie kódov tlačidiel vášho vlastného diaľkového ovládača je možné použiť projekt IR_capture. Do súboru main.c by ste mali pridať vzdialenú definíciu, ako je táto:

IR kód panasonic = {.hdr = 5252,.bitov = 48,.zero = 902,.jeden = 1755,.dev = 60};

  • .hdr - dĺžka hlavičky v mks
  • .bits - počet bitov v pakete
  • .zero - dĺžka nulového bitu
  • .jeden - dĺžka jeden bit
  • .dev - odchýlka (rozdiel v časoch, ktoré je možné akceptovať). Obvykle je to 1/10 najmenšej dĺžky.

Potom pridajte diaľkový ovládač do zoznamu podporovaných diaľkových ovládačov:

konštantný IR kód* diaľkový [2] = {& panasonic, & pioneer};

Odporúča: