Luz de fundo adaptável para TV Raspberry Pi - Ambilight Analog

imagem

Esta é uma TV de 50 ”com 37 pontos RGB de luz de fundo adaptável na parte superior e nas laterais da tela. Como criar uma luz de fundo adaptativa semelhante para qualquer tela ou TV é um tópico obsceno, mas bastante relevante por vários motivos.

Primeiro de tudo, tudo está mudando. Há alguns anos, não havia projeto funcionando sem muletas de software ou hardware. De qualquer forma, eu não vi essas publicações. Os descritos na Internet perdem a relevância devido à obsolescência de plataformas de software ou hardware ou implementam essa tecnologia apenas para monitores conectados a um PC.

Em segundo lugar, não há e não haverá Samsung, Sony, Elge e outras TVs suportando essa tecnologia no mercado, pois ela foi patenteada pela Philips por muitos anos. E finalmente - todas as soluções "prontas para uso" disponíveis em Ali e outras como ele têm várias limitações na flexibilidade de configurações e adaptação ao tamanho do quadro do conteúdo de vídeo, ajustes na gama de cores, etc., sendo apenas uma muleta de hardware analisando um sinal externo e trabalhando apenas na formação da luz de fundo.

Opção de captura de quadro "Hardware"


Se você não falar sobre opções teóricas para refinamento e modernização do próprio receptor de televisão, deverá concordar com o fato de que, em qualquer caso, será necessário processar o sinal HDMI - ou seja, Será usado para análise de quadros e luz de fundo. Aqui, apenas duas opções de implementação se sugerem: com processamento de sinal de qualquer fonte (como lightpacks with ali) e com a implementação da própria fonte na forma de um decodificador de TV com luz de fundo adaptável.

No primeiro caso, temos algum tipo de versatilidade - você pode conectar um console de jogos ou algum tipo de jogador ao dispositivo. No segundo - coletamos esse mesmo "algum tipo de player" com uma função de luz de fundo integrada. Durante as experiências, implementei as duas opções, mas aqui vou me concentrar apenas na segunda, e aqui está o porquê:

imagem

No diagrama de blocos da primeira variante, o sinal HDMI de qualquer fonte chega ao divisor, onde é dividido em duas saídas. Desde o início, o conteúdo é reproduzido em qualquer receptor ou monitor de TV. A partir do segundo, o sinal entra simultaneamente no redimensionador de hardware, onde é convertido em um sinal analógico com quadros de baixa resolução - 320x480. O sinal analógico é enviado para um dispositivo de captura USB de hardware, que captura “screenshots” de cada quadro e os transmite pela porta USB para a entrada de um mini PC de placa única - Raspberry Pi 3 B +. O software de framboesas analisa quadros usando o programa Hyperion e, por meio de uma das saídas GPIO, fornece seqüências de controle para a entrada de uma fita de endereço como WS2812B ou APA102. Tudo isso funcionou bem, mas tem algumas desvantagens na forma de uma pilha de ferro com conexões e um pequeno atraso na emissão de um sinal de luz de fundo. O atraso foi perceptível apenas em vídeos de teste com uma nítida mudança de cores na maior parte do quadro. Caso contrário, não haverá reclamações, exceto pelo custo de todo o ferro nesta implementação:

Raspberry Pi 3 B + - cerca de US $ 55.
Radiator Case - $ 14.
Divisor HDMI 1080P ativo para 2 saídas - US $ 15.
HDMI 1080P para AV Scaler - US $ 15.
EasyCap USB grabber - US $ 18.
Fonte de alimentação - cerca de US $ 10.
Cartão microSD de 32 GB - US $ 10.
Conexão de cabos e outras pequenas coisas - cerca de US $ 10.
Total, sem contar a fita de endereço - quase US $ 150.

Não é que essa opção vá direto para o forno - pode ser útil para organizar a luz de fundo em algumas telas grandes pré-fabricadas em anúncios ou apresentações, e o preço não é o pior para o resultado - mas para uso doméstico, decidi pela segunda opção - em Principalmente "software". Saiu mais fácil, mais barato, mais compacto e mais rápido. Para uso comercial, também pode ser bastante adequado - o Raspberry Pi com o player pode ser usado com sucesso em projetos nos quais você precisa reproduzir automaticamente algum conteúdo de forma cíclica e contínua a partir do momento em que o liga, desliga o player novamente automaticamente - de acordo com a programação no final do dia. Depois de escrever um pequeno script, obteremos um dispositivo de publicidade com a função de iluminação de fundo adaptativa de qualquer tela, com pelo menos dez metros de altura. Mas voltando ao uso doméstico ...

Frames de captura de opção "Software"


As funções do controle do media center e da luz de fundo permanecerão atrás do mesmo Raspberry Pi 3 B +, e todas as conexões serão reduzidas para conectar vários conectores - alimentação, Internet, luz de fundo e HDMI à TV. Não mais do que qualquer outro decodificador:

imagem

Olhando para o futuro, quero observar que o Raspberry Pi 3 B + acabou sendo um centro de mídia descodificador de TV completamente universal com todos os recursos necessários de um dispositivo assim, além de uma luz de fundo adaptável e flexível para qualquer TV moderna (e não tão) que tenha uma entrada HDMI.

A base do software é o sistema operacional Libreelec aberto, especialmente afiado para o player Kodi. O site do projeto contém todas as informações necessárias.

Sobre os recursos de uma das plataformas mais poderosas e flexíveis para reproduzir conteúdo de áudio e vídeo, IPTV etc. pode ser lido através da pontuação em qualquer mecanismo de pesquisa "descrição das oportunidades kodi". Há muitas informações em russo sobre esse tópico. Eu uso, talvez, 1/10 de todos os recursos da plataforma e isso é suficiente para mim. A plataforma é ativamente suportada, tem uma comunidade responsiva. Portanto, lemos, estudamos - no wiki desses projetos e nos fóruns há quase todas as informações e respostas necessárias para as perguntas. Tomamos o kit de distribuição e as instruções de instalação e configuração no site do projeto Libreelec. Como o sistema operacional é multiplataforma, não se esqueça de que nosso projeto é baseado no Raspberry.

Violando uma tradição estranha, mas bem estabelecida, de iniciar essas publicações com uma descrição dos tipos de fitas de endereço e de como desajeitá-las nas paredes traseiras das TVs domésticas, começarei instalando e configurando o software de placa única. Infelizmente, é quase impossível fazer instruções passo a passo para a configuração - levaria meia centena de páginas de texto sem capturas de tela. Além disso, a plataforma do player está se desenvolvendo ativamente, as versões do SO e do Kodi estão mudando, as informações atuais - logo deixa de ser assim. Portanto, aqui estão apenas os pontos principais, além de links para fontes de informações úteis.

Para configurar a parte do software da luz de fundo, controlar o controle remoto IR e o próprio player, você precisa ter uma ideia inicial de como os diretórios do Libreelec são organizados, como a rede local funciona, o console, o que fazer com a linha de comando etc., pois faremos algumas coisas no processo à mão. Por meio dos instaladores no cartão microSD, apenas o Libreelec OS e o suplemento para destacar - Hyperion serão instalados.

Como o Raspberry Pi não possui relógio em tempo real, BIOS e energia de backup, tudo o que é necessário para o trabalho está localizado no cartão microSD. Para instalar o sistema operacional no cartão, você deve fazer o download do pacote NOOBS no site do projeto Raspberry (no momento da instalação, usei a versão 3.2.1) ou uma ferramenta especial - “LibreELEC USB-SD Creator” .

O cartão de memória deve ter boas velocidades de leitura e gravação - ou seja, ter pelo menos a nota 10. Em termos de volume, o Libreelec OS ocupa pouco espaço, cartões de 16GB serão suficientes para o trabalho, se não houver desejo de comprar uma quantidade maior. Pode ser usado para armazenar qualquer conteúdo.

No caso do NOOBS, o conteúdo do arquivo zip é descompactado na raiz de um cartão microSD formatado em FAT32, o cartão é inserido no slot livre de raspberry, a alimentação é ligada e, escolhendo o sistema operacional necessário no instalador e seguindo as instruções, implemente o Libreelec. No entanto, os desenvolvedores da plataforma recomendam a instalação usando o LibreELEC USB-SD Creator, que faz o download e grava o pacote de distribuição no cartão; depois, o cartão também é inserido no slot raspberry, onde o instalador implementa o sistema operacional após ligar a energia. Nesse caso, as seções do cartão são reformatadas e, após o Windows, você não verá todo o volume real da mídia. Se, por qualquer motivo, você precisar retornar as partições ao seu estado inicial, primeiro será necessário limpar a placa com o utilitário padrão do Windows - DiskPart; em seguida, na seção "Gerenciamento de Disco", crie uma nova partição no espaço livre da mídia e formate-a.

Para simplificar a instalação e a configuração do sistema operacional, conectei temporariamente um monitor e teclado separados com um mouse nas framboesas.

Além disso, para configurar e configurar o software raspberry, você precisará da conexão com um PC e acesso à Internet, de preferência com fio. O software instalado no PC para conexão via SSH - PuTTY e WinSCP, bem como a máquina virtual Java (jre-8u231-windows-x64) e o configurador de daemon Hyperion - HyperCon (HyperCon.jar). Você pode usar outro gerenciador de arquivos conveniente com painéis, por exemplo - Total Commander. Onde baixar e configurar - muitas informações em sites especializados, basta procurar informações com a consulta de pesquisa "trabalhe com PUttY e WinSCP". O projeto Hyperion também possui seu próprio fórum e wiki.
Nesta captura de tela, existem três maneiras de conectar as framboesas a um PC com vitória via SSH - por meio do console Putty, do gerenciador de arquivos WinSCP e do Total Commander:

imagem

A conta de administrador da Librelec possui um nome de usuário e senha root @ libreelec por padrão, que são melhor alterados por razões de segurança. Após uma instalação bem-sucedida nas configurações do sistema, realizamos ações simples - habilitamos SSH, SMB, atribuímos um IP estático, desabilitamos as atualizações:

imagem

Supõe-se que as framboesas estejam conectadas à sua rede doméstica e você pode descobrir o endereço IP dos dispositivos conectados a ela no seu PC doméstico. Desativei as atualizações para que o sistema de luz de fundo adaptável, uma vez ajustado, não travasse se o desenvolvedor alterar quaisquer componentes relacionados a ele no Libreelec.

Nas configurações do sistema nos serviços, você precisa habilitar o SSH e habilitar a autenticação por senha, também defina a versão mínima do protocolo SMB2, a máxima - SMB3. Você precisará do SMB para ver os diretórios do Raspberry Pi e as unidades flash conectadas a ele no PC:

imagem

No Windows 10, no PC, nas configurações, você terá que encontrar e ativar o suporte SMB, pois ele está desativado por padrão:

imagem

Também procuramos e adicionamos o layout do teclado russo nas configurações. Nada acontecerá com o teclado físico - só haverá entrada em inglês, mas no teclado virtual na tela será possível inserir texto em russo. Para acesso conveniente aos diretórios no cartão microSD e nas unidades flash conectadas às framboesas, você pode criar e colocar um atalho com o endereço do diretório remoto na barra de ferramentas no Total Commander:

imagem

Os arquivos na rede local serão transferidos a uma velocidade limitada pela largura de banda do seu roteador doméstico e muito mais rapidamente do que no acesso via SSH. De qualquer forma, copiar um filme ou música dessa maneira será mais conveniente do que transportar uma unidade flash USB de um decodificador para um PC. Você verá a estrutura interna de diretórios em / storage no cartão raspberry e nas unidades conectadas às portas USB. Com uma conexão com fio, tenho 100 Mbps. através do roteador, a velocidade máxima de download de arquivos de um PC para uma unidade USB em framboesas era de cerca de 12 MB / s, o que corresponde aproximadamente à largura de banda da minha conexão com fio.

Se necessário, no futuro, você poderá implantar no seu PC qualquer servidor de mídia doméstico (UPnP, DLNA) para transmitir conteúdo diretamente do seu PC.

Após instalar e configurar o acesso às framboesas a partir de um PC via SSH usando os programas PUttY e WinSCP, você pode prosseguir para instalar e configurar o daemon Hyperion. Deve haver uma máquina virtual Java no PC.

Tudo funcionará dessa maneira - no início do Raspberry, um programa especial, o Hyperion, será lançado em segundo plano com o Kodi em segundo plano. Ela analisará todos os quadros de vídeo e, dependendo das configurações gravadas no arquivo de configuração - gerenciará a fita de endereço através de uma das saídas GPIO da framboesa. Ou seja, após as configurações, tudo funcionará de forma autônoma, nenhuma comunicação ou interação com o PC é necessária. Mas, para criar rapidamente um arquivo de configuração e instalar o Hyperion em framboesas, existe um configurador conveniente que é executado em um PC. Este programa ajudará você a criar rapidamente um arquivo de configuração para o daemon funcionar, fazer o download e instalar no Raspberry e verificar a funcionalidade do sistema usando uma interface gráfica conveniente.

Hypercon


O configurador é chamado HyperCon, não requer instalação, basta executar o arquivo executável HyperCon.jar no PC e ver esta janela:

imagem

No lado direito, há uma tela virtual para a qual a luz de fundo será configurada - zonas de captura de cores, sua numeração (começa em 0), direção, local, recuo, sobreposição e profundidade. Na parte esquerda, existem cinco guias com configurações.

Resumidamente, nas guias do configurador:

Ferragens (ferro)

  • device -> Configuration Name - qualquer nome conveniente para a configuração atual
  • device -> Type - tipo de chip da fita de endereço, módulo ou outra coisa
  • device -> Amount LEDs - número de pixels endereçáveis ​​(quantos LEDs estão na fita)
  • device -> RGB Byte order - as seguintes cores no protocolo usado

Construção (disposição das fontes de luz)

  • caixas de seleção -> (led superior esquerdo, etc.) - a presença de uma fonte de luz nos cantos da estrutura
  • LEDs horizontais -> Número de pixels na parte superior da estrutura
  • LEDs Esquerdo-> Pixéis Esquerdos
  • LEDs à direita -> O número de pixels na borda direita do design
  • Lacuna inferior -> O número de zonas ignoradas ao longo da parte inferior da estrutura (para ignorar a perna da TV ou toda a zona inferior)
  • 1º deslocamento do LED -> Correção do deslocamento do pixel para definir o primeiro em um canto conveniente.

Processo de imagem

  • Processo de imagem -> Profundidade horizontal - profundidade da zona horizontal,%
  • Processo de imagem -> Profundidade vertical - profundidade da zona vertical,%
  • Processo de imagem -> Abertura horizontal - recue as zonas da borda horizontalmente,%
  • Processo de imagem -> Abertura vertical - recuar zonas da borda verticalmente,%
  • Processo de imagem -> Sobreposição - sobreposição de zonas vizinhas,%

Detecção de borda preta - Sensibilidade e modo de processamento. Funciona em teoria como esta - o demônio analisa as bordas da tela no nível especificado e calcula a largura das bordas escuras a serem excluídas das zonas processadas. Isso ocorre nos casos em que uma imagem widescreen é reproduzida.

Processo (processamento de quadros)

  • Suavização -> Ativado (caixa de seleção para ativar o anti-aliasing)
  • Suavização -> Tipo
  • Suavização -> Tempo
  • Suavização -> Freq de atualização (taxa de atualização)
  • Suavização -> Atualizar atraso (atraso antes de atualizar o quadro)
  • Calibração de cores - itens intuitivos que permitem definir o nível mínimo e máximo de brilho, saturação, temperatura, nível de brilho de fundo sem sinal, separadamente para cada uma das três cores primárias.

A caixa de seleção marcada Enviar contínuo permite que você veja alterações no processo de configuração já na estrutura montada.

Grabber (Grabber - frame grabber, a guia mais interessante)

  • Agarrador de quadro interno (Agarrador de software)
  • Agarrador de quadro interno-> Ativado
  • Agarre interno do quadro-> Largura
  • Agarre interno do quadro-> altura (altura da zona)
  • Agarrador de quadro interno-> Intervalo
  • Agarrador de quadro interno-> Canal prioritário (prioridade deste canal)

Alguns esclarecimentos são necessários aqui. O truque é que estamos criando um media player baseado no Raspberry Pi, que reproduzirá conteúdo de uma rede local, unidade flash ou TV IP na plataforma LibreElec. Como o conteúdo já está girando com o raspberry player, a captura ocorrerá programaticamente, sem um EasyCap externo, e o daemon lidará com os próprios quadros, pois nesse caso a fonte de sinal será a saída HDMI do próprio Raspberry Pi. É possível usar o mesmo grabber externo para outra fonte sem desconectar as prioridades internas de um canal, para isso, este é o último item a configurar o grabber de software. Quanto maior o número, menor a prioridade do canal.

Exatamente, não há erro.

  • Grabber V4L2 (Configurações do driver do Grabber de hardware))
  • Grabber V4L -> Device (dispositivo USB a partir do qual a captura é feita - / dev / video0 por padrão)
  • Grabber V4L -> Input (a entrada usada é 0 por padrão)
  • Grabber V4L -> Largura (largura da zona - -1 por padrão)
  • Grabber V4L -> Heigth (altura da zona - -1 por padrão)
  • Grabber V4L -> dizimação de quadros
  • Grabber V4L -> dizimação de tamanho (taxa de compressão)
  • Grabber V4L -> Canal prioritário (prioridade deste canal)
  • Grabber V4L -> modo 3D (seleção do modo 2D / 3D)
  • Grabber V4L -> Cortar à esquerda (cortar à esquerda)
  • Grabber V4L -> Cortar à direita (cortar à direita)
  • Grabber V4L -> Parte superior da colheita (parte superior da colheita)
  • Grabber V4L -> Crop Bottom (corta o quadro inferior)
  • Grabber V4L -> os três últimos pontos (limite para ativar os canais por cor)

Externo

  • Externo -> Kodi Checker (configurações para o Kodi player, se ele for usado como jogador. As caixas de seleção selecionadas desligam a luz de fundo ao executar as funções especificadas do player. Você pode configurar a luz de fundo para funcionar apenas durante a reprodução de conteúdo e desativar em todos os outros casos )
  • Externo -> Json / Proto / Boblight Server (configurações da porta do servidor, deixe como na tela)
  • Externo -> Efeito Boote / Cor estática (configurações do efeito Demo ao iniciar o daemon)
  • Externo -> Json / Proto Forvard (configurações da porta de saída, deixe como na tela)

SSH (Configurações de conexão do PC com Raspberry Pi)
  • SSH - Conexão -> Sistema (Escolhendo o sistema operacional instalado no Raspberry Pi)
  • SSH - Conexão -> IP de destino (endereço IP do Raspberry Pi)
  • SSH - Conexão -> Porta (como na captura de tela - (22))
  • SSH - Conexão -> Nome de usuário / senha (nome - senha definida no Raspberry Pi)
  • SSH - Conexão -> Conectar / Desconectar (botão conectar-desconectar com Raspberry Pi)
  • SSH - Conexão -> Mostrar tráfego (botão para chamar o console com saída de informações)
  • SSH - Gerenciar Hyperion a partir do HyperCon -> Inst / Upd. Hyperion (Botão para instalar o daemon no Raspberry Pi ou atualizar o daemon pela rede. Nenhum sudo get-install, conecte-se ao Raspberry Pi, remova e aguarde a saída no console HyperCon)
  • SSH - Gerenciar Hyperion no HyperCon -> Remover Hyperion (botão de desinstalação do Daemon)
  • SSH - Gerenciar Hyperion a partir do HyperCon -> Iniciar / Parar (botões de início e parada do Daemon)
  • SSH - Gerenciar Hyperion a partir do HyperCon -> Obter Log (Saída para os logs do console do daemon, conveniente para
  • procure por nenhum encaixe e leitura de códigos de erro)
  • SSH - Enviar Configuração Hyperion -> Caminho de Configuração Local (Envie o arquivo de configuração para o local local especificado no PC)
  • SSH - Enviar configuração Hyperion -> Enviar configuração (Enviar arquivo de configuração via SSH para Raspberry Pi)
  • SSH - Colorpicker (testador de paleta intuitivo - você pode verificar a saída de todas as cores).
  • Os botões nas guias salvam - carregam as configurações do HyperCon (não o próprio arquivo de configuração do daemon !!)
  • AJUDA é compreensível, e Criar Configuração do Hyperion permite salvar localmente o arquivo de configuração do daemon para o próprio Raspberry Pi - hyperion.config.json

Como você pode ver na lista acima, existem várias opções de personalização, o que torna a ferramenta muito flexível para qualquer lista de desejos e tarefas.

Como exemplo, minha configuração de guia:

imagem

imagem

Na primeira guia, organizamos as zonas da mesma maneira que os pixels da luz de fundo na parte traseira da TV serão localizados fisicamente. Você pode preencher todo o perímetro ou parte dele, definir a direção, o início etc. O tipo de fita que usei é o WS2812B; portanto, na captura de tela, o campo correspondente é selecionado como WS281x. O número de pixels determinou a densidade dos LEDs na fita disponível e a diagonal da tela. As guias restantes são como descritas acima e, na mais recente, selecionamos nosso sistema operacional no Raspberry Pi, configuramos a comunicação via SSH e instalamos o daemon Hyperion em uma única placa. Em seguida, salvamos a configuração do HyperCon, criamos um novo arquivo de configuração do Hyperion, enviamos a configuração criada para o Raspberry Pi, iniciamos e tentamos o ColorPicker para verificar se as cores correspondem à paleta. Se tudo corresponder,qualquer conteúdo reproduzido pelo Kodi player controlará a luz de fundo. Saída de sinal GPIO - 18 (pino físico do pente - 12).

Os detalhes de todas as conexões serão descritos abaixo, após uma descrição de todas as configurações do programa.
Não configurei a inicialização, o daemon é iniciado ao mesmo tempo em que o player é iniciado. No entanto, foi para que a luz de fundo ainda não se acendesse. Em seguida, tentamos verificar se a inicialização automática do daemon está registrada em "/storage/.config/ autostart.sh" e tentamos reinstalar o daemon para enviar sua configuração novamente para o Raspberry Pi. O próprio programa envia a configuração para o diretório

Raspberry Pi -
“/storage/.config/ hyperion.config.json”.
Você também pode verificar a operação do daemon enviando uma cor na guia SSH HyperCon, marcando a caixa de seleção "Autoupdate" e clicando no botão stop-start para reiniciá-lo.
Se o daemon não iniciar após reiniciar o Raspberry Pi, tente alterar a inicialização automática no arquivo

/storage/.config/autostart.sh //--------------------------------------------------------------------------------------------------------------- #!/bin/sh sleep 5 /storage/hyperion/bin/hyperiond.sh /storage/.config/hyperion.config.json > /storage/logfiles/hyperion.log 2>&1 //--------------------------------------------------------------------------------------------------------------- 

atrasando assim a execução do daemon.

Controle remoto por qualquer controle remoto IR


Como, além da luz de fundo, o prefixo será um centro de mídia completo - é necessário fixar e configurar o controle remoto. Se a sua TV suportar a tecnologia CEC (Consumer Electronics Control, ou seja, protocolo de controle HDMI), a Kodi poderá configurar e usar o controle remoto da TV que já está disponível com a TV para controlar o decodificador.Todos os fabricantes chamam esse protocolo de maneira diferente em suas TVs , (por exemplo, LG - SimpLink, Samsung - Anynet, Sony - BRAVIA Sync), procure suporte para essa função nas configurações da sua TV. Eu não tenho um controle remoto muito bom para a TV, por isso fui para o outro lado - peguei o que estava com o antigo Decodificador de TV no Android (enquanto outros controles remotos solicitados para este projeto são provenientes da China):

imagem

No pente Raspberry, você precisará de pinos de + 5V, terra e sinal no GPIO23 (pino físico - 16), já que o GPIO18 (pino físico - 12), configurado para dispositivos de infravermelho por padrão - já está ocupado enviando pacotes para a luz de fundo.

Processo:

Para conectar o driver do receptor de infravermelho, edite o arquivo /flash/config.txt, no final do qual escrevemos a linha (aqui e abaixo sem aspas):
"Dtoverlay = gpio-ir, gpio_pin = 23"

Depois de conectar o receptor de infravermelho às framboesas, você precisa obter os códigos de verificação dos botões do controle remoto necessários e vincular os comandos a eles. Após determinar o tipo de protocolo no console com o comando ir-keytable, anexamos os códigos de varredura aos comandos recebidos no console usando
«Irrecord -l | grep ^ KEY ", faça manualmente os mapeamentos e crie uma tabela desse tipo:
mesa ireltex, tipo: NEC

 0x8f64d KEY_0 0x8f642 KEY_1 0x8f641 KEY_2 0x8f640 KEY_3 0x8f646 KEY_4 

E assim - todos os botões e comandos que precisamos. Eu tenho 34 linhas de partidas. A primeira linha é o nome da tabela e o protocolo do controle remoto. As seguintes linhas são o código de verificação do botão à esquerda. À direita, separado por um espaço, está o comando de controle Kodi. E assim por diante, em ordem.

A mesa deve ser mantida. Para fazer isso, um arquivo é criado (eu chamei de ireltex) a partir do qual essas ligações serão lidas. O arquivo deve ser colocado na pasta “/storage/.config/rc_keymaps/ireltex” e, em seguida, crie o arquivo
"/Storage/.config/rc_maps.cfg", escrevemos a linha:
"* * Ireltex" (ess-mas tudo sem aspas).

Por meio do console Putty, carregue a tabela resultante no driver:
"Ir-keytable -c -w /storage/.config/rc_keymaps/ireltex", reinicie o Raspberry Pi e altere a última linha do arquivo
"/Flash/config.txt"
Agora fica assim:
"Dtoverlay = gpio-ir, gpio_pin = 23, nome-do-mapa-rc = ireltex"
Para arquivar
“/Storage/.config/autostart.sh”, você precisa adicionar o carregamento automático do protocolo de controle remoto para que o registro fique assim (para o meu controle remoto e seu protocolo):

 #!/bin/sh ( sleep 5 ir-keytable -p nec )& sleep 5 /storage/hyperion/bin/hyperiond.sh /storage/.config/hyperion.config.json > /storage/logfiles/hyperion.log 2>&1 & 

Eu reinicio o Raspberry Pi novamente e agora o Kodi responde aos comandos do controle remoto.
Todo o processo de instalação com exemplos no original é descrito em mais detalhes aqui .

Você também pode digitar no mecanismo de pesquisa a consulta “LibreElec + IR Remote” e obter vários artigos sobre este tópico em russo.

Se você desligar a saída do receptor de infravermelho, exceto o GPIO 23, e também a entrada GPIO3 - o Raspberry Pi será ativado por comando no controle remoto. A desvantagem deste método de controle é que o sinal de ativação será recebido por qualquer pessoa de qualquer controle remoto IR, mas não encontrei outras maneiras de ativar remotamente as framboesas. Portanto, você precisa criar um detector adicional que execute um comando e transmita apenas esse sinal para a entrada GPIO3 Raspberry Pi.

Para evitar milagres com oscilações espontâneas aleatórias de pixels, o terra da fita, além do pino GND GPIO, deve ser conectado diretamente ao terminal negativo da fonte de alimentação externa com um fio correspondente à seção transversal atual e o fio de sinal D-IN deve ter um comprimento mínimo.

Deve-se lembrar que diferentes receptores de infravermelho podem ter tensões de alimentação diferentes (3,3 ou 5V) e atribuições de pinos. Para não danificar o receptor ou as portas Raspberry Pi, a conexão deve ser feita de acordo com a documentação do receptor usado!
Como resultado, até agora todas as conexões nos pinos do GPIO Raspberry Pi são assim:

imagem

Inclusão correta do Raspberry Pi com controle remoto IR


Agora você precisa fazer exatamente a inclusão "correta" do Raspberry Pi no botão atribuído no controle remoto IR. Agora, o dispositivo inicializa quando qualquer sinal chega ao pino GPIO3 (quinto pino físico) e, como o receptor não se importa com o que receber nessa faixa de infravermelho, o download vem de um sinal de qualquer controle remoto, às vezes mesmo quando as luzes estão acesas na sala, o que não é conveniente. . Para resolver esse problema, entre o GPIO3 e o pino de sinal do receptor de infravermelho, você precisa de um intermediário que decodifique o sinal e, somente se o comando corresponder ao atribuído anteriormente, ligue o Raspberry Pi. Além disso, você precisa poder usar diferentes controles remotos ou os botões de um controle remoto. Claro, você pode escrever o firmware para qualquer ATiny no valor de meio dólar e tudo funcionará bem, mas como estamos falando de um construtor repetitivo e simples, é muito mais fácil usar o controlador relativamente barato e compacto - Arduino Nano. A placa trabalha constantemente no modo de espera, monitorando todos os sinais recebidos de qualquer fonte de IR. E somente ao decodificar um dos sinais predefinidos - dê um comando para ativar o Raspberry Pi. O controlador também fornecerá um piscar simples se você precisar alterar o controle remoto para o Raspberry Pi.

O Arduino Nano será alimentado de maneira não padrão - do pino + 5V GPIO RPi - ao pino + 5V do Arduino. Não há nada de errado com essa ligação - no lado USB, a placa Arduino terá uma entrada estabilizadora interna, no lado do pino Vin, o cátodo do diodo Schottky. Nenhuma carga diferente do receptor IR não será conectada aos pinos nano do Arduino.

A tabela de conexão Arduino-Raspberry será assim: saída física do Raspberri Pi 3 B + / saída física do Arduino Nano
4 (+ 5v) / + 5V
6 (GND) / GND
5 (GPIO3) / D8
Além disso, o receptor IR se conectará aos pinos de energia na placa Arduino - (GND, + 5V ou 3,3V) e o sinal de saída através dos resistores 100R para o pino D7 Arduino e através do 510R para o pino 16 (GPIO23) do Raspberry Pi. Assim, o receptor de infravermelho transmitirá diretamente todos os comandos para a entrada GPIO23, e um ou dois pulsos curtos aparecerão no GPIO3 somente após o recebimento dos comandos predefinidos no esboço.

Diagrama de conexão do receptor IR, Arduino nano e fita de endereço para o Raspberry Pi:

imagem

O jumper superior “5V External” permite que o Arduino e o Raspberry sejam alimentados por uma fonte de energia externa, juntamente com a luz de fundo do conector XS1 “Power”, se, por exemplo, o número de pixels for pequeno e não criar uma carga grande. Pelo jumper inferior de acordo com o esquema, a tensão do receptor de infravermelho pode ser selecionada - 3,3 ou 5V. O dispositivo será projetado como uma blindagem externa conectada ao conector GPIO, na qual a placa nano Arduino, o receptor de IR e todos os conectores estão conectados.

Para verificar, basta ler e inserir no esboço os códigos de qualquer botão, por exemplo "OK" ou "ENTER", de qualquer controle remoto. Você também pode criar uma variedade de comandos para iniciar o console pressionando qualquer um de um grupo específico de botões ou uma sequência de teclas. O esboço usa a biblioteca iarduino_IR-master, cujo arquivo pode ser facilmente encontrado na Internet. Existem exemplos de rascunhos no arquivo da biblioteca, usando um deles, por exemplo receiver_GetProtokolAll, você pode obter códigos de comando para qualquer botão no controle remoto. Posteriormente, esses códigos precisam ser escritos no esboço derramado no Arduino Nano:

 //******************************************************************************* #include <iarduino_IR_RX.h> //      - iarduino_IR_RX IR(7); //   IR,       - const int Out_GPOI_3 = 8; //     GPIO RPi uint32_t Code_001 = 0xFF708F; // RX code    uint32_t Code_002 = 0x106FA857; void setup() { pinMode(Out_GPOI_3, OUTPUT); //        9600 / Serial.begin(9600); IR.begin(); //    - } void loop() { if(IR.check()) //         { //     ,   if(IR.data == Code_001 or IR.data == Code_002) { digitalWrite(Out_GPOI_3, HIGH); //    RPi delay(5); digitalWrite(Out_GPOI_3, LOW); //      delay(5); digitalWrite(Out_GPOI_3, HIGH); //    RPi delay(5); digitalWrite(Out_GPOI_3, LOW); //      delay(5); } } } //******************************************************************************* 

Como a biblioteca iarduino_IR-master usa o mesmo timer de algumas funções padrão de "fiação" do ambiente Arduino, não é possível usar micros (), millis (), tone () e possivelmente alguns outros neste esboço; caso contrário, uma tentativa de compilar levará a um erro indistinto. Apesar dessa abordagem dos autores para escrever código, a biblioteca executa regularmente suas funções e define claramente as mensagens de IR, seus horários, estrutura e protocolos utilizados e a capacidade de ler rapidamente os códigos de comandos de qualquer console reduz sua configuração a uma simples substituição de variáveis ​​no esboço.

Toda a superestrutura foi projetada como um escudo, para o qual as seguintes placas de fábrica foram desenhadas e encomendadas na China:

imagem

Essa blindagem conecta uma placa nano do Arduino, um conector para uma fonte de alimentação comum de 5V, um conector de luz de fundo de TV e a própria blindagem está incluída no pente GPIO Raspberry Pi. Depois de instalar todos os componentes, fica assim:

imagem

imagem

Ele planejava arrumar uma cobertura translúcida de acrílico de canto nos furos previstos para prender as prateleiras - mas suas mãos de alguma forma não alcançaram e a set-top box ainda não está visível ...

Muito foi escrito em toda parte sobre a seleção e a aderência da fita de endereço, no entanto, também tenho alguns comentários sobre esse tópico e instalação.

Primeiro sobre mitos.

"O WS2812 não é adequado para iluminação de fundo adaptável; você precisa usar o SK9822 ou mesmo o APA102"

Eles justificam isso pelo fato de que a frequência de transferência de dados dos análogos do APA102 é muito maior devido à presença de uma linha de relógio, e os próprios LEDs têm uma gama de cores mais ampla e são mais confiáveis.

Tudo isso é verdade, mas se dividirmos a frequência operacional do WS2812B pelo número de pixels e 32 bits de informação para cada um deles, obteremos uma frequência de atualização de quase 300 Hz para meus 91 LEDs. Isso é várias vezes maior que o limite necessário. E todos os casos “flicker” e “ocioso” são 146% devido à curva da fiação da terra e do fio de sinal.

O esquema de cores é semelhante - o Hyperion gera pacotes de 8 bits para cada cor em cada pixel. De qualquer forma, são apenas 256 gradações de brilho de cada uma das três cores em qualquer fita. A diferença de cores será perceptível apenas na calculadora na tela de um bom monitor, mas a diferença no brilho real em ± uma ou várias gradações que nossos olhos não verão em nenhum caso - essa é a anatomia da nossa visão e não há nada que possamos fazer a respeito. Além disso, o configurador possui ferramentas para ajustar a gama de cores - se desejar, você pode obter cores brancas quase perfeitas quase com brilho máximo. Mas mesmo esses gestos provavelmente não serão necessários - a luz de fundo cria apenas um fundo na parede atrás da TV e não uma imagem na tela ... Ao analisar as zonas de captura, tanto a Hyperion quanto a Philips ocupam mais de um ponto específico, mas a cor média de toda a área especificada as sombras sempre serão algo diferente daquelas que são reproduzidas dinamicamente nas bordas da tela. Dado tudo isso, não faz sentido fotografar com um canhão em pardais, o que realmente confirma o design da luz de fundo nas TVs Phillips originais, onde apenas 37 pontos são exibidos na diagonal de 50 polegadas e a largura das zonas é de 5-6 cm.

Outro mito - "O WS2812B tem vida curta, um mês depois os pixels começaram a falhar".

Naturalmente, eles começarão. E em qualquer fita. Cada cor em cada LED 2812B com brilho total consome 18-20 mA. Por exemplo, eu tenho 91 LEDs. 91X3X20 = ​​5.5A. A eficiência é de cerca de 30 a 40%, o que significa que mais de três amperes entram no calor. A única maneira eficaz de remover o calor dos substratos dos cristais são as faixas de cobre da fita, que são coladas a alguma superfície. Conectado à energia, mas a fita não luminosa também é visivelmente quente - os próprios chips estáticos têm algum consumo de corrente. A tampa traseira de plástico da TV não é o melhor dissipador de calor para a operação a longo prazo da fita; portanto, é melhor e mais correto usar um perfil de metal especial. Além disso, ele vem com um difusor de várias profundidades, larguras e formas. Você não verá reflexos na forma de pontos coloridos nas superfícies brilhantes do interior da sala, o que às vezes também é importante.

imagem

imagem

Quando tudo estiver montado, conectado e verificado - resta configurar o KODI player de acordo com seu gosto e cor - instale todos os complementos necessários, IPTV com programas e compartilhe conteúdo do seu PC em casa.

Se compararmos a luz de fundo com a versão do hardware - a reação ao processamento de quadros me pareceu mais clara - não há sensação de um pequeno atraso em uma fração de segundo. A implementação em si me parece bastante viável - acabou sendo um construtor repetitivo simples montado com base no plug-in. Se você cuidar da montagem da blindagem de comutação e salvar o sistema configurado como uma imagem, não levará mais tempo para lançar outro decodificador do que para qualquer caixa de TV "in a box" no android. Se você tornar o receptor de infravermelho remoto - o dispositivo poderá ser escondido atrás de uma TV com uma opção de montagem na parede. Se você tiver um sistema operacional configurado ou sua imagem, o sistema funcionará no modo completo na primeira vez que você o ligar.

Para aqueles que assistem a canais de TV, é necessário mexer nas listas de IPTV pagas e de alta qualidade ou gratuitas e que não funcionam, programas de TV para canais, complementos e configurações de reprodutor, que, a propósito, têm a capacidade de alterar as capas, das quais, atualmente, existem muitas para qualquer o sabor. Tudo é suportado - exibindo clima, hora, protetores de tela, centenas de complementos e aplicativos diferentes. Por exemplo, eu queria me livrar do menu não retrátil do OSD, chamado de rebobinar ou pausar. Para isso, o complemento - Hide Video OSD - foi ótimo. Faça o download do arquivo zip, coloque-o em um local conveniente para as framboesas, selecione a instalação do arquivo na interface do addon, configure-o, ative o addon nas configurações, defina o tempo em segundos, após o qual o OSD será automaticamente removido da tela.

Além de outros chips, o Kodi possui uma interface da Web completa, através da qual é possível definir configurações, controlar o reprodutor e a biblioteca de mídia do seu PC em casa.

Publicações sobre todos os recursos do player e como, por exemplo, aumentar um servidor de mídia em um PC para Kodi, são facilmente encontradas no RuNet. Por conveniência, onívora e outros parâmetros, eu colocaria esse player em pé de igualdade com projetos como o WinAmp e o MPC-HC.

Uma pequena demonstração em chinelos:

Source: https://habr.com/ru/post/pt486106/


All Articles