Índice:
- Etapa 1: a ideia
- Etapa 2: Criação do controlador
- Etapa 3: Adaptando o controlador
- Etapa 4: Ferramentas para simplificar a adaptação
Vídeo: Queda no Stm32: Controle remoto para Home Media Center: 4 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Este é um protótipo completo para controle remoto de home media center baseado no micro controlador smt32, stm32f103c8t6 conhecido como placa 'bluepill'. Suponha que você esteja usando um PC como centro de mídia doméstico. É uma solução muito flexível, que permite colocar uma enorme biblioteca de vídeo no disco rígido interno, ou você pode reproduzir vídeo da rede, por exemplo, youtube ou algo assim, você não tem problemas com codecs ou reprodução de vídeo, porque é muito fácil de atualizar o software player a qualquer momento. A principal desvantagem dessa solução é que você deve usar o mouse e o teclado para controlar a reprodução. O controle remoto IR é um modo muito conveniente para isso.
Neste artigo, mostrarei como criar o próprio controle remoto usando a placa chip bluepill.
Etapa 1: a ideia
A ideia principal é muito simples: a placa bluepill tem uma porta USB embutida e pode funcionar como um teclado USB HID. Se conectarmos o receptor IR à placa, ele poderá traduzir o comando de seu controle remoto IR em 'pressionamento de tecla' do teclado virtual. Não são necessários drivers adicionais!
Existem muitos protocolos de IR no mundo ao nosso redor. Cada TV do fornecedor VCS tem seu próprio protocolo IR. Mas todos esses protocolos têm algo em comum: eles usam modulação de pulso para codificar o sinal. Normalmente, há algum preâmbulo: impulso longo antes do primeiro bit no pacote. Então o controle IR transmite o pacote inteiro com 0 e 1 e finaliza a transmissão com pulso longo de término. Para decodificar o bit, precisamos medir o comprimento do pulso e o comprimento do pico. Normalmente, o comprimento de pico da lógica 0 e da lógica 1 são iguais, a diferença está no comprimento total do pulso.
Os microcontroladores stm32 possuem recurso integrado para capturar o sinal PWM. Quase todos os temporizadores do microcontrolador podem ser colocados em 'Captura de sinal PWM mais' quando as variáveis de canal do temporizador salvam o comprimento total do pulso e seu comprimento de pico. Aqui devo destacar o pequeno detalhe: quando o receptor IR capta o sinal, a tensão em seu pino de trabalho torna-se 0 e no estado inativo a tensão no pino de trabalho é de 5 ou 3,3 volts, dependendo da tensão de alimentação do receptor IR. Ou seja, o receptor 'inverte' o sinal.
Com o modo de captura PWM, o microcontrolador stm32 pode ser facilmente transformado em um tradutor remoto IR do remoto IR para os códigos do teclado. Em seguida, você pode iniciar seu software de visualização favorito, por exemplo Kodi de VLC para reproduzir seu filme favorito na central de mídia.
Etapa 2: Criação do controlador
Para programar o micro controlador stm32, gostaria de recomendar o software livre da STM: system workbench (também conhecido como ac6) e a ferramenta de configuração de placa cubeMX. Para carregar o software no microcontrolador, o clone do chip do adaptador ST-Link V2 pode ser usado. Os arquivos de projeto do ambiente de trabalho do sistema anexados a esta etapa, arquivo F1-IR_remote.zip.
A ferramenta de configuração da placa simplifica o processo de configuração inicial do hardware do nosso microcontrolador.
Se você estiver usando a ferramenta de workbench do sistema, você pode apenas usar o projeto baixado. Mas se você deseja investigar o projeto em mais detalhes, você pode criar a configuração da placa no cubeMX:
- Crie um novo projeto e selecione a placa stm32f103c8
- Selecione 'Crystal / Ceramic Resonator' para o item 'High Speed Clock (HSE)' no menu RCC.
- Selecione 'Serial Wire' para o item 'Debug' no menu SYS.
-
Configure o temporizador # 2 (menu TIM2) no modo de captura PWM conforme mostrado na imagem:
- Modo escravo -> Modo de reinicialização
- Fonte de disparo -> TI1FP1
- Fonte do relógio -> Relógio interno
- Canal1 -> modo direto de Captura de entrada
- Defina a caixa de seleção 'Dispositivo (FS) no menu USB
- Selecione o elemento de menu suspenso 'Human Interface Device Class (HID)' no item 'Class of FS IP' no menu USB_DEVICE
- No painel de configuração do relógio, certifique-se de fornecer 72 MHz ao cronômetro # 2 porque precisamos da contagem do cronômetro a cada 1 mks.
- No painel de configuração, configure o dispositivo USB como mostrado na imagem
-
No painel de configuração, configure o temporizador nº 2 da seguinte forma:
- Prescaller - 71 (de 0 a 71) - 1 micro segundo tiquetaque!
- Modo de contador - para cima
- Período do contador - 39999 (devemos ser capazes de medir o pulso longo)
- Captura de entrada canal 1 - Falling Edge (lembre-se de que o sinal do receptor IR está invertido)
No modo de captura PWM, o cronômetro nº 2 funcionaria da seguinte forma:
Quando a queda frontal fosse detectada, o contador do temporizador seria salvo no registro do canal 1 e o contador do temporizador seria zerado com 0. Em seguida, o temporizador continuaria a contar a direção. Assim, podemos medir facilmente a duração do pulso em microssegundos.
Por padrão, a classe STM32 USB HID simula o mouse USB. Aqui você pode encontrar as instruções para transformar o controlador em teclado.
Etapa 3: Adaptando o controlador
O projeto funciona com controle remoto Panasonic e central de mídia Kodi. Para personalizar o projeto para o seu próprio controlador, você deve adicionar a matriz de código para o seu controle remoto, como fiz para o controle remoto panasonic (panasonicCode) ao cabeçalho Inc / code.h. Como você pode ver, cada comando tem um ID exclusivo (no enum IRcommmand). Existem 24 comandos (0-23) reconhecidos pelo projeto. Os comandos são classificados pela relevâ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};
Então você deve adicionar seu próprio controle remoto no método init () no IR.cpp com a função addRemote (). Os argumentos da função são:
- Número de bits no pacote
- O comprimento do cabeçalho do pacote
- Comprimento de bit 'Zero'
- Comprimento de 'um' bit
- Ponteiro para a matriz de código
- Numere os elementos da matriz
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode) / sizeof (uint32_t));
}
Além disso, o arquivo contém outra tabela para converter comandos em códigos de teclado. O array kbdr_kodi contém os códigos-chave da central multimídia Kodi. Você pode adicionar outra matriz para seu próprio programa de centro de mídia, por exemplo, vlc player. Se você adicionar outra tabela de aplicativo do centro de mídia, deverá criar outro objeto KBD e inicializá-lo no main.cpp.
Etapa 4: Ferramentas para simplificar a adaptação
Existem dois outros projetos no repositório
- Investigar infravermelho - permitindo medir os parâmetros de tempo dos sinais de seu controle remoto.
- IR_capture - permite capturar os códigos HEX do seu controle remoto.
Basta carregar o projeto de investigação IR e conectar a porta USB da placa bluepill em seu computador. Em seguida, inicie qualquer programa de terminal no dispositivo de porta serial virtual, correspondente à placa stm32. Enquanto você pressiona os botões no controle remoto, o programa mede os pulsos recebidos e imprime os tempos médios para os diferentes pulsos. Deve ser simplificado detectar o comprimento do pulso para o cabeçalho do pacote, zero e um bits.
No projeto de investigação de infravermelho, o temporizador nº 2 está trabalhando no modo de captura PWM com dois canais: o canal um captura o comprimento total do pulso e o canal 2 captura o comprimento do pico. Quando a borda descendente do sinal é detectada, o valor do temporizador é salvo no registro do canal um e o timer é redefinido com 0. Quando a borda ascendente do sinal é detectada, o contador do temporizador é salvo no registro do canal 2.
Para capturar os códigos dos botões de seu próprio controle remoto, o projeto IR_capture pode ser usado. No arquivo main.c, você deve adicionar a definição remota como esta:
IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.um = 1755,.dev = 60};
- .hdr - o comprimento do cabeçalho em mks
- .bits - o número de bits no pacote
- .zero - o comprimento do bit zero
- .um - o comprimento um um bit
- .dev - o desvio (a diferença de tempos que pode ser aceita). Normalmente é 1/10 do menor comprimento.
Em seguida, adicione seu controle remoto à lista de controles remotos compatíveis:
const IRcode * remote [2] = {& panasonic, & pioneer};
Recomendado:
O controle remoto da TV se torna um controle remoto de RF -- NRF24L01 + Tutorial: 5 etapas (com imagens)
O controle remoto da TV se torna um controle remoto RF || NRF24L01 + Tutorial: Neste projeto vou mostrar como usei o popular IC nRF24L01 + RF para ajustar o brilho de uma faixa de LED sem fio por meio de três botões inúteis de um controle remoto de TV. Vamos começar
Kit de controle remoto comum transformado em controle remoto de brinquedo RC de quatro canais: 4 etapas
Kit de controle remoto comum transformado em controle remoto de brinquedo RC de quatro canais:改造 方法 非常 简单。 只需 准备 一些 瓦楞纸 板, 然后 按照 视频 教程 完成 这个 电子 项目 并 为 您 服务。 玩具 车船 提供 远程 无线 控制。
Converta seu controle remoto IR em RF remoto: 9 etapas (com imagens)
Converta seu Remoto IR em Remoto RF: No Instructable de hoje, vou mostrar como você pode usar um módulo RF genérico sem um microcontrolador, o que nos levará a construir um projeto onde você pode converter um Remoto IR de qualquer dispositivo em um RF Controlo remoto. A principal vantagem de converter um
Controle seus aparelhos elétricos com seu controle remoto de TV (ir remoto) com display de temperatura e umidade: 9 etapas
Controle seus aparelhos elétricos com o controle remoto da TV (ir remoto) com visor de temperatura e umidade: oi, sou Abhay e é meu primeiro blog no Instructables e hoje vou mostrar como controlar seus aparelhos elétricos com o controle remoto da TV construindo este projeto simples. obrigado ao atl lab pelo apoio e fornecimento do material
Controle remoto remoto: 11 etapas (com imagens)
Controle remoto remoto: Eu tenho um bebê recém-nascido e ele não acha que deveria dormir tanto quanto minha esposa e eu poderíamos desejar que ele também. Uma coisa que o deixa feliz no berço é o móbile que fica pendurado sobre ele. Então, quando ele acordar, precisaremos de mais 25 minutos ou mais de sl