Tutorial - Hyperion (ambilight clone) na Raspberry PI (com OpenELEC)
Olá a todos,
O utilizador Karluz do nosso fórum deixou-nos um tutorial interessante para aqueles que procuram replicar o sistema ambilight da Philips de forma low-cost, utilizando o XBMC e a Raspberry PI. Apesar de inicialmente ser sua intenção utilizar o boblight, a baixa performance e alguns bugs que encontrou levaram-no a optar pelo hyperion como sistema. Parece que a opção deu frutos...
Deixamos abaixo o tutorial escrito pelo Karluz:
“O Ambilight (acrônimo de Ambient Lighting Technology) é uma tecnologia desenvolvida pela Philips para uso em televisões.
Permite projectar um brilho luminoso suave nas paredes ao redor da TV. A tonalidade desse brilho luminoso é automaticamente alterada de acordo com as cores e com o brilho da imagem.” (wikipedia)
No fundo, algo parecido com isto:
Passando á acção, material necessário (este foi o material que usei podendo ser alterado):
Para o XBMC:
• Raspberry Pi (44.22€)
• Cabo HDMI (3.63€)
• Cabo USB MicroB p/ alimentação (3.63€)
• Transformador USB 5v 2.5A (12.24€)
• Cartão de Memória 16Gb Class 10 (15.93€)
• Adaptador Wireless USB ou Cabo Ethernet (9.78€ ou 3.63€)
• Caixa para o Raspberry (9.78€ ou grátis se forem habilidosos )
(XBMC custou-me 89.43€ na Inmotion (fazer publicidade a custo zero ))
Para os Leds:
• Leds WS2801 q.b. (entre 11€ a 60€)
• Transformador 5v 2.5A p/ alimentação (12.24€) (o meu foi grátis porque usei um de um tablet que a minha filha danificou)
• 3 Cabos Jumper (tinha-os perdidos na mala de ferramentas)
• 4 Ligadores Electricos ou um ferro de soldar e um pouco de habilidade (também os tinha perdidos na mala de ferramentas)
(Leds 12mm RGB WS2801 custaram-me 11.84€ no ebay (25 leds))
Não vou pormenorizar as partes mais óbvias como a instalação do OpenElec e afins vou apenas focar-me no tema propriamente dito e é necessário conhecimento mínimo a nível de SSH.
Instalar o XBMC
Ligar todo o sistema de Raspberry Pi e amigos e instalar o OpenElec (no meu caso instalei o 12.2 Frodo), adicionar os addons TV Portuguesa e companhia, gentilmente fornecidos pel’a minha casa digital, fighnight e amigos.
( Mais uma vez obrigado a todos que fazem o nosso dia mais feliz ).
Colocarem o youtube ajudará para efeitos de teste dos leds.
Activarem SSH e Samba nas opções do OpenElec:
Enable SSH – ON
Disable SSH Password – OFF
Enable SAMBA – ON
Use Samba Password Authentication – OFF
Depois de tudo a funcionar passemos ao que nos trás aqui.
LEDS
HARDWARE:
Os LEDS devem ter 4 cabos:
Conforme imagem:
Executar 3 simples comandos para transferirem e instalarem o Hyperion:
(este video é bom também para testarem o vosso "mapa" mais á frente)
Caso nada aconteça ou os primeiros leds da “fita” acendam de forma aleatória ou esquisita provavelmente terão alguma ligação mal feita ou algum mau contacto .
Se os leds acenderem todos ou quase todos mas de forma não coincidente com o que se passa no ecrã é sinal que em princípio tudo está bem e falta apenas ajustar o “mapa dos leds” que faremos de seguida.
No explorador do Windows aceder a "\\IP_DO_RASPBERRY_PI\Configfiles".
E abrir/editar o ficheiro “hyperion.config.json”. Podem abrir com o bloco de notas mas um editor mais especializado é aconselhado, eu utilizei o sublime2 (http://www.sublimetext.com/2).
Confirmem que nos Paths está o seguinte:
(Caso não esteja deverá ser alterado)
E agora o “mapa” propriamente dito. A parte mais complicada mas vão ver que não é nada de outro mundo…
A sintaxe (forma de escrever) é a seguinte:
A primeira linha: “index” é o numero do led (sendo que o primeiro led da fita é o numero zero)
A segunda linha: “hscan” é onde se define a range horizontal que é atribuída ao led
A terceira linha: “vscan” é onde se define a range vertical que é atribuída ao led
Mas afinal o que é isso de hscan e vscan?
São os campos onde se define que parte da tv é atribuída ao led em causa. Cada um destes campos é composto por dois valores, um valor mínimo e um valor máximo e esses valores vão de 0.000 a 1.000.
Temos que saber ainda que o ponto 0 horizontal é o no lado esquerdo e o 1 no lado direito e no vertical o ponto 0 é em cima e o 1 em baixo.
Como calcular os mínimos e máximos?
Basta dividir em espaços iguais.
Se eu tenho os leds dispostos em 7 + 11 + 7, isto é, 7 leds do lado esquerdo, 11 leds do lado de cima e outros 7 leds do lado direito, defini que cada espaço vertical terá um tamanho de 12.5%. 12.5 * 7 = 87.5 e o primeiro led de cima encarregar-se-á dos restantes 12.5%.
E cada espaço vertical terá um tamanho de cerca de 9% (claro que 9 x 11 dá 99 mas depois damos um jeito ou utilizamos mais casas decimais)
Posto isto, vamos ver o caso do meu “led 0” que está no canto inferior esquerdo da tv. Ele estará encarregue de replicar a cor (ou a media de cor ou o que seja… o algoritmo do hyperion é que trata disso logo não se preocupem) que está nos primeiros 12,5% horizontais e nos 9% verticais. Vamos então definir os mínimos e máximos para este led:
Mínimo horizontal = 0% logo o valor é 0.0000
Máximo horizontal = 9% logo o valor é 0.0900
Agora para os verticais é preciso ter em conta o que falamos á pouco de que o ponto 0 vertical começar em cima e em baixo ser 1.
Mínimo vertical = 0% logo o valor é 0.8750 ( 1 – 0.125)
Máximo vertical = 12.5% logo o valor é 1.000
Então fica:
O primeiro led já está então, faltam os outros…
Se não estiverem para perder tempo a fazer contas podem fazer uma rápida busca no Mr. Google e procurar por “Boblight.conf Generator” e arranjam logo forma de ter as coordenadas mas atenção que o Boblight funciona de 0 a 100 e não de 0 a 1. Basta dividir os valores por 100 e já está.
ATENÇÃO QUE A SINTAXE NÃO É IGUAL. Logo serve apenas para copiarem as coordenadas e não o código todo.
O “hyperion.config.json” vem já com 50 leds definidos, se tiverem menos basta apagar o que estiver a mais, se tiverem mais toca a acrescentar.
Chegamos á parte em que importa falar na quantidade de leds.
Eu estou a utilizar uma TV 32” e neste momento tenho 25 leds dispostos de forma 7+11+7, isto é, 7 leds do lado esquerdo, 11 leds do lado de cima e outros 7 leds do lado direito e posso dizer que estou bastante satisfeito. Como tenho a televisão em cima de um móvel não me é muito importante colocar leds na zona de baixo da TV. De qualquer das formas vou comprar mais leds apenas para dar uma melhor qualidade de imagem. É como que um aumentar a resolução.
Quanto maior a televisão maior deverá ser a quantidade de leds e cada pessoa deverá estudar a melhor maneira e disposição dos leds, só para terem uma ideia eu coloquei os meus leds em intervalos de cerca de 50~60mm entre cada um... Os leds devem ser colocados o mais próximo possível do ponto a que se referem e não ultrapassarem os limites da tv(não precisam que eu vos diga isso).
Fixar os leds.
Existem muitas formas de fixar os leds, fita-cola, com estruturas metálicas, etc etc.
Para mim fiz uma estrutura metálica que apertei com uns parafusos aos pontos de fixação da TV mas se não tiverem essa facilidade basta porem a imaginação a funcionar e dar uso á caixa de cartão que está a ocupar espaço desnecessário aí em casa.
http://www.youtube.com/watch?v=r4Bsk-OonwY
Cumprimentos
O utilizador Karluz do nosso fórum deixou-nos um tutorial interessante para aqueles que procuram replicar o sistema ambilight da Philips de forma low-cost, utilizando o XBMC e a Raspberry PI. Apesar de inicialmente ser sua intenção utilizar o boblight, a baixa performance e alguns bugs que encontrou levaram-no a optar pelo hyperion como sistema. Parece que a opção deu frutos...
Deixamos abaixo o tutorial escrito pelo Karluz:
“O Ambilight (acrônimo de Ambient Lighting Technology) é uma tecnologia desenvolvida pela Philips para uso em televisões.
Permite projectar um brilho luminoso suave nas paredes ao redor da TV. A tonalidade desse brilho luminoso é automaticamente alterada de acordo com as cores e com o brilho da imagem.” (wikipedia)
No fundo, algo parecido com isto:
Passando á acção, material necessário (este foi o material que usei podendo ser alterado):
Para o XBMC:
• Raspberry Pi (44.22€)
• Cabo HDMI (3.63€)
• Cabo USB MicroB p/ alimentação (3.63€)
• Transformador USB 5v 2.5A (12.24€)
• Cartão de Memória 16Gb Class 10 (15.93€)
• Adaptador Wireless USB ou Cabo Ethernet (9.78€ ou 3.63€)
• Caixa para o Raspberry (9.78€ ou grátis se forem habilidosos )
(XBMC custou-me 89.43€ na Inmotion (fazer publicidade a custo zero ))
Para os Leds:
• Leds WS2801 q.b. (entre 11€ a 60€)
• Transformador 5v 2.5A p/ alimentação (12.24€) (o meu foi grátis porque usei um de um tablet que a minha filha danificou)
• 3 Cabos Jumper (tinha-os perdidos na mala de ferramentas)
• 4 Ligadores Electricos ou um ferro de soldar e um pouco de habilidade (também os tinha perdidos na mala de ferramentas)
(Leds 12mm RGB WS2801 custaram-me 11.84€ no ebay (25 leds))
É necessário ainda o acesso via SSH ao Raspberry.
Não vou pormenorizar as partes mais óbvias como a instalação do OpenElec e afins vou apenas focar-me no tema propriamente dito e é necessário conhecimento mínimo a nível de SSH.
Instalar o XBMC
Ligar todo o sistema de Raspberry Pi e amigos e instalar o OpenElec (no meu caso instalei o 12.2 Frodo), adicionar os addons TV Portuguesa e companhia, gentilmente fornecidos pel’a minha casa digital, fighnight e amigos.
( Mais uma vez obrigado a todos que fazem o nosso dia mais feliz ).
Colocarem o youtube ajudará para efeitos de teste dos leds.
Activarem SSH e Samba nas opções do OpenElec:
Enable SSH – ON
Disable SSH Password – OFF
Enable SAMBA – ON
Use Samba Password Authentication – OFF
Depois de tudo a funcionar passemos ao que nos trás aqui.
LEDS
HARDWARE:
Os LEDS devem ter 4 cabos:
Dois deles serão obviamente fáceis de ligar, 5v ligado ao “positivo” do transformador e o Ground ao “negativo”, deverá ser também ligado um dos cabos jumper ao Ground dos Leds para ligar ao Ground da GPIO do Raspberry Pi (pino 6 da GPIO do Rasp).
Os outros dois poderão ser ligados por tentativa erro ao Rasp, sendo que um deles liga ao pino 19 e outro ao pino 23 da GPIO do Rasp.Conforme imagem:
SOFTWARE:
Ligar via SSH (eu utilizei o Putty):- Código:Selecionar todos
Login: root
Password: OpenElec
Executar 3 simples comandos para transferirem e instalarem o Hyperion:
- Código:Selecionar todos
curl --get https://raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh > hyperion_install.sh
chmod +x hyperion_install.sh
./hyperion_install.sh
Em principio os leds já devem dar algum sinal de vida, experimentem reiniciar o Raspberry Pi e depois ensaiem com um qualquer vídeo e ou stream (liguem o transformador dos leds claro).
Exemplo:
https://www.youtube.com/watch?v=sr_vL2anfXA
(este video é bom também para testarem o vosso "mapa" mais á frente)
Caso nada aconteça ou os primeiros leds da “fita” acendam de forma aleatória ou esquisita provavelmente terão alguma ligação mal feita ou algum mau contacto .
Se os leds acenderem todos ou quase todos mas de forma não coincidente com o que se passa no ecrã é sinal que em princípio tudo está bem e falta apenas ajustar o “mapa dos leds” que faremos de seguida.
No explorador do Windows aceder a "\\IP_DO_RASPBERRY_PI\Configfiles".
E abrir/editar o ficheiro “hyperion.config.json”. Podem abrir com o bloco de notas mas um editor mais especializado é aconselhado, eu utilizei o sublime2 (http://www.sublimetext.com/2).
Confirmem que nos Paths está o seguinte:
- Código:Selecionar todos
"effects" :
{
"paths" :
[
"/storage/hyperion/effects"
]
},
(Caso não esteja deverá ser alterado)
E agora o “mapa” propriamente dito. A parte mais complicada mas vão ver que não é nada de outro mundo…
A sintaxe (forma de escrever) é a seguinte:
- Código:Selecionar todos
{
"index" : 0,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0900 },
"vscan" : { "minimum" : 0.8750, "maximum" : 1.0000 }
},
A segunda linha: “hscan” é onde se define a range horizontal que é atribuída ao led
A terceira linha: “vscan” é onde se define a range vertical que é atribuída ao led
Mas afinal o que é isso de hscan e vscan?
São os campos onde se define que parte da tv é atribuída ao led em causa. Cada um destes campos é composto por dois valores, um valor mínimo e um valor máximo e esses valores vão de 0.000 a 1.000.
Temos que saber ainda que o ponto 0 horizontal é o no lado esquerdo e o 1 no lado direito e no vertical o ponto 0 é em cima e o 1 em baixo.
Como calcular os mínimos e máximos?
Basta dividir em espaços iguais.
Se eu tenho os leds dispostos em 7 + 11 + 7, isto é, 7 leds do lado esquerdo, 11 leds do lado de cima e outros 7 leds do lado direito, defini que cada espaço vertical terá um tamanho de 12.5%. 12.5 * 7 = 87.5 e o primeiro led de cima encarregar-se-á dos restantes 12.5%.
E cada espaço vertical terá um tamanho de cerca de 9% (claro que 9 x 11 dá 99 mas depois damos um jeito ou utilizamos mais casas decimais)
Posto isto, vamos ver o caso do meu “led 0” que está no canto inferior esquerdo da tv. Ele estará encarregue de replicar a cor (ou a media de cor ou o que seja… o algoritmo do hyperion é que trata disso logo não se preocupem) que está nos primeiros 12,5% horizontais e nos 9% verticais. Vamos então definir os mínimos e máximos para este led:
Mínimo horizontal = 0% logo o valor é 0.0000
Máximo horizontal = 9% logo o valor é 0.0900
Agora para os verticais é preciso ter em conta o que falamos á pouco de que o ponto 0 vertical começar em cima e em baixo ser 1.
Mínimo vertical = 0% logo o valor é 0.8750 ( 1 – 0.125)
Máximo vertical = 12.5% logo o valor é 1.000
Então fica:
- Código:Selecionar todos
"index" : 0,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0900 },
"vscan" : { "minimum" : 0.8750, "maximum" : 1.0000 }
Se não estiverem para perder tempo a fazer contas podem fazer uma rápida busca no Mr. Google e procurar por “Boblight.conf Generator” e arranjam logo forma de ter as coordenadas mas atenção que o Boblight funciona de 0 a 100 e não de 0 a 1. Basta dividir os valores por 100 e já está.
ATENÇÃO QUE A SINTAXE NÃO É IGUAL. Logo serve apenas para copiarem as coordenadas e não o código todo.
O “hyperion.config.json” vem já com 50 leds definidos, se tiverem menos basta apagar o que estiver a mais, se tiverem mais toca a acrescentar.
Chegamos á parte em que importa falar na quantidade de leds.
Eu estou a utilizar uma TV 32” e neste momento tenho 25 leds dispostos de forma 7+11+7, isto é, 7 leds do lado esquerdo, 11 leds do lado de cima e outros 7 leds do lado direito e posso dizer que estou bastante satisfeito. Como tenho a televisão em cima de um móvel não me é muito importante colocar leds na zona de baixo da TV. De qualquer das formas vou comprar mais leds apenas para dar uma melhor qualidade de imagem. É como que um aumentar a resolução.
Quanto maior a televisão maior deverá ser a quantidade de leds e cada pessoa deverá estudar a melhor maneira e disposição dos leds, só para terem uma ideia eu coloquei os meus leds em intervalos de cerca de 50~60mm entre cada um... Os leds devem ser colocados o mais próximo possível do ponto a que se referem e não ultrapassarem os limites da tv(não precisam que eu vos diga isso).
Fixar os leds.
Existem muitas formas de fixar os leds, fita-cola, com estruturas metálicas, etc etc.
Para mim fiz uma estrutura metálica que apertei com uns parafusos aos pontos de fixação da TV mas se não tiverem essa facilidade basta porem a imaginação a funcionar e dar uso á caixa de cartão que está a ocupar espaço desnecessário aí em casa.
Espero que com este tutorial vos possa ajudar e/ou incentivar… afinal foi este projecto que me levou a comprar um Raspberry Pi!
http://www.youtube.com/watch?v=DN8Z1lg4c-Ahttp://www.youtube.com/watch?v=r4Bsk-OonwY
Cumprimentos
Agradecemos ao Karluz pelo desenvolvimento do tutorial! Óptimo trabalho!
10 Comments: