¿Sois de los que os gusta ver películas, jugar a la play/Xbox o simplemente ver el futbol con la mayor inmersión posible?
Si esto no es lo tuyo te recomiendo leer otras cosas como:
Entonces el post de hoy está recomendado especialmente para vosotros. Vamos a crear un sistema como el desarrollado por Philips en algunos de sus televisores empleando materiales que seguro muchos tenemos por casa, incluyendo algún otro que, de todas formas, no es muy complicado de conseguir.
Pero antes de continuar os dejo un video para poneros en situación del resultado final.
Si os ha parecido interesante, os animo a seguir leyendo ya que el montaje es bastante sencillo.
! A fabricar ambilight!
MATERIALES:
Estos son los materiales que vamos a necesitar.
- x1 Raspberry pi (Modelo A, B, B+)
- x1 LEDs WS2801
- x1 Duplicador HDMI (Activo)
- x1 Conversor HDMI a AV
- x1 Capturadora de TV compatible
- x3 Cables HDMI
- x1 Adaptador de corriente 5v 2A
- x1 Conector DC
- Otros cables para raspberry pi
A primera vista puede parecer mucho material, pero si rebuscáis por casa seguro que tenéis más de una de las cosas de la lista.
Los links que yo he puesto son orientativos, con tiempo para buscar probablemente encontréis otras tiendas más baratas.
Consideraciones: Es importante a la hora de comprar nuestros LEDs nos aseguremos previamente de que dispongan del driver WS2801, ya que esto les confiere la capacidad de cambiar de color de forma individual. Una tira de led RGB convencional no sirve para crear el ambilight.
Para comprar la capturadora tenemos que tener en cuenta que no todas son compatibles, por tanto debemos seleccionar sólo las que utilizan el chipset UTV007 (Fushicai), o de lo contrario podemos tener problemas con la recepción de la imagen.
MONTAJE:
El montaje de nuestro sistema es muy simple. Se basa en coger la fuente de video, ya sea un DVD, una consola, un chromecast…, o incluso un VHS (sí, aún siguen existiendo) y dividir su señal de salida en dos. La primera irá hasta la TV de forma normal, mientras que la segunda pasará a nuestro conversor RGB, que la enviará a la capturadora de TV USB. Ella, a su vez, se encargara de reenviársela a la raspberry pi para que esta última, mediante software, encienda los leds en el orden necesario.
A continuación podéis ver la siguiente foto esquemática donde queda más claro cuál es el flujo de trabajo.
Respecto a la conexión con la Raspberry pi, puede variar dependiendo del modelo que tengáis, en mi caso la empleada es la B. Podéis encontrar en internet la distribución de los pines GPIO con una simple búsqueda.
Con nuestra distribución de pines tendremos que conectar los cables en el orden indicado en el diagrama (dependerá de vuestra versión de RPi).
Mediante este montaje vamos a aprovechar el mismo transformador para alimentar nuestros LEDs y la RaspberryPi a la vez, por lo que es importante no conectar el puerto microUSB de nuestra raspberry.
SOFTWARE:
Vamos a ver el software necesario antes de realizar los pasos. Es importante tener en cuenta la lista puede variar en función de vuestras preferencias en algunos puntos.
- Cliente FTP (Filezilla)
- Cliente SSH (PuTTY)
- OpenElec (ISO)
- Hyperion
- Hyperion Config tool
- Win32DiskImager
Una vez tengamos todo listo comencemos:
MÉTODO FÁCIL:
Cuando este todo conectado, como hemos visto durante el proceso de montaje, sólo tenemos que descargar la iso de OpenELEC customizada por la gente del proyecto lightberry correspondiente a nuestro modelo de Raspberry Pi (A, B, B+).
Una vez tengamos la imagen, deberemos crear la SD booteable para nuestra RPI con un software de nuestra elección, (yo he usado Win32DiskImager)
Con la imagen cargada iniciamos la RPI de forma normal, y tendremos que dirigirnos a la sección Programas > Hyperion Config Tool.
Dentro de este Addon que viene preconfigurado seleccionaremos el número de LEDs que adjudiquemos a la parte horizontal y a la vertical, para en el paso siguiente seleccionar la dirección de los LEDs.
A continuación se muestra la distribución recomendada según el tamaño de la TV:
TV Size | Lightberry | Lightberry HD |
42 and less | 44 LED | 4m |
42 – 46 | 48 LED | 4m |
46 – 55 | 52 LED | 4m |
55 – 60 | 56 LED | 5m |
60 – 70 | 64 LED | 5m |
La tabla es orientativa y hace una distinción entre LEDs “simples” y tiras con calidad “pixel”.
Al finalizar la selección de parámetros se mostrara un “arcoíris” en nuestros LEDs y se nos ofrecerá la opción de guardar si todo está correcto.
Tras reiniciar la RPI nos aparecerá la siguiente secuencia:
- 1 – Arcoíris (durante 5 segundos)
- 2 – Color Azul/Blanco en nuestros LEDs (7 Segundos Aprox)
- 3 – Imagen de nuestra fuente de video.
¡Todo listo!
MÉTODO AVANZADO
Este método posee más complicación, pero a cambio nos ofrece un mayor nivel de personalización y control.
Lo primero que tenemos que hacer es descargar la versión de OpenELEC que más nos guste, eso sí, es importante que sea superior a la versión 4.2.1 para que soporte nuestra capturadora de TV. Podéis ver todas las versiones en este enlace: http://archive.openelec.tv/
Con la ISO descargada, procedemos a su grabación en la SD, igual que hicimos en el método sencillo visto más arriba.
Tras iniciar la distro de OpenELEC tendremos que realizar la configuración inicial, en la que se pide seleccionar el nombre de la máquina (podéis dejar el que aparece por defecto «OpenELEC») y, en el paso siguiente (esto es lo importante), habilitar el acceso SSH para que podamos entrar mediante la terminal. Una vez hecho esto, finalizamos la configuración y ya podemos acceder a la máquina con PuTTY.
Para poder hacer esta conexión tendremos que conocer la IP de la máquina OpenELEC. Esta IP se nos mostró durante el proceso de configuración (cuando habilitamos el SSH). En caso de que no sepas que IP tiene la máquina, puedes ver todas las IPs de tu red local utilizando un programa como AgryIPScanner (http://angryip.org/).
Con la IP y el puerto 22 (SSH) te pedirá el nombre de usuario, que por defecto es root y la contraseña openelec. Tras introducir esto estaremos logeados como root en la RPI, por lo que vamos a ver que hacer a continuación.
Lo primero es comprobar que la capturadora de TV esté siendo detectada correctamente por la RPI.
1 2 |
lsusb ls /dev/video* |
Si todo está correcto, debería mostrarnos el chipset (Fushicai UTV007) y dónde está montada la capturadora.
Lo siguiente que debemos realizar es instalar el software Hyperion, que será el encargado de iluminar los LEDs al ritmo de la TV.
1 |
curl -L --output install_hyperion.sh --get https://raw.githubusercontent.com/tvdzwan/hyperion/master/bin/install_hyperion.sh |
1 |
sh ./install_hyperion.sh |
Cuando hyperion esté instalado, nos mostrará una carpeta llamada «hyperion», y en su interior la carpeta «config».
Con la ayuda del software hyperion config tool ( https://raw.github.com/tvdzwan/hypercon/master/deploy/HyperCon_ssh.jar ) crearemos el archivo de configuración para sustituir el existente.
Los parámetros a introducir en el programa dependerán del tipo de configuración que pretendáis hacer (número de leds, posición,…).
Podéis consultar la información aquí (https://github.com/tvdzwan/hyperion/wiki/configuration)
Cuando tengáis listos todos los parámetros, pulsar sobre el botón de «Create» para descargar el archivo .JSON. Este archivo tendréis que subirlo, sin modificar el nombre, a la ruta correspondiente en la RPI (hyperion/config/). Para hacerlo podéis usar PuTTY o algún otro programa que os permita gestionar archivos como FileZilla.
Seleccionando el protocolo SFTP podemos conectarnos al sistema de archivos de OpenELEC en la RaspberryPi Click Para Twittear
Antes de subir el archivo es importante hacer un par de modificaciones:
Aproximadamente en la linea 336 (puede variar) será necesario cambiar la ruta.
1 2 3 4 5 |
"/opt/hyperion/effects" //Cambiar por: "/storage/hyperion/effects" |
Además tendremos que añadir la capacidad de capturar imágenes desde la fuente externa con este código:
Nota: recuerda pegarlo antes del cierre del archivo JSON.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
/// Configuration for the embedded V4L2 grabber /// * device : V4L2 Device to use [default="/dev/video0"] /// * input : V4L2 input to use [default=0] /// * standard : Video standard (no-change/PAL/NTSC) [default="no-change"] /// * width : V4L2 width to set [default=-1] /// * height : V4L2 height to set [default=-1] /// * frameDecimation : Frame decimation factor [default=2] /// * sizeDecimation : Size decimation factor [default=8] /// * priority : Hyperion priority channel [default=800] /// * mode : 3D mode to use 2D/3DSBS/3DTAB (note: no autodetection) [default="2D"] /// * cropLeft : Cropping from the left [default=0] /// * cropRight : Cropping from the right [default=0] /// * cropTop : Cropping from the top [default=0] /// * cropBottom : Cropping from the bottom [default=0] /// * redSignalThreshold : Signal threshold for the red channel between 0.0 and 1.0 [default=0.0] /// * greenSignalThreshold : Signal threshold for the green channel between 0.0 and 1.0 [default=0.0] /// * blueSignalThreshold : Signal threshold for the blue channel between 0.0 and 1.0 [default=0.0] "grabber-v4l2" : { "device" : "/dev/video0", "input" : 0, "standard" : "PAL", "width" : 640, "height" : 480, "frameDecimation" : 2, "sizeDecimation" : 8, "priority" : 1000, "mode" : "2D", "cropLeft" : 26, "cropRight" : 27, "cropTop" : 20, "cropBottom" : 20, "redSignalThreshold" : 0.1, "greenSignalThreshold" : 0.1, "blueSignalThreshold" : 0.1 }, |
Más información sobre el Grabber aquí: https://github.com/tvdzwan/hyperion/wiki/V412-Grabber
Con los cambios realizados, subimos el archivo y reiniciamos la RPI.
Si todo el proceso ha ido bien, deberíamos poder ejecutar el siguiente comando para comprobar que nuestros LEDs responden a las ordenes que les damos.
1 |
/storage/hyperion/bin/hyperion-remote.sh --priority 50 --color green --duration 8000 |
¿Se han puesto en verde durante 8 segundos? ¡Vamos por el buen camino!
Es el momento de añadir todos los cambios de nuestro JSON (el que subimos antes) al sistema para que surtan efecto. Para ello usaremos el siguiente comando:
1 2 3 4 5 |
//Mata el proceso hyperion - se apagan los leds - killall hyperiond //Añade nuestro JSON a el PATH LD_LIBRARY_PATH=/storage/hyperion/bin /storage/hyperion/bin/hyperiond /storage/.config/hyperion.config.json |
Tras esto el sistema ya debería funcionar, aunque quizá no sea con toda la exactitud o precisión que nos gustaría. Para intentar ajustar la imagen vamos a tomar algunos «pantallazos».
1 2 |
//Juega con los valores hasta que veas que la imagen obtenida no tiene margenes --crop-top 10 --crop-left 20 --crop-bottom 0 --crop-right 20 --size-decimator 4 --frame-decimator 2 --screenshot |
Al ejecutar el comando, tendremos que descargar la imagen a nuestro PC y revisarla (tiene una resolución pequeña).
Cuando la imagen se vea correctamente reiniciaremos nuestra RPI y ya tendremos el sistema ambilight funcionando 🙂
EXTRA:
El principal problema que tiene este «invento» es que nos deja con un gran numero de cables y aparatos que puede que no hagan mucha gracia a algún miembro de la casa. Por esta razón os recomiendo esconderlos de muchas formas y sin que se calienten en exceso. Por ejemplo yo he utilizado el soporte VESA de la TV para atornillar una caja de zapatos y colocar dentro todos los elementos por la parte de atrás.
Una solución rápida y accesible, que me libera de tener un manojo de cables por toda la mesa
Además de todo esto, si queréis usar los LEDs como luz de ambiente/Luz de fiesta, hay disponible una aplicación que os permite controlarlos con el teléfono móvil:
Por último y, por si no teníais ganas de leer, aquí tenéis el vídeo explicativo (en español) donde se explican todos los materiales y el proceso para fabricar ambilight.
Si tenéis cualquier duda podéis dejarla en los comentarios.
Saludos.