Innehållsförteckning:
- Steg 1: Idén
- Steg 2: Skapa kontrollen
- Steg 3: Skräddarsy kontrollen
- Steg 4: Verktyg för att förenkla skräddarsy
Video: Falling in Stm32: Remote Control for Home Media Center: 4 Steps (with Pictures)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Detta är en komplett prototyp för fjärrkontroll för hemmamedia center baserad på smt32 mikrokontroller, stm32f103c8t6, känd som "bluepill" -kort. Anta att du använder en dator för hemmamedia center. Det är en mycket flexibel lösning, som gör att du kan placera ett stort videobibliotek i den interna hårddisken, eller så kan du spela upp video från nätverket, till exempel youtube eller så, du har inga problem med codecs eller videouppspelning alls, eftersom det är mycket lätt att uppdatera programvaruspelaren när som helst. Den största nackdelen med denna lösning är att du ska använda mus och tangentbord för att styra din uppspelning. IR -fjärrkontrollen är mycket bekvämt för detta.
I denna artikel kommer jag att visa hur man skapar en egen fjärrkontroll med chip bluepill board.
Steg 1: Idén
Huvudidén är väldigt enkel: bluepill -kortet har inbäddad usb -port och kan fungera som USB HID -tangentbord. Om vi ansluter IR -mottagaren till kortet kan det översätta kommandot från din IR -fjärrkontroll till 'knapptryckning' på det virtuella tangentbordet. Inga ytterligare förare krävs!
Det finns många IR -protokoll i världen omkring oss. Varje TV hos VCS -leverantören har sitt eget IR -protokoll. Men alla dessa protokoll har något gemensamt: de använder pulsmodulering för att koda signalen. Vanligtvis finns det en ingress: lång impuls före den första biten i paketet. Därefter sänder IR -kontrollen hela paketet med 0 och 1 och slutför överföringen med lång puls. För att avkoda biten måste vi mäta längdpulsen och längden på toppen. Vanligtvis är topplängden för logik 0 och logik 1 densamma, skillnaden ligger i hela pulslängden.
STM32 -mikrokontrollerna har inbäddad funktion för att fånga PWM -signal. Nästan varje timer på mikrokontrollen kan läggas in i "PWM -signalinspelning mer" när kanalvariablerna för timern sparar pulslängden och dess topplängd. Här måste jag markera den lilla detaljen: när IR -mottagaren fångar signalen blir spänningen på dess arbetsstift 0 och i viloläge är spänningen i arbetsstiftet 5 eller 3,3 volt beroende på IR -mottagarens matningsspänning. Dvs mottagaren 'inverterar' signalen.
Med PWM -inspelningsläge kan stm32 -mikrokontrollen enkelt förvandlas till en IR -fjärröversättare från IR -fjärrkontrollen till tangentbordskoderna. Sedan kan du starta din favorit visualiseringsprogramvara, till exempel Kodi från VLC för att spela din favoritfilm på mediecenteret.
Steg 2: Skapa kontrollen
För att programmera stm32 mikrokontroller vill jag rekommendera den fria programvaran från STM: systembänk (aka ac6) och kortkonfigurationsverktyget cubeMX. För att ladda upp programvaran till mikrokontrollen kan chipklonen på ST-Link V2-adaptern användas. Systemets arbetsbänkprojektfiler som bifogas detta steg, F1-IR_remote.zip-filen.
Kortkonfigurationsverktyget förenklar processen med initial hårdvarukonfiguration av vår mikrokontroller.
Om du använder systembänkverktyget kan du bara använda det nedladdade projektet. Men om du vill undersöka projektet i mer information kan du skapa kortkonfigurationen i cubeMX:
- Skapa ett nytt projekt och välj tavlan stm32f103c8
- Välj 'Crystal/Ceramic Resonator' för 'High Speed Clock (HSE)' i RCC -menyn.
- Välj "Seriell tråd" för "Debug" -objektet i SYS -menyn.
-
Konfigurera timern #2 (TIM2 -menyn) i PWM -inspelningsläge enligt bilden:
- Slavläge -> Återställ läge
- Utlösarkälla -> TI1FP1
- Klocka -> Intern klocka
- Channel1 -> Input Capture direktläge
- Markera kryssrutan 'Enhet (FS) i USB -menyn
- Välj rullgardinsmenyn 'Human Interface Device Class (HID)' i 'Class of FS IP' i USB_DEVICE-menyn
- I klockans konfigurationspanel, se till att ge 72 MHz till timern #2 eftersom vi behöver timerräkning vid varje 1 ms.
- Konfigurera USB -enheten på konfigurationspanelen enligt bilden
-
Konfigurera timern 2 på konfigurationspanelen enligt följande:
- Prescaller - 71 (från 0 till 71) - 1 mikro sekunders fästing!
- Räknarläge - Upp
- Räknarperiod - 39999 (vi borde kunna mäta den långa pulsen)
- Input capture channel1 - Falling Edge (kom ihåg att signalen från IR -mottagaren är inverterad)
I PWM -inspelningsläget fungerar timern#2 enligt följande:
När den fallande fronten detekterades, skulle timräknaren sparas i kanal1 -registret och timräknaren skulle återställas med 0. Därefter fortsatte timern att räkna upp riktning. Så vi kan enkelt mäta pulslängden i mikrosekunder.
Som standard simulerar STM32 USB HID -klassen USB -musen. Här kan du hitta instruktionerna för att göra regulatorn till ett tangentbord.
Steg 3: Skräddarsy kontrollen
Projektet fungerar med Panasonic fjärrkontroll och Kodi mediacenter. För att skräddarsy projektet för din egen styrenhet bör du lägga till kodmatrisen för din fjärrkontroll som jag gjorde för panasonic fjärrkontroll (panasonicCode) till Inc/code.h -rubriken. Som du kan se har varje kommando ett unikt ID (i IRcommmand enum). Det finns 24 kommandon (0-23) som känns igen av projektet. Kommandot sorteras efter 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};
Sedan bör du lägga till din egen fjärrkontroll i init () -metoden i IR.cpp med funktionen addRemote (). Funktionsargumenten är:
- Antal bitar i paketet
- Paketets rubriklängd
- "Noll" bitlängd
- "En" bitlängd
- Pekare till kodmatrisen
- Nummerelement i matrisen
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
Filen innehåller också en annan tabell för att konvertera kommandon till tangentbordskoder. Kbdr_kodi -arrayen innehåller nyckelkoderna för Kodi media center. Du kan lägga till en annan array för ditt eget mediacenterprogram, till exempel vlc -spelare. Om du skulle lägga till en annan mediacenterapplikationstabell skulle du skapa ett annat objekt KBD och initiera det i main.cpp.
Steg 4: Verktyg för att förenkla skräddarsy
Det finns ytterligare två projekt i förvaret
- IR -undersökning - gör det möjligt att mäta tidsparametrarna för signalerna på din fjärrkontroll.
- IR_capture - gör det möjligt att fånga HEX -koder på din fjärrkontroll.
Ladda bara IR -undersökningsprojektet och anslut USB -porten på bluepill -kortet till din dator. Starta sedan ett terminalprogram på den virtuella seriella portenheten, som motsvarar stm32 -kortet. Medan du trycker på knapparna på fjärrkontrollen mäter programmet de mottagna pulserna och skriver ut genomsnittstiderna för olika pulser. Det bör förenkla att detektera pulslängden för pakethuvudet, noll och en bit.
I IR -undersökningsprojektet arbetar timern #2 i PWM -inspelningsläge med två kanaler: kanal ett fångar hela pulslängden och kanal2 fångar topplängden. När den fallande signalkanten detekterades sparades timervärdet i kanal ett -registret och timern återställdes med 0. När signalens stigande kant detekterades sparades timräknaren i kanal 2 -registret.
För att fånga knappkoderna på din egen fjärrkontroll kan IR_capture -projektet användas. I main.c -filen bör du lägga till fjärrdefinitionen så här:
IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};
- .hdr - rubriklängden i mks
- .bits - antalet bitar i paketet
- .zero - längden på nollbiten
- .one - längden en bit
- .dev - avvikelsen (skillnaden i tider som kan accepteras). Vanligtvis är det 1/10 av den minsta längden.
Lägg sedan till din fjärrkontroll i listan över fjärrkontroller som stöds:
const IRcode* remote [2] = {& panasonic, & pioneer};
Rekommenderad:
Folow-UP: Advanced Media Center With Odroid N2 and Kodi (4k and HEVC support): 3 Steg
Folow-UP: Advanced Media Center With Odroid N2 and Kodi (4k and HEVC Support): Den här artikeln är en uppföljning av min tidigare, ganska framgångsrika artikel om att bygga ett mångsidigt mediecenter, först baserat på det mycket populära Raspberry PI men senare, på grund av bristen på HEVC, H.265 och HDMI 2.2 -kompatibel utgång, var det switch
Shadow Light Box - Control by IR Remote With Arduino: 8 Steps (with Pictures)
Shadow Light Box - Kontroll av IR -fjärrkontroll med Arduino: Denna instruktion kommer att vägleda hur man gör skuggljuslåda till nästa jul. Du kan göra det själv för att dekorera ditt rum eller göra det till din vän som en present.Denna skugglåda kan göra olika färger genom att blanda färg med röd, blå, grön färg
Fairies: Portable Arcade and Media Center: 5 steg
Fairies: Portable Arcade and Media Center: Mitt mål var att bygga en bärbar konsol & mediecenter för min dotter. Spelet på minidesignerna som PSP- eller Nintendo -klonerna verkar för långt ifrån tanken på de gamla arkadskåpen. Jag ville gå med i knapparnas nostalgi
Raspberry PI Media Center, OSMC DAC/AMP: 3 steg
Raspberry PI Media Center, OSMC DAC/AMP: Ta en Raspberry pi, lägg till en DAC och förstärkare så har du dig själv ett mycket trevligt mediecenter för inte mycket pengar. Först måste jag säga en " BIG " tack till människorna på GearBest för att de skickade det här objektet till mig för att testa. Och om du vill skaffa en
1981 Bärbar videobandspelare Raspberry PI Media Center: 12 steg (med bilder)
1981 Bärbar videobandspelare Raspberry PI Media Center: Detta är en Sharp VC -2300H videobandspelare från början av 80 -talet som jag har konverterat - den har nu en Raspberry Pi i hjärtat och kör den utmärkta Raspbmc -mediecenterprogramvaran. Andra uppgraderingar inkluderar en snygg arduino-baserad klocka och en EL-tråd "band"