Taula de continguts:
- Pas 1: la idea
- Pas 2: creació del controlador
- Pas 3: adaptar el controlador
- Pas 4: Eines per simplificar la confecció
Vídeo: Falling in Stm32: Control remot per a Home Media Center: 4 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Es tracta d’un prototip complet per al control remot del centre de suports domèstic basat en el micro controlador smt32, stm32f103c8t6 conegut com a placa ‘bluepill’. Suposem que utilitzeu un PC per al centre multimèdia domèstic. És una solució molt flexible, que us permet col·locar una enorme biblioteca de vídeo al disc dur intern, o podeu reproduir vídeo des de la xarxa, per exemple youtube o així, no teniu problemes amb els còdecs o la reproducció de vídeo, ja que és molt És fàcil actualitzar el reproductor de programari en qualsevol moment. El principal desavantatge d'aquesta solució és que heu d'utilitzar el ratolí i el teclat per controlar la reproducció. El comandament a distància IR és molt convenient per a això.
En aquest article mostraré com crear el propi control remot mitjançant la placa de xip bluepill.
Pas 1: la idea
La idea principal és molt senzilla: la placa bluepill té un port USB incrustat i pot actuar com a teclat USB HID. Si connectem el receptor IR al tauler, es podria traduir l'ordre del vostre comandament a distància IR a "prémer la tecla" del teclat virtual. No es necessiten conductors addicionals.
Hi ha molts protocols d’IR al món que ens envolta. Cada televisor del proveïdor de VCS té el seu propi protocol IR. Però tots aquests protocols tenen alguna cosa en comú: utilitzen la modulació d’impulsos per codificar el senyal. Normalment, hi ha algun preàmbul: impuls llarg abans del primer bit del paquet. A continuació, el control IR transmet paquets sencers amb 0 i 1 i finalitza la transmissió amb un pols llarg acabat. Per descodificar el bit hem de mesurar el pols de longitud i la longitud del pic. Normalment, la longitud màxima de la lògica 0 i la lògica 1 són les mateixes, la diferència està en la longitud completa del pols.
Els microcontroladors stm32 tenen una funció incrustada per captar el senyal PWM. Prop de tots els temporitzadors del microcontrolador es poden posar a la "captura de senyal PWM més" quan les variables del canal del temporitzador guarden la longitud total del pols i la seva longitud màxima. Aquí he de destacar el petit detall: quan el receptor IR capta el senyal, la tensió del seu pin de treball passa a ser 0 i, en estat de ralentí, la tensió del pin de treball és de 5 o 3,3 volts, depenent de la tensió d’alimentació del receptor IR. És a dir, el receptor «inverteix» el senyal.
Amb el mode de captura PWM, el micro controlador stm32 es pot convertir fàcilment en un traductor remot IR des del control remot IR fins als codis del teclat. A continuació, podeu iniciar el vostre programari de visualització preferit, per exemple, Kodi de VLC per reproduir la vostra pel·lícula preferida al centre multimèdia.
Pas 2: creació del controlador
Per programar el microcontrolador stm32, voldria recomanar el programari gratuït de STM: sistema workbench (aka ac6) i l'eina de configuració de la placa cubeMX. Per carregar el programari al microcontrolador, es pot utilitzar el clon de xip de l'adaptador ST-Link V2. Els fitxers de projecte del banc de treball del sistema adjunts a aquest pas, el fitxer F1-IR_remote.zip.
L’eina de configuració de la placa simplifica el procés de configuració inicial del maquinari del nostre microcontrolador.
Si utilitzeu l'eina del banc de treball del sistema, només podeu utilitzar el projecte descarregat. Però si voleu investigar el projecte amb més detalls, podeu crear la configuració de la placa al cubeMX:
- Creeu un projecte nou i seleccioneu el tauler stm32f103c8
- Seleccioneu "Resonador de vidre / ceràmica" per a l'element "Rellotge d'alta velocitat (HSE)" del menú RCC.
- Seleccioneu "Serial Wire" per a l'element "Depuració" al menú SYS.
-
Configureu el temporitzador núm. 2 (menú TIM2) en mode de captura PWM tal com es mostra a la imatge:
- Mode esclau -> Mode de restabliment
- Font del disparador -> TI1FP1
- Font del rellotge -> Rellotge intern
- Canal1 -> Mode directe de captura d’entrada
- Estableix la casella de selecció 'Dispositiu (FS) al menú USB
- Seleccioneu l'element del menú desplegable "Classe de dispositiu d'interfície humana (HID)" a l'element "Classe d'IP FS" al menú USB_DEVICE
- Al tauler de configuració del rellotge, assegureu-vos de proporcionar 72 MHz al temporitzador núm. 2 perquè necessitem un recompte de temporitzador a cada 1 mks.
- Al tauler de configuració, configureu el dispositiu USB tal com es mostra a la imatge
-
Al tauler de configuració, configureu el temporitzador núm. 2 de la manera següent:
- Prescaller - 71 (de 0 a 71) - 1 tic de micro segon!
- Mode de comptador: amunt
- Període de comptador: 39999 (hauríem de poder mesurar el pols llarg)
- Canal de captura d'entrada 1: Falling Edge (recordeu que el senyal del receptor IR està invertit)
En el mode de captura PWM, el temporitzador núm. 2 funcionaria de la següent manera:
Quan es detectés el front de caiguda, el comptador del temporitzador es desaria al registre channel1 i el comptador del temporitzador es restabliria amb 0. Llavors el temporitzador continuaria comptant la direcció ascendent. Així, podem mesurar fàcilment la longitud del pols en micro segons.
Per defecte, la classe STM32 USB HID simula el ratolí USB. Aquí podeu trobar les instruccions per convertir el controlador en teclat.
Pas 3: adaptar el controlador
El projecte funciona amb el control remot Panasonic i el centre multimèdia Kodi. Per adaptar el projecte al vostre propi controlador, heu d'afegir la matriu de codis per al control remot, tal com ho vaig fer per al control remot panasonic (panasonicCode) a la capçalera Inc / code.h. Com podeu veure, totes les ordres tenen un identificador únic (a la llista IRcommmand). Hi ha 24 ordres (0-23) reconegudes pel projecte. Les ordres s’ordenen per la rellevància.
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} IRcommand;
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};
A continuació, heu d'afegir el vostre propi control remot al mètode init () a l'IR.cpp amb la funció addRemote (). Els arguments de la funció són:
- Nombre de bits del paquet
- La longitud de la capçalera del paquet
- Longitud de bits 'zero'
- Longitud d'un bit
- Punter a la matriu de codis
- Nombre d'elements de la matriu
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode) / sizeof (uint32_t));
}
El fitxer també conté una altra taula per convertir ordres en codis de teclat. La matriu kbdr_kodi conté els codis clau per a Kodi media center. Podeu afegir una altra matriu per al vostre propi programa multimèdia, per exemple, reproductor vlc. Si afegiu una altra taula d'aplicacions del centre de suports, creeu un altre objecte KBD i l'inicialitzeu a main.cpp.
Pas 4: Eines per simplificar la confecció
Hi ha dos projectes més al repositori
- Investigació IR: permet mesurar els paràmetres de temps dels senyals del comandament a distància.
- IR_capture: permet capturar els codis HEX del control remot.
Només cal carregar el projecte d'investigació IR i connectar el port USB de la placa bluepill a l'ordinador. A continuació, inicieu qualsevol programa de terminal al dispositiu de port sèrie virtual, corresponent a la placa stm32. Mentre premeu els botons del control remot, el programa mesuraria els polsos rebuts i imprimiria els temps mitjans per a diferents polsos. Ha de simplificar-se per detectar la longitud del pols de la capçalera del paquet, zero i un bits.
En el projecte d'investigació IR, el temporitzador núm. 2 està funcionant en mode de captura PWM amb dos canals: el canal primer captura tota la longitud del pols i el canal 2 captura la longitud màxima. Quan es detecta la vora del senyal descendent, el valor del temporitzador es guarda al registre d'un canal i el temporitzador es restableix amb 0. Quan es detecta la vora ascendent del senyal, el comptador del temporitzador es guarda al registre del canal 2.
Per capturar els codis de botó del vostre propi control remot, es pot utilitzar el projecte IR_capture. Al fitxer main.c heu d'afegir la definició remota com aquesta:
IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};
- .hdr: la longitud de la capçalera en mks
- .bits: el nombre de bits del paquet
- .zero: la longitud del bit zero
- .one: la longitud un el bit
- .dev - la desviació (la diferència de temps que es pot acceptar). Normalment és 1/10 de la longitud més petita.
A continuació, afegiu el comandament a la llista de comandaments a distància compatibles:
const IRcode * remote [2] = {& panasonic, & pioneer};
Recomanat:
Shadow Light Box: control per control remot IR amb Arduino: 8 passos (amb imatges)
Shadow Light Box: control per control remot IR amb Arduino: aquesta instrucció us guiarà com fer una caixa de llum d’ombra per al proper Nadal. Podeu decorar la vostra habitació o fer-la per al vostre amic com a regal. Aquesta caixa d’ombres pot fer diversos tipus de color barrejant el color per vermell, blau, verd
IRduino: control remot Arduino: imiteu un control remot perdut: 6 passos
IRduino: control remot Arduino: imiteu un control remot perdut: si alguna vegada heu perdut el comandament a distància del vostre reproductor de TV o DVD, sabeu el frustrant que és haver d’anar, trobar i utilitzar els botons del propi dispositiu. De vegades, aquests botons ni tan sols ofereixen la mateixa funcionalitat que el comandament a distància. Rebre
Controleu-vos els aparells elèctrics amb el vostre control remot de televisió (control remot ir) amb pantalla de temperatura i humitat: 9 passos
Controleu-vos els aparells elèctrics amb el vostre control remot de televisió (control remot ir) amb pantalla de temperatura i humitat: hola, sóc Abhay i és el meu primer bloc sobre Instructables i avui us mostraré com controlar els vostres electrodomèstics amb el vostre control remot de TV construint aquest projecte senzill. gràcies al laboratori atl per obtenir suport i proporcionar el material
Liberació del cable remot Olympus Evolt E510 (versió 2 amb enfocament automàtic al control remot): 6 passos (amb imatges)
Liberació del cable remot Olympus Evolt E510 (versió 2 amb enfocament automàtic al control remot): ahir vaig construir un comandament senzill amb un botó per al meu Olympus E510. La majoria de càmeres tenen un botó de disparador (el que premeu per fer una foto) que té dos modes. Si es prem el botó suaument, la càmera enfocarà automàticament i mesurarà la llum
Control remot remot: 11 passos (amb imatges)
Control remot a distància: tinc un nadó acabat de néixer i no creu que hagi de dormir el temps que la meva dona i jo també ho desitgem. Una cosa que el manté feliç al bressol és el mòbil que li penja. Així que quan es desperti si necessitem uns 25 minuts més o menys de sl