Innholdsfortegnelse:
- Trinn 1: Ideen
- Trinn 2: Opprette kontrolleren
- Trinn 3: Skreddersy kontrolleren
- Trinn 4: Verktøy for å forenkle skreddersøm
Video: Falling in Stm32: Remote Control for Home Media Center: 4 Steps (with Pictures)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Dette er en komplett prototype for fjernkontroll til hjemmemediasenter basert på smt32 mikrokontroller, stm32f103c8t6 kjent som "bluepill" -kort. Anta at du bruker en PC for hjemmemediasenter. Det er en veldig fleksibel løsning, som lar deg plassere et stort videobibliotek på den interne harddisken, eller du kan spille av video fra nettverket, for eksempel youtube eller så, du har ingen problemer med kodeker eller videoavspilling i det hele tatt, fordi det er veldig enkelt å oppdatere programvarespilleren når som helst. Den største ulempen med denne løsningen er at du bør bruke mus og tastatur for å kontrollere avspillingen. IR -fjernkontrollen er mye praktisk for dette.
I denne artikkelen vil jeg vise hvordan du lager din egen fjernkontroll ved hjelp av chip bluepill board.
Trinn 1: Ideen
Hovedideen er veldig enkel: bluepill -kortet har innebygd usb -port og kan fungere som USB HID -tastatur. Hvis vi kobler IR -mottakeren til brettet, kan det oversette kommandoen fra IR -fjernkontrollen til 'tastetrykk' på det virtuelle tastaturet. Ingen ekstra drivere er nødvendig!
Det er mange IR -protokoller i verden rundt oss. Hver TV til VCS -leverandøren har sin egen IR -protokoll. Men alle disse protokollene har noe felles: de bruker pulsmodulasjon for å kode signalet. Vanligvis er det en innledning: lang impuls før den første biten i pakken. Deretter sender IR -kontroll hele pakken med 0 og 1 og fullfører overføringen med lang puls. For å dekode biten må vi måle lengdepulsen og lengden på toppen. Vanligvis er topplengden til logikk 0 og logikk 1 den samme, forskjellen er i hele pulslengden.
Stm32 mikrokontrollere har innebygd funksjon for å fange PWM -signal. Nesten hver tidtaker på mikrokontrolleren kan settes inn i "PWM -signalfangst mer" når kanalvariablene til timeren lagrer pulslengden og topplengden. Her må jeg markere den lille detaljen: Når IR -mottakeren fanger signalet, blir spenningen på arbeidspinnen 0 og i hviletilstand er spenningen i arbeidspinnen 5 eller 3,3 volt avhengig av IR -mottakerens forsyningsspenning. Det vil si at mottakeren 'inverterer' signalet.
Med PWM -fangstmodus kan stm32 -mikrokontrolleren enkelt gjøres om til en IR -fjernoversetter fra IR -fjernkontroll til tastaturkodene. Deretter kan du starte din favoritt visualiseringsprogramvare, for eksempel Kodi fra VLC for å spille av favorittfilmen din på mediesenteret.
Trinn 2: Opprette kontrolleren
For å programmere stm32 mikrokontroller vil jeg anbefale gratis programvare fra STM: system arbeidsbenk (aka ac6) og brettkonfigurasjonsverktøyet cubeMX. For å laste opp programvaren til mikrokontrolleren kan chipklonen til ST-Link V2-adapteren brukes. Systemarbeidsbenkprosjektfilene som er vedlagt dette trinnet, F1-IR_remote.zip-filen.
Kortkonfigurasjonsverktøyet forenkler prosessen med den første maskinvarekonfigurasjonen til mikrokontrolleren vår.
Hvis du bruker systembenkverktøyet, kan du bare bruke det nedlastede prosjektet. Men hvis du ønsker å undersøke prosjektet i flere detaljer, kan du opprette brettkonfigurasjonen i cubeMX:
- Opprett nytt prosjekt og velg brett stm32f103c8
- Velg 'Crystal/Ceramic Resonator' for elementet 'High Speed Clock (HSE)' i RCC -menyen.
- Velg 'Serial Wire' for 'Debug' -elementet i SYS -menyen.
-
Konfigurer tidtaker 2 (TIM2 -meny) i PWM -fangstmodus som vist på bildet:
- Slave Mode -> Reset Mode
- Utløserkilde -> TI1FP1
- Klokkekilde -> Intern klokke
- Channel1 -> Input Capture direkte modus
- Sett av i avmerkingsboksen 'Enhet (FS) i USB -menyen
- Velg rullegardinmenyelementet 'Human Interface Device Class (HID)' i elementet 'Class of FS IP' i USB_DEVICE-menyen
- I klokkekonfigurasjonspanelet må du sørge for å gi 72 MHz til tidtaker 2 fordi vi trenger tidtelling for hver 1 miks.
- I konfigurasjonspanelet konfigurerer du USB -enheten som vist på bildet
-
I konfigurasjonspanelet konfigurerer du timer 2 som følger:
- Prescaller - 71 (fra 0 til 71) - 1 mikro sekunders kryss!
- Tellermodus - opp
- Tellerperiode - 39999 (vi bør kunne måle den lange pulsen)
- Input capture channel1 - Falling Edge (husk at signalet fra IR -mottakeren er invertert)
I PWM -fangstmodus fungerer timeren#2 som følger:
Når den fallende fronten ble oppdaget, ville tidtelleren blitt lagret i kanal1 -registeret og tidtelleren ble tilbakestilt med 0. Deretter fortsatte timeren å telle opp retningen. Så vi kan enkelt måle pulslengden i mikrosekunder.
Som standard simulerer STM32 USB HID -klassen USB -musen. Her finner du instruksjonene for å gjøre kontrolleren til tastatur.
Trinn 3: Skreddersy kontrolleren
Prosjektet fungerer med Panasonic fjernkontroll og Kodi mediesenter. For å skreddersy prosjektet for din egen kontroller, bør du legge til kodearrayet for fjernkontrollen som jeg gjorde for panasonic fjernkontroll (panasonicCode) til Inc/code.h -overskriften. Som du kan se, har hver kommando en unik ID (i IRcommmand enum). Det er 24 kommandoer (0-23) som gjenkjennes av prosjektet. Kommandoen er sortert etter relevans.
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_info, IR_subtitle, IR_nxt_subtitle, IR_pos_subtitle, IR_teletext, IR_zoom, IR_mark_watched, IR_playlist, IR_power, IR_unknown} IRkommando;
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};
Deretter bør du legge til din egen fjernkontroll i init () -metoden i IR.cpp med addRemote () -funksjonen. Funksjonsargumentene er:
- Antall biter i pakken
- Pakken Header lengde
- 'Null' bitlengde
- "En" bitlengde
- Peker til kodesettet
- Nummerelementer i matrisen
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
Filen inneholder også en annen tabell for å konvertere kommandoer til tastaturkoder. Kbdr_kodi -matrisen inneholder nøkkelkodene for Kodi mediasenter. Du kan legge til en annen matrise for ditt eget mediesenterprogram, for eksempel vlc -spiller. Hvis du vil legge til en annen mediesenter -applikasjonstabell, vil du opprette et annet objekt KBD og initialisere det i main.cpp.
Trinn 4: Verktøy for å forenkle skreddersøm
Det er to andre prosjekter i depotet
- IR -undersøkelse - gjør det mulig å måle tidsparametere for signalene til fjernkontrollen.
- IR_capture - gjør det mulig å fange HEX -kodene på fjernkontrollen.
Bare last IR -undersøkelsesprosjektet og koble USB -porten på bluepill -kortet til datamaskinen. Start deretter et hvilket som helst terminalprogram på den virtuelle serielle portenheten, som tilsvarer stm32 -kortet. Mens du trykker på knappene på fjernkontrollen, vil programmet måle de mottatte pulser og skrive ut gjennomsnittstiden for forskjellige pulser. Det bør forenkle å oppdage pulslengden for pakkehodet, null og en bit.
I IR -undersøkelsesprosjektet jobber timeren #2 i PWM -fangstmodus med to kanaler: kanal én registrerer hele pulslengden og kanal2 fanger topplengden. Når den fallende signalkanten ble oppdaget, ble tidsverdien lagret i kanal 1 -registeret og timeren ble tilbakestilt med 0. Når signalets stigende kant ble oppdaget, ble timertelleren lagret i kanal 2 -registeret.
For å fange knappekodene på din egen fjernkontroll, kan IR_capture -prosjektet brukes. I main.c -filen bør du legge til den eksterne definisjonen som denne:
IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};
- .hdr - topplengden i mks
- .bits - antall biter i pakken
- .zero - lengden på nullbiten
- .one - lengden en bit
- .dev - avviket (forskjellen i tider som kan aksepteres). Vanligvis er det 1/10 av den minste lengden.
Legg deretter til fjernkontrollen i listen over støttede fjernkontroller:
const IRcode* remote [2] = {& panasonic, & pioneer};
Anbefalt:
Folow-UP: Advanced Media Center With Odroid N2 and Kodi (4k and HEVC Support): 3 trinn
Folow-UP: Advanced Media Center With Odroid N2 and Kodi (4k and HEVC Support): Denne artikkelen er en oppfølging av min tidligere, ganske vellykkede artikkel om å bygge et allsidig mediesenter, først basert på den veldig populære Raspberry PI men senere, på grunn av mangel på HEVC, H.265 og HDMI 2.2 -kompatibel utgang, var det switch
Shadow Light Box - Control by IR Remote With Arduino: 8 Steps (with Pictures)
Shadow Light Box - Control by IR Remote With Arduino: Denne instruksjonen vil guide hvordan du lager skyggelysboks til neste jul. Du kan lage det selv for å dekorere rommet ditt, eller lage det til en venn som en gave. Denne skyggeboksen kan lage forskjellige farger ved å blande farger med rød, blå, grønn farge
Fairies: Portable Arcade and Media Center: 5 trinn
Fairies: Portable Arcade and Media Center: Målet mitt var å bygge en bærbar konsoll & mediesenter for datteren min. Spillet på minidesignene som PSP- eller Nintendo -klonene virker for langt fra ideen om de gamle arkadeskapene. Jeg ønsket å bli med på nostalgi av knappene
Raspberry PI Media Center, OSMC DAC/AMP: 3 trinn
Raspberry PI Media Center, OSMC DAC/AMP: Ta en Raspberry pi, legg til en DAC og forsterker, så har du deg selv et veldig fint mediesenter for ikke mye penger. Først må jeg si en " BIG " takk til menneskene på GearBest for at de sendte meg denne varen for å prøve. Og hvis du ønsker å få en
1981 Bærbar videospiller Raspberry PI Media Center: 12 trinn (med bilder)
1981 Bærbar videospiller Raspberry PI Media Center: Dette er en Sharp VC -2300H bærbar videospiller fra tidlig på 80 -tallet som jeg har konvertert - den har nå en Raspberry Pi i hjertet, som kjører den utmerkede Raspbmc mediesenterprogramvaren. Andre oppgraderinger inkluderer en artig arduino-basert klokke og en EL-tape "tape"