Kazalo:
- 1. korak: Ideja
- 2. korak: Ustvarjanje krmilnika
- 3. korak: Prilagoditev krmilnika
- 4. korak: Orodja za poenostavitev krojenja
Video: Vpad v Stm32: Daljinski upravljalnik za domači medijski center: 4 koraki (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
To je popoln prototip daljinskega upravljalnika za domači medijski center, ki temelji na mikrokontrolerju smt32, stm32f103c8t6, znanem kot "bluepill" plošča. Recimo, da za domači medijski center uporabljate računalnik. To je zelo prilagodljiva rešitev, ki vam omogoča, da na notranji trdi disk vstavite ogromno video knjižnico ali pa predvajate video iz omrežja, na primer youtube ali tako, s kodeki ali predvajanjem videa sploh nimate težav, ker je zelo kadar koli je enostavno posodobiti predvajalnik programske opreme. Glavna pomanjkljivost te rešitve je, da za nadzor predvajanja uporabite miško in tipkovnico. IR daljinski upravljalnik je za to zelo primeren način.
V tem članku bom pokazal, kako ustvariti lasten daljinski upravljalnik z uporabo plošče s čipom.
1. korak: Ideja
Glavna ideja je zelo preprosta: plošča z načrtom ima vgrajena USB vrata in lahko deluje kot USB HID tipkovnica. Če na ploščo priključimo IR sprejemnik, bi lahko prevedel ukaz z vašega daljinskega upravljalnika IR v 'pritisk tipke' na virtualni tipkovnici. Dodatni gonilniki niso potrebni!
V svetu okoli nas je veliko protokolov IR. Vsak televizor prodajalca VCS ima svoj IR protokol. Toda vsi ti protokoli imajo nekaj skupnega: za kodiranje signala uporabljajo impulzno modulacijo. Običajno obstaja neka uvodna beseda: dolg impulz pred prvim bitom v paketu. Nato IR nadzor pošlje celoten paket z 0 in 1 in zaključi prenos s končnim dolgim impulzom. Za dekodiranje bita moramo izmeriti dolžino impulza in dolžino vrha. Običajno sta vršna dolžina logike 0 in logike 1 enaka, razlika je v celotni dolžini impulza.
Mikro krmilniki stm32 imajo vgrajeno funkcijo za zajemanje PWM signala. Skoraj vsak časovnik mikro krmilnika lahko vstavite v 'PWM signal signal more', ko kanalske spremenljivke časovnika shranijo skupno dolžino impulza in njegovo največjo dolžino. Tu moram poudariti majhno podrobnost: ko IR sprejemnik ujame signal, napetost na njegovem delovnem zatiču postane 0, v stanju mirovanja pa je napetost v delovnem zatiču 5 ali 3,3 voltov, odvisno od napajalne napetosti IR sprejemnika. To pomeni, da sprejemnik "obrne" signal.
Z načinom zajemanja PWM lahko mikro krmilnik stm32 enostavno spremenite v daljinskega IR prevajalnika iz daljinskega upravljalnika v kode tipkovnice. Nato lahko zaženete svojo najljubšo programsko opremo za vizualizacijo, na primer Kodi iz VLC, da predvajate svoj najljubši film v medijskem središču.
2. korak: Ustvarjanje krmilnika
Za programiranje mikro krmilnika stm32 bi priporočil brezplačno programsko opremo podjetja STM: sistemsko delovno mizo (aka ac6) in orodje za konfiguracijo plošče cubeMX. Za nalaganje programske opreme v mikro krmilnik lahko uporabite čip klon adapterja ST-Link V2. Projektne datoteke sistemske delovne mize, priložene temu koraku, datoteka F1-IR_remote.zip.
Orodje za konfiguracijo plošče poenostavi postopek začetne konfiguracije strojne opreme našega mikro krmilnika.
Če uporabljate orodje sistemske delovne mize, lahko uporabite samo preneseni projekt. Če pa želite podrobneje raziskati projekt, lahko ustvarite konfiguracijo plošče v cubeMX:
- Ustvarite nov projekt in izberite ploščo stm32f103c8
- Izberite "Crystal/Ceramic Resonator" za postavko "High Speed Clock (HSE)" v meniju RCC.
- Izberite "Serial Wire" za element "Debug" v meniju SYS.
-
Časovnik št. 2 (meni TIM2) konfigurirajte v načinu zajema PWM, kot je prikazano na sliki:
- Slave Mode -> Reset Mode
- Vir sprožilca -> TI1FP1
- Vir ure -> Notranja ura
- Channel1 -> Neposredni način zajema vhoda
- V meniju USB nastavite potrditveno polje 'Naprava (FS)'
- Izberite element spustnega menija 'Razred naprav človeškega vmesnika (HID)' v elementu 'Razred FS IP' v meniju USB_DEVICE
- Na nadzorni plošči ure zagotovite 72 MHz časovniku 2, ker potrebujemo števec časovnika na vsakih 1 mks.
- Na konfiguracijski plošči konfigurirajte napravo USB, kot je prikazano na sliki
-
Na konfiguracijski plošči nastavite časovnik#2 na naslednji način:
- Predkaler - 71 (od 0 do 71) - 1 mikro sekunda kljuk!
- Način števca - gor
- Števec - 39999 (dolgi impulz bi morali izmeriti)
- Vhodni kanal za zajem 1 - padajoči rob (ne pozabite, da je signal iz IR sprejemnika obrnjen)
V načinu zajema PWM bi časovnik#2 deloval na naslednji način:
Ko zazna padajočo fronto, bi se števec časovnika shranil v register channel1, števec časovnika pa bi bil ponastavljen na 0. Nato bi časovnik še naprej odšteval smer. Tako lahko enostavno merimo dolžino impulza v mikro sekundah.
Privzeto razred STM32 USB HID simulira miško USB. Tu najdete navodila za pretvorbo krmilnika v tipkovnico.
3. korak: Prilagoditev krmilnika
Projekt deluje z daljinskim upravljalnikom Panasonic in medijskim centrom Kodi. Če želite projekt prilagoditi svojemu krmilniku, morate v glavo Inc/code.h dodati matriko kod za vaš daljinski upravljalnik, kot sem to storil za daljinski upravljalnik Panasonic (panasonicCode). Kot lahko vidite, ima vsak ukaz edinstven ID (v naštevanju IRcommmand). Projekt prepozna 24 ukazov (0-23). Ukazi so razvrščeni glede na pomembnost.
typedef enum {IR_play = 0, IR_stop, IR_zahod, IR_OS, IR_down, IR_sl, IR_stavka, IR, IR_power, IR_unknown} ukaz IR;
konst 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};
konst 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};
Nato dodajte svoj daljinski upravljalnik v metodo init () v IR.cpp s funkcijo addRemote (). Argumenti funkcije so:
- Število bitov v paketu
- Dolžina glave paketa
- Dolžina bitov "nič"
- "En" bit dolžine
- Kazalec na kodno polje
- Številčni elementi matrike
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
Datoteka vsebuje tudi drugo tabelo za pretvorbo ukazov v kode tipkovnice. Niz kbdr_kodi vsebuje kode ključev za medijski center Kodi. Za svoj program medijskega centra lahko dodate še drugo matriko, na primer predvajalnik vlc. Če bi dodali še eno tabelo aplikacij medijskega centra, bi ustvarili še en objekt KBD in ga inicializirali v main.cpp.
4. korak: Orodja za poenostavitev krojenja
V skladišču sta še dva projekta
- IR preiskava - omogoča merjenje časovnih parametrov signalov vašega daljinskega upravljalnika.
- IR_capture - omogoča zajem HEX kod vašega daljinskega upravljalnika.
Preprosto naložite IR preiskovani projekt in v računalnik priključite vrata USB plošče. Nato zaženite kateri koli terminalski program na napravi za navidezna serijska vrata, ki ustreza plošči stm32. Medtem ko pritisnete gumbe na daljinskem upravljalniku, bo program meril prejete impulze in natisnil povprečne čase za različne impulze. Poenostaviti bi moralo zaznavanje dolžine impulza za glavo paketa, nič in en bit.
V projektu IR preiskave časovnik #2 deluje v načinu zajema PWM z dvema kanaloma: prvi kanal zajema celotno dolžino impulza in kanal2 zajema dolžino vrha. Ko zazna padajoči rob signala, se vrednost časovnika shrani v register enega kanala in časovnik se ponastavi z 0. Ko je zaznan naraščajoči rob signala, se števec časovnika shrani v register kanala 2.
Za zajem kod gumbov vašega daljinskega upravljalnika lahko uporabite projekt IR_capture. V datoteko main.c morate dodati tako oddaljeno definicijo:
IRcode panasonic = {.hdr = 5252,.bit = 48,.zero = 902,.one = 1755,.dev = 60};
- .hdr - dolžina glave v mks
- .bits - število bitov v paketu
- .zero - dolžina ničelnega bita
- .one - dolžina ena za bit
- .dev - odstopanje (razlika v časih, ki jih je mogoče sprejeti). Običajno je 1/10 najmanjše dolžine.
Nato dodajte daljinski upravljalnik na seznam podprtih daljinskih upravljalnikov:
const IRcode* remote [2] = {& panasonic, & pioneer};
Priporočena:
Čarobni gumb 4k: brezžični daljinski upravljalnik 20USD BMPCC 4k (ali 6k): 4 koraki (s slikami)
Čarobni gumb 4k: brezžični daljinski upravljalnik BMPCC 4k (ali 6k) 20USD: Mnogi ljudje so me prosili, naj povem nekaj podrobnosti o svojem brezžičnem krmilniku za BMPCC4k. Večina vprašanj se je nanašala na nadzor Bluetooth, zato bom omenil nekaj podrobnosti o tem. Predvidevam, da poznate okolje ESP32 Arduino
DIY komplet stikal za daljinski upravljalnik 2262/2272 M4 plošča za kruh in rele za izdelovalca: 4 koraki (s slikami)
DIY komplet stikal za daljinski upravljalnik 2262/2272 M4 plošča za kruh in rele za izdelovalca: pametni dom prihaja v naše življenje. če želimo, da se pametni dom uresniči, potrebujemo veliko stikal na daljinsko upravljanje. danes bomo naredili preizkus, naredimo enostaven krog, da se naučimo teorije stikala za daljinsko upravljanje. to zasnovo kompleta SINONING ROBOT
Naslednji korak: Napredni medijski center z Odroidom N2 in Kodi (podpora 4k in HEVC): 3 koraki
Folow-UP: Napredno medijsko središče z Odroidom N2 in Kodijem (podpora 4k in HEVC): Ta članek je nadaljevanje mojega prejšnjega, precej uspešnega članka o izgradnji vsestranskega medijskega centra, ki je sprva temeljil na zelo priljubljenem Raspberry PI, vendar kasneje je bilo zaradi pomanjkanja izhodov, skladnih s HEVC, H.265 in HDMI 2.2, stikalo
Leseni daljinski upravljalnik Bluetooth za vlak Lego Duplo: 3 koraki (s slikami)
Leseni daljinski upravljalnik Bluetooth za vlak Lego Duplo: Moji otroci so imeli radi ta mali vlak Lego Duplo, še posebej mojega najmlajšega, ki se trudi komunicirati z besedami, zato sem ji želel zgraditi nekaj, kar bi ji pomagalo igrati z vlakom neodvisno od odraslih ali telefonov/tablic. Nekaj, kar
Domači daljinski upravljalnik za Canon EOS 400D: 3 koraki
Domači daljinski upravljalnik za Canon EOS 400D: Ko sem pri prodaji prtljažnika našel poceni merilnik bliskavice, sem spoznal, da ne morem hkrati uporabljati fotoaparatov na bliskavici in števca. Que domači daljinski upravljalnik za Canon EOS 400D :-) Canon vam bo zaračunal približno 30 £ za enega od teh … co