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.
(


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 comentários: