RaspberryPi: Montando ambilight casero con Hyperion

AikonCWD

INTRODUCCIÓN

Lo prometido es deuda, hace unos días que estoy disfrutando de ambilight en mi TV y os dije que subiría un manual explicando los pasos, pues aquí lo tenemos. Primero de todo, que es ambilight?

Ambilight es un sistema de retroiluminación impuesto por Philips para la línea de sus televisores planos de plasma y LCD. El Ambilight sirve para regular el contraste dentro de la habitación. Es una tecnología diseñada para mejorar la experiencia visual y se puede utilizar con cualquier tipo de señal de televisión. Sea cual sea la fuente de la señal, la tecnología Ambilight analiza las señales entrantes y produce la luz lateral ambiental adecuada para el contenido que se está visualizando en la pantalla.

En nuestra adaptación de ambilight conseguiremos reproducir (y mejorar!) el efecto inventado por Philips sobre cualquier TV de cualquier marca, gracias a la potencia de RaspberryPi, aquí unos vídeos de ejemplo:

Y aquí una comparativa de la tecnología oficial Ambilight de Philips contra Raspberry:

El único inconveniente que tendremos es que éste efecto de ambilight solo será visible para cualquier fuente de video generada a través de Raspberry, los canales de TV convencional no disfrutarán de éste efecto. Hay un tutorial extendido que permite ampliar el montaje y permitir ambilight desde otra fuente de video (como un reproductor bluray externo o una consola tipo Playstation, Xbox, etc...), pero ese montaje NO lo voy a explicar aquí.

MATERIALES

TO-DO: Añadir fotos y link de compra en Amazon

  • 1x RaspberryPi B/B+/2B (yo he usado una Raspberry Pi 2)
  • 1x Tira de 50 leds con el chip WS2801
  • 1x Transformador de corriente; output 5V, 2A (o más amperios)
  • 1x Conector DC hembra-cable
  • 3x Jumpwires macho-hembra
  • 50x bridas pequeñas
  • 1 cartón grande como la TV
  • Cinta aislante negra
  • Cinta adhesiva doble cara

Hay varios modelos de leds, los podemos encontrar en formato tira auto-adhesiva o en formato "luces de navidad". Cada modelo tiene sus ventajas e inconvenientes. La tira de leds es fácil de montar en la TV gracias al pegamento que viene incorporado. El problema que tienen es que tendréis que soldar las esquinas y que la distribución de leds por centímetro no es variable. En los leds tipo "luces de navidad" tienes la ventaja de poder distribuir más o menos leds en un mismo espacio, además puedes dirigir la luz, la luz de los leds es más grande y más brillante. El inconveniente es que el montaje es más laborioso. Yo he utilizado los leds tipo "luces de navidad".

El número de leds a montar es variable. Cuantos más leds montemos mejor. Para mi TV de 40'' he comprado una tira de 50 leds. Mi TV no está colgada en la pared, así que he repartido los leds en los 2 laterales y en la aparte superior. Si tenéis una TV colgada en la pared recomiendo que montéis los leds en los 4 lados. Cada 25 leds consume 1 Amperio, yo al montar 50 he tenido que utilizar una fuente de 2 Amperios. Si montáis 100 leds deberéis usar una fuente de 5V y 4 Amperios, etc...

Tuve un pequeño problema con los leds, cuando los fui a probar me di cuenta que 3 leds de la parte del final no se encendían. Tras revisarlos al detalle vi lo siguiente:


Podéis ver claramente como en la primera foto, el chip WS2801 estaba quemado, ese led dejó de funcionar y los 2 leds que habían a continuación tampoco se encendían. Me puse en contacto con el distribuidor y me enviaron en menos de 4 días un tira de 5 leds adicionales. Simplemente corte el cable, sustituí el led roto y me quedó una tira de 54 leds completamente funcional. No es habitual que eso ocurra, pero que sepáis que todo tiene solución. Dicho ésto tenéis que saber que mi tutorial lo explico montando una tira de 54 leds, pero al fin y al cabo es lo mismo que si montas 25, 50 o 100. Usé un transformador de 5V y 2.5 Amperios

EMPEZANDO EL MONTAJE

Primero de todo cubriremos una mesa con una toalla o manta y pondremos la TV boca abajo para trabajar de forma segura. Ponemos el cartón cubriendo toda la "espalda" de la TV y tomaremos medidas, cortamos el cartón al gusto. La idea es que cuando veamos la TV de frente no veamos el cartón sobresalir por los costados. En ese cartón montaremos los leds, así que tiene que estar casi en el borde. Os doy un ejemplo real de mi TV:

Mi TV mide 99cm x 59cm, el cartón que puse por detrás lo corté a 92cm x 55cm. Esa medida se calcula a ojo, el cartón no se ha de ver estando de frente pero tiene que estar lo suficientemente al borde para que los leds iluminen casi en el borde de tu TV. Luego coge un poco de cinta aislante negra y cubre los 4 laterales del cartón, de ésta forma dotarás al cartón de más robustez y cambiarás el color marrón feo por un color negro que se camufla con el TV. Piensa que si miras la TV desde un angulo muy cerrado se verán los leds y el cartón, así que mejor disimularlo en color negro (puedes pintar el cartón con spray negro si lo deseas), fíjate en la foto:

Con la ayuda de un lápiz y cutter/navaja, corta los orificios para dejar accesibles las conexiones de tu TV. Deberás recortar también el cartón para que CUALQUIER rejilla de ventilación de tu TV no quede cubierta! Es muy importante, si taponas una rejilla es posible que tu TV se estropee con el uso prolongado o del calor.

UN POCO DE MATEMÁTICAS

Bien, ya tenemos nuestro cartón preparado, ahora solo falta instalar los leds. Para ello deberás sumar el perímetro de tu cartón y dividirlo entre el número de leds que vas a instalar. En mi ejemplo solo montaré leds en 3 de los 4 lados del TV (superior y los 2 laterales). En la base de mi TV no quiero leds. Cogemos el cartón y con una cinta métrica medimos los 2 laterales y la parte superior, en mi caso la parte larga mide 92cm de cartón y cada lateral mide 55cm de cartón, sumamos:

55 + 92 + 55 = 202cm de cartón

En mi caso tengo 54 leds (tú seguramente tengas 50 o 100), así que divido el espacio total disponible entre los leds deseados:

202cm / 54leds = 3.75cm

Esa es la cifra importante que deberás respetar en todo momento. Pues los leds han de ser distribuidos en el cartón de forma exacta, que cada led esté separado a la misma distancia del siguiente. Cogemos una regla y contando desde una de las esquinas inferiores haremos una marca con el lápiz cada 3.75cm de distancia. Si lo haces bien habrás terminado con 54 marcas en el cartón, distribuidas entre los 3 lados. Cada marca estará perfectamente separada. Ésto es laborioso y te recomiendo que te lo tomes con calma. Luego cuenta las marcas que te han salido. A mi me salieron 15 marcas en cada lateral y 24 en la parte larga (la de encima del TV). Los 2 lados tienen que tener el mismo número de marcas, no puede ser que en un lateral tengas 15 marcas y en el otro 16. Cada marca será la posición donde instalaremos cada led.

15 + 15 + 24 = 54 marcas (leds)

Ponte a desenrollar la tira de leds, la tira de leds tiene 2 extremos, uno con un conector macho y otro hembra. El led número 1 es el primer led situado en el extremo del conector hembra. El último led es el led situado al lado del conector macho. Puedes empezar por el lado del televisor que quieras, pero recuerda empezar siempre por una esquina inferior!

Detalle del conector macho y hembra

BRICOMANÍA

Sitúa el led número 1 en una esquina del cartón (centímetro 0), con la ayuda de un pincho haz un agujero al lado del led para poder pasar la brida. El segundo led lo situarás encima de la primera marca que habrás pintado a 3.75cm, haz 1 agujero a cada lado del led para pasar la brida y "abraza" el led, que quede bien sujeto. El led numero 3 lo pondrás encima de la segunda marca (situada a 7.5cm de la esquina), 2 agujeros y brida. Repite éstos pasos hasta completar todos los leds. Es un proceso lento y laborioso, no es complicado pero sí requiere algo de tiempo, el resultado final debería ser así:


Cuenta los leds, deberías tener el mismo numero de leds en cada lateral, repartidos de manera uniforme. En mi caso 15 leds por cada lado y 24 leds en la parte superior. Retira el cartón y añade varias tiras de doble cara en el TV, cuantas más mejor, respetando los respiraderos y espacios para conectar los cables de la antena, hdmi, etc...

En el conector hembra situado al lado del primer led, verás 2 cables sueltos (rojo y azul), coge esos 2 cables y conéctalos al conector DC hembra. Recuerda que el negativo es el azul y el positivo es el rojo:


En el conector hembra te quedarán 3 conexiones por hacer: cable blanco, azul y verde. Coge 3 jumpwires, yo he usado 3 jumpwires de color blanco, azul y verde; pínchalos en su color correspondiente:

Esos 3 jumpwires irán al puerto GPIO de tu raspberry, el de color azul es "tierra" (ground), en la raspberry2 tienes varios "ground", utiliza el que quieras. Yo utilicé el pin 09. El jumpwire blanco va en el pin MOSI (21) y el verde en el CLOCK (23). Te dejo un mapa del puerto GPIO, la posición de los pines y su nombre. Os dejo una foto de mi raspberry1 para que veáis un ejemplo claro:


Enchufa tu transformador de corriente de 5V y 2A (pueden ser más Amperios, pero no menos!) y enciende la Raspberry! Es posible que algunos leds se enciendan y se apaguen, es normal. También es posible que ningún led se encienda, no te preocupes. Vayamos a configurar el software...

SOFTWARE: Hyperion o Boblight

Bien, ya tenemos terminada la parte más complicada. Toca instalar el software que nos controlará los leds, tenemos 2 opciones; utilizar Boblight o Hyperion. A efectos visuales, ambos son iguales. Boblight e Hyperion pueden generar el mismo efecto, los mismo colores etc... pero Hyperion es muchísimo mejor que Boblight, razones:

  • Hyperion se ha construido pensando en las limitaciones de CPU y RAM de Raspberry
  • Boblight está diseñado a modo cliente-servidor, consume más CPU. Hyperion es x15 más rápido
  • Hyperion levanta un puerto JSON que permite ser manipulado desde el exterior (puedes controlar los leds con una App para SmartPhone)
  • Boblight funciona a modo de addon sobre Kodi. Necesita Kodi para funcionar
  • Hyperion funciona como servicio, corre independientemente. No está limitado a Kodi unicamente
  • Hyperion da ambilight a programas externos como RetroPie o Moonlight
  • Hyperion es más rapido, hyperion es mejor :)

Supongo que no te quedarán dudas, vayamos a por Hyperion. Lo primero que tienes que hacer es habilitar la interfaz SPI de tu raspberry, para ello edita el fichero config.txt y añade al final el siguiente texto:

dtparam=spi=on

Si utilizas cualquiera de mis ISOS, ese comando ya lo habilito yo :) Simplemente asegurate que lo tengas habilitado. Para Raspberry 1 creo que no es necesario. Reinicia la Raspberry para que cargue el SPI correctamente, ahora accede por consola (Putty, por ejemplo), situate en cualquier carpeta donde tengas permisos de escritura (/home por ejemplo) y escribe:

Éste comando es para instalar Hyperion sobre OpenELEC:

curl -L --output install_hyperion.sh --get https://raw.githubusercontent.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
chmod +x install_hyperion.sh
sh ./install_hyperion.sh

Éste comando es para instalar Hyperion sobre Raspbian Jessie:

sudo apt-get update
sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 ca-certificates
wget -N https://raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
chmod +x install_hyperion.sh
sudo sh ./install_hyperion.sh

Tras unos segundos Hyperion quedará instalado, los leds deberían encenderse con un bonito efecto arcoíris, acto seguido deberían encenderse para reproducir los colores actuales de tu TV (ya sea un video, Kodi, un juego, etc...). Toca configurar Hyperion para "decirle" que tenemos 50, 54 o 100 leds y en que posición están. Nos descargamos el siguiente software:

Enlace de descarga -> HyperCon

Con éste programa indicaremos la posición exacta de nuestros leds. Recordando el capítulo de las matemáticas, a mi me han salido 15 leds en el lateral y 24 en la parte superior. Recuerda donde pusiste el primer led (el que está al lado del conector hembra con los jumpwires), en mi caso el primer led me ha quedado en la esquina inferior derecha cuando miro la TV de frente, así que el recorrido de los leds va desde la esquina inf. derecha hasta la izquierda (sentido anti-horario). Configuramos:

  • Direction: counter_clockwise
  • Led top corner: false
  • Led bottom corner: false
  • Horizontal #: 24
  • Vertical #: 15
  • Bottom Gap: 24
  • 1st Led offset: -38

Tiene que salirte un Led count = 54 (o el número de leds que hayas instalado). Si has empezado por la otra esquina, cambia el direction. Yo no he situado leds en las esquinas, así que pongo top/bottom a false. En bottom gap pones el mismo numero de leds que en la parte superior, así lo dejarás "vacío". El 1st Led offset lo vas moviendo hasta que el led número 0 quede en la esquina inicial, ver foto:

Pulsamos el Create y te generará un fichero con extensión JSON. Ese fichero lo copias a la raspberry:

OpenELEC = /storage/.config/hyperion.config.json
Raspbian = /etc/hyperion.config.json

Si usas OpenELEC, edita el fichero JSON con un editor de texto, y cambia la ruta de los efectos. En el fichero original pone:

/opt/hyperion/effects

Lo editas por:

/storage/hyperion/effects

Si usas Raspbian, no tienes que editar esa ruta. Justo abajo verás el bootsequence, puedes cambiar el efecto que se reproducirá cuando arrancas la Raspberry, el Rainbow swirl fast es el más bonito, subelo de 3000 a 5000 (5 segundos). Puedes controlar los leds y los efectos con una App para Android o iPhone:

Podéis descargar la app desde la Play Store, os dejo enlace directo con QR:

Hyperion

Hyperion Free

También para iPhone (iOS) Descarga Hyperion app iOS

RESULTADO FINAL: Videos, fotos, etc...

Muestro el arranque de Raspbian Jessi. El daemon de Hyperion está configurado para que reproduzca el efecto rainbow al encenderse, luego reproducirá los colores que vea por pantalla, incluso la consola. Inmediatamente después arranca EmulationStation (RetroPie)

He querido arrancar doom para que veáis como el algoritmo de Hyperion es capaz de detectar zonas oscuras y reproducir los colores que hay en su interior.


Jugando a Shovel Knight de mi biblioteca Steam con el mando de la xbox y ambilight

Agradecimientos a mi suegro, que me consiguió un cartón enorme para el montaje y me ayudó con el montaje de los leds, casi 3 horas de trabajo duro pero gratificante!!. Gracias también a mi novia que me ayudó cortando las bridas <3 :)

24
AcidNos

#1 enhorabuena por el curro. Yo estuve apuntito de montarme un ambilight, pero como bien dices, esta limitado al uso solo de la Raspberry, por lo que lo descarte de inmediato. ¿Que tal has visto el tema configuracion?

1 respuesta
AikonCWD

#2 Gracias, ampliando la instalación puedes hacer que ambilight funcione para cualquier fuente de vídeo externa, yo no lo he montado ya que utilizo muchísimo la raspberry y prácticamente todo lo que veo o hago en la TV es con la raspberry enchufada. Películas, Series, canales deportivos, TV online, juegos de emulador (RetroPie) y los juegos de mi Steam (Fallout 4, Witcher 3, etc...) todo eso lo ejecuto y visualizo desde la Raspberry :)

El tema de la configuración es muy sencillo, con HyperCon personalizas el JSON de una forma muy cómoda. Puedes bajar el % de brillo si lo deseas, las opciones por defecto son las más recomendadas. Si visualizas una película en letter (con las franjas negras) hyperion lo detecta y te lanza los colores a partir de la franja negra. Lo mismo ocurre cuando juego a un juego de SNES (formato 4:3), los laterales se colorean pese a que hay una gran franja negra.

1 respuesta
HeXaN

¿Por cuánto te salió todo?

1 respuesta
AikonCWD

#4 Luego actualizo el hilo con los materiales exactos, link a amazon y precio. Lo más caro (suponiendo que posees una Raspberry) son los leds, mi tira de leds de 50 piezas me costó 39.99€ + gastos. El transformador reciclé uno que tenía en casa sin usar. Los jumpwires costaron 5€. Aprox te dejas unos 50€

perez_chuck

#3 Ejecutas el Fallout 4 en la raspberrypi? Me he perdido

1 respuesta
AikonCWD

#6 Visualizo el Fallout 4 en la rasp :)

He conseguido montar Moonlight, el juego se ejecuta en mi PC y la imagen me llega al TV del salón por la Raspberry. Tengo el mando de la xbox360 conectado a la raspberry y juego desde el salón a todos los juegos de mi PC y Steam.

De eso ya hablaré en otro tutorial.

3 1 respuesta
ESL_Kaiser

Me parece una pasada, si entendiese un poco de raspberry lo montaba sin duda, gran curro y espero que lo disfrutes, enhorabuena

1 respuesta
HeXaN

#8 Si sigues el tutorial, a pesar de no saber nada, no tendrás problemas. Todos empezamos sin tener ni idea y mira.

1 1 respuesta
perez_chuck

#7 OK ;)

Esperaré impaciente ese hilo por no ensuciar este.
Tengo una intel galileo gen2, a ver si puedo hacer el mismo uso para jugar a algunos juegos en el salón... ver pelis ya podría al ser una smart tv si la conecto al router.

ESL_Kaiser

#9 el tutorial lo entiendo, lo que no se es como montar el sistema operativo y todo lo demás dentro de la RB y montar todos los tinglados, no tengo tiempo para investigarlo mucho la verdad ^, supongo que con dedicación se consigue todo.

1 respuesta
HeXaN

#11 El hipoglúcido de #1 hizo otro tutorial para eso jajaja. Es casi "copiar y pegar" el fichero que subió.

1
Leagrove

A probarlo, muchas gracias ! Siempre te la sacas

AikonCWD

Pues aquí tenéis el primer vídeo:

En él muestro el arranque de Raspbian Jessi. El daemon de Hyperion está configurado para que reproduzca el efecto rainbow al encenderse, luego reproducirá los colores que vea por pantalla, incluso la consola. Inmediatamente después arranca EmulationStation (RetroPie)

He querido arrancar doom para que veáis como el algoritmo de Hyperion es capaz de detectar zonas oscuras y reproducir los colores que hay en su interior.

Seguiré por ahora trabajando la ISO, a ver si puedo dejar todo integrado :)

2 1 respuesta
ChopSuey

#14 tengo una b+, maldito, me vas hacer comprarme una 2!!!

2 respuestas
AcidNos

#15 Se puede hacer perfectamente con una B+ o incluso con el primer modelo de RPi

1 2 respuestas
ChopSuey

#16 ya, tengo 2 b+, pero una tercera con su imagen y no me como la cabeza, este proyecto lo hice con un amigo y siempre quise hacerlo para mi, pero siempre me dio pereza, pero estas navidades caera.

AikonCWD

#15 #16 Exacto, se puede hacer una cona RPi1 sin probllemas. Pero no pretendas tener Hyperion + Kodi + RetroPIe + Moonlight en una misma SD :)

Subo un último video más. Para que veáis bien los efectos de ambilight/hyperion. Mención especial al final del video con los muñecos sobre fondo negro, queda chulo!

1 2 respuestas
AcidNos

#18 Obviamente esta mas limitado por tema hardware. Tendrias que tener una SD por cada uno de ellos. Pero por poder se puede. En la B+ yo creo que si se podria aunque andaria un poco justita en rendimiento.

1
kNG17

Brutal!

B

Bueno, evidentemente a favoritos va esto. ¡Qué currazo!

bLero

Interesante, voy a intentar montar algo parecido con una Pi-zero y una célula detectora de color y así me sirva para cualquier cosa que proyecte la pantalla sin tener que pasar por el hdmi y alimentándolo con los propios USB de la TV.

cortes

Ya me estaba frotando las manos para montarlo en mi pc hasta que he visto que esta limitado a rpi, ademas me seria un engorro tener que encender una rpi cada vez que vaya a ver alguna cosa en el pc xD

B

El ambilight es la PUTA CAÑA. Llevo ya unos 4 años con 2 kits de Mad Catz y joder, todo lo reproducido por el VLC es compatible.

Sin embargo con los drivers y al ser dispositivos USB, a veces me dan problemas los juegos con DirectX. Algo raro que no he acabado de averiguar qué problema es.

El de #18 parece un buen vídeo para testear las luces y saber que todo va bien. Luego lo probaré.

Loa

#1 me ponen cachondo tus tutoriales... un gran curro

nunca me ha gustado el ambilight, no entiendo la funcionalidad de quitarle luz a la tv, que es la fuente de luz, para mi cuanto mas oscuro mejor

2 respuestas
AikonCWD

#25 Gracias xD

Todo éste ambilight con Hyperion es configurable. Se puede bajar el % de luz y de detección de colores. La idea de un buen ambilight es hacer que tu TV extienda los colores del margen más allá de los límites del propio TV, no hay que pretender proyectar parte de la película en la pared ni distraer al espectador ya que como dices, despistaría y molestaría.

B

#25

Esto cuando es una escena, por decir algo, de un dragón echando fuego, la TV no tiene suficiente luz como para hacer un efecto amarillo-anaranjado por toda la pared, causando mayor inmersión.

1 respuesta
spyro512

#27 puedes creerme cuando te digo que Loa sabe qué es Ambilight

1 respuesta
B

#28

Si puede saberlo, pero lo de quitar luz a la TV no lo entiendo. La TV, o bien es de 200 pulgadas (yo tengo ya 50" y te digo que no es gran cosa tras acostumbrarte), o es que ni de coña hace luz como para que en una escena de fuego se refleje en las paredes y te veas "dentro" de la película.

1 respuesta
cortes

#29 Supongo que se refiere a quitarle foco de luz a la pantalla, ya que al extender la luz hacia el exterior del marco de la pantalla, tus ojos ya no solo visualizan el marco de la pantalla, sino tambien el haz de luez del ambilight.

O almenos asi lo he entendido yo.