Revista 100% Verde

Ajustes efecto Ambilight con Raspberry Pi

Por Soloelectronicos @soloelectronico

En un post anterior vimos como emular un sistema "ambiligt" usando únicamente una Raspberry Pi 2 o 3 equipada con una distribución compatible ( Openelec) y el software de control de leds Hyperion, con el que podemos conseguir todo hecho gracias a la distribución Lightberry.
Además de controlar los leds, la combinación de la Raspberry Pi junto con Kodi constituye un excelente Media Center capaz de reproducir todo tipo de contenidos de audio, vídeo e imagen, de reproducir nuestra colección multimedia almacenada en el PC o en un disco externo, e incluso de reproducir directamente contenidos on-line si se posee las subscripción en el hogar y por supuesto cuenta con la conexión de suficiente ancho de banda como por ejemplo con ftth.

La propuesta se completa con una económica capturadora de vídeo que permitirá que la emulación no solo funcione con el contenido multimedia que reproducimos desde la Raspberry Pi , también responderá a la señal de video externa que le introduciremos procedente de una fuente externa de video como por ejemplo puede ser la señal de video procedente de un descodificador de Imagenio .

Por desgracia a veces la respuesta del Hypercon que produce en la tira de leds ws2801 no se corresponde con la imagen capturada , señal que el el fichero obtenido por el asistente (hypercon.config.son ) deberíamos mejorarlo ¿pero cómo?

Pues gracias al programa en java HyperCon podemos indicar la posición exacta de nuestros leds en el caso de que la configuración realizada desde el menu de Hyperion Config Creator no haya ofrecido un resultado esperado .

Este software permite entre otras cosas establecer el número de leds que hay que controlar, la posición del primer led, la orientación, el chipset, etc...permitiendo un ajuste muy preciso del comportamiento de cada led de forma individual

Antes de seguir, quiero aclarar para que HyperCon.jar funcione, es necesario tener instalada la ultima version de Java ,asi que si no la tiene instalada puede descargarlo aquí

Recordamos que con el menu basico de Hyperion Config Creator podemos definir la instalación de nuestra Lightberry en nuestra TV definiendo simplemente 5 parámetros:

  • Tipo de tira de leds: en nuestro casi podemos elegir Lightberry HD for Rasperry pi (ws2801)
  • Numero de leds horizontales ( deben ser idéntico numero de leds en ambos lados)
  • Numero de leds verticales ( deben ser idéntico numero de leds en ambos lados)
  • Donde comienza el primer led (Right/button corner and goes up)
  • Confirmación de que tenemos un capturadora de TV conectada

Puede ocurrir que aunque veamos el arco iris con la configuración obtenida no se correspondan los colores de los leds con los de la imagen , indicio de que debemos ajustar la configuración manualmente de forma mas precisa por medio del archivo hyperion.config.json generado por el asistente de un modo mas exhaustivo usando el programa en java HyperCon o bien de forma manual.

Obviammente para ejecutar dicha aplicacion, como se ha mencionado ,debemos tener instalado en nuestro equipo java

Una vez descomprimido el pquete de Hypercon , simplemente ejecutaremos el archivo HyperCon_Sssj.jar ( este fichero estará por ejemplo en la ruta C:\Users\xx\Downloads\hypercon-master\hypercon-master\debug\)

Ajustes  efecto Ambilight con Raspberry Pi

Una vez lanzado el hypercon veremos el interfaz gráfica con una configuración por defecto que debemos personalizar con respecto a nuestra instalación.

Debe recodar donde puso el primer led (el que está al lado del conector hembra con los jumpwires).

Ajustes  efecto Ambilight con Raspberry Pi

En este ejemplo personal ,el primer led ha quedado en la esquina inferior derecha cuando se mira la TV de frente ( o a la izquierda abajo si ve por atras), así que el recorrido de los leds va desde la esquina inferior derecha hasta la izquierda (sentido horario).

Configuramos de este modo:

  • Direction: clockwise
  • Led top corner: false
  • Led bottom corner: false
  • Horizontal #: 28
  • Vertical #: 14
  • Bottom Gap: 0
  • 1st Led offset: -42

En nuestro caso tiene que salir un Led count = 84 (o el número de leds que haya instalado).

Si en su configuración empezó por la otra esquina, cambie el desplegable direction.

En el caso del ejemplo no se han situado leds en las esquinas, así que hay que especificar top/bottom a false.

En bottom gap hay que poner el mismo numero de leds que en la parte superior, así lo puede dejar "vacío".

Muy importante : en el desplegable 1st Led offset hay que ir aumentando o disminuyendo hasta que el led número 0 quede en la esquina inicial (en este ejemplo en la esquina inferior derecha).

Ajustes  efecto Ambilight con Raspberry Pi

Una vez configurado según los leds que tenga, vaya a la pestaña External y en el apartado Effects Engine Directory escriba lo siguiente: /storage/hyperion/effects lo cual hará que hyperion encuentre el directorio de los efectos.

Asimismo puede ajustar el tiempo en ms que permanezca el efecto al arrancar en Length ( por defetco 9000ms)

Ajustes  efecto Ambilight con Raspberry Pi

Una vez configurado haz clic en el botón Create Hyperion Configuration para crear el fichero de configuración hyperion.config.json que hay que copiar en la Raspberry PI en el directorio /storage/.config ( no confundir con la ruta /storage/hyperion/configuration/)

Ajustes  efecto Ambilight con Raspberry Pi
.

Una vez copiado el fichero hyperion.config.json en storage/.config reinicie la RPI y si todo ha ido bien deberías ver un efecto de arcoiris.

Configuracion inicial

La configuración del dispositivo contiene los siguientes campos:

  • 'name': El nombre de usuario del dispositivo (sólo se utiliza para fines de visualización)
  • 'type': El tipo del dispositivo o leds (los tipos conocidos por ahora son 'ws2801', 'ldp8806', ' 'lpd6803', 'sedu', 'adalight', 'lightpack', 'test' y 'none')
  • output : La especificación de salida depende del dispositivo seleccionado. Esto puede ser, por ejemplo, el especificador de dispositivo, número de serie del dispositivo o el nombre del archivo de salida
  • 'rate': El baudrate de la salida al dispositivo
  • colorOrder': El orden de los bytes de color ('rgb', 'rbg', 'bgr', etc.).Es muy importante destacar que si no ajustamos este valor se pueden cambiar el borde de los colores .Por ejemplo muchas tiran son del t tipo BGR, lo cual significa que si dejamos marcado por defecto en RGB cambiará en todas las visualizaciones el rojo por el azul y biceversa

Ejemplo de configuración de la sección device correspondiente al post anterior :

Color

Podemos manipular la configuración de manipulación de color utilizada para ajustar los colores de salida a un entorno específico.
La configuración contiene una lista de transformaciones de color. Cada transformación contiene los siguientes campos:

  • 'id': El identificador único de la transformación de color (p. Ej. 'Device_1')
  • 'leds': Los índices (o índices) de los leds a los que se aplica esta transformación de color (por ejemplo, '0-5, 9, 11, 12-17'). Los índices son basados ​​en cero.
  • 'hsv': La manipulación en el dominio de colores Valor-Saturación-Valor con lo siguiente parámetros de ajuste:
    • 'saturationGain' El ajuste de ganancia de la saturación
    • 'valueGain' El ajuste de ganancia del valor
  • 'rojo' / 'verde' / 'azul': La manipulación en el dominio de color Rojo-Verde-Azul con los siguientes parámetros de sintonización para cada canal:
    • 'umbral' El valor de entrada mínimo requerido para que el canal esté encendido
      (más cero)
    • 'gamma' El factor de corrección de la curva gamma
    • 'blacklevel' El valor más bajo posible (cuando el canal es negro)
    • 'whitelevel' El valor más alto posible (cuando el canal es blanco)

Al lado de la lista con transformaciones de color también hay una opción de suavizado.
'Suavizado': Suavizado de los colores en el dominio del tiempo con la siguiente sintonización parámetros:

  • 'type' El tipo de algoritmo de suavizado ('linear' o 'none')
  • 'time_ms' La constante de tiempo para el algoritmo de suavizado en milisegundos
  • 'updateFrequency' La frecuencia de actualización de los leds en Hz

Ejemplo de configuración de la seccion color correspondiente al post anterior

"color": {
"transform": [
{
"blue": {
"threshold": 0.050000000000000003,
"blacklevel": 0.0,
"whitelevel": 0.84999999999999998,
"gamma": 2.0
},
"leds": "0-81",
"hsv": {
"saturationGain": 1.0,
"valueGain": 1.0
},
"green": {
"threshold": 0.050000000000000003,
"blacklevel": 0.0,
"whitelevel": 0.84999999999999998,
"gamma": 2.0
},
"id": "leds",
"red": {
"threshold": 0.050000000000000003,
"blacklevel": 0.0,
"whitelevel": 1.0,
"gamma": 2.0
}
},
{
"blue": {
"threshold": 0.050000000000000003,
"blacklevel": 0,
"whitelevel": 0,
"gamma": 2.0
},
"leds": "82-149",
"hsv": {
"saturationGain": 0,
"valueGain": 0
},
"green": {
"threshold": 0.050000000000000003,
"blacklevel": 0,
"whitelevel": 0,
"gamma": 2.0
},
"id": "ledsOff",
"red": {
"threshold": 0.050000000000000003,
"blacklevel": 0,
"whitelevel": 0,
"gamma": 2.2000000000000002
}
}
],

Leds

La configuración para cada led individual. Contiene la especificación del área promediado de una imagen de entrada para cada led para determinar su color. Cada elemento de la lista contiene los siguientes campos:

  • index: El índice del led. Esto determina su ubicación en la cadena de leds; cero
    Siendo el primer led.
  • hscan: La parte fraccional de la imagen a lo largo de la horizontal utilizada para el promedio (mínimo y máximo inclusive)
  • vscan: La parte fraccional de la imagen a lo largo de la vertical utilizada para el promedio (mínimo y máximo inclusive)
  • 'updateFrequency' La frecuencia de actualización de los leds en Hz

"leds" :
[
{
"index" : 0,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 1,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0357 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},

.......................

{
"index" : 87,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0714 }
}
],

Configuracion Bordes

La configuración de borde negro, contiene los siguientes elementos:

  • enable: true si el detector debe ser activado
  • Umbral: valor por debajo del cual un píxel se considera negro (valor entre 0,0 y 1,0)
    "Blackborderdetector":

Ejemplo de configuración de la seccion blackborderdetector correspondiente al post anterior

EFECTOS

La configuración del motor de efectos, contiene los siguientes elementos:

  • paths: Una matriz con ubicaciones absolutas de directorios con efectos
  • bootsequence: El efecto seleccionado como 'secuencia de arranque'. Es importante cambiar a su valor en OpenElec "/storage/hyperion/effects"

Ejemplo de configuración sección effects correspondiente al post anterior :

CAPTURADORA

La configuración del captador de tramas, contiene los siguientes elementos:

  • width: El ancho de los marcos grabados [pixels]
  • height: La altura de los marcos grabados [pixels]
  • frequency_Hz: La frecuencia de la toma de marco [Hz]

La configuración de la conexión XBMC utilizada para habilitar y deshabilitar el captador de tramas. Contiene los siguientes campos:

  • xbmcAddress: La dirección IP del host XBMC
  • xbmcTcpPort: El puerto TCP del servidor XBMC
  • grabVideo: Flag que indica que el captador de fotogramas está activado (true) durante la reproducción de vídeo
  • grabPictures: Flag que indica que el captador de fotogramas está activado (true) durante la presentación de imágenes
  • grabAudio: Flag que indica que el captador de fotogramas está activado (true) durante la reproducción de audio
  • grabMenu: Flag que indica que el captador de fotogramas está activado (true) en el menú XBMC
  • grabScreensaver: Flag que indica que el captador de fotogramas está activado (true) cuando XBMC está en el salvapantallas
  • enable3DDetection: Indicador que indica que el captador de fotogramas debe cambiar a un modulo compatible con 3D si se está reproduciendo un video en 3D

Ejemplo de configuración sección effects correspondiente al post anterior :

NOTAS

Si no quiere reiniciar lar RPI cada vez que modifique el fichero de configuración hyperion.config.json, puede reiniciar sólo el servicio con los siguientes comandos:

killall hyperiond
/storage/hyperion/bin/hyperiond.sh /storage/.config/hyperion.config.json /dev/null 2>&1 &

Hay que añadir la siguiente línea dtparam=spi=on al archivo editando el fichero o bien a través con los siguientes comandos:

mount -o remount,rw /flash
nano /flash/config.txt (se abrirá el archivo, añadimos la línea y guardamos con Ctrl+X)

reboot

Pruebas

Para comprobar el correcto funcionamiento del sistema para Android existe una app que te permite controlar los leds estableciendo un color o aplicando efectos bastante vistosos. La puede descargar aquí

Ajustes  efecto Ambilight con Raspberry Pi

Otra forma de probar es ejecutando el siguiente comando que hará que todos los leds se iluminen en rojo durante 5 segundos, puedes probar varios colores, green, blue entre otros.

/storage/hyperion/bin/hyperion-remote.sh -priority 50 -color red -duration 5000

O este otro que mostrará un efecto de arcoiris

/storage/hyperion/bin/hyperion-remote.sh -effect "Rainbow swirl fast" -duration 3000

Por ultuio en youtube puede encontrar vídeos de test para probar que los colores se corresponden con la imagen.


Volver a la Portada de Logo Paperblog