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, Listopad
Anonim
Falling in Stm32: Remote Control for Home Media Center
Falling in Stm32: Remote Control for Home Media Center

Toto je kompletní prototyp pro dálkové ovládání domácích mediálních center založené na mikrořadiči smt32, stm32f103c8t6 známém jako deska „bluepill“. Předpokládejme, že používáte PC pro domácí mediální centrum. Je to velmi flexibilní řešení, které vám umožní umístit obrovskou videotéku na interní pevný disk, nebo můžete přehrávat video ze sítě, například z youtube nebo tak, nemáte vůbec problém s kodeky nebo přehráváním videa, protože je to velmi snadno aktualizovat softwarový přehrávač kdykoli. Hlavní nevýhodou tohoto řešení je, že byste k ovládání přehrávání měli používat myš a klávesnici. IR dálkový ovladač je k tomu velmi pohodlný režim.

V tomto článku ukážu, jak vytvořit vlastní dálkové ovládání pomocí čipové bluepill desky.

Krok 1: Idea

Idea
Idea
Idea
Idea

Hlavní myšlenka je velmi jednoduchá: deska bluepill má vestavěný port USB a může fungovat jako klávesnice USB HID. Pokud k desce připojíme infračervený přijímač, mohl by přeložit příkaz z vašeho IR dálkového ovládání na „stisknutí klávesy“virtuální klávesnice. Nejsou vyžadovány žádné další ovladače!

Ve světě kolem nás existuje mnoho IR protokolů. Každý televizor dodavatele VCS má svůj vlastní IR protokol. Ale všechny tyto protokoly mají něco společného: ke kódování signálu používají pulzní modulaci. Obvykle existuje nějaká preambule: dlouhý impuls před prvním bitem v paketu. Poté IR řízení vysílá celý paket s 0 a 1 a dokončuje přenos s dokončením dlouhého impulsu. K dekódování bitu potřebujeme změřit délkový impuls a délku píku. Špičková délka logiky 0 a logiky 1 je obvykle stejná, rozdíl je v celkové délce impulsu.

Mikroprocesory stm32 mají vestavěnou funkci pro zachycení signálu PWM. Téměř do každého časovače mikrořadiče lze vložit více „PWM zachycení signálu“, když kanálové proměnné časovače uloží celkovou délku impulsu a jeho délku špičky. Zde musím zdůraznit malý detail: když IR přijímač zachytí signál, napětí na jeho pracovním pinu bude 0 a v klidovém stavu je napětí na pracovním pinu 5 nebo 3,3 voltů v závislosti na napájecím napětí infračerveného přijímače. To znamená, že přijímač signál „invertuje“.

V režimu snímání PWM lze mikrořadič stm32 snadno přeměnit na IR dálkový překladač z IR dálkového ovládání na kódy klávesnice. Poté můžete spustit svůj oblíbený vizualizační software, například Kodi z VLC, který vám v mediálním centru přehraje váš oblíbený film.

Krok 2: Vytvoření ovladače

Vytvoření ovladače
Vytvoření ovladače
Vytvoření ovladače
Vytvoření ovladače
Vytvoření ovladače
Vytvoření ovladače
Vytvoření ovladače
Vytvoření ovladače

K programování mikrořadiče stm32 bych chtěl doporučit bezplatný software od STM: system workbench (aka ac6) a nástroj pro konfiguraci desky cubeMX. K nahrání softwaru do mikrořadiče lze použít čipový klon adaptéru ST-Link V2. K tomuto kroku připojené soubory projektu systému Workbench, soubor F1-IR_remote.zip.

Nástroj pro konfiguraci desky zjednodušuje proces počáteční hardwarové konfigurace našeho mikrořadiče.

Pokud používáte nástroj System Workbench, můžete použít pouze stažený projekt. Pokud si ale přejete prozkoumat projekt podrobněji, můžete vytvořit konfiguraci desky v cubeMX:

  • Vytvořte nový projekt a vyberte desku stm32f103c8
  • Vyberte položku „Krystalový/keramický rezonátor“pro položku „Vysokorychlostní hodiny (HSE)“v nabídce RCC.
  • Vyberte položku 'Serial Wire' pro položku 'Debug' v nabídce SYS.
  • Nakonfigurujte časovač č. 2 (nabídka TIM2) v režimu snímání PWM, jak je znázorněno na obrázku:

    • Slave Mode -> Reset Mode
    • Zdroj spouštění -> TI1FP1
    • Zdroj hodin -> Interní hodiny
    • Channel1 -> Direct Capture přímý režim
  • Zaškrtněte políčko 'Zařízení (FS) v nabídce USB
  • V položce „Třída FS IP“v nabídce USB_DEVICE vyberte prvek rozevírací nabídky „Třída zařízení lidského rozhraní (HID)“
  • Na konfiguračním panelu hodin zajistěte, aby časovač č. 2 poskytoval 72 MHz, protože potřebujeme počítadlo časovače pro každý 1 mks.
  • Na konfiguračním panelu nakonfigurujte zařízení USB podle obrázku
  • Na konfiguračním panelu nakonfigurujte časovač č. 2 následujícím způsobem:

    • Vyvolávač - 71 (od 0 do 71) - 1 mikrosekundový tik!
    • Režim čítače - nahoru
    • Počitadlo - 39 999 (měli bychom být schopni změřit dlouhý puls)
    • Vstupní zachytávací kanál 1 - Falling Edge (pamatujte, že signál z IR přijímače je invertovaný)

V režimu snímání PWM bude časovač č. 2 fungovat následovně:

Když byla detekována padající fronta, čítač časovače by byl uložen do registru Channel1 a čítač časovače by byl resetován pomocí 0. Potom časovač pokračuje v počítání směru. Můžeme tedy snadno změřit délku pulsu v mikrosekundách.

Ve výchozím nastavení STM32 USB HID simuluje USB myš. Zde najdete pokyny k přeměně ovladače na klávesnici.

Krok 3: Přizpůsobení ovladače

Projekt pracuje s dálkovým ovládáním Panasonic a mediálním centrem Kodi. Chcete -li přizpůsobit projekt pro svůj vlastní ovladač, měli byste do pole Inc/code.h přidat pole kódu pro dálkové ovládání, jako jsem to udělal pro dálkové ovládání panasonic (panasonicCode). Jak vidíte, každý příkaz má jedinečné ID (ve výčtu IRcommmand). Projekt rozpoznává 24 příkazů (0-23). Příkazy jsou seřazeny podle relevance.

typový výčet {IR_play = 0, IR_stop, IR_power, IR_unknown} IR pří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};

Poté byste měli přidat vlastní dálkové ovládání metodou init () ve funkci IR.cpp s funkcí addRemote (). Argumenty funkce jsou:

  • Počet bitů v paketu
  • Délka záhlaví paketu
  • Bitová délka „nula“
  • 'Jedna' bitová délka
  • Ukazatel na pole kódu
  • Číslujte prvky pole

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

}

Soubor také obsahuje další tabulku pro převod příkazů na kódy klávesnice. Pole kbdr_kodi obsahuje klíčové kódy pro mediální centrum Kodi. Můžete přidat další pole pro svůj vlastní program mediálního centra, například vlc player. Pokud byste přidali další tabulku aplikací centra médií, vytvořili byste další objekt KBD a inicializovali jej v souboru main.cpp.

Krok 4: Nástroje pro zjednodušení krejčovství

Nástroje pro zjednodušení krejčovství
Nástroje pro zjednodušení krejčovství
Nástroje pro zjednodušení krejčovství
Nástroje pro zjednodušení krejčovství

V úložišti jsou další dva projekty

  • IR vyšetřování - umožňuje měřit parametry časování signálů vašeho dálkového ovladače.
  • IR_capture - umožňuje zachytit HEX kódy vašeho dálkového ovladače.

Stačí načíst IR vyšetřovací projekt a připojit USB port desky bluepill k vašemu počítači. Poté spusťte libovolný terminálový program na zařízení virtuálního sériového portu, který odpovídá desce stm32. Zatímco stisknete tlačítka na dálkovém ovladači, program by změřil přijaté impulzy a vytiskl průměrné časy pro různé pulsy. Mělo by zjednodušit detekci délky pulsu pro záhlaví paketu, nulu a jeden bit.

V IR vyšetřovacím projektu pracuje časovač č. 2 v režimu zachycení PWM se dvěma kanály: kanál 1 zachycuje celou délku pulsu a kanál 2 zachycuje délku píku. Když byla detekována sestupná hrana signálu, hodnota časovače byla uložena do registru prvního kanálu a časovač byl resetován pomocí 0. Když byla zjištěna stoupající hrana signálu, čítač časovače se uložil do registru kanálu 2.

K zachycení kódů tlačítek vašeho vlastního dálkového ovladače lze použít projekt IR_capture. Do souboru main.c byste měli přidat vzdálenou definici, jako je tato:

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

  • .hdr - délka záhlaví v mks
  • .bits - počet bitů v paketu
  • .zero - délka nulového bitu
  • .one - délka jeden bit
  • .dev - odchylka (rozdíl v časech, které lze akceptovat). Obvykle je to 1/10 nejmenší délky.

Poté přidejte dálkový ovladač do seznamu podporovaných dálkových ovladačů:

konstantní IR kód* vzdálený [2] = {& panasonic, & pioneer};

Doporučuje: