Por araetamae
Novato
Autor del hilo
#86018
Llevo unos días disfrutando del Ambilight en Kodi, RecalBox, la TV, el PC y la XBOX. Aunque no ha sido fácil tenerlo todo configurado a mi gusto y funcionando con estabilidad, después de varias semanas dándole vueltas, creo que ya tengo la base construida y funcionando. Y me gustaría compartir mi aventura con la comunidad, dejando el proceso documentado por si alguien se encuentra trabajando en estos menesteres y le sirve de algo.

Os dejo un vídeo de como se ve en OSMC y RecalBox. También se muestra el Skin Estuary modificado para apagar y encender Hyperion desde Kodi y para arrancar RecalBox también desde Kodi:



Hay algún aspecto que me falta por pulir, a nivel WebServer desde el ESP8266, para mejorar la navegación desde la red y controlar los leds. Pero como os comento, ya está funcionando. Así que también os invito a colaborar en el hilo y hacéroslo vuestro para conseguir dejar el sistema bien pulidito.

Es el primer hilo que abro, así que si hago algo mal o no se entiende el procedimiento, por favor comentarlo e intentaré solucionarlo lo antes posible, vale?

He visto que hay un buen hilo al respecto de @AikonCWD que tiene chincheta, por lo que es fácil verlo. Esta muy bien documentado, así que las partes que coincidan con este procedimiento las redirigiré a su hilo con tal de no repetir lo mismo.

Aunque hay pequeñas diferencias de configuración, ya que aquí retransmitiremos los paquetes que genera Hyperion desde la Raspberry por UDP hacía un Arduino con ESP8266 y utilizaremos los leds WS8212B.

Con esta configuración conseguiremos tener, por un lado el Ambilight típico gestionado desde la Raspberry e Hyperion y por otro lado independiente, control sobre nuestros leds a través de la red con el Arduino. Pudiendo saltar de una configuración a otra en caliente.

Comentar que el efecto Ambilight solo lo disfrutaremos con la Raspberry. Y con el Arduino solo podremos fijar colores o animaciones pre-configuradas en nuestro skecth.

A partir de esta base, podremos ir ampliando el sistema fácilmente para que el Ambilight sea visible desde cualquier dispositivo conectado por HDMI a nuestra Raspberry. También podremos manejar gracias a Arduino y algunos relés, el encendido y apagado de los componentes de nuestro sistema, como por ejemplo la Raspberry, la TV, el Deco, o lo que se os ocurra.

Pero iremos por partes y comenzaremos por realizar el Ambilight. Para ello necesitaremos lo siguiente:

Componentes.

    1- Una Raspberry Pi. Yo lo he probado con la 2 y ahora lo tengo con la 3.
    Imagen
    2- Un WeMos D1 con ESP8266. Comentar que empecé el proyecto con un Arduino Uno y un ESP8266-01, pero este último aparte de algunas dificultades de configuración, falta de estabilidad y añadir más complejidad al sistema, he terminado haciéndolo con el WeMos, que al fin de al cabo es un Arduino con el ESP8266 incluido, facilitando mucho el montaje y la configuración del mismo. Decir que en este punto se puede utilizar cualquier dispositivo similar que emplee el chip ESP8266.
    Imagen
    3- Los Leds WS2812B. No he probado con otros ya que no tengo. Pero se puede utilizar cualquier modelo que utilice un chip direccional como por ejemplo cualquiera de la familia WS281x, o los APA102, incluso los WS2801, pero estos últimos difieren en el conexionado ya que utilizan 4 cables, en vez de 3 que utilizaremos en nuestra configuración.
    Imagen
    4- Una Resistencia de 300 a 500 Ohm. Que utilizaremos ente el pin de datos de nuestro microcontrolador y la entrada de datos de los leds. Previniendo cualquier pico de voltaje entre ambos.
    Imagen
    5- Un Condensador de 1000 µF, 6.3V o superior. Esto evitará que en el arranque inicial de corriente podamos dañar los leds.
    Imagen
    6- Adicionalmente será necesaria una fuente de alimentación externa , dependiendo de la cantidad de leds que vayamos a utilizar. Yo tengo en funcionamiento un total de 82 leds y están alimentados con 5V a 2500mA. Voy un poco justo cuando enciendo todos los leds en color Blanco y a máxima luminosidad. Pero se soluciona rapidamente aumentando el amperaje de la fuente de alimentación. Sin afectar en el resto del procedimiento.
    Yo estoy pendiente de comprar esta fuente de alimentación 50W 5V 10A ; MeanWell, RS-50-5:
    Imagen
Bien, con estos componentes será suficiente para empezar.
Pero si queréis ampliar el Ambilight a otras fuentes HDMI también se necesita lo siguiente:

    7- Convertidor Adaptador HDMI a RCA AV CVBS 1080P (NO al revés).
    Imagen
    8- Capturadora de Video con el Chip Modelo: UTV007. Esto último es muy importante.
    Imagen
    9- Conmutador distribuidor Splitter HDMI 1x2, a poder ser con fuente de alimentación incluido.
    Imagen
    10- Un Switch HDMI con el número de puertos que queráis. Yo uso este con 5 puertos HDMI.
    Imagen
    11- Un HUB USB con fuente de alimentación propia. Yo uso este de 7 puertos USB.

    Imagen

Software.

    1A- Para una instalación simple. Imagen de OSMC para la Raspberry. Podéis descargar directamente la última a día de hoy del 01-01-2018 desde este enlace. Para comprobar y descargar las últimas versiones desde este otro enlace.
    No he probado con otras Distribuciones de Kodi, pero supongo que funcionarán mientras sean compatibles con Hyperion.
    1B- Para una instalación DualBoot. Yo tengo una instalación de Recalbox con OSMC con la ayuda de PINN Lite que es una bifurcación de NOOBS con OS y un montón de características extras. Permitiéndo instalar varios sistemas operativos en el mismo medio y arrancar fácilmente en cada uno. Aquí tenéis más información https://github.com/procount/pinn/blob/master/README_PINN.md
    Y en este enlace una lista de las Distribuciones disponibles http://noobs.matthuisman.nz/list/
    2- Hyperion que se puede instalar en la Raspberry desde la consola de comandos (tenéis las instrucciones en el post de AikonCWD) o bien desde la aplicación de HyperCon (podéis revisar el procedimiento desde este enlace).
    3- HyperCon. Lo instalaremos para poder configurar Hyperion. Lo podeis descargar desde este enlace.
    4- IDE de Arduino.Última versión a día de hoy 1.8.5 y la podéis descargar desde este enlace.
    5- Pluggin IDE para el ESP8266. Este pluggin se instala desde el IDE de Arduino. Os dejo la documentación oficial en este enlace.
    6- Driver para el chip CHG340. Es el chip que utiliza el ESP8266.
    La versión para Windows la tenéis en este enlace, ofrecido por Prometec.
    Y la versión para Mac la encontrareis en este otro enlace.
    7- Sketch para comunicar Hyperion con el ESP8266 mediante UDP. No es necesaria su descarga. Su referencia en github la tenéis en este enlace. Encontré este código en el foro de Hyperion y que podéis revisar desde este enlace.
    8- Librería NeoPixelBus. Se instala desde el IDE de Arduino. Os dejo la referencia de esta librería que se encuentra en github, en este enlace.
    9- Librería Adafruit_NeoPixel. También se instala desde el IDE de Arduino. Su referencia en github la tenéis en este enlace.
    10- Librería WiFiManager. También se instala desde el IDE de Arduino. Su referencia en github la tenéis en este enlace.
    11- Sketch Serial To RGBW. No es necesaria su descarga. Lo utilizaremos para convertir un StringSerial en un valor de color de 32 bits para usar con la librería de Adafruit NeoPixel. Su referencia en github la tenéis en este enlace.
    12- Sketch Completo con todo el código para cargar al WEMOS o Arduino. Este es un 'fork' del sketch comentado en el punto nº7 de esta misma lista. Está modificado con la adaptación del sketch mencionado en el punto anterior nº11 y con el código que he generado yo para incluir el control de los leds independientemente a Hyperion desde la red. Podéis descargarlo desde mi perfil de github en este enlace.

Montaje de los Leds.

Lo primero será ver como vamos a montar los leds detrás de la TV. Este punto es importante ya que después en la configuración del Hyperion, dependiendo de como los hayamos montado, configuraremos de una manera o de otra. Yo en este punto os animo a que paséis por el hilo de AikonCWD y lo reviséis.
Os dejo el enlace: RaspberryPi: Montando ambilight casero con Hyperion

De todas formas os dejo unas fotos de como lo he echo yo. Ya que esto es un tema muy personal y depende también de la distribución de la parte trasera de vuestras TV, o si queréis tener leds en la parte inferior de la TV o no. ¡Y de lo manitas que seáis! (Yo aquí he sido un poco chapucero).

Imagen


Imagen


Tengo instalados en total 82 leds en una TV de 44 pulgadas, utilizando 3 tiras de 1 metro con 30 leds cada una. A la última tira le he cortado 8 leds. La distribución a quedado de la siguiente manera, en la parte superior 26 leds, en la inferior 26 leds, en la izquierda 15 leds y en la derecha 15 leds.

He empezado a poner los leds en la parte inferior derecha (viendo la TV por la parte trasera), tal y como se muestra en la imagen adjunta. Pero luego, en la configuración del HyperCon, esta situación corresponderá a la parte inferior izquierda (ya que la vista de la TV será la delantera). ¡Atentos a este detalle!

Da igual por donde empecéis a poner los leds, esto depende de vuestras necesidades, yo he elegido esta por que en este lado me es más cómodo situar el cableado. Pero como os digo, vosotros podéis empezar desde el lado opuesto, o desde el centro. Eso sí, si no recuerdo mal, desde HyperCon aconsejan empezar desde la parte inferior de la TV.

Si decidís no poner leds en la parte inferior de la TV, se empezaría poniendo los leds desde abajo hacía arriba en cualquiera de los laterales de la TV.

Ya solo queda conectar los leds a la corriente y a nuestro WEMOS. De la tira de leds salen 3 cables, Rojo, Blanco y Verde en mi caso. Estos colores podrían variar dependiendo de los leds que uséis.

Imagen


El Rojo es positivo a 5V y el Blanco es negativo (GND), estos cables los conectaremos a la fuente de alimentación. Entre ellos pondremos el Condensador de 1000 µF, 6.3V o superior.

Imagen


Y el cable Verde son datos que lo conectaremos al PIN RX<-D0 junto con la Resistencia de 300 a 500 Ohm.

Imagen


Si se utiliza una fuente de alimentación externa, es muy importante conectar desde cualquier PIN GND del WEMOS, al GND común con la fuente de alimentación.

Y con esto, ya tendríamos el conexionado terminado. Son solo 4 cables, y 2 PINs.

Configuración.

Lo primero que se necesita es tener instalado el OSMC en la Raspberry, después el HyperCon y el Hyperion. Este último lo podemos hacer desde HyperCon directamente.
Desde HyperCon configuraremos nuestros leds de la siguiente manera. Teniendo en cuenta que en un principio solo tendríais que cambiar la IP por la de vuestra Raspberry, el total de leds y su distribución.

Imagen


Imagen


Imagen


Imagen


Imagen


Si os fijáis en esta última pestaña SSH, se puede realizar la instalación de Hyperion en la Raspberry directamente, desde el botón Inst./Upd. Hyperion, evitando tener que andar con comandos desde la consola.
También se puede enviar el fichero de configuración creado con el botón Create Hyperion Configuration y luego enviarlo con el botón Send Config.
Una vez enviado el fichero de configuración por este método, es importante parar el servicio con el botón Stop y volverlo a iniciar con el botón Start, para que la nueva configuración sea efectiva en la Raspberry.

Si con las capturas y la documentación oficial que os remito en la lista de Software, punto nº2 no os queda muy claro, os recomiendo que reviséis de nuevo el post de AikonCWD. Si no, preguntar en este hilo para resolver las dudas, que intentaré ayudaros en lo que pueda.

También os podéis descargar la app Hyperion Free desde el Play Store para controlar los leds desde el Smartphone o Tablet, os dejo un QR para su descarga:

Imagen


Ahora toca la parte del microcontrolador.
Necesitáis lo primero tener instalado en vuestro PC el IDE de Arduino y el Driver para el chip CHG340.
Una vez echo esto se ha de instalar el Pluggin IDE del ESP8266 para poder trastear con estos fantásticos chips que nos aportan a nuestro microcontrolador de WiFi.
Para ello abrimos el IDE de Arduino y en \Archivo\Preferencias, o CTRL+Coma, veremos la siguiente pantalla:

Imagen


Si os fijáis abajo donde pone Gestor de URLs Adicionales de Tarjetas: hay que poner la siguiente url:

Código: Seleccionar todohttp://arduino.esp8266.com/stable/package_esp8266com_index.json

Y pulsamos sobre el botón OK

Ahora vamos a \Herramientas\Placa\Gestror de tarjetas...

Imagen


Y veremos la siguiente pantalla, donde pondremos en el cuadro de búsqueda ESP8266:

Imagen


Nos fijamos que salga el paquete que se ve en la captura y lo instalamos.

Ahora nos dirigimos a /Programa/Incluir Librería/Gestionar Librerías:

Imagen


Y en la pantalla que nos sale, escribimos en el cuadro de búsqueda NeoPixelBus:

Imagen


Nos fijamos que salga el paquete que se ve en la captura y lo instalamos.

En esta misma ventana, escribimos de nuevo en el cuadro de búsqueda, pero esta vez Adafruit NeoPixel:

Imagen


Nos fijamos que salga el paquete que se ve en la captura. En este caso a mi me sale el 3º pero a vosotros os podría variar. Si es así, lo buscáis más arriba o abajo y lo instaláis.

Y por último instalamos la librería WiFiManager al igual que las anteriores:

Imagen


Nos fijamos que salga el paquete que se ve en la captura y lo instalamos.

Ya tenemos las librerías y la tarjeta instaladas en el IDE de Arduino. Ahora volvemos a \Herramientas\Placa y seleccionamos el microcontrolador que estemos usando para el proyecto. Yo en mi caso uso un WEMOS D1 R1:

Imagen


Ahora toca conectar el WEMOS por USB al PC, luego nos dirigimos a /Herramientas y desde aquí verificamos algunas cosas necesarias:

    1- Puerto. Seleccionamos el Puerto COM que haya asignado el PC a la WEMOS.
    2- Flash Size. Yo tengo 4M (3M SPIFFS) por que la idea es poner en la memoria flash las librerías de JQuery que se utilizan en el Sketch que cargaremos al WEMOS. De este modo no se dependerá de una conexión externa a Internet. (Pero aún tengo que mirar como hacerlo...) Si a vosotros este punto os da igual, podéis elegir sin problema la opción 4M (1M SPIFFS).
    3- CPU Frequency. Yo tengo 160 MHz por que creo que irá mas desahogada con el tema de la lectura y refresco de los leds. Ya que el Baudrate que está configurado en el HyperCon es de nada más y nada menos que 2.000.000, cuando por norma se suelen utilizar unos 500.000

Con todo esto configurado, ya podemos mirar de cargar el Sketch con el código al WEMOS. Tenéis el link de descarga en el último punto de la lista de Software.

Para esto se ha de ir al directorio Arduino donde tengáis instalado el IDE, yo en mi caso lo tengo en H:/Arduino, lo podéis comprobar o configurar desde \Archivo\Preferencias, o CTRL+Coma y en la parte superior veréis el cuadro de texto con el titular Localización de proyecto. Hay una captura de imagen un poco más arriba donde se ve este punto.
Bueno, pues una vez dentro de dicho directorio se ha de crear una carpeta con el mismo nombre del proyecto y dentro poner el fichero con el Sketch que os habéis descargado anteriormente. Poned al directorio el mismo nombre que tenga el fichero.

Echo esto, abrimos el fichero *.ino y nos fijamos en las siguientes líneas de código:

Código: Seleccionar todounsigned int ASCIIPort = 2390;      // local port to listen for UDP packets
unsigned int RAWPort = 2801;      // local port to listen for UDP packets
unsigned int RAWDeltaPort = 2392;      // local port to listen for UDP packets

Aquí está el RAWPort que utilizamos para comunicar Hyperion con el WEMOS y ha de coincidir con la configuración de HyperCon.

Código: Seleccionar todo// NeoPixel defines.
// NOTE!!! NeoPin is IGNORED by all but the NeoEsp8266BitBang800KbpsMethod method
#define NeoPin 3
#define PixelCount 82

Aquí tenéis que modificar tan solo el PixelCount y poner el total de leds que tengáis puestos en la TV. Este dato a de coincidir con la configuración que pusisteis en HyperCon.
El NeoPin corresponde al PIN RX<-D0 del WEMOS. No se a de cambiar.

Con esto ya lo tenemos, ahora lo subimos al WEMOS pulsando sobre el botón con la flecha hacía la derecha:

Imagen

Esperamos a que termine de cargar y si todo ha ido bien, ya tendríamos el invento funcionando.

Solo falta desconectar el WEMOS del PC, ir corriendo al salón y conectarlo a los leds, encender la TV, seleccionar el Source donde tengamos conectada la Raspberry, reproducir algún vídeo y empezar a disfrutar del Ambilight.

Ya sentado en el sofá y flipando con las lucecitas que salen por detrás de la TV, podemos coger el smartphone, abrir el navegador y dirigirnos a http://IP-ESP8266 para ver las siguientes pantallas y poder controlar los leds:

Imagen Imagen


Para visualizar el ColorPicker se ha de pulsar sobre el botón Selecciona un color y para enviarlo al WEMOS pulsamos sobre el botón Enviar

Con el botón TV activamos la comunicación con el Hyperion y tendremos el Ambilight con la Raspberry.

En Reset Brillo: pulsando en el -,ponemos el brillo a 0 y pulsando en el +, lo ponemos a 255. (Esto es un arreglo, por que el slider del brillo no es compatible con touch-screen).

Con el Slider de Brillo se puede cambiar el brillo de los leds, desde 0 (apagados) a 255 (máxima luminosidad).
Tanto en Tablets como Smartphones, no funciona el Touch-Screen. He probado con varias librerías pero ninguna es compatible con la librería jscolor que se utiliza para la selección de color.

Y los Colores Pre-establecidos en la parte inferior. Con el Blanco el brillo esta por defecto en 127 (la mitad de intensidad), lo he puesto así por que si no, tengo problemas con la corriente, ando justillo con los 2,5 mA que tengo ahora para los leds. Si queréis tener un Blanco con más brillo, lo podéis hacer desde el ColorPicker.
Y con el color Negro he establecido el brillo a 0 y se apagarán los leds.

En la siguiente pantalla tenemos el Status, desde la cual se pueden ver algunos datos interesantes:

Imagen


Y desde la pantalla Screen se pueden visualizar los colores y los leds que están encendidos (estos datos vienen del Hyperion por UDP):

Imagen


Luego tenemos en el menú dos enlaces más, que son Bitmap que aún no se como funciona, pero creo que es para cargar matrices o imágenes y que estas se visualicen el los leds.
Y Update que sería para poder cargar ficheros vía HTTP al WEMOS, pero no está funcionando. Hay que seguir investigando.

Comentaros que estas funcionalidades no las he desarrollado yo, provienen del Sketch mencionado en el punto nº7 de la lista de Software. Yo solo me he limitado a adaptar este sketch, metiendo cosas por aquí y por allá para hacerle trabajar independientemente de Hyperion y poderlo navegar desde una interfaz Web.

Creo que no me dejo nada y que lo básico queda explicado.
Al final me ha salido un tocho muy gordo, lo siento. (Haber si alguien llega a leer hasta el final :upside_down: )
Última edición por araetamae el 15 Feb 2018, 22:07, editado 3 veces en total.
Brshk1, Tocinillo, Sotavent0 y 2 otros le gusta esto

Por -ice-
Maestro
#86086
araetamae escribió:...Con esta configuración conseguiremos tener, por un lado el Ambilight típico gestionado desde la Raspberry e Hyperion y por otro lado independiente, control sobre nuestros leds a través de la red con el Arduino. Pudiendo saltar de una configuración a otra en caliente.

Comentar que el efecto Ambilight solo lo disfrutaremos con la Raspberry. Y con el Arduino solo podremos fijar colores o animaciones pre-configuradas en nuestro skecth.


O sea, lo mismo que hace Hyperion Free desde Android/iOS/web sin tener que agregar ningún hardware.

Por araetamae
Novato
Autor del hilo
#86091
-ice- escribió:
araetamae escribió:...Con esta configuración conseguiremos tener, por un lado el Ambilight típico gestionado desde la Raspberry e Hyperion y por otro lado independiente, control sobre nuestros leds a través de la red con el Arduino. Pudiendo saltar de una configuración a otra en caliente.

Comentar que el efecto Ambilight solo lo disfrutaremos con la Raspberry. Y con el Arduino solo podremos fijar colores o animaciones pre-configuradas en nuestro skecth.


O sea, lo mismo que hace Hyperion Free desde Android/iOS/web sin tener que agregar ningún hardware.


Hola -ice-, así es.

El tema de introducir al proyecto un microcontrolador es por la utilización de los leds WS2812B, que estos no se pueden conectar directamente a la Raspberry, teniendo que utilizar un regulador de voltaje para el VCC de los leds, bajándolo a 4,7V más o menos. O bien utilizar un cambio de nivel para que el GPIO de datos de la Raspberry entregue 5V. Complicando un poco más el proceso.

Si no se utilizan estos leds y se opta por unos WS2801, que sí se pueden conectar directamente a la Raspberry, creo que este procedimiento no es el más adecuado, ya que como bien dices, es complicarlo añadiendo más hardware al proyecto. Pero nos da la posibilidad de controlar los leds aún teniendo la Raspberry apagada.

Gracias por el comentario compañero.

Por -ice-
Maestro
#86257
Los led WS2812B, según su datasheet, trabajan en un rango de voltaje de 3.3V a 5.3V. No hace falta regulador alguno si la fuente que se utiliza es más o menos seria. Están soportados en Hyperion y son configurables en HyperCon.
La diferencia con los WS281X es que aquellos llevan el chip controlador encapsulado con los led pudiendo llegar a fabricarse tiras (de hecho las hay) de 144 leds/m mientras que los 281X lo llevan afuera no fabricandose tiras de más de 33 leds/m.
El convertidor de niveles se debería usar ya que el GPIO de la RPi entrega 3.3V y la línea de DATA suele necesitar 5V. Cómo las especificaciones técnicas es algo que los fabricantes chinos toman cómo "sugerencias", usualmente no hace falta utilizarlo. La tolerancia funciona de nuestro lado en éste caso.
Tu desarrollo está muy bien para el caso de tener la RPi apagada y seguir disfrutando del montaje.

Avatar de Usuario
Por Tocinillo
Administrador
#86421
Vaya pedazo de tutorial, te lo hago sticky. Mil gracias ;)
araetamae le gusta esto

Por Sotavent0
Novato
#86818
araetamae escribió:Llevo unos días disfrutando del Ambilight en Kodi, RecalBox, la TV, el PC y la XBOX. Aunque no ha sido fácil tenerlo todo configurado a mi gusto y funcionando con estabilidad, después de varias semanas dándole vueltas, creo que ya tengo la base construida y funcionando. Y me gustaría compartir mi aventura con la comunidad, dejando el proceso documentado por si alguien se encuentra trabajando en estos menesteres y le sirve de algo.

Os dejo un vídeo de como se ve en OSMC y RecalBox. También se muestra el Skin Estuary modificado para apagar y encender Hyperion desde Kodi y para arrancar RecalBox también desde Kodi:



Hay algún aspecto que me falta por pulir, a nivel WebServer desde el ESP8266, para mejorar la navegación desde la red y controlar los leds. Pero como os comento, ya está funcionando. Así que también os invito a colaborar en el hilo y hacéroslo vuestro para conseguir dejar el sistema bien pulidito.

Es el primer hilo que abro, así que si hago algo mal o no se entiende el procedimiento, por favor comentarlo e intentaré solucionarlo lo antes posible, vale?

He visto que hay un buen hilo al respecto de @AikonCWD que tiene chincheta, por lo que es fácil verlo. Esta muy bien documentado, así que las partes que coincidan con este procedimiento las redirigiré a su hilo con tal de no repetir lo mismo.

Aunque hay pequeñas diferencias de configuración, ya que aquí retransmitiremos los paquetes que genera Hyperion desde la Raspberry por UDP hacía un Arduino con ESP8266 y utilizaremos los leds WS8212B.

Con esta configuración conseguiremos tener, por un lado el Ambilight típico gestionado desde la Raspberry e Hyperion y por otro lado independiente, control sobre nuestros leds a través de la red con el Arduino. Pudiendo saltar de una configuración a otra en caliente.

Comentar que el efecto Ambilight solo lo disfrutaremos con la Raspberry. Y con el Arduino solo podremos fijar colores o animaciones pre-configuradas en nuestro skecth.

A partir de esta base, podremos ir ampliando el sistema fácilmente para que el Ambilight sea visible desde cualquier dispositivo conectado por HDMI a nuestra Raspberry. También podremos manejar gracias a Arduino y algunos relés, el encendido y apagado de los componentes de nuestro sistema, como por ejemplo la Raspberry, la TV, el Deco, o lo que se os ocurra.

Pero iremos por partes y comenzaremos por realizar el Ambilight. Para ello necesitaremos lo siguiente:

Componentes.

    1- Una Raspberry Pi. Yo lo he probado con la 2 y ahora lo tengo con la 3.
    Imagen
    2- Un WeMos D1 con ESP8266. Comentar que empecé el proyecto con un Arduino Uno y un ESP8266-01, pero este último aparte de algunas dificultades de configuración, falta de estabilidad y añadir más complejidad al sistema, he terminado haciéndolo con el WeMos, que al fin de al cabo es un Arduino con el ESP8266 incluido, facilitando mucho el montaje y la configuración del mismo. Decir que en este punto se puede utilizar cualquier dispositivo similar que emplee el chip ESP8266.
    Imagen
    3- Los Leds WS2812B. No he probado con otros ya que no tengo. Pero se puede utilizar cualquier modelo que utilice un chip direccional como por ejemplo cualquiera de la familia WS281x, o los APA102, incluso los WS2801, pero estos últimos difieren en el conexionado ya que utilizan 4 cables, en vez de 3 que utilizaremos en nuestra configuración.
    Imagen
    4- Una Resistencia de 300 a 500 Ohm. Que utilizaremos ente el pin de datos de nuestro microcontrolador y la entrada de datos de los leds. Previniendo cualquier pico de voltaje entre ambos.
    Imagen
    5- Un Condensador de 1000 µF, 6.3V o superior. Esto evitará que en el arranque inicial de corriente podamos dañar los leds.
    Imagen
    6- Adicionalmente será necesaria una fuente de alimentación externa , dependiendo de la cantidad de leds que vayamos a utilizar. Yo tengo en funcionamiento un total de 82 leds y están alimentados con 5V a 2500mA. Voy un poco justo cuando enciendo todos los leds en color Blanco y a máxima luminosidad. Pero se soluciona rapidamente aumentando el amperaje de la fuente de alimentación. Sin afectar en el resto del procedimiento.
    Yo estoy pendiente de comprar esta fuente de alimentación 50W 5V 10A ; MeanWell, RS-50-5:
    Imagen
Bien, con estos componentes será suficiente para empezar.
Pero si queréis ampliar el Ambilight a otras fuentes HDMI también se necesita lo siguiente:

    7- Convertidor Adaptador HDMI a RCA AV CVBS 1080P (NO al revés).
    Imagen
    8- Capturadora de Video con el Chip Modelo: UTV007. Esto último es muy importante.
    Imagen
    9- Conmutador distribuidor Splitter HDMI 1x2, a poder ser con fuente de alimentación incluido.
    Imagen
    10- Un Switch HDMI con el número de puertos que queráis. Yo uso este con 5 puertos HDMI.
    Imagen
    11- Un HUB USB con fuente de alimentación propia. Yo uso este de 7 puertos USB.

    Imagen

Software.

    1A- Para una instalación simple. Imagen de OSMC para la Raspberry. Podéis descargar directamente la última a día de hoy del 01-01-2018 desde este enlace. Para comprobar y descargar las últimas versiones desde este otro enlace.
    No he probado con otras Distribuciones de Kodi, pero supongo que funcionarán mientras sean compatibles con Hyperion.
    1B- Para una instalación DualBoot. Yo tengo una instalación de Recalbox con OSMC con la ayuda de PINN Lite que es una bifurcación de NOOBS con OS y un montón de características extras. Permitiéndo instalar varios sistemas operativos en el mismo medio y arrancar fácilmente en cada uno. Aquí tenéis más información https://github.com/procount/pinn/blob/master/README_PINN.md
    Y en este enlace una lista de las Distribuciones disponibles http://noobs.matthuisman.nz/list/
    2- Hyperion que se puede instalar en la Raspberry desde la consola de comandos (tenéis las instrucciones en el post de AikonCWD) o bien desde la aplicación de HyperCon (podéis revisar el procedimiento desde este enlace).
    3- HyperCon. Lo instalaremos para poder configurar Hyperion. Lo podeis descargar desde este enlace.
    4- IDE de Arduino.Última versión a día de hoy 1.8.5 y la podéis descargar desde este enlace.
    5- Pluggin IDE para el ESP8266. Este pluggin se instala desde el IDE de Arduino. Os dejo la documentación oficial en este enlace.
    6- Driver para el chip CHG340. Es el chip que utiliza el ESP8266.
    La versión para Windows la tenéis en este enlace, ofrecido por Prometec.
    Y la versión para Mac la encontrareis en este otro enlace.
    7- Sketch para comunicar Hyperion con el ESP8266 mediante UDP. No es necesaria su descarga. Su referencia en github la tenéis en este enlace. Encontré este código en el foro de Hyperion y que podéis revisar desde este enlace.
    8- Librería NeoPixelBus. Se instala desde el IDE de Arduino. Os dejo la referencia de esta librería que se encuentra en github, en este enlace.
    9- Librería Adafruit_NeoPixel. También se instala desde el IDE de Arduino. Su referencia en github la tenéis en este enlace.
    10- Librería WiFiManager. También se instala desde el IDE de Arduino. Su referencia en github la tenéis en este enlace.
    11- Sketch Serial To RGBW. No es necesaria su descarga. Lo utilizaremos para convertir un StringSerial en un valor de color de 32 bits para usar con la librería de Adafruit NeoPixel. Su referencia en github la tenéis en este enlace.
    12- Sketch Completo con todo el código para cargar al WEMOS o Arduino. Este es un 'fork' del sketch comentado en el punto nº7 de esta misma lista. Está modificado con la adaptación del sketch mencionado en el punto anterior nº11 y con el código que he generado yo para incluir el control de los leds independientemente a Hyperion desde la red. Podéis descargarlo desde mi perfil de github en este enlace.

Montaje de los Leds.

Lo primero será ver como vamos a montar los leds detrás de la TV. Este punto es importante ya que después en la configuración del Hyperion, dependiendo de como los hayamos montado, configuraremos de una manera o de otra. Yo en este punto os animo a que paséis por el hilo de AikonCWD y lo reviséis.
Os dejo el enlace: RaspberryPi: Montando ambilight casero con Hyperion

De todas formas os dejo unas fotos de como lo he echo yo. Ya que esto es un tema muy personal y depende también de la distribución de la parte trasera de vuestras TV, o si queréis tener leds en la parte inferior de la TV o no. ¡Y de lo manitas que seáis! (Yo aquí he sido un poco chapucero).

Imagen


Imagen


Tengo instalados en total 82 leds en una TV de 44 pulgadas, utilizando 3 tiras de 1 metro con 30 leds cada una. A la última tira le he cortado 8 leds. La distribución a quedado de la siguiente manera, en la parte superior 26 leds, en la inferior 26 leds, en la izquierda 15 leds y en la derecha 15 leds.

He empezado a poner los leds en la parte inferior derecha (viendo la TV por la parte trasera), tal y como se muestra en la imagen adjunta. Pero luego, en la configuración del HyperCon, esta situación corresponderá a la parte inferior izquierda (ya que la vista de la TV será la delantera). ¡Atentos a este detalle!

Da igual por donde empecéis a poner los leds, esto depende de vuestras necesidades, yo he elegido esta por que en este lado me es más cómodo situar el cableado. Pero como os digo, vosotros podéis empezar desde el lado opuesto, o desde el centro. Eso sí, si no recuerdo mal, desde HyperCon aconsejan empezar desde la parte inferior de la TV.

Si decidís no poner leds en la parte inferior de la TV, se empezaría poniendo los leds desde abajo hacía arriba en cualquiera de los laterales de la TV.

Ya solo queda conectar los leds a la corriente y a nuestro WEMOS. De la tira de leds salen 3 cables, Rojo, Blanco y Verde en mi caso. Estos colores podrían variar dependiendo de los leds que uséis.

Imagen


El Rojo es positivo a 5V y el Blanco es negativo (GND), estos cables los conectaremos a la fuente de alimentación. Entre ellos pondremos el Condensador de 1000 µF, 6.3V o superior.

Imagen


Y el cable Verde son datos que lo conectaremos al PIN RX<-D0 junto con la Resistencia de 300 a 500 Ohm.

Imagen


Si se utiliza una fuente de alimentación externa, es muy importante conectar desde cualquier PIN GND del WEMOS, al GND común con la fuente de alimentación.

Y con esto, ya tendríamos el conexionado terminado. Son solo 4 cables, y 2 PINs.

Configuración.

Lo primero que se necesita es tener instalado el OSMC en la Raspberry, después el HyperCon y el Hyperion. Este último lo podemos hacer desde HyperCon directamente.
Desde HyperCon configuraremos nuestros leds de la siguiente manera. Teniendo en cuenta que en un principio solo tendríais que cambiar la IP por la de vuestra Raspberry, el total de leds y su distribución.

Imagen


Imagen


Imagen


Imagen


Imagen


Si os fijáis en esta última pestaña SSH, se puede realizar la instalación de Hyperion en la Raspberry directamente, desde el botón Inst./Upd. Hyperion, evitando tener que andar con comandos desde la consola.
También se puede enviar el fichero de configuración creado con el botón Create Hyperion Configuration y luego enviarlo con el botón Send Config.
Una vez enviado el fichero de configuración por este método, es importante parar el servicio con el botón Stop y volverlo a iniciar con el botón Start, para que la nueva configuración sea efectiva en la Raspberry.

Si con las capturas y la documentación oficial que os remito en la lista de Software, punto nº2 no os queda muy claro, os recomiendo que reviséis de nuevo el post de AikonCWD. Si no, preguntar en este hilo para resolver las dudas, que intentaré ayudaros en lo que pueda.

También os podéis descargar la app Hyperion Free desde el Play Store para controlar los leds desde el Smartphone o Tablet, os dejo un QR para su descarga:

Imagen


Ahora toca la parte del microcontrolador.
Necesitáis lo primero tener instalado en vuestro PC el IDE de Arduino y el Driver para el chip CHG340.
Una vez echo esto se ha de instalar el Pluggin IDE del ESP8266 para poder trastear con estos fantásticos chips que nos aportan a nuestro microcontrolador de WiFi.
Para ello abrimos el IDE de Arduino y en \Archivo\Preferencias, o CTRL+Coma, veremos la siguiente pantalla:

Imagen


Si os fijáis abajo donde pone Gestor de URLs Adicionales de Tarjetas: hay que poner la siguiente url:

Código: Seleccionar todohttp://arduino.esp8266.com/stable/package_esp8266com_index.json

Y pulsamos sobre el botón OK

Ahora vamos a \Herramientas\Placa\Gestror de tarjetas...

Imagen


Y veremos la siguiente pantalla, donde pondremos en el cuadro de búsqueda ESP8266:

Imagen


Nos fijamos que salga el paquete que se ve en la captura y lo instalamos.

Ahora nos dirigimos a /Programa/Incluir Librería/Gestionar Librerías:

Imagen


Y en la pantalla que nos sale, escribimos en el cuadro de búsqueda NeoPixelBus:

Imagen


Nos fijamos que salga el paquete que se ve en la captura y lo instalamos.

En esta misma ventana, escribimos de nuevo en el cuadro de búsqueda, pero esta vez Adafruit NeoPixel:

Imagen


Nos fijamos que salga el paquete que se ve en la captura. En este caso a mi me sale el 3º pero a vosotros os podría variar. Si es así, lo buscáis más arriba o abajo y lo instaláis.

Y por último instalamos la librería WiFiManager al igual que las anteriores:

Imagen


Nos fijamos que salga el paquete que se ve en la captura y lo instalamos.

Ya tenemos las librerías y la tarjeta instaladas en el IDE de Arduino. Ahora volvemos a \Herramientas\Placa y seleccionamos el microcontrolador que estemos usando para el proyecto. Yo en mi caso uso un WEMOS D1 R1:

Imagen


Ahora toca conectar el WEMOS por USB al PC, luego nos dirigimos a /Herramientas y desde aquí verificamos algunas cosas necesarias:

    1- Puerto. Seleccionamos el Puerto COM que haya asignado el PC a la WEMOS.
    2- Flash Size. Yo tengo 4M (3M SPIFFS) por que la idea es poner en la memoria flash las librerías de JQuery que se utilizan en el Sketch que cargaremos al WEMOS. De este modo no se dependerá de una conexión externa a Internet. (Pero aún tengo que mirar como hacerlo...) Si a vosotros este punto os da igual, podéis elegir sin problema la opción 4M (1M SPIFFS).
    3- CPU Frequency. Yo tengo 160 MHz por que creo que irá mas desahogada con el tema de la lectura y refresco de los leds. Ya que el Baudrate que está configurado en el HyperCon es de nada más y nada menos que 2.000.000, cuando por norma se suelen utilizar unos 500.000

Con todo esto configurado, ya podemos mirar de cargar el Sketch con el código al WEMOS. Tenéis el link de descarga en el último punto de la lista de Software.

Para esto se ha de ir al directorio Arduino donde tengáis instalado el IDE, yo en mi caso lo tengo en H:/Arduino, lo podéis comprobar o configurar desde \Archivo\Preferencias, o CTRL+Coma y en la parte superior veréis el cuadro de texto con el titular Localización de proyecto. Hay una captura de imagen un poco más arriba donde se ve este punto.
Bueno, pues una vez dentro de dicho directorio se ha de crear una carpeta con el mismo nombre del proyecto y dentro poner el fichero con el Sketch que os habéis descargado anteriormente. Poned al directorio el mismo nombre que tenga el fichero.

Echo esto, abrimos el fichero *.ino y nos fijamos en las siguientes líneas de código:

Código: Seleccionar todounsigned int ASCIIPort = 2390;      // local port to listen for UDP packets
unsigned int RAWPort = 2801;      // local port to listen for UDP packets
unsigned int RAWDeltaPort = 2392;      // local port to listen for UDP packets

Aquí está el RAWPort que utilizamos para comunicar Hyperion con el WEMOS y ha de coincidir con la configuración de HyperCon.

Código: Seleccionar todo// NeoPixel defines.
// NOTE!!! NeoPin is IGNORED by all but the NeoEsp8266BitBang800KbpsMethod method
#define NeoPin 3
#define PixelCount 82

Aquí tenéis que modificar tan solo el PixelCount y poner el total de leds que tengáis puestos en la TV. Este dato a de coincidir con la configuración que pusisteis en HyperCon.
El NeoPin corresponde al PIN RX<-D0 del WEMOS. No se a de cambiar.

Con esto ya lo tenemos, ahora lo subimos al WEMOS pulsando sobre el botón con la flecha hacía la derecha:

Imagen

Esperamos a que termine de cargar y si todo ha ido bien, ya tendríamos el invento funcionando.

Solo falta desconectar el WEMOS del PC, ir corriendo al salón y conectarlo a los leds, encender la TV, seleccionar el Source donde tengamos conectada la Raspberry, reproducir algún vídeo y empezar a disfrutar del Ambilight.

Ya sentado en el sofá y flipando con las lucecitas que salen por detrás de la TV, podemos coger el smartphone, abrir el navegador y dirigirnos a http://IP-ESP8266 para ver las siguientes pantallas y poder controlar los leds:

Imagen Imagen


Para visualizar el ColorPicker se ha de pulsar sobre el botón Selecciona un color y para enviarlo al WEMOS pulsamos sobre el botón Enviar

Con el botón TV activamos la comunicación con el Hyperion y tendremos el Ambilight con la Raspberry.

En Reset Brillo: pulsando en el -,ponemos el brillo a 0 y pulsando en el +, lo ponemos a 255. (Esto es un arreglo, por que el slider del brillo no es compatible con touch-screen).

Con el Slider de Brillo se puede cambiar el brillo de los leds, desde 0 (apagados) a 255 (máxima luminosidad).
Tanto en Tablets como Smartphones, no funciona el Touch-Screen. He probado con varias librerías pero ninguna es compatible con la librería jscolor que se utiliza para la selección de color.

Y los Colores Pre-establecidos en la parte inferior. Con el Blanco el brillo esta por defecto en 127 (la mitad de intensidad), lo he puesto así por que si no, tengo problemas con la corriente, ando justillo con los 2,5 mA que tengo ahora para los leds. Si queréis tener un Blanco con más brillo, lo podéis hacer desde el ColorPicker.
Y con el color Negro he establecido el brillo a 0 y se apagarán los leds.

En la siguiente pantalla tenemos el Status, desde la cual se pueden ver algunos datos interesantes:

Imagen


Y desde la pantalla Screen se pueden visualizar los colores y los leds que están encendidos (estos datos vienen del Hyperion por UDP):

Imagen


Luego tenemos en el menú dos enlaces más, que son Bitmap que aún no se como funciona, pero creo que es para cargar matrices o imágenes y que estas se visualicen el los leds.
Y Update que sería para poder cargar ficheros vía HTTP al WEMOS, pero no está funcionando. Hay que seguir investigando.

Comentaros que estas funcionalidades no las he desarrollado yo, provienen del Sketch mencionado en el punto nº7 de la lista de Software. Yo solo me he limitado a adaptar este sketch, metiendo cosas por aquí y por allá para hacerle trabajar independientemente de Hyperion y poderlo navegar desde una interfaz Web.

Creo que no me dejo nada y que lo básico queda explicado.
Al final me ha salido un tocho muy gordo, lo siento. (Haber si alguien llega a leer hasta el final :upside_down: )


Hola compañero, primero felicitarte por todo el trabajazo!!!

Segundo.. ¿Cómo instalas Hyperion en Recalbox? ¿Usando diferente configuración que con el Hyperconf?

Avatar de Usuario
Por Sergiqu
Miembro
#86821
Buen tutorial. Le voy a echar un ojo que yo lo que quiero es poner tan solo Arduino y Raspberry como backend para el HTPC, no necesito para otras fuentes de video.

Por -ice-
Maestro
#86822
Sergiqu escribió:Buen tutorial. Le voy a echar un ojo que yo lo que quiero es poner tan solo Arduino y Raspberry como backend para el HTPC, no necesito para otras fuentes de video.



Si tienes HTPC no necesitas una RPi. Sólo un arduino y el sketch correspondiente.

Avatar de Usuario
Por Sergiqu
Miembro
#86824
-ice- escribió:
Sergiqu escribió:Buen tutorial. Le voy a echar un ojo que yo lo que quiero es poner tan solo Arduino y Raspberry como backend para el HTPC, no necesito para otras fuentes de video.



Si tienes HTPC no necesitas una RPi. Sólo un arduino y el sketch correspondiente.

Pues asi lo tengo, y con kodi y ambibox no me funciona correctamente :(


@Sergiqu

Por -ice-
Maestro
#86828
Tendrás el sketch que no corresponde. Mucho no puedo ayudarte porque no utilizo Arduino. Pero estoy seguro que a poco que busques encontrarás el sketch que vale.

Avatar de Usuario
Por Sergiqu
Miembro
#86843
A ver si lo cuelgo por aqui, pero creo que no debe ser solo por el sketch.


@Sergiqu

Por araetamae
Novato
Autor del hilo
#89188
Sotavent0 escribió:Hola compañero, primero felicitarte por todo el trabajazo!!!

Segundo.. ¿Cómo instalas Hyperion en Recalbox? ¿Usando diferente configuración que con el Hyperconf?


¡Muchas gracias @Sotavent0!

Para el tema de Recalbox con Ambilight , yo lo tengo instalado junto con OSMC. Lo único que tienes que hacer es configurar el Recalbox y añadir el fichero de configuración de Hyperion en el mismo sistema de Recalbox.

Para hacerlo es muy fácil. Has de modificar el fichero recalbox.conf, cambiando la línea donde ponga hyperion.enabled=0 por hyperion.enabled=1 y borrando el ';' final de la línea, si lo tuviese. Ta ha de quedar así:

Código: Seleccionar todo## Hyperion
## Hyperion allows you to use an ambilight like led system on your recalbox
## Use hypercon to create your configuration file, and copy it in
## /recalbox/share/system/configs/hyperion/hyperion.config.json hyperion.enabled=1


Si te fijas en estas líneas de código, también te dice donde copiar el fichero de configuración de Hyperion. Si ya has realizado la instalación de Hyperion en LibreElec con la ayuda de su Wiki, puedes copiar el mismo fichero de configuración que has generado con HyperCon en la siguiente ruta de Recalbox y suponiendo que el nombre de tu fichero de configuración sea hyperion.config.json:

Código: Seleccionar todo/recalbox/share/system/config/hyperion/hyperion.config.json


Yo tengo una instalación de Recalbox con OSMC en DualBoot con la ayuda de PINN Lite que es una bifurcación de NOOBS con OS y un montón de características extras. Permitiéndote instalar varios sistemas operativos en el mismo medio y arrancar fácilmente en cada uno. Aquí tienes más información https://github.com/procount/pinn/blob/master/README_PINN.md
Y en este enlace una lista de las Distribuciones disponibles http://noobs.matthuisman.nz/list/

Te comento lo del DualBoot porque la ruta donde hay que poner el archivo de configuración del Hyperion que menciona el fichero recalbox.conf en mi sistema difiere un poco. Yo lo he tenido que poner en:

Código: Seleccionar todo/media/share/system/configs/hyperion/hyperion.config.json


Y por último tienes que modificar el fichero config.txt para activar el dtparam=spi=on. Lo puedes hacer rápidamente escribiendo la siguiente línea en la consola de comandos de tu Raspberry por SSH:

Código: Seleccionar todomount -o remount,rw /boot && echo 'dtparam=spi=on' >> /boot/config.txt


O por FTP abrir el fichero desde /boot/config.txt y modificar la línea o añadirla a mano.

Espero que estos pasos te ayuden a tener el proyecto en marcha. Como te digo, no deberías tener problemas para hacerlo funcionar.

Saludos.

Por araetamae
Novato
Autor del hilo
#89189
Sergiqu escribió:A ver si lo cuelgo por aqui, pero creo que no debe ser solo por el sketch.
@Sergiqu


Hola @Sergiqu, muchas gracias por pasarte por el hilo y por dejar tus comentarios.

Si aún no lo has resuelto, mira de compartir el sketch o las dudas que tengas con el y lo revisamos. ;)

Por araetamae
Novato
Autor del hilo
#89190
Tocinillo escribió:Vaya pedazo de tutorial, te lo hago sticky. Mil gracias ;)


¡Muchas gracias @Tocinillo, es todo un alago recibir un comentario así por parte de uno de los Grandes Maestros sobre el tema! :blush:

Un enorme placer pertenecer y colaborar con la Comunidad. ;)

Temas similares
Temas Estadísticas Último mensaje
¿Como configurar LibreELEC con Ambilight + otras fuentes HDMI?
por MatuScien  - 13 Feb 2018, 21:59 En Raspberry Pi
15 Respuestas
1436 Vistas
por -ice-
02 Oct 2018, 23:19
Hacer Logos con máscara / capa de recorte y otras cosillas
por speedmoska  - 05 May 2018, 14:25 En Manuales/Tutoriales diseño
0 Respuestas
376 Vistas
por speedmoska
05 May 2018, 14:25
Problema IPTV URLS fuentes TS
por numerikus  - 01 Jun 2018, 14:23 En Tvheadend
0 Respuestas
417 Vistas
por numerikus
01 Jun 2018, 14:23
Mas OPCIONES de Contenido al añadir Fuentes, Películas, Series, Videoclips. Queremos mas ¡¡¡
por javialbau  - 18 Dic 2017, 00:19 En Kodi
1 Respuestas
641 Vistas
por veneno60
18 Dic 2017, 10:28
Montar disco duro osmc??
por honda82  - 23 Nov 2017, 21:51 En Raspberry Pi
2 Respuestas
530 Vistas
por honda82
25 Nov 2017, 16:43