Necesitamos mas mujeres hackers


¿Por qué es tan difícil encontrar productos de superheroínas? En una charla de TED , el doctor , Christopher Bell, especializado en el estudio de la cultura popular   de los medios centrándose en las formas en que la raza, la clase y el género como se cruzan en diferentes formas de medios ,  desde su condición de  padre de una hija obsesionada con Star Wars, aborda la falta alarmante de superheroínas en los juguetes y productos comercializados para niños, y todo lo que eso significa para la forma en que les mostramos el mundo .

Hacker  en el mundo  hispano-hablante desgraciadamente aun conlleva una faceta peyorativa muy habitualmente  confundida  con personas que utilizan la tecnología para hacer el mal y lucrarse  en su provecho aprovechando vulnerabilidades o  agujeros de seguridad tal y como hacen los ciberdelicientes  (como es el caso de los script kiddies, crackers, piratas informáticos, etc)

Nada mas lejos de la realidad  pues para los anglosajones  un  hacker  es un  individuo que apoya procesos de apropiación social o comunitaria de las tecnologías poniendo  a disposición del dominio público el manejo técnico y destrezas alcanzadas personal o grupalmente. Ademas crea nuevos sistemas, herramientas y aplicaciones técnicas y tecnológicas para ponerlas a disposición del dominio público  y realiza  acciones de hacktivismo tecnológico con el fin de liberar espacios y defender el conocimiento común y abierto.

Pero, ¿por qué es tan difícil encontrar referentes femeninos en el mundo de la tecnología  y en particular en el mundo del hacking?  Quizás tenga relación con  varios estudios, donde afirman que sobre  la edad de 11 años muchas niñas se sienten atraídas por la tecnología, las ciencias y las matemáticas pero lamentablemente  muchas  pierden el interés al cumplir los 15 años y desvían su interés profesional  hacia otras áreas del saber.

Ante este reto, desde Telefónica, a través de la unidad de Chief Data Office (CDO) liderada por el famoso hacker  Chema Alonso, que integra Aura -Inteligencia Cognitiva-, ElevenPaths -Ciberseguridad- y LUCA -Big Data-, reflexionan  sobre esta tendencia que parece repetirse en diversos ámbitos y que se han  propuesto “hackear”  apostando por la diversidad.

El video la verdad es que es muy emotivo y merece la pena verlo

Modernamente el movimiento hacker  o  el hacktivismo (fusión de hack y activismo) se considera el uso de técnicas en beneficio de fines sociales, ecológicos, humanitarios o de cualquier otra índole ,con repercusión o tendente a la defensa de los derechos humanos.

A raiz de esta tendencia aparecen precisamente   los famosos espacios  hacklab o hackerspace y los hackmeeting como eventos proclives  de diálogo de hackers.

Asimismo se considera  hacktivismo  la liberación de conocimiento (como podría  ser la misma Wikipedia o incluso muchos blogs tecnológicos) ,la cual trasciende incluso a la propia   información clasificada  que se considera debe estar  a disposición de la sociedad ( WikiLeaks o las filtraciones de Snowden).

Por tanto, el fenómeno hacker  tiene un importante componente de aperturismo y liberación de conocimientos e información que, a través del activismo de estos especialistas  o expertos (mujeres o hombres da igual ) ,los cuales  en general actualmente son ingenieros de diferentes disciplinas  , benefician con su actividad a la sociedad en general ,  por lo que en aras de  la diversidad , también  deben promoverse la inclusión de las mujeres en semejante colectivo para el bien de la humanidad.

Anuncios

Apps Android imprescindibles a bordo


Los nuevos tiempos cambian  y con ella  los instrumentos usados en la navegación sobre todo desde que la electrónica  irrumpió de forma intensiva .

Nos tenemos que remontar  hasta la  aparición de la normativa NMEA,la cual permitía concentrar  información dispersa  en una sola pantalla procedente de cada uno de los componentes de la electrónica de a bordo (corredera, equipo de viento, sonda, radar, posición),sin importar su fabricante o el modelo

Posteriormente la aparición de otros elementos como el AIS(Automatic Identification System),  GPS y plotters de alta definición nos han llevado a recurrir a nuevas herramientas y dispositivos para presentar toda la información de ayuda a la navegación a través de un PC   con programas aplicaciones de cartografía escaneada o vectorizada (como OziExplorer, Navionics o Tsunamis),  que nos mostraban gracias al estándar NMEA, toda la información que teníamos distribuida en los diversos dispositivos electrónicos instalados a bordo.

Actualmente la mayoría de los navegantes han pasado del papel a las cartas leídas en el ordenador (y ,del compás al ratón, y de la corredera al GPS) , pero aun  toca  asimilar el siguiente paso :integrar todas las herramientas de ayuda a la navegación en nuestros dispositivos móviles .

 Hoy en día los sistemas de geolocalización  ayudados de una conexión a  internet han revolucionado el transporte , de modo que  con un smartphone o  tableta podemos tener a nuestro alcance, en un multi-dispositivos  a muy bajo coste, toda la información que hace unos años sólo podíamos obtener usando electrónica bastante  compleja  y costosa de modo  que con la evolución y desarrollo de las tabletas Android, las necesidades de electrónica y su utilidad en las embarcaciones ha supuesto un cambio en cuanto a los hábitos de muchos navegantes, ganando cada vez más importancia la tableta como el elemento principal para contener la información que se necesita para la navegación,

Entre las aplicaciones náuticas del mercado que vamos a ver  algunas requieren una conexión a Internet, pero muchas otras ofrecen la opción de trabajar sin cobertura, usando  señales de posicionamiento GPS o de los sensores internos (acelerómetro o brújula)

 

Veamos una muestra de algunas de las aplicaciones mas usadas :

Seguridad

 La app gratuita de Salvamento Marítimo también es indispensable entre las aplicaciones náuticas.

Salvamento Marítimo. Con esta aplicación móvil obtenemos información y orientación sobre cuestiones relacionadas con la seguridad náutica. Por ejemplo, nos ofrece la posibilidad de realizar una serie de controles para ver si estamos cumpliendo con los puntos de seguridad que necesitamos cumplir antes de salir a navegar. Desde consejos y todo tipo de información para navegantes, hasta listados para controlar los puntos esenciales de seguridad antes de la navegación.

Esta  aplicación  permite a los navegantes de recreo que Salvamento Marítimo monitorice su travesía y que de la alarma en caso de no cumplir con el plan de navegación establecido.

El 50% de las incidencias que atiende Salvamento Marítimo, son de embarcaciones de recreo.

SafeTrx es una aplicación para Smartphone, tanto para dispositivos Android como Apple iOS (iPhone, iPad), que monitoriza los viajes de su embarcación, avisa a los contactos designados por el usuario cuando hay retrasos en el viaje planificado y ofrece una página web para que Salvamento Marítimo pueda consultar con rapidez la derrota realizada por la embarcación y tomar las acciones oportunas.

Esta aplicación complementa al Sistema Mundial de Socorro y Seguridad Marítima.
Web: http://boletinpatron.com/index.php/safetrx-app-salvamento-maritimo/

 

Aplicaciones de AIS

En los últimos años hemos visto cómo han aparecido algunas aplicaciones que nos ayudan a identificar las embarcaciones. Se trata de aplicaciones que usan el AIS (Automatic Identification System). Gracias a este sistema podremos conocer la identidad, el rumbo, la posición y más datos sobre aquellas embarcaciones que estén situadas en la zona próxima a la que nos encontramos nosotros.

Habitualmente esto se había realizado a través de sistemas de radio VHF, pero actualmente gracias a una conexión a internet se puede reemplazar su cometido con  aplicaciones como MarineTrafic,

  • mAIS marine Traffic Ship Position Reporting: Esta App basada en Google Maps,  nos permiten enviar y visualizar información a tiempo real de la señal AIS. Para ello tan solo necesitamos tener acceso a una conexión de internet y gracias al  soporte de Google Maps,  pueden visualizarse los barcos en cualquier lugar del mundo. Para emitir la señal es preciso tener una conexión a Internet, esta emisión de señal hay que pararla al llegar a tierra.
  • Ship Finder – Live vessel tracking: Con esta App también puede obtenerse la información sobre todas las embarcaciones situadas en la zona seleccionada. Hay una versión gratuita y otra más completa de pago.

 

Aplicaciones náuticas meteorológicas

Todos los navegantes están pendientes de la previsión meteorológica. Hoy en día tenemos acceso a datos a tiempo real sobre la evolución de los indicadores básicos en meteorología, así como a los pronósticos. En el universo de las aplicaciones encontramos una gran cantidad de herramientas que nos ayudarán a conocer las condiciones de viento y previsión de lluvia con gran lujo de detalles.

  • WeatherPRO HD es una aplicación realizada por Meteogrup que ofrece un pronóstico a una semana vista, en intervalos de tres horas, en más de dos millones de lugares, con radar en tiempo real e imágenes por satélite. Existen diversas versiones, libres y de pago. En función de lo que queramos pagar, obtendremos un tipo de información u otra.
  •  WinFinderPRO  Para los aficionados a los deportes de vela es una aplicación fundamental. Viento, olas y predicción meteorológica son los principales reclamos de esta app. Su uso es bastante parecido a la WeatherPRO, con la posibilidad de tener nuestra lista de favoritos. Tiene una versión gratuita, pero la versión PRO es muy econmica (1,79€)
  • PocketGrib: Esta app hace posible visualizar todos los datos meteorológicos en una previsión de hasta ocho días, con un elevado nivel de acierto en las previsiones de viento.Basada en su hermano mayor diseñado para PC, uGRib (www.grib.us)  permite ver todos los datos meteorológicos con una previsión de hasta ocho días. Seleccionamos directamente en la pantalla la zona sobre la que queremos obtener la previsión, y nos muestra de forma gráfica las previsiones de viento con una alta precisión y un alto grado de acierto.Coste de unos 6€
  • WindGuru: Se trata de una aplicación muy conocida para los navegantes entre las aplicaciones náuticas, que nos muestra de forma gráfica y muy rápida las previsiones de viento y temperatura en la zona que seleccionemos, con un alto grado de fiabilidad. Coste :gratuito
  • Eltiempo.es: La conocida página de internet de Jose Antonio Maldonado tiene su APP, con una visualización panorámica, hora a hora, de vientos, oleajes y temperaturas en la zona de navegación que se seleccione, con unos datos gráficos de gran exactitud.
  • Rain Alarm: Mediante esta APP, pueden recibirse los avisos correspondientes mediante alertas, de aquellas lluvias que se acercan, con imágenes animadas sobre la meteorología a nivel mundial.

Aplicaciones náuticas de geolocalización

  • Boating, aplicación de Navionics, es la app náutica de cartografía más vendida en el mundo, y ofrece todas las posibilidades de planificar rutas con facilidad y comodidad, y en compatibilidad con Google Earth y otras aplicaciones de meteorología. Existe una versión HD con más funciones. Se puede usar sin conexión a internet, si previamente a descargado las cartas. Esta  versiones es gratuita

 

 

  • Navionics HD: Navionics es el software de cartografía más demandado y vendido en todo el mundo. Ha tenido una gran evolución desde su origen, permitiendo utilizar la tableta como un auténtico ploter, con las ventajas de poder moverlo por todo el barco e incluso planificar rutas o ver la información desde cualquier sitio. La versión HD tiene una precisión impresionante y se integra con Google Earth y con ficheros Grib de meteorología, además de información en tiempo real de servicios cercanos a nuestra ubicación (marinas, mecánicos, restaurantes…). Su uso es muy sencillo y no requiere nada más que instalar la App y comenzar a navegar. Puede trabajar sin conexión a internet, cargando previamente las cartas.

    Con la compra inicial de la licencia(50€) , el usuario tiene derecho a actualizar continuamente las versiones del programa y las cartas náuticas.

  • Google Earth: La aplicación del gigante de las búsquedas en Internet no puede faltar. Con toda precisión se puede visualizar la ruta a seguir, así como fotos precisas del lugar. Algunas de las demás App se integran con Google earth. No puede faltar.

  • Gabenative es otra aplicación náutica que muchos aficionados a la navegación suelen tener instalada, y es realmente útil para ayudarnos a situar en el medio del mar.

Instrumentación 

 

  • Polaris Navegación GPS Convierte un teléfono en un potente sistema de navegación GPS de uso general con Polaris Navigation GPS. Utilizado principalmente como una aplicación de GPS de náutica y rastro, Polaris es un excelente respaldo o reemplazo para su Garmin u otra unidad GPS portátil de navegación por satélite!polarid.png
  •  Antigarreo, una herramienta para ayudarnos en el fondeo,una de las variables que más influye en la serenidad del barco es el garreo. Con esta aplicación, el navegante recibirá las alertas necesarias para que la embarcación no salga de su espacio de borneo.
  • Bearing Pilot: Se trata de una aplicación para evitar las demoras en la navegación, prever rumbos y eliminar el riesgo de colisiones, cálculos de rumbos de viento, mantenimiento de la dirección, etc. Una nueva herramienta dirigida tanto a navegantes principiantes como a los más profesionales, su extremada sencillez nos permitirá tomar marcaciones de forma rápida, mostrándonos en su interfaz gráfica la dirección de la demora que hemos tomado, el ángulo respecto a nuestro rumbo y también nos indicará hacia que banda debemos caer para poner proa a dicha demora.Tiene un coste de 7€mar.png
  • Vaavud: Este app usa un dispositivo de plástico  resistente al agua, polvo y a la arena. Se conecta al jack de sonido para medir la velocidad del viento de una forma precisa en todas las direcciones, promedios, velocidades actuales, etc. Vaavud se compra por internet directamente en la página del fabricante (vaavud.com) por unos 40€. Permite medir de forma muy precisa y fiable la velocidad del viento en cualquier dirección, convirtiendo nuestro dispositivo iPhone o Android en una pequeña estación meteorológica.Además, utilizando la App gratuita de Vaavud, podemos ver las mediciones de la velocidad del viento de otros usuarios registrados en otras ubicaciones.El dispositivo puede medir con precisión la velocidad del viento en un rango de 1 m/s hasta 25 m/s, y ha sido probado y calibrado profesionalmente en un túnel de viento en la Universidad Técnica de Dinamarca.
  • NMEA Remote:  Esta App funciona a través de un módem wifi puerto serie que hay que instalar previamente, y actúa como un repetidor de datos de la embarcación.

 

Otras aplicaciones 

  •  Marinus Ripa: Marinus Ripa aporta el Reglamento Internacional de Prevención de Abordajes, una actualización permanente, y toda la información básica de seguridad que un buen navegante debe conocer. Además, se puede obtener también una versión en iBook para iPad en formato libro de alta definición.
  • MoonPreview: Con esta app es posible conocer el ciclo lunar y el estado de la luna la noche que está planificado el fondeo de la embarcación. Ideal para viajes de recreo y contemplación de la cúpula celeste.
  • Useful knots:  Para cada necesidad hay una variedad de nudo distinta. Esta App nos enseña y recuerda, paso a paso, la correcta forma de realizar hasta cien nudos diferentes, según sus tipos y utilidades. Hay una versión de pago, con alta definición, pero también otra gratuita.

 

Sin duda existen un numero enorme de apps imposibles en numerar en este post,pero si hay alguna app para la plataforma Android que sea interesante y no este en este post nos gustaría compartirla con el resto de la comunidad de soloelectronicos.

 

Como detectar la combinación de colores de una tira de leds WS2801


Ambilight es una tecnología diseñada para mejorar la experiencia visual  analizando las señales entrantes y produciendo una  luz lateral ambiental adecuada al contenido que se está visualizando en la pantalla un resultado bastante atractivo , el cual  además de la sensación de estar viendo una pantalla aun mayor.Hasta hace muy poco este efecto solo se podía conseguir si comprábamos un TV que contara con ese sistema y no había otra opción, pero recientemente  con la aparición de placas con suficiente capacidad computacional, se puede emular gracias al software de Hyperion ejecutándose en una Raspberry Pi conectado a  una tira de leds WS2801. A pesar de que este tipo de tiras usan el mismo chip no todas usan la misma secuencia de color ,lo cual se traduce que si la conectamos a una Raspberry Pi y no ajustamos este parámetro el efecto no sera tan realista pues el software cambiara  colores..

 

 

tira de leds.png

 

Las tiras de  leds   RGB   direccionables   basadas en el chip  ws2801 (LEDs WS2801) son las mas habituales para todo  tipo de montajes   donde se requiera direccionar un conjunto de leds RGB  con muy  pocos hilos , los cuales en el caso del WS2801  son unicamente dos : la señal de reloj y la linea de datos, ademas claro de la alimentación que es de 5V DC.

Existen tiras basadas en el chips WS2801   en formato “luces de navidad” con cables físicos que van uniendo cada  plaquita compuesta por el propio chip ws2801 ,el led RGB  y por supuesto la electronica asociada, pero lo mas habitual, es adquirir  el conjunto  en forma de cinta autoadhesiva unos circuitos a continuación de otros . Por ejemplo ,   esta  ( que puede comprarse en Amazon por menos de 27€). Una peculiaridad  de esta tiras  ws2801,es que se pueden cortar según la longitud que se requieran , así como además que también es posible ampliarlas gracias a  los conectores que llevan en cada extremo, pudiendo  unirse  entre ellas hasta donde se necesite.

Un aspecto importante es  que para alimentar dicha tiras  también  necesitaremos aparte  una fuente de alimentación  dimensionada para el números de leds que vayamos a adquirir ( por ejemplo para 50 leds  puede ser una fuente de  5v y 2A )

Aunque para emular el efecto ambilight  lo mas habitual es usar una Raspberry Pi   (como vimos  en este post ) es posible que el efecto producido no sea satisfactorio  básicamente porque la configuración por defecto de nuestra tira de leds  no sea la de la configuración “normal “ que es la combinación RGB

Para averiguar que combinación RGB  es la  usada en nuestra tira de leds,lo mejor es que  conectemos  esta a una placa  Arduino UNO   o similar  (si no tenemos ninguna   puede adquirirse en Amazon por menos de 10€ )ws2801

 

Normalmente un led  WS2801  ,  solo 4 tiene  conexiones  , que a efectos de pruebas(máximo 2 leds)   podemos hacerlo así:

  • El cable VERDE proveniente del pin SD de la tira de leds al pin 11 del Arduino Uno.
  • El cable ROJO proveniente del pin CK  de al tira de leds al  pin 13 del Arduino Uno.
  • El cable NEGRO proveniente del pin  GND de la tira de leds al pin GND del Arduino Uno.
  • El cable AZUL proveniente del pin +5V de al tira de leds lo conectaremos a la  conexión +5v de Arduino

Es decir la forma de conectar uno  o dos leds WS2801  a  un Arduino  seria según el siguiente esquema :

leds arduino

Destacamos que el circuito que proponemos es para testar  uno o dos leds RGB del tipo WS2801   pues normalmente  la tira de  verios LEDs deben ser alimentados externamente fuera de la linea de +5V de  Arduino 5V,  pues de no hacerlo podrían estropear el regulador de la placa a qu ese conecte ,  a menos que solo vayamos a probar uno  o a lo sumo dos leds   donde si podremos conectar directamente a los 5v de nuestro Arduino  al igual  que la masa o  tierra que también conectaremos  a  la masa de Arduino.

 PRUEBA  DE  UNA TIRA DE LEDS DE MAS DE DOS LEDS 

En caso de no disponer de un led individal  NO debemos  realizar el esquema anterior pues podríamos quemar  nuestro Arduino, en lugar  de esto, conectaremos la tira de leds  por un lado a una fuente de 5V /2amp .  y por el otro a Arduino , por uno de los extremos segun el esquema habitual:

 

arduino.png

Como  hemos comentado en este blog ,en el caso de usar una tira de leds  hemos de tener cuidado ya que se conecta los tres hilos a Arduino  en uno de los extremos de la tira de leds  (el lado izquierdo de la tira ) .Como en cada extremo quedan sueltos los cables opuestos (normalmente el cable rojo es el positivo y el azul el negativo) conectaremos estos  también  para dar la alimentación a  la tira de  leds ( aunque también se podría hace  por las conexiones de la tira que también den energía  ya que llevan 5V  en una las 4 conexiones ).

 SOFTWARE EN EL ARDUINO

Para probar la combinacion RGB   conectaremos un modudo a  un   Arduino    el cual   ademas  hará de “puente” entre el ordenador host y la tira basado en WS2801 . Los datos de LED se transmiten, y  no se almacenan en búfer, lo que significa que si  hay mas código en Arduino  podrían generar demoras debido a la RAM limitada del Arduino,pero no obstante el algoritmo ejerce cierto esfuerzo para evitar las pérdidas de buffer

 El protocolo de cierre WS2801, basado en retardo, podría desencadenarse inadvertidamente si el bus USB o la CPU  está desbordada con otras tareas. Este código almacena datos entrantes en serie e introduce pausas intencionadas si hay una amenaza del buffer  lleno prematuro.

El costo de esta complejidad es algo que  reduce el rendimiento, pero la ganancia es muy buena  evitando  la mayoría de los fallos visuales  incluso aunque finalmente una función de carga en el bus USB y  host CPU, quede  fuera de  control.

Si no lo tenemos, descargaremos el software de arduino (Página oficial de arduino) y lo instalamos.

Conectamos el arduino uno a nuestro pc con el cable usb. Si pide los drivers, se pueden encontrarlo en la carpeta arduino-1.0.4\drivers.

Descargaremos  esta biblioteca:fastled biblioteca descarga, la cual  importaremos  al Arduino IDE.

Ahora toca cargar el sketch para lo cual  descaremos el código Adalight para las luces  aqui 

Descomprimiremos el archivo y  añadimos los archivos que acabamos de descargar en la carptea Mis documentos/ Arduino  y ng

Arrancaremos el software de arduino y  configuramos en el ide la placa Arduino en Herramientas –>Placa Arduino Uno ( o la placa que tengamos)   sin  olvidar el puerto de comunicaciones

Iremos a  File> Sketchbook> Arduino> Adalight  y uan vez cargado el sketch debemos ajustar el numero de leds  (podemos el numero de leds para este test) que  tengamos en la instalación  así como la velocidad máxima (500000 )

 #define NUM_LEDS 88 // Max LED count
#define LED_PIN 11 // arduino output pin – probably not required for WS2801
#define GROUND_PIN 10 // probably not required for WS2801
#define BRIGHTNESS 255 // maximum brightness
#define SPEED 500000 // virtual serial port speed, must be the same in boblight_config

Ahora ya podemos   compilar el software( botón primero que  pone un v de verificar).

adalight.PNG

Si no ha habido errores ahora podemos subir  el sw pulsando el botón de Upload( flechita a la derecha  en el software de Arduino.

Al contrario de lo que sucede  con el sketch LedlIght donde se iluminan las luces  de 3 colores rojo, verde y azul si todo ha ido bien, si tenemos conectadas los leds al arduino y a la fuente externa, cuando carguemos este  código dentro del Arduino solo lucirá el primer led de la cadena lo cual significará que estamos en buen camino.

IMG_20170221_170329.jpg

El código dentro de Arduino es no volátil, así que no se borrará aunque desconecte la tarjeta.

Sw en el PC

Una vez tenemos el sw de Adalight en un Arduino, toca instalar  el programa de captura que  envíe las señales correspondiente a nuestro Arduino

Entre los programas de captura  ambibox es el mejor especialmente con  windows 10, ya que no solo  tiene la capacidad para capturar su escritorio  sino de poner un fondo personalizable, convertir la tira en luces psicodelicas en función del audio,fondo variable automático ,plugins, etc

Se  puede encontrar aqui, tanto el software como el add-on para XBMC.

Una vez   descargado , durante la instalación se puede seleccionar  la opción de instalación completa ,marcando ademas la opción de descarga e instalación de playclaw.

Empezamos la configuración, pulsamos sobre el botón de mas ajustes :

more

En la parte inferior ,como vemos seleccionaremos como Device  Adalight , elegiremos  el puerto de comunicaciones ( el mismo al que este conectado el Arduino) y en el numero de zonas, coloremos  el numero de leds total que tengamos instalados ( en el ejemplo 88).

ORDEN DE LA SECUENCIA DE COLORES

Necesitamos averiguar  el  orden de colores, lo cual podemos probar   fijando un color mediante el selector de Mode  ( Static Background ), pinchando en el color ( aparecerá la paleta), pulsando en el check de Use backlight  (para activar el encendido de la tira al color seleccioando )  y finalmente  seleccionando en el combo order of colors la combinacion adecuada a la tira(o muestra )  que tengamos  :

 

combinaciones

En order of colors hay 6 opciones  posibles : RGB,RBG ,BRG ,BGR,GRB y  GBR  ,de la cual  debemos ir seleccionando  una  a una y pinchando en la paleta de colores   un numero de colores significativos  hasta que el color de los leds sea similar al de paleta y esa sera la combinación de orden de leds de nuestra tira .

Si no deseamos probar toda la paleta de colores , una idea es utilizar los colores primarios (rojo,verde  y azul ) para comprobar si se corresponde el color de la paleta seleccionada con la combinación de leds iluminada .

En el ejemplo anterior podemos ver como la combinación verde seleccionada  se corresponde con los leds iluminados en verde:

IMG_20170507_090930

Una combinación  muy habitual, por extraño que parezca, para muchas tiras de leds económicas   es  BGR

Una vez que ya sabemos cual es una la combinación correcta  de su tira de leds WS2801, si la va a usar en una Raspberry Pi    con el software de Hyperion,  si tiene configurado   el fichero de configuración hyperion.config.json hay que modificarlo  y copiarlo  en la Raspberry PI en el directorio /storage/.config     (   no confundir  con  la ruta /storage/hyperion/configuration/)

hyperion .

 

Lo que debemos modificar  en el hyperion.config.json  es parte primaria sobre la cabecera “device”  cuya configuración 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’: Es aqui el parametro qeu nos interesa  pues especifica 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  :

“device”: {
“colorOrder”: “bgr”,
“rate”: 500000,
“type”: “ws2801”,
“name”: “MyPi”,
“output”: “/dev/spidev0.0”
},

Ademas de cmbiar  el orden de colores  tambien 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
}
}
],

Ttambien podemos cambiar la configuración para cada led individual. En eta parte se especifica el á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 }
}
],

 

Por ultimo , tambien podemos tocar la  configuración del motor de efectos, el cual 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  :

“effects”: {
“paths”: [
“/storage/hyperion/effects”
]
},

 

Una vez copiado el fichero  hyperion.config.json en storage/.config reinicie la RPI y si todo ha ido bien debería ver un efecto de arcoiris y las luces deberían ser coherentes con los colores que precise reproducir el sw de hyperion

Como descargar trascripciones de videos de youtube


En YouTube puede encontrar todo tipo de vídeos como películas, series, tutoriales, vídeos musicales, etc donde algunos  tienen subtítulos incrustados que forman parte del mismo vídeo, mientras que otros tienen subtítulos están separados del mismo.

Los subtítulos incrustados no pueden ser descargados de forma directa , pero puede utilizar un servicio en línea, como, para descargar los subtítulos que no están incrustados.

 

En realidad  descargar los subtítulos no incrustados de un vídeo de YouTube con servicos web es muy sencillo

  1. Copie la url del enlace del vídeo de YouTube,
  2. Entre en  http://www.lilsubs.com/                                                                                      
  3. Pegue la URL en el campo correspondiente.
  4. Haga clic en Download y seleccione el idioma en que quiera descargar los subtítulos
  5. Elija la carpeta donde desee almacenar el archivo SRT y haga clic en Guardar.

 

Los archivos srt son ficheros de texto que contienen los subtítulos asociados a un video. Utilizan el formato subrip, en el que se almacena esta información:

  •  Intervalo de tiempo en el que aparece
  • Texto del subtítulo

Al tratarse de archivos de texto hay que tener en cuenta su codificación, que en muchos casos el reproductor no escoge la correcta. Seleccionando la que se ajuste a nuestro idioma se pueden evitar problemas con acentos y símbolos.

• 00:01:02,383 –> 00:01:05,133
• “Campos de Opio, Tíbet”
• 2
• 00:02:21,960 –> 00:02:25,735
• Tú y tus hermanos habéis asesinado a 3 de nuestros hombres.
• 3
• 00:02:25,800 –> 00:02:27,327

 

Es obvio que al ser ficheros de texto podemos manipularlos  eliminando  por ejemplo  todas las cifras   y luego  juntando los textos, pero esto conlleva mucho tiempo  de trabajo que en realidad como vamos a ver  podemos automatizar

A continuación vamos a ver tres herramientas para  gestionar  estos archivos de una forma mas sencillas:

 

 

Usar  una app para convertir un archivo .srt en texto limpio 

Subtitle Edit es una de  las mejores opciones pues vale para todos los archivos y respeta los números.

 

Los  pasos para su uso son muy sencillos

  • Descargue Subtitle Edit
  • Abra un archivo .srt.
  • Pinche en la pestaña ‘Source view’,
  • Vaya al desplegable ‘Format’ escoja ‘Scenarist’ (.txt).

 

  • Así ordenamos por columnas separadas los tiempos y textos. Ahora dale a ‘File > Save as…’ para guardar el archivo .txt.

 

  • Abra el archivo .txt,
  • Copia todo el contenido y péguelo en Excel. Como verás tendrá varias columnas, elimina las primeras (referentes a los tiempos) para quedarse sólo con el contenido.

 

  • Copie el contenido y pégelo en la barra de búsqueda de un navegador para que se ponga el texto de corrido. Cópialo de nuevo y pégalo en un documento para comprobar que está bien.

 

Convertir un archivo .srt en texto limpio directamente con Excel

Este metodo  funciona cuando sólo hay una línea de diálogo por separado.

Puede abrir el .srt con el Bloc de notas, copiar el contenido y pegarlo en Excel, eliminando las filas de información numérica para seleccionarlo todo y pegarlo en un documento aunque es más fácil si  descarga Asap Utilities.

Seleccione las celdas, pinche en este plugin cuando lo instale y dale a ‘Columnas y filas > Selección condicional de fila y columna…’.

En ‘4. Opciones de búsqueda’ elija ‘par filas’ y dele a ‘Aceptar’ para eliminar las filas de los tiempos.

El Excel se quedará como el que se muestra aquí. Selecciona ahora ‘impar filas’ para quitar los números.

Cuando lo haga, dele a ‘Cerrar’. Tendrá ahora sólo el texto pero con muchos saltos de línea. Cópielos y péguelos en la barra de búsqueda de un navegador para que se ponga seguido.

Cópielo de nuevo y péguelo en un documento para comprobar que está bien.

Convertir un archivo .srt en texto limpio con Word

Este método tiene el inconveniente de que se borrarán los números, pero  vale para cualquier .srt.

Abra el archivo captions.srt con Word (o si no te funciona con el Bloc de notas y copies el texto) y deje el puntero al principio del texto.

Vaya a ‘Inicio > Reemplazar’ (o presiona ‘CTRL+B’) y en el desplegable de la lupa escoge ‘Reemplazar’.

Escriba el número 0 en el campo ‘Buscar’, deje vacío el campo ‘Reemplazar’ y presione ‘Remplazar todos’. Luego el número 1 y así hasta el 9. Esto eliminará todos los números.

Copie los símbolos que queden (por ejemplo ::, –> ::,) en ‘Buscar’, deje vacío el campo ‘Reemplazar’ y presione ‘Remplazar todos’. Con esto tendremos sólo letras.

Escriba ^p en ‘Buscar’, deje un espacio en blanco en el campo ‘Reemplazar’ y presione ‘Remplazar todos’. Así sustituirnos los saltos de línea y el texto quedará de corrido.

Si quedan espacios en blanco sustituirlos, copiándolos en ‘Buscar’ y dejando sólo un espacio en ‘Reemplazar’.

Plataforma de sensores e-Health V1.0 para Arduino y Raspberry Pi [aplicaciones biométricas / medicina]


En agosto de 2013 Cooking Hacks lanzó la nueva versión del primer escudo biométrica para Arduino y Raspberry Pi: la plataforma  e-Health Sensor. Gracias a la retroalimentación de la comunidad y varios proyectos que han sido creados con esta, han mejorado la plataforma de e-Health con nuevas características tales como:

  • Nuevo sensor de músculo
  • Sensor de presión de la sangre nueva
  • Glucómetro actualizado
  • Nuevas posibilidades de conexión

En este post  vamos a explicar cómo trabajar cplataforma  e-Health Sensor.V2.0.

E-Health Sensor Shield V2.0 permite a los usuarios de Arduino y Raspberry Pi realizar aplicaciones biométricas y médicas donde la supervisión del cuerpo sea necesaria mediante el uso de 10 sensores diferentes: pulso, oxígeno en sangre (SPO2), flujo de aire (respiración), temperatura corporal, Electrocardiograma (ECG), glucómetro, respuesta galvánica de la piel (GSR – sudoración), presión arterial (esfigmomanómetro), posición del paciente (acelerómetro) y sensor de músculo/eletromyography (EMG).

Esta información puede utilizarse para monitorizar en tiempo real el estado de un paciente o para obtener datos sensibles para ser analizados posteriormente para el diagnóstico médico. La información biométrica obtenida puede enviarse sin cables usando cualquiera de las 6 opciones de conectividad: Wi-Fi, 3 G, GPRS, Bluetooth, 802.15.4 y ZigBee dependiendo de la aplicación.

Si para  el diagnóstico de la imagen en tiempo real es necesaria una cámara puede conectarse el módulo 3G para enviar fotos y videos del paciente a un centro de diagnóstico médico.

Los datos pueden enviarse a la nube para almacenamiento permanente o visualizarlos en tiempo real enviando los datos directamente a un ordenador portátil o Smartphone. También  hay desarrollado  varias aplicaciones iPhone y Android  para poder ver fácilmente la información del paciente.

La privacidad es uno de los puntos clave en este tipo de aplicaciones. Por esta razón, la plataforma incluye varios niveles de seguridad:

    • En la capa de enlace de comunicación: AES 128 para 802.14.5 / ZigBee y WPA2 para Wifi.
    • En la capa de aplicación: mediante el protocolo HTTPS (seguro) nos aseguramos de un túnel de seguridad de punto a punto entre cada nodo de sensor y el servidor web (este es el mismo método utilizado en las transferencias bancarias).

e-Health protector del Sensor sobre Arduino (izquierda) frambuesa Pi (derecha)

Importante: La plataforma de e-Health Sensor ha sido diseñada por Cooking Hacks (la división de hardware abierto de Libelium) para ayudar a los investigadores, desarrolladores y artistas para medir datos de sensor biométrico para fines de experimentación, diversión y prueba proporcionando una alternativa barata y abierta en comparación con las soluciones propietarias  debido al precio prohibitivo de llas profesionales usadas por el  mercado médico. Precisamente por esta razon, como la plataforma no tiene certificaciones médicas no puede  ser utilizada para monitorizar pacientes críticos que necesitan un control médico preciso o aquellos cuyas condiciones deben medirse con precisión para un diagnóstico profesional ulterior.
Gracias a la comunidad Arduino y Raspberry  Pi ,es  posible  una rápida prueba de concepto y servir de  base de una nueva era de productos médicos de código abierto.

El paquete que vamos a utilizar en este tutorial se basa en la plataforma de Sensor de eHealth de Cooking Hacks. La E-Health protector del Sensor es totalmente compatible con las nuevas y viejas versiones de Arduino USB, Duemilanove y Mega y Rsapberry.

  • 8 sensores médicos no invasiva + 1 invasoras
  • Almacenamiento y uso de las mediciones de glucosa.
  • Monitoreo de señales ECG.
  • Señales de monitorización EMG.
  • Control de flujo de aire del paciente.
  • Control de flujo de aire del paciente.
  • Datos de la temperatura del cuerpo.
  • Medidas de respuesta galvánica de la piel.
  • Detección de la posición del cuerpo.
  • Funciones de pulso y oxígeno.
  • Dispositivo de control de la presión arterial.
  • Múltiples sistemas de visualización de datos.
  • Compatible con todos dispositivos UART.

Características eléctricas:

La placa puede ser alimentada por el PC o por una fuente externa. Algunos de los puertos USB en los ordenadores no son capaces de dar toda la corriente para que el módulo pueda  trabajar, si el módulo tiene problemas cuando funcione, se puede utilizar una fuente externa (12V – 2A) en el Arduino/RasberryPi

El escudo

 

Escudo de e-Health sobre Raspberry Pi

Para conectar el protector del Sensor e-Health para Raspberry Pi es necesario un  adaptador que haga de puente de conexión .

La idea detrás del  puente de conexión Arduino shields es permitir utilizar cualquiera de los escudos, placas y módulos diseñados para Arduino en Raspberry Pi. También incluye la posibilidad de conectar sensores analógicos y digitales, utilizando el mismo pinout de Arduino pero con la potencia y capacidades de Raspberry Pi

La conexión puente es compatible con Raspberry Pi, Raspberry Pi (modelo B +), Raspberry Pi 2 y el Raspberry Pi 3.

Para hacer completa la compatibilidad han creado la biblioteca de arduPi que permite el uso de frambuesa con el mismo código utilizado en Arduino. Para ello, han implementado funciones de conversión de modo que usted puede controlar de la misma manera como en Arduino la entrada-salida interfaces: i2C, SPI, UART, analógica, digital, en Raspberry Pi.

Vamos a resumir lo que podemos hacer con este escudo junto con la biblioteca de arduPi:

ADVERTENCIAS:

  • Los módulos LCD, esfigmomanómetro y comunicación utilizan el puerto UART y no pueden trabajar al mismo tiempo.
  • El glucómetro es ahora compatible con otros dispositivos UART y tiene su propio conector. Pero no puede trabajar con el esfigmomanómetro conectado.
  • El sensor de EMG y el ECG no pueden trabajar al mismo tiempo. Utilizar los puentes integrados en el tablero para utilizar uno u otro
  • Para utilizar el sensor de EMG, usted tiene que tener los puentes en la posición de EMG. Para utilizar el sensor de ECG, usted tiene que tener los puentes en la configuración de ECG.

El escudo

Versión 2 del escudo:

  • Esta versión incluye un conmutador Digital para activar/desactivar la toma de corriente para módulos inalámbricos usando GPIO23 (Digital Pin 3).

Versión 1 del escudo:

  • 8 pines digitales.
  • Conector para módulos inalámbricos.
  • Pernos de RX/TX.
  • pasadores de i2C (SDA, SCL).
  • Pasadores de SPI (SCK MISO, MOSI, CS). Puede utilizarse también como GPIO.
  • 8 canales convertidor analógico a digital.
  • Interruptor para activar la fuente de alimentación externa.

 La biblioteca: arduPi

arduPi es una librería C++ que permite escribir programas para Raspberry Pi como si estuvieras escribiendo un programa de arduino. Todas las funciones para el control de comunicaciones del puerto serie, i2C, SPI y GPIO pins están disponibles mediante la sintaxis de arduino.

arduPi ha sido probado en una distribución Raspbian. Para grabar una imagen de Raspbian a la tarjeta SD se pueden descargar los NOOBS aquí y siga estas instrucciones.

Una vez instalado Raspbian, descargue e instale arduPi biblioteca en una carpeta nueva, por ejemplo: “página de inicio/pi/ardupi”

Para Rasberry Pi:

wget http://www.cooking-hacks.com/media/cooking/images/documentation/raspberry_arduino_shield/raspberrypi.zip && unzip raspberrypi.zip && cd cooking/arduPi && chmod +x install_arduPi && ./install_arduPi && rm install_arduPi && cd ../..
Para Raspberry Pi 2 y 3:
wget http://www.cooking-hacks.com/media/cooking/images/documentation/raspberry_arduino_shield/raspberrypi2.zip && unzip raspberrypi2.zip && cd cooking/arduPi && chmod +x install_arduPi && ./install_arduPi && rm install_arduPi && cd ../..

Descargar arduPi biblioteca para Raspberry Pi

Descargar biblioteca de arduPi de frambuesa Pi 2 y 3

Usted puede encontrar una biblioteca de cambios aquí.

Funciones generales de Arduino:

  • Delay()
  • delayMicroseconds()
  • Millis()
  • pinMode()
  • digitalWrite()
  • digitalRead()
  • analogRead() (en pines de A0 a A7. Ejemplo: analogRead(5) leerá A5)
  • shiftIn()
  • shiftOut()
  • attachInterrupt() *
  • detachInterrupt()

[*] Podemos detectar interrumpe el ascenso y descenso. Cualquier pin digital (de 2 a 13) puede ser utilizado en attachInterrupt(). Por ejemplo, si queremos estar al tanto de eventos de levantamiento en el pin 6 que podemos hacer attachInterrupt(6,function_to_call,RISING).

Biblioteca  serie:

  • available()
  • begin()
  • end()
  • Flush()
  • Peek()
  • Print()
  • println()
  • Read()
  • readBytes()
  • readBytesUntil()
  • Find()
  • findUntil()
  • parseInt()
  • parseFloat()
  • setTimeout()
  • Write()

Biblioteca wire:

  • begin()
  • requestFrom()
  • beginTransmission()
  • endTransmission()
  • Write()
  • Read()

Biblioteca SPI:

  • begin()
  • end()
  • setBitOrder()
  • setClockDivider()
  • setDataMode()
  • Transfer()

Uso de la biblioteca arduPi:

En la carpeta de biblioteca encontrarás 3 archivos: arduPi.cpp, arduPi.h y arduPi_template.cpp
el archivo arduPi_template.cpp está destinado a ser utilizado como punto de partida para crear programas con el mismo comportamiento como un programa de arduino.

Aquí puede ver el código de plantilla:

//Include arduPi library
    #include "arduPi.h"

    /*********************************************************
     *  IF YOUR ARDUINO CODE HAS OTHER FUNCTIONS APART FROM  *
     *  setup() AND loop() YOU MUST DECLARE THEM HERE        *
     * *******************************************************/

    /**************************
     * YOUR ARDUINO CODE HERE *
     * ************************/

    int main (){
        setup();
        while(1){
            loop();
        }
        return (0);
    }

Como se puede ver en la función main() la función setup() es llamada una vez y luego la función loop() se llama contínuamente hasta que el programa se ve obligado a terminar.

Ya sea si están empezando a escribir un nuevo programa, o si usted tiene un programa de arduino escrito que utiliza las funciones portadas puede utilizar la plantilla (ardupi_template.cpp) y poner el código de arduino donde dice: el código de ARDUINO aquí. Recuerde que el programa que está escribiendo un programa C++ para que todas las bibliotecas de C++ pueden utilizarse.

También recordar, como se puede leer en la plantilla que si el código de arduino utiliza otras funciones setup() y loop() debe declararlos en el área indicada.

 Habilitación de Interfaces:

Los siguientes pasos han sido probados con Raspbian Jessie: 4.4.9 (Linux versión 4.4.9-v7+ ([email protected]) (gcc versión 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #884 SMP el viernes 6 de mayo 17:28:59 BST 2016)

Raspberry Pi 2:

  • Abrir un terminal en la Raspberry Pi, o conecte al Raspberry Pi a través de SSH.
  • Abra el archivo /boot/config.txt: sudo nano /boot/config.txt
  • Agregue las líneas siguientes al archivo:
#enable uart interface
enable_uart=1

#enable spi interface
dtparam=spi=on

#enable i2c interface
dtparam=i2c_arm=on
  • Presione CTRL + X para salir y guardar el archivo.
  • Actualizar el sistema operativo con los últimos parches.
sudo apt-get update
sudo apt-get upgrade
  • Reiniciar la Raspberry Pi.
sudo reboot

Raspberry Pi 3:

  • Abrir un terminal en la Raspberry Pi, o conecte al Raspberry Pi a través de SSH.
  • Abra el /boot/config.txt archivo <:sudo nano /boot/config.txt
  • Agregue las líneas siguientes al archivo:
#map mini-UART to internal bluetooth an free-up main UART to handle CookingHacks modules
dtoverlay=pi3-miniuart-bt

#enable uart interface
enable_uart=1

#enable spi interface
dtparam=spi=on

#enable i2c interface
dtparam=i2c_arm=on
  •  Presione CTRL + X para salir y guardar el archivo.
  • Abra el archivo /boot/cmdline.txt:sudo nano /boot/cmdline.txt
  • Este archivo contiene algo similar a esto (el contenido puede variar):
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
  • Eliminar los parámetros que hacen referencia al puerto serie UART (ttyAMA0):
dwc_otg.lpm_enable=0  console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait ip=192.168.1.160:::255.255.255.0
  • Presione CTRL + X para salir y guardar el archivo.
  • Actualizar el sistema operativo con los últimos parches.
sudo apt-get update
sudo apt-get upgrade
  • Reiniciar la Raspberry Pi.
sudo reboot
    

Ejecución de su programa

Para ejecutar el programa debe tener los permisos adecuados para utilizar GPIO (/ dev/mem debe accederse en la frambuesa). Puede ejecutar el programa con sudo:

sudo ./MY_PROGRAM

 Circuitos básicos.

ADVERTENCIA: los niveles de voltaje GPIO 3.3 V y no 5 V tolerantes. No hay ninguna protección de sobretensión en el tablero. Entradas digitales utilizan un nivel de lógica de 3V3 y no son tolerantes de niveles 5V, como se podría encontrar en un Arduino 5V alimentado.Tenga extrema precaución cuando trabaje con GPIO, puede dañar su Raspberry Pi, su equipo y potencialmente a sí mismo y otros. Si lo hace es bajo su propio riesgo!

4.1 GPIO de entrada

Periféricos GPIO varían bastante. En algunos casos, son muy simples, por ejemplo un grupo de pines pueden activarse como un grupo a la entrada o salida. Los voltajes de entrada y de salida son por lo general limitado a la   tensión de alimentación del dispositivo con los GPIOs por lo que pueden resultar dañados por una mayor tensión.

Algunos GPIOs tienen 5 entradas tolerantes V: incluso en los voltajes de la fuente baja, el dispositivo puede aceptar 5V sin daño.

Para Raspberry Pi, presentamos un ejemplo de cómo adaptar el nivel de voltaje de una medida de sensor de 5V para evitar posibles daños.

Componentes para este ejemplos y circuito de adaptación de tensión pueden fundados en el Starter Kit para Raspberry Pi.

Cuando un pin GPIO se configura como una entrada con un ejemplo de botón básico, podemos tener estos problemas de incompatibilidad de voltajes.

Este circuito es malo porque cuando usted presiona el botón de la entrada GPIO está conectada a 5 voltios, por lo tanto nuestro dispositivo puede dañarse.

Sin embargo, esto puede evitarse utilizando simplemente una resistencia en el cable del pulsador. El valor de la resistencia se determina por la corriente de la salida de los pines GPIO (la corriente por el circuito solía para leer el pin) y la cantidad de caída de voltaje que crea como resultado de ello. Con el resistor de 5K se obtiene 3, 3V en lo GPIO de entrada.

Vgpio = 5V· (10K/(10K+5K)) = 3, 3V

 medición del Sensor GPIO

Tenemos el mismo problema si utilizamos un sensor funcionando a 5 voltios.

Aquí está un ejemplo usando un sensor PIR.

Como se muestra en la imagen, utilizamos el mismo divisor resistivo utilizado para adaptar el nivel de tensión.

 ADC.

El escudo incluye a un ADC de 12b de la resolución que permite para conectar cualquier sensor a frambuesa con mayor precisión que Arduino. La comunicación entre la Raspberry Pi  y el ADC del escudo se realiza vía i2C.

La información de cada canal se puede obtener dos bytes de lectura de i2C, pero previamente un byte (que corresponde a la dirección de canal) debe enviar a través de i2C dependiendo del canal que queremos seleccionar. Aquí está una lista con las direcciones de canal:

Canal Dirección
0 0xDC
1 0x9C
2 0xCC
3 0x8C
4 0xAC
5 0xEC
6 0xBC
7 0xFC

Veremos un ejemplo de un programa que lee cada canal continuamente esperando 5 segundos entre repeticiones.

Con un cable de conexión el pin de 5V con algunos de los pines del ADC un valor cerca de 5.000000 debe leerse.

Todos los ejemplos en esta guía utilizan la biblioteca arduPi

//Include arduPi library 
#include "arduPi.h" 

char selected_channel[1];
char read_values[4];

int channel_0 = 0; 
int channel_1 = 0; 
int channel_2 = 0; 
int channel_3 = 0; 
int channel_4 = 0; 
int channel_5 = 0; 
int channel_6 = 0; 
int channel_7 = 0; 

float analog_0 = 0.0; 
float analog_1 = 0.0; 
float analog_2 = 0.0; 
float analog_3 = 0.0; 
float analog_4 = 0.0; 
float analog_5 = 0.0; 
float analog_6 = 0.0; 
float analog_7 = 0.0; 

void setup() 
{ 
  Wire.begin(); // join i2C bus (address optional for master) 
} 

void loop() 
{ 
  // channel 0 
  Wire.beginTransmission(8); 
  selected_channel[0] = 0xDC;
  Wire.read_rs(selected_channel, read_values, 2);
  Wire.read_rs(selected_channel, read_values, 2);
  channel_0 = int(read_values[0])*16 + int(read_values[1]>>4); 
  analog_0 = channel_0 * 5.0 / 4095.0;
  printf("Channel 0:\n");
  printf("Digital value = %d / Analog value = %fV\n\n", channel_0, analog_0); 


  // channel 1 
  Wire.beginTransmission(8); 
  selected_channel[0] = 0x9C;
  Wire.read_rs(selected_channel, read_values, 2);
  Wire.read_rs(selected_channel, read_values, 2);
  channel_1 = int(read_values[0])*16 + int(read_values[1]>>4); 
  analog_1 = channel_1 * 5.0 / 4095.0;
  printf("Channel 1:\n");
  printf("Digital value = %d / Analog value = %fV\n\n", channel_1, analog_1); 
  
 
  // channel 2 
  Wire.beginTransmission(8); 
  selected_channel[0] = 0xCC;
  Wire.read_rs(selected_channel, read_values, 2);
  Wire.read_rs(selected_channel, read_values, 2);
  channel_2 = int(read_values[0])*16 + int(read_values[1]>>4); 
  analog_2 = channel_2 * 5.0 / 4095.0;
  printf("Channel 2:\n");
  printf("Digital value = %d / Analog value = %fV\n\n", channel_2, analog_2); 
  
  
  // channel 3 
  Wire.beginTransmission(8); 
  selected_channel[0] = 0x8C;
  Wire.read_rs(selected_channel, read_values, 2);
  Wire.read_rs(selected_channel, read_values, 2);
  channel_3 = int(read_values[0])*16 + int(read_values[1]>>4); 
  analog_3 = channel_3 * 5.0 / 4095.0; 
  printf("Channel 3:\n");
  printf("Digital value = %d / Analog value = %fV\n\n", channel_3, analog_3); 
  
  
  // channel 4 
  Wire.beginTransmission(8); 
  selected_channel[0] = 0xAC;
  Wire.read_rs(selected_channel, read_values, 2);
  Wire.read_rs(selected_channel, read_values, 2);
  channel_4 = int(read_values[0])*16 + int(read_values[1]>>4); 
  analog_4 = channel_4 * 5.0 / 4095.0; 
  printf("Channel 4 (vertical header):\n");
  printf("Digital value = %d / Analog value = %fV\n\n", channel_4, analog_4); 
  
  
  // channel 5 
  Wire.beginTransmission(8); 
  selected_channel[0] = 0xEC;
  Wire.read_rs(selected_channel, read_values, 2);
  Wire.read_rs(selected_channel, read_values, 2);
  channel_5 = int(read_values[0])*16 + int(read_values[1]>>4); 
  analog_5 = channel_5 * 5.0 / 4095.0; 
  printf("Channel 5 (vertical header):\n");
  printf("Digital value = %d / Analog value = %fV\n\n", channel_5, analog_5); 
  
  
  // channel 6 
  Wire.beginTransmission(8); 
  selected_channel[0] = 0xBC;
  Wire.read_rs(selected_channel, read_values, 2);
  Wire.read_rs(selected_channel, read_values, 2);
  channel_6 = int(read_values[0])*16 + int(read_values[1]>>4); 
  analog_6 = channel_6 * 5.0 / 4095.0; 
  printf("Channel 6 (vertical header):\n");
  printf("Digital value = %d / Analog value = %fV\n\n", channel_6, analog_6); 
  
  
  // channel 7 
  Wire.beginTransmission(8); 
  selected_channel[0] = 0xFC;
  Wire.read_rs(selected_channel, read_values, 2);
  Wire.read_rs(selected_channel, read_values, 2);
  channel_7 = int(read_values[0])*16 + int(read_values[1]>>4); 
  analog_7 = channel_7 * 5.0 / 4095.0;
  printf("Channel 7 (vertical header):\n");
  printf("Digital value = %d / Analog value = %fV\n\n", channel_7, analog_7); 
  
  
  printf("***********************************\n"); 



  delay(1000); 

} 


int main (){ 
    setup(); 
    while(1){ 
        loop(); 
    } 
    return (0); 
}
                

Aquí está la salida de este programa que se conecta al pin de 5V de la Raspberry  Pia la entrada analógica 0:

UART.

Acceso al UART con arduPi biblioteca es tan simple como hacerlo con Arduino.

Necesita incluir arduPi.h en el código y crear una instancia de clase SerialPi nombrarlo serie.

Nombre de la instancia como serie le permite utilizar la sintaxis de arduino. (Todo esto está ya hecho si utilizas la plantilla proporcionada para crear sus programas).

Las funciones disponibles son:

  • Serial.Available()
  • Serial.Begin()
  • Serial.end()
  • Serial.Flush()
  • Serial.Peek()
  • Serial.Print()
  • Serial.println()
  • Serial.Read()
  • Serial.readBytes()
  • Serial.readBytesUntil()
  • Serial.Find()
  • Serial.findUntil()
  • Serial.parseInt()
  • Serial.parseFloat()
  • Serial.setTimeout()
  • Serial.Write()

Todas estas funciones tienen la misma funcionalidad que el arduino unos. Puede encontrar más información en:http://Arduino.CC/en/Reference/serial

Un ejemplo de código que se pueden encontrar en el tutorial de frambuesa Pi XBee acess el UART

 i2C.

Un ejemplo de uso de i2C puede encontrarse en la sección de ADC .

Aquí mostramos otro ejemplo usando lo BlinkM RGB i2C controlado dirigido.

BlinkM utiliza una alta calidad, poder más elevado LED RGB y un pequeño Microcontrolador AVR para permitir que un usuario de una interfaz i2C simple digital control de un LED RGB.

En el ejemplo vamos a cambiar el color led usando fade transiciones y también cambiando directamente. Más información sobre lo LED y los comandos que podemos enviar a él puede encontrarse en la hoja de datos.

Conectar la clavija (-) del led con el pin GND del escudo.

Conecta (+) del pin del led con el pin de 5V de la pantalla.

Conectar la clavija d del led con el pin SDA del escudo.

Conectar la clavija c del led con el pin SCL del escudo.

Aquí está el código:

/*  
 *  Raspberry Pi to Arduino Shields Connection Bridge
 *  
 *  Copyright (C) Libelium Comunicaciones Distribuidas S.L. 
 *  http://www.libelium.com 
 *  
 *  This program is free software: you can redistribute it and/or modify 
 *  it under the terms of the GNU General Public License as published by 
 *  the Free Software Foundation, either version 3 of the License, or 
 *  (at your option) any later version. 
 *  a
 *  This program is distributed in the hope that it will be useful, 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 *  GNU General Public License for more details.
 *  
 *  You should have received a copy of the GNU General Public License 
 *  along with this program.  If not, see http://www.gnu.org/licenses/. 
 *  
 *  Version:           2.0
 *  Design:            David Gascón 
 *  Implementation:    Jorge Casanova & Luis Martín
 */


//Include arduPi library
#include "arduPi.h"


void setup(){
    Wire.begin();
    Wire.beginTransmission(9);
    Wire.write('o'); //End the current Light script
    Wire.endTransmission();
}

void loop(){
    for (int i=0;i < 5;i++){
        Wire.beginTransmission(9);
        Wire.write('n'); //Change to color
        Wire.write(byte(0xff)); //Red component
        Wire.write(byte(0x00)); //Green component
        Wire.write(byte(0x00)); //Blue component
        Wire.endTransmission();

        delay(500);
        
        Wire.beginTransmission(9);
        Wire.write('n'); //Change to color
        Wire.write(byte(0x00)); //Red component
        Wire.write(byte(0x00)); //Green component
        Wire.write(byte(0xff)); //Blue component
        Wire.endTransmission();
        
        delay(500);
    }
    
    for (int i=0;i < 10;i++){
        Wire.beginTransmission(9);
        Wire.write('c'); //Fade to color
        Wire.write(byte(0xff)); //Red component
        Wire.write(byte(0x00)); //Green component
        Wire.write(byte(0x5a)); //Blue component
        Wire.endTransmission();

        delay(150);
        
        Wire.beginTransmission(9);
        Wire.write('c'); //Fade to color
        Wire.write(byte(0x55)); //Red component
        Wire.write(byte(0x20)); //Green component
        Wire.write(byte(0x5a)); //Blue component
        Wire.endTransmission();

        delay(150);
    }
}

int main (){
    setup();
    while(1){
        loop();
    }
    return (0);
}

Este código alternativo de rojo a azul cinco veces y luego hacer unas transiciones suaves entre colores violáceos.

 SPI.

Es posible comunicar con dispositivos SPI usando las funciones arduPi.

En este ejemplo utilizamos las funciones SPI para imprimir mensajes en la ST7920 LCD12864 (LCD SPI)

En primer lugar, tenemos que poner el interruptor de la pantalla LCD en modo SPI.

Ahora procedemos con la conexión entre el LCD y el Raspberry Pi a arduino shield:

VCC de la LCD a 5v del escudo

GND de la LCD a GND del escudo

SCK de lo LCD a SCK del escudo

SID de la LCD a MOSI del escudo

CS de la pantalla LCD al pin 8 del escudo

Como puedes ver estamos utilizando el número pin 8 del escudo frambuesa Pi como chip select. Así que cuando tenemos que seleccionar la pantalla LCD como el dispositivo de destino para la comunicación SPI tenemos poner el pin 8 a alta.

Aquí está el código

/*  
 *  Raspberry Pi to Arduino Shields Connection Bridge
 *  
 *  Copyright (C) Libelium Comunicaciones Distribuidas S.L. 
 *  http://www.libelium.com 
 *  
 *  This program is free software: you can redistribute it and/or modify 
 *  it under the terms of the GNU General Public License as published by 
 *  the Free Software Foundation, either version 3 of the License, or 
 *  (at your option) any later version. 
 *  a
 *  This program is distributed in the hope that it will be useful, 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 *  GNU General Public License for more details.
 *  
 *  You should have received a copy of the GNU General Public License 
 *  along with this program.  If not, see http://www.gnu.org/licenses/. 
 *  
 *  Version:           2.0
 *  Design:            David Gascón 
 *  Implementation:    Jorge Casanova & Luis Martín
 */

//Include arduPi library
#include "arduPi.h"

int latchPin = 8;
unsigned char char1[]=" Cooking Hacks  ";
unsigned char char2[]="  SPI LCD for   ";
unsigned char char3[]="  Raspberry Pi  ";

void initialise();
void displayString(int X,int Y,unsigned char *ptr,int dat);
void writeCommand(int CMD);
void writeData(int CMD);
void writeByte(int dat);
void clear();

void setup(){
    SPI.begin();
    SPI.setBitOrder(MSBFIRST);
    SPI.setDataMode(SPI_MODE0);
    SPI.setClockDivider(SPI_CLOCK_DIV128);

    initialise();
}

void loop(){
    displayString(0,0,char1,16);
    delay(2000);
    clear();
    displayString(1,0,char2,16);
    displayString(2,0,char3,16);
    delay(2000);
    clear();
}

void initialise(){
    pinMode(latchPin, OUTPUT);     
    digitalWrite(latchPin, LOW);

    delayMicroseconds(80);

    writeCommand(0x30);
    writeCommand(0x0c);
    writeCommand(0x01);
    writeCommand(0x06);
}


void displayString(int X,int Y,unsigned char *ptr,int dat){
    int i;

    switch(X){
        case 0:  Y|=0x80;break;

        case 1:  Y|=0x90;break;

        case 2:  Y|=0x88;break;

        case 3:  Y|=0x98;break;

        default: break;
    }

    writeCommand(Y);

    for(i=0;i < dat;i++){ 
        writeData(ptr[i]);
    }

}

void writeCommand(int CMD){
    int H_data,L_data;
    H_data = CMD;
    H_data &= 0xf0;
    L_data = CMD;
    L_data &= 0x0f;
    L_data <<= 4;
    writeByte(0xf8);
    writeByte(H_data);
    writeByte(L_data);
}

void writeData(int CMD){
    int H_data,L_data;
    H_data = CMD;
    H_data &= 0xf0;
    L_data = CMD;
    L_data &= 0x0f;
    L_data <<= 4;
    writeByte(0xfa);
    writeByte(H_data);
    writeByte(L_data);
}

void writeByte(int dat){
    digitalWrite(latchPin, HIGH);
    delayMicroseconds(80);
    SPI.transfer(dat);
    digitalWrite(latchPin, LOW);
}

void clear(){
    writeCommand(0x30);
    writeCommand(0x01);
}


int main (){
    setup();
    while(1){
        loop();
    }
    return (0);
}

Este programa mostrará los mensajes “Cooking Hacks” y “SPI LCD para Raspberry Pi” con un retraso de 2 segundos en el medio.

 Mas ayuda

Se puede obtener ayuda en la sección específica creada en este  foro.

Fuente cooking-hacks

Ajustes efecto Ambilight con Raspberry Pi


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\)

hypercon

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).

pantalla

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).

pantalla.png

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)

rain

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/)

hyperion .

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  :

“device”: {
“colorOrder”: “bgr”,
“rate”: 500000,
“type”: “ws2801”,
“name”: “MyPi”,
“output”: “/dev/spidev0.0”
},

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  

“blackborderdetector”: {
“threshold”: 0.10000000000000001,
“enable”: true
},

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  :

“effects”: {
“paths”: [
“/storage/hyperion/effects”
]
},

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  :

 “framegrabber”: {
“width”: 64,
“frequency_Hz”: 10.0,
“height”: 64
},
“xbmcVideoChecker”: {
“grabVideo”: true,
“grabPictures”: true,
“xbmcTcpPort”: 9090,
“grabAudio”: true,
“grabMenu”: false,
“enable3DDetection”: true,
“xbmcAddress”: “127.0.0.1”,
“grabScreensaver”: true

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 config.txt  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í

hype

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.

Ambilight para Imagenio


Ambilight es una tecnología diseñada para mejorar la experiencia visual  analizando una señal de video  entrante y produciendo una  luz lateral ambiental adecuada al contenido que se está visualizando en la pantalla  con  un resultado bastante atractivo , el cual  además de la sensación de estar viendo una pantalla aun mayor.
Hasta hace muy poco este efecto solo se podía conseguir si comprábamos una TV que contara con ese sistema y no había otra opción, pero recientemente  han aparecido software para emularlo  a través una placa Arduino UNO (o incluso Arduino nano), un ordenador,y una tira de 50 leds(  suficientes  para iluminar una televisión de 47 pulgadas)  .  Aunque  la solución usando Arduino es  eficiente   podemos llegar aun mas lejos para  emularlo incluso en la  propia TV de nuestro salón   gracias  a la potencia de la Raspberry Pi  2 o 3   y  una capturadora  de vídeo  y por supuesto , una tira de 50 leds WS2801 (como vamos a  ver ).
En este  post  vamos a ver como es posible emular un sistema “ambiligt”  donde el hardware que controlará  todo el sistema sera únicamente una Raspberry Pi 2  o 3  equipada con una distribución compatible ( Openelec)   y el software de control de  leds Hyperion. 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 ftth.
Es importante ademas resaltar  que será posible disfrutar de la emulación de  ambilight con fuentes de vídeo externas a la Pi  usando 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 .
Para concretar  un poco  mas  en este montaje  necesitaremos los siguientes componentes:
  • Una Raspberry Pi 2 o 3
  • Un tarjeta microsd  de l amenos 2GB   donde instalamos  el sw para la Raspeberry Pi
  • Fuente con salida microusb  para la Raspberry Pi (5V/1Amp)
  • Tira de leds con el chip WS2801
  • Fuente dimensionada para alimentar la tira de leds (5v /2amp deberia bastar)
  •  Convertidor  de niveles (Opcional)
  • Capturadora de video usb USBTV007 o compatible
  • Caja para albergar la Raspberry-Pi 2

TIRA DE LEDS y ALIMENTACION

Antes de empezar  con el montaje ,  la tira de  leds   RGB   direccionable es muy importante que ésta esté basada en el chip  ws2801 (LEDs WS2801). Existen tiras basadas en el chip WS2801   en formato “luces de navidad”, pero lo mas habitual es adquirirla en forma de cinta autoadhesiva pues es mucho mas sencillo instalarlas detrás de nuestro TV  pues  se pueden pegar directamente en la parte de atrás del tv  y no necesitan un engorroso cableado   y ademas  no nos  dará  ningún tipo de problemas  con la Raspberry Pi

Un ejemplo de tira  compatible con WS2801 es  esta  que puede comprarse en Amazon por menos de 27€

tira de leds.png

Una peculiaridad  de esta tiras ,es que ademas de que se pueden cortarse según la longitud que se requieran ( siempre por la linea de corte que separa cada bloque  chip+led rgb del siguiente) .Otro aspecto muy interesante  es que ,  también es posible ampliarlas gracias a  los conectores que llevan en cada extremo, pudiendo  unirse  entre ellas fácilmente sin soldar nada hasta completar la longitud total que  se necesite ( la cual normalmente sera el perímetro interior de su TV).

No debemos olvidar que esta tiras tienen una flecha que indican el sentido de la conexión de las tiras que debe respetarse escrupulosamente  sobre todo a la hora de conectar varias tiras entre si : es decir siempre empezaremos por la izquierda de la flecha con la conexión a la raspberry y seguiremos el orden de la flecha para interconectar las tiras que se precisen

conector.png

Un aspecto importante que no debemos  olvidar  es que parara alimentar dicha tira de leds  WS2801 ,  necesitaremos aparte  una fuente de alimentación  dimensionada para el número de leds que vayamos a adquirir , (lo normal seria  una fuente de  5v y 2A para  unos 50 leds)

Este tipo de tiras de leds  tienen que alimentarse  con una fuente de alimentación externa así que si pensaba alimentarlos con la propia Raspberry olvídese, ya que no va a tener los suficiente intensidad para ello  Para saber que fuente de alimentación necesita , tendría  que conocer el consumo .Dado que el voltaje de alimentación es de 5V  y el consumo viene indicado en vatios por metro, por ejemplo 8.64 watts por metro puede calcular la  intensidad necesaria  aplicando   la siguiente formula:

I (Amp) =P (Watts) / V (voltaje) ->  8.64/5 = 1.728 amperios. por tanto necesita una fuente de alimentación de 5V y 1.728 amperios (mejor 2 amperios para que vaya holgada)

Si se quiere ahorrar los cálculos visite http://www.rapidtables.com/calc/electric/Watt_to_Amp_Calculator.htm

Como regla aproximada  para 50 LEDs se necesitan 2 amperios ,para 100 leds 4 amperios, etc.

ADAPTADOR DE NIVELES

Hay  un pequeño problema con los niveles de tensión que admiten las tiras de led WS2801   (niveles TTL de 0/5v )  y los niveles de tensión que maneja una Raspberry Pi (0/3.0v) . El nivel mínimo de tensión que teóricamente admiten los WS2801  para considerar una señal de entrada un “1” lógico debe ser de 0.8 x 5 = 4V. Sin embargo, tanto la Raspberry Pi 2 como   la Raspberry Pi 3,ambas   trabajan con lógica a 3.3V, por lo que un “1” lógico en el GPIO alcanzará como máximo un nivel de tensión de 3.3V, lo que parece  alejado del mínimo aceptado de 4V de los chips WS2801, razón por la cual  muchos recomiendan  instalar  un  convertidor  de niveles que realizara la función de adaptar las señales lógicas de 3.3V del GPIO de la Pi hasta los 5V de la lógica empleada en los chips WS2801 que controlan los leds.
Generalmente estos convertidores  son de muy  bajo coste (unos 2€) y se conectan de un modo muy sencillo:  tienen un lado de baja tensión (marcado como LV)  que funciona a  niveles de 3.3V  y un lado de ‘alta tensión’ que conectaremos  a la Raspverry Pi 2 o 3 , y otro  marcado como HV que trabaja a 5V  que conectaremos  a los pines de entrada de la tira de leds
Ademas no debemos olvidar los pines de GND del lado de baja (LV) y del de alta (HV)  que deben conectarse entre ellos si no lo están en la propia plaquita.
convertidor.png
Es importante mencionar que la línea de +5V para el lado HV(de “alta” tensión) debe provenir de la misma alimentación de 5V proporcionada a los leds (si usáramos una única fuente de alimentación para los leds y la Raspberry Pi 2 o 3  lo cual se desaconseja por completo , en ese casi si podríamos usar uno de los pines de +5V del GPIO para conectarlo al lado de HV), asi como  que también debe proporcionarse al circuito para el lado LV (“baja” tensión)   la  alimentación de 3.3V  , la cual la obtendremos de la propia Raspberry Pi 2 o 3
El buffer de línea (adaptador de niveles de 3.3V a 5V) irá entre los pines GPIO de la RB Pi y la tira de leds WS2801   usando tan solo dos circuitos(  para CK y DS )   de los cuatro circuitos disponibles  en el adaptador.  Usaremos  por ejemplo un  hilo verde del pin MOSI (19) desde la Raspbery  hacia el adaptador  y de este a  la tira de leds(SD)    y otro hilo de color   azul el pin 23(SCLK)    hacia el adaptador y de este al CLOCK  de  la tira de leds .

Asimismo conectaremos  un  hilo de color negro de “tierra” (ground), desde el GDN del adaptador al pin 9  hacia el GND de  la Raspberry  y alimentaremos ambas partes del circuito con 5V (HV)  procedente de la fuente de alimentación para los leds   y 3.3V (LV) procedente del pin 1 de la Raspebrry pi.

En el siguiente esquema mostramos como quedaría el montaje final:

 

 

esquema-ambilight

 

 

 

Enchufaremos por ultimo la fuente de  5V y 2A (pueden ser más Amperios, pero no menos!) y encenderemos nuestra  Raspberry. Es posible que algunos leds se enciendan y se apaguen (es normal) ,pero también es posible que ningún led se encienda, !no se preocupe pues deberíamos  configurar aun  el software!

 

ESQUEMA FINAL

Desde el punto de vista técnico el conversor de niveles es lo correcto , pero es posible que muchas tiras de leds WS2801  a pesar de ser compatibles con niveles TTL , también sean tolerantes a 3.3V  y por tanto para conectar estas a la Rasepberry Pi  2  o 3  no sea necesario por tanto este conversor 

Los LEDs tienen 4 cables

  • alimentación positiva
  • alimentación negativa
  • data
  • clock

Los cables de alimentación van conectados a la fuente de alimentación  aparter de  50 al menos 2amperior   y los cables de datos (data y clock) se conectan a los puertos GPIO de la raspberry. Concretamente el cable data se tiene que conectar al pin MOSI y el cable clock se conecta al pin SCLK. . El negativo además de conectarse al cable de alimentación negativa de los leds debe conectarse a un pin  GND.

 
 

INSTALACIÓN FINAL DE LOS LEDS EN LA TV

Los LEDs cableados formato “luces de navidad ”  también los hay  con el chip ws2801   teniendo la ventaja que se pueden adaptarlos a cualquier tamaño de pantalla ya que se pueden separar o  juntar según  se necesiten, pero por otro lado, el principal inconveniente  es que son bastante voluminosos (12mm) siendo la instalación s más complicada ya que se tiene que idear una manera de montarlos en la TV (por ejemplo, hay gente que se hace una plantilla de cartón, otra opción es pegarlos con bridas autoadesivas).

 

Realmente lo mas sencillo es por optar por tiras adhesivas  WS2801 pues tienen la ventaja que la instalación es más discreta y queda mucho mejor. La desventaja es que seguramente tenga que cortar la tira  para  poder abarcar todo el perímetro de la televisión, lo cual  implica que una vez que haya cortado y pegado cada trozo, tendrá que soldar un conector a ambos lados para volver a unir los contactos de la tira  (aunque  si no quiere soldar la tira esta la opción de comprar tantos metros de leds en formato continuo y pegar esta por todo el perímetro de la TV doblándolas en las esquinas.

En todo caso , la distribución   mas  normal de montaje de la tira de leds  es pegar la tira horizontal mas grande  en la parte abajo   y seguir  hacia la derecha hasta continuar el perímetro de la TV como se ve en la foto siguiente:

 

SOFTWARE

OpenELEC se construye desde cero específicamente para una tarea, para ejecutar Kodi. Otros sistemas operativos están diseñados para ser multiuso, por lo que incluyen todo tipo de software para ejecutar servicios y programas que probablemente nuca  se utilizarán. OpenELEC, sin embargo, sólo incluye el software necesario para ejecutar Kodi. Debido a que es pequeño (aproximadamente 150 MB), se instala literalmente en minutos, y, puede arrancar muy rápidamente en 5-20 segundos, dependiendo del tipo de hardware utilizado.A diferencia de otras soluciones de Kodi, OpenELEC no se basa en Ubuntu. De hecho, no se basa en ninguna distribución de Linux dado que es una distribución mínima de Linux complilada par Kodi  por lo que ha sido construido desde cero específicamente para actuar como un centro de medios. Eso significa que no incluye controladores para cosas que simplemente no se utilizarán como tarjetas 3G y tabletas gráficas, por ejemplo.

Además, OpenELEC está diseñado para ser gestionado como un dispositivo: puede actualizarse automáticamente y puede gestionarse completamente desde la interfaz gráfica. Aunque funciona en Linux, nunca necesitará ver una consola de administración, un terminal de comandos o tener conocimientos de Linux para usarlo.

Para que nuestra Raspberry Pi funcione como un potente Media Center necesitamos una distribución de Kodi (antes XBMC), y adicionalmente,  el software que nos
permita controlar la tira de LEDs. En cuanto al software para el control de los leds el ideal por prestaciones es el  Hyperion pues consume muchos menos recursos que Boblight  y por tanto es el mas utilizado.
Como la clave es el sw de Hyperion ,este  puede instalarse por  ssh a partir de una imagen de OSMC o bien Openelec ,  pero otra forma mas sencilla y cómoda es  descargarnos alguna de las distribuciones ya existentes al efecto con el sw de Hyperior  ya preinstalado como puede ser la imagen de Lighberry basada en Raspbmc.

Opcion  instalación manual

 Quien prefiera disponer de la última versión de Openelec podrá descargarla en http://openelec.tv   , y después posteriormente instalar de forma manual Hyperion (y muy probablemente realizar algunos retoques en la configuración para hacerla funcionar).
opnenelec
Como  referencia si se decide instalar la imagen de openelec directamente , una vez creada la imagen  tendremos que seguir los siguientes pasos:Instalar hyperiond e hyperion-remote (por defecto se instalarán en ‘/usr/bin’).
  • Preparar el fichero de configuración hyperion daemon (por defecto será ‘/etc/hyperion.config.json’).
  • Añadir hyperiond a los servicios del SO (añadir hyperion.conf a ‘/etc/init’).
  •  Iniciar el servicio de hyperion mediante el comando ‘initctl start hyperion’
  • También en vez de hacer todos estos pasos  de forma manual, es posible ejecutar un  script que nos instalará Hyperion más cómodamente.:https://github.com/tvdzwan/hyperion/wiki/Installation-on-OpenELEC

 

Como ejemplo ,con estos comandos  se  instala Hyperion sobre OpenELEC:

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

 

Opcion rápida

En este post  vamos a usar la versión de  Openelec más actualizada de las disponibles en la web de Lightberry (actualmente, la versión 6.0.3). No suele ser la versión de Openelec más reciente, pero en contrapartida ya  trae Hyperion preinstalado, el driver para la capturadora   y  por tanto  casi todo esta hecho.
En el caso de  disponer de una Raspberry Pi 2 o 3 descargaremos   OpenELEC 7 beta3 for RPi2 / RPi3

lightberry

Una vez descargada descomprimiremos el zip  recuperando la imagen que debería tener el formato   8gbsmallnew0518v2.img.   
Descargaremos e instalaremos  ( en caso de no tener instalado) el sw  SDFormatter con objeto de formatear a bajo nivel la tarjeta microsd.
sdfor
Asimismo, necesitamos  también la utilidad Win 32 Disk Imager que nos va a  permitir grabar de forma sencilla cualquier imagen en la tarjeta microSD:
win32
Tanto en el primer programa, como en este, es obvio que tendremos que cuidar en extremo  la unidad o  drive  /destino  que seleccionemos ,pues podríamos borrar el contenido de nuestra unidad flash usb , un disco externo, etc  , así que como recomendación, al ejecutar estas aplicaciones lo mejor  es extraer de forma segura todas las unidades removibles antes de usar ambos programas.
Una vez terminada de  generar la imagen extraeremos la SD de nuestro PC  y la introduciremos en nuestra Raspberry Pi .
Una vez arrancada la Raspberry   lo primero es configurar Kodi para que se muestre en español. Para ello debe acceder a
SYSTEM > Settings > Appearance >International > Language , configurar el idioma en español de España y de esta forma ya veremos todos los textos y ayudas en español

Tambien se pueden configurar add-ons, los skins, etc pero sobre todo puede ser interesante conocer  la direccion IP de la Raspberry Pi para conectarnos a esta  via ssh ,para lo cual nos iremos a Sistema–>Información del sistema  y tomaremos nota de la dirección IP ( por ejemplo la ip 192.168.1.54 ). Esta no servirá  para  conectarnos rro ssh ( por ejemplo con el programa putty)    con los siguientes datos:

  • Login as :root
  • [email protected]’s password:openelec
Una vez que ya hayamos configurado Kodi a nuestro gusto y comprobado que accedemos sin problemas a nuestros contenidos multimedia vía red o directamente conectados a uno de los puertos USB de la Pi, pasaremos a personalizar la configuración del Hyperion para  introducir la configuración de LEDS de nuestra instalación de Lightberry.
Para ello tenemos varias opciones,pero la más sencilla y rápida es, con la  Raspberry conectada a internet,  desplazarnos hacia el menú PROGRAMS/PROGRAMAS y ejecutaremos  la aplicación pre-instalada, Hyperion Config Creator  la cual nos permitirá configurar paso a paso la instalación de nuestra  Lightberry en nuestra TV   donde iremos definiendo:
  • 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

Una vez terminado el asistente de hyperion confi creator deberíamos ver el arco iris  asi como la prueba de colores  , con lo  que deberiamos  haber  terminado de  configurar nuestra instalación , pero ¿como comprobamos si esta funcionando la capturadora?  
Pues usaremos simplemente el segundo menú disponible en  PROGRAMS/PROGRAMAS y ejecutaremos  la aplicación pre-instalada Hyperion  Grabber Screenshot.
Al ejecutar  esta  appp ,  simplemente nos preguntara sobre el tipo de señal de video (en nuestro caso PAL) y en el caso de que tengamos conectada sobre la entrada de video de la capturadora cualquier señal de video ( por ejemplo procedente de un descodificador de imagenio ) entones  si la imagen presentada no es negra  , es indicativo que esta funcionando la capturadora ,  con lo cual  en cuanto reinicie el servicio Hyperion    ya debería ver como cambian las luces en función de la imagen de la fuente de video  externa  ( en nuestro caso desde un descodificador )  ,

 

 

CAPTURADORA

En el mercado existen multitud de capturadoras USB, siendo en general conocidas bajo la marca o  denominación de Easycap. A día de hoy, sólo dos tipos de chipsets son compatibles con el ambilight, por eso es importante seleccionar una capturadora de este tipo que internamente use uno de los siguientes chipsets:
  • STK1160 (el más antiguo)
  • USBTV007 (el más reciente).Se recomiendo adquirir el USBTV007 (también reconocido por Fushicai) porque funciona muchísimo mejor que el obsoleto STK1160.
Las últimas imágenes de OpenELEC son compatibles con ambos chipsets, pero deberemos certificarnos que efectivamente la imagen que tenemos en la Pi soporta el chipset de la capturadora conectada.
easycap.png
Acertar en la compra de la capturadora es el quid del éxito. Hay multitud de variantes, todas ellas conocidas genéricamente por EasyCap, pero no todas nos van a servir. La opción de ir por lo seguro es por ejemplo  adquirir la capturadora en la propia tienda de Lightberry (acertará al 100% porque ellos ya han seleccionado las que efectivamente valen para el ambilight , de hecho actualmente solo comercializan las USBTV007).
Analizando con detalle la información de algunos vendedores, es posible comprar en eBay,Aliexpress y sitios similares capturadoras que, en principio, funcionarán, y a precios generalmente más asequibles.No podemos confiar al 100% en lo que el vendedor publicita. Muchas veces el vendedor no sabe/no entiende de lo que vende, y otras muchas te dirá que sí, que tiene exactamente lo que Ambilight
En este punto es importante hacer un inciso:el consumo de corriente de este tipo de capturadoras por lo que deberemos dimensionar adecuadamente la fuente que alimente al conjunto ( y ademas podría superar la capacidad del puerto USB de la RB Pi en el caso de que usase os primeros modelos de RB Pi).
Hyperion APP

Para terminar  para la plataforma  Android existe una app que  permite controlar los leds que tengamos instalados  estableciendo un color  fijo   o  incluso aplicando efectos bastante vistosos. La puede descargar aquí: https://play.google.com/store/apps/details?id=nl.hyperion.hyperionfree&hl=es

hype.png

Fuentes:

https://github.com/tvdzwan/hyperion/wiki

http://lightberry.eu/