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