Tartalomjegyzék:

Esés az Stm32 -ben: Távirányító az otthoni médiaközponthoz: 4 lépés (képekkel)
Esés az Stm32 -ben: Távirányító az otthoni médiaközponthoz: 4 lépés (képekkel)

Videó: Esés az Stm32 -ben: Távirányító az otthoni médiaközponthoz: 4 lépés (képekkel)

Videó: Esés az Stm32 -ben: Távirányító az otthoni médiaközponthoz: 4 lépés (képekkel)
Videó: RetroBits - SMSL A6, avagy a tökéletes home office asztali erősítő, karantén idejére 2024, November
Anonim
Esés az Stm32 -ben: Távirányító az otthoni médiaközponthoz
Esés az Stm32 -ben: Távirányító az otthoni médiaközponthoz

Ez egy teljes prototípus az otthoni médiaközpont távirányítójához, amely az smt32 mikrovezérlőn, az „bluepill” tábla néven ismert stm32f103c8t6 alapú. Tegyük fel, hogy számítógépet használ az otthoni médiaközponthoz. Ez egy nagyon rugalmas megoldás, amely lehetővé teszi, hogy hatalmas videotárat helyezzen a belső merevlemezre, vagy lejátszhat videót a hálózatról, például a youtube -ról, vagy egyáltalán nincs gond a kodekekkel vagy a videolejátszással, mert nagyon a szoftverlejátszó bármikor könnyen frissíthető. A megoldás fő hátránya, hogy egeret és billentyűzetet kell használnia a lejátszás vezérléséhez. Az IR távirányító nagyon kényelmes mód erre.

Ebben a cikkben megmutatom, hogyan lehet saját távirányítót létrehozni a chip bluepill táblával.

1. lépés: Az ötlet

Az ötlet
Az ötlet
Az ötlet
Az ötlet

A fő ötlet nagyon egyszerű: a bluepill tábla beépített USB porttal rendelkezik, és USB HID billentyűzetként is működhet. Ha infravörös vevőt csatlakoztatunk a táblához, az a parancsot az IR távirányítójáról lefordíthatja a virtuális billentyűzet „gombnyomására”. Nincs szükség további illesztőprogramokra!

A körülöttünk lévő világban sok IR protokoll létezik. A VCS gyártó minden TV -je saját IR protokollal rendelkezik. De ezeknek a protokolloknak van egy közös vonása: impulzus modulációt használnak a jel kódolására. Általában van néhány bevezető: hosszú impulzus a csomag első bitje előtt. Ezután az IR vezérlés a teljes csomagot 0 -val és 1 -el továbbítja, és befejezi az átvitelt befejező hosszú impulzussal. A bit dekódolásához meg kell mérnünk a csúcs impulzusát és hosszát. Általában a 0 logika és az 1 logika csúcshossza megegyezik, a különbség a teljes impulzushosszban van.

Az stm32 mikrovezérlők beépített funkcióval rendelkeznek a PWM jel rögzítéséhez. A mikrovezérlő szinte minden időzítője beilleszthető a „PWM jelfogás többébe”, ha az időzítő csatornaváltozói mentik az impulzus teljes hosszát és csúcshosszát. Itt ki kell emelnem az apró részleteket: amikor az infravörös vevő elkapja a jelet, a feszültség a munkacsapján 0 lesz, és készenléti állapotban a munkacsap feszültsége 5 vagy 3,3 volt az IR vevő tápfeszültségétől függően. Azaz a vevő „megfordítja” a jelet.

A PWM rögzítési móddal az stm32 mikrovezérlő könnyen IR távirányítóvá alakítható az IR távirányítóról a billentyűzet kódjaira. Ezután elindíthatja kedvenc vizualizáló szoftverét, például a VLC Kodi -ját, hogy lejátssza kedvenc filmjét a médiaközpontban.

2. lépés: A vezérlő létrehozása

A vezérlő létrehozása
A vezérlő létrehozása
A vezérlő létrehozása
A vezérlő létrehozása
A vezérlő létrehozása
A vezérlő létrehozása
A vezérlő létrehozása
A vezérlő létrehozása

Az stm32 mikrovezérlő programozásához szeretném ajánlani az ingyenes szoftvert az STM -től: system workbench (aka ac6) és a kártya konfigurációs eszközét, a cubeMX -et. A szoftver feltöltéséhez a mikrovezérlőbe az ST-Link V2 adapter chip klónja használható. Az ehhez a lépéshez csatolt rendszer munkaasztali projektfájlok, F1-IR_remote.zip fájl.

A kártya konfigurációs eszköze leegyszerűsíti a mikrovezérlőnk kezdeti hardverkonfigurációját.

Ha a rendszer munkaasztal eszközét használja, akkor csak a letöltött projektet használhatja. De ha részletesebben szeretné megvizsgálni a projektet, létrehozhatja a kártya konfigurációját a cubeMX -ben:

  • Hozzon létre új projektet, és válassza ki az stm32f103c8 fórumot
  • Válassza a "Kristály/kerámia rezonátor" lehetőséget az "RCC" menü "High Speed Clock (HSE)" eleméhez.
  • Válassza a "Soros vezeték" lehetőséget a "Hibakeresés" elemhez a SYS menüben.
  • Állítsa be a 2. időzítőt (TIM2 menü) PWM rögzítési módban, a képen látható módon:

    • Slave Mode -> Reset mód
    • Trigger forrás -> TI1FP1
    • Óraforrás -> Belső óra
    • Channel1 -> Input Capture közvetlen mód
  • Jelölje be az „Eszköz (FS)” jelölőnégyzetet az USB menüben
  • Válassza az „Human Interface Device Class (HID)” legördülő menüelemet az USB_DEVICE menü „FS IP osztálya” elemében
  • Az órabeállító panelen győződjön meg arról, hogy 72 MHz -et biztosít a 2. időzítőnek, mert időzítő számlálásra van szükségünk minden 1 mk -nél.
  • A konfigurációs panelen konfigurálja az USB -eszközt a képen látható módon
  • A konfigurációs panelen konfigurálja a 2. időzítőt az alábbiak szerint:

    • Előhívó - 71 (0 -tól 71 -ig) - 1 mikroszekundumos kullancs!
    • Számláló mód - Fel
    • Számláló periódus - 39999 (képesnek kell lennünk a hosszú impulzus mérésére)
    • Bemeneti rögzítési csatorna1 - Falling Edge (ne feledje, hogy az infravörös vevő jele inverz)

PWM rögzítési módban a 2. időzítő a következőképpen működik:

Ha a leeső frontot észleli, az időzítő számlálója elmentésre kerül a csatorna1 regiszterbe, és az időzítő számlálója 0 -val nullázódik. Ezután az időzítő folytatja az irányszámlálást. Így könnyen mérhetjük az impulzus hosszát mikroszekundumokban.

Alapértelmezés szerint az STM32 USB HID osztály szimulálja az USB egeret. Itt megtalálja a vezérlő billentyűzetté alakításának utasítását.

3. lépés: A vezérlő személyre szabása

A projekt a Panasonic távirányítójával és a Kodi médiaközponttal működik. A saját vezérlő projektjének testreszabásához hozzá kell adnia a távirányító kódtömbjét, mint én a panasonic távirányítóhoz (panasonicCode) az Inc/code.h fejléchez. Mint látható, minden parancsnak egyedi azonosítója van (az IRcommmand enumban). A projekt 24 parancsot (0-23) ismer fel. A parancs a relevancia szerint van rendezve.

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_inp_cím, IR_cím, IR_hatalom, IR_ ismeretlen} IRparancs;

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

Ezután hozzá kell adnia saját távirányítóját az init () metódusban az IR.cpp -ben addRemote () függvénnyel. A függvény argumentumai a következők:

  • A csomagban lévő bitek száma
  • A csomagfejléc hossza
  • „Nulla” bithossz
  • „Egy” bit hosszúságú
  • Mutasson a kód tömbre
  • A tömb szám elemei

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

}

A fájl egy másik táblázatot is tartalmaz, amely parancsokat billentyűzetkódokká alakít át. A kbdr_kodi tömb tartalmazza a Kodi médiaközpont kulcskódjait. Hozzáadhat egy másik tömböt saját médiaközpont -programjához, például a vlc -lejátszóhoz. Ha hozzáadna egy másik médiaközpont -alkalmazástáblát, létrehoz egy másik objektum KBD -t, és inicializálja a main.cpp fájlban.

4. lépés: Eszközök a szabás egyszerűsítéséhez

Eszközök a szabás egyszerűsítéséhez
Eszközök a szabás egyszerűsítéséhez
Eszközök a szabás egyszerűsítéséhez
Eszközök a szabás egyszerűsítéséhez

Két másik projekt is található a tárolóban

  • IR vizsgálat - lehetővé teszi a távirányító jeleinek időzítési paramétereinek mérését.
  • IR_capture - lehetővé teszi a távirányító HEX kódjainak rögzítését.

Csak töltse be az IR vizsgálati projektet, és csatlakoztassa a bluepill kártya USB -portját a számítógéphez. Ezután indítson el bármilyen terminálprogramot a virtuális soros port eszközön, amely megfelel az stm32 kártyának. Miközben megnyomja a távvezérlő gombjait, a program méri a kapott impulzusokat, és kinyomtatja a különböző impulzusok átlagos idejét. Egyszerűsítenie kell a csomagfejléc, nulla és egy bit impulzushosszának észlelését.

Az IR vizsgálati projektben a 2. időzítő PWM rögzítési módban működik, két csatornával: az első csatorna rögzíti a teljes impulzus hosszát, a 2. csatorna pedig a csúcshosszat. Amikor a leeső jel élét észleli, az időzítő értéke az első csatorna regiszterébe kerül, az időzítő pedig 0 -val nullázódik. Amikor a jel emelkedő széle észlelhető, az időzítő számlálója a 2. csatorna regiszterébe mentődik.

A saját távirányító gombkódjainak rögzítéséhez az IR_capture projekt használható. A main.c fájlban hozzá kell adnia a távoli definíciót, mint ez:

IR -kód panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};

  • .hdr - a fejléc hossza mks -ban
  • .bits - a bitek száma a csomagban
  • .zero - a nulla bit hossza
  • .egy - a hossza az egy bit
  • .dev - az eltérés (az elfogadható idők különbsége). Általában a legkisebb hosszúság 1/10 része.

Ezután adja hozzá a távirányítót a támogatott távirányítók listájához:

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

Ajánlott: