UNIVERSIDAD DE LEÓN CURSO ACADÉMICO 2010/2011
Trabajo Fin de Master Microautomatismos de luz programables autónomos bajo Arduino Micro autonomous programmable and automatic lights under Arduino
MEMORIA
Jorge Valancia Álvarez Trabajo Fin de Master Escuela de Ingenierías Industrial e Informática
UNIVERSIDAD DE LEÓN
El presente documento es presentado como Trabajo de Fin de Máster por D. Jorge Valencia Álvarez, alumno de la Escuela de Ingenierías Industrial e Informática de la Universidad de León, con el fin de obtener el título de Máster en Cibernética. El proyecto “Microautomatismo de luz programables autónomos bajo arduino” ha sido tutelado por D. Rafael Santamaría Sánchez perteneciente al Departamento de Matemáticas de la Universidad de León.
Vo Bo Tutor
Vo Bo Autor
Dr. D. Rafael Santamaría Sánchez
D. Jorge Valencia Álvarez
León, 7 de julio de 2011
5
.
Abstract This is a research project aimed at achieving improved performance and capabilities of these small autonomous programmed lighting systems. With a special focus on meeting the needs of artist people and the economic viability of the researched products.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
Índice
7
Índice 0. Introducción
10
0.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 0.1.1. Estado del arte . . . . . . . . . . . . . . . . . . . . . . . . . . 10 0.1.2. Deficiencias de la tecnología existente . . . . . . . . . . . . . . 11 0.1.3. Problemas o necesidades . . . . . . . . . . . . . . . . . . . . . 12 0.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 0.3. Solución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 0.4. Organización de la memoria . . . . . . . . . . . . . . . . . . . . . . . 14 1. Conceptos previos y herramientas
15
1.1. Hardware libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.2. Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.2.2. Plataformas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2.3. Placas Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2.4. Primeras pruebas con Arduino . . . . . . . . . . . . . . . . . . 21 1.3.
Blinkm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4. MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.4.2. Elementos básicos . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4.3. Funcionalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4.4. Dispositivos MIDI . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4.5. Especificaciones MIDI . . . . . . . . . . . . . . . . . . . . . . 27 1.5. Lenguaje de programación JAVA . . . . . . . . . . . . . . . . . . . . . 32 1.6. IDE Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2. Desarrollo
34
2.1. Fase de Análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.2. Diseño e Implementación . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.2.1. Prototipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.2.2. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.2.3. El secuenciador . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.2.4. El plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.2.5. El conversor de notas MIDI en secuencias de colores y valor de luminancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
Índice
8
Síntesis del trabajo
49
Referencias
51
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
Índice de figuras
9
1.1. Conexión de un Arduino al un ordenador
. . . . . . . . . . . . . . . . 17
Índice de figuras 1.2. Arduino Diecimila . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3. Arduino duemilamovile . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4. Arduino Mini Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.5. Circuitería de Arduino Mini Pro . . . . . . . . . . . . . . . . . . . . . 21 1.6. Circuito inicial para hacer lucir un LED de control . . . . . . . . . . . 21 1.7. Ejemplo de programación del parpadeo de un diodo LED con Arduino
22
1.8. Productos de ThingM . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.9. BlinkM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.11. Programador LinkM . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.10. Automatismo BlinkM MinM . . . . . . . . . . . . . . . . . . . . . . . 24 1.12. Conexión de una dispositivo MIDI a un computador . . . . . . . . . . . 25 1.13. Ejemplo de aplicación de un controlador MIDI . . . . . . . . . . . . . 27 1.14. Conexion simplificada de una tarjeta de sonido interna, un teclado y un ordenador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.15. Estructura binaria de un mensaje. . . . . . . . . . . . . . . . . . . . . . 32 2.1. Arduino mini pro, usado en uno de los prototipos . . . . . . . . . . . . 34 2.2. Prototipo 1, primer paso . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.3. Prototipo 1, segundo paso . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.4. Prototipo 1, tercer paso . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.5. Prototipo 1, cuarto paso . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.6. Prototipo 1, quinto paso . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.7. Dispositivo BlinkM MinM Izquierda comparado a BlinM derecha . . . 37 2.8. Circuitería de BlinkM . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.9. Ejemplo de conexión BlinkM a Arduino Diecimila . . . . . . . . . . . 38 2.10. Conexión Arduino al un ordenado mediante puerto usb . . . . . . . . . 39 2.11. BlinkM +LEDs RGB + programador a parte LinkM . . . . . . . . . . . 39 2.12. Bateria ultra-ligera Li-PO
. . . . . . . . . . . . . . . . . . . . . . . . 40
2.13. Secuenciador del BlinkM . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.14. Programador LinkM . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.15. Secuenciador GarageBand . . . . . . . . . . . . . . . . . . . . . . . . 43 2.16. Interfaz MIDI para los Ipad ,Ipod,Iphone
. . . . . . . . . . . . . . . . 44
2.17. Especificaciones técnicas para el retardo . . . . . . . . . . . . . . . . . 48 2.18. Asignación repentina de color . . . . . . . . . . . . . . . . . . . . . . 49
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
0 Introducción
0. 0.1.
10
Introducción Antecedentes
Los Micro Sistemas Autónomos de Luz Programables (MSALP) son mecanismos electrónicos usados mayoritariamente en el mundo del arte, para la ejecución más espectacular de números de malabares principalmente, y en menor medida para ubicarlos en la vestimenta de los actores en obras de teatro así como en instalaciones de los artistas más modernos e integradores de nuevas tecnologías. Sistemas ornamentales modernos como decoración en sus últimas tendencias y equipamientos en vehículos fabricados a medida también conocidos como “custom” son algunas de la múltiples utilidades que podemos encontrar. El inicio del uso de estos mecanismos ha dado lugar a una nueva tendencia artística llamada “processing” que no es sino que una nueva forma de hacer interactuar a las nuevas tecnologías con los elementos artísticos en la búsqueda de producir impresiones en el público mediante nuevas creaciones tecnológicas. Éstas suelen estar carentes de aplicación práctica ya que se busca ante todo generar sensaciones y normalmente implica el uso del color el sonido la forma o el movimiento con intención artística. Instalaciones que interactúan a nuestro paso o que producen distintos sonidos según nuestra posición o temperatura corporal, son algunos de los ejemplos que se podrían citar. 0.1.1.
Estado del arte
Dentro del campo del “processing” las tecnologías creadas con sistemas “arduino” son las más comunes y flexibles. Esto es debido a que muchas veces un diseño con una funcionalidad específica sólo va a servir para un espectáculo concreto. Las empresas suelen rechazar encargarse de satisfacer las necesidades de este mercado debido a que cada solución ha de ser muy personalizada y la falta de uso común de un mismo producto hace poco rentable el negocio al no ser de interés la producción masiva de estos dispositivos. Motivo por el que han triunfado en este campo a sistemas flexibles creados con hardware libre arduino y derivados. En el campo de los MSALP (Micro Sistemas Autónomos de Luz Programables) sólo existe una empresa que ofrezca sistemas de este tipo en el mercado llamada “Globaltech” y que permite introducir una programación de colores e intensidad de brillo a unos dispositivos lo suficientemente pequeños como para ser introducidos en los malabares. Todos los demás productos se limitan a emitir luces en colores aleatorios ó en el
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
0 Introducción
11
mejor de los casos a responder a los impulsos sonoros que detecte el dispositivo a modo de plugin visual como el que podríamos encontrar en cualquier reproductor mp3. 0.1.2.
Deficiencias de la tecnología existente
En todas las tecnologías disponibles actualmente, el arranque se realiza siempre de modo manual excepto en el caso de “globaltech” que permite el arranque simultáneo de los dispositivos a través de hub usb. Sin embargo, y por desgracia, el uso de esta tecnología incluso usando todo el material recomendado por ellos, no es una tecnología precisa respecto a simultaneidad del arranque o lanzamiento de la misma, ofreciendo en ocasiones desfases de un segundo o más. Sin duda una gran desventaja en espectáculos que van sincronizados a la música o el vídeo impidiendo la correcta ejecución de la obra, iluminando a los actores cuando todavía están entre bambalinas o produciendo una indeseable sensación de falta de sincronía en escena. Otro de los grandes problemas es que el sistema de globaltech es programado mediante un sistema de órdenes secuenciales que son cargadas a través del usb del que disponen por medio de un interfaz en java que sólo funciona en algunas versiones del sistema operativo Windows y además necesita para su correcto funcionamiento un complicado sistema de drivers cuya instalación no está exenta de dificultad. Estas dificultades generan varios escollos que deberían solucionarse con un nuevo sistema. La necesidad de usar un ordenador sólo y únicamente para la programación y disparo de los dispositivos, ya que cualquier instalación accesoria posterior puede perjudicar la sincronicidad del disparo de comienzo o el buen funcionamiento de la programación, así como entorpecer la detección del hardware por los drivers. Es decir, es necesario tener disponible un equipo informático exclusivamente para usar con los sistemas de globaltech que existen actualmente en el mercado. La necesidad de que este ordenador sea una máquina real y no virtual, para garantizar al máximo la minimización de la latencia de disparo y con las incomodidades físicas, de migración y respaldo del sistema, que esto supone. De hecho las compañías que usan estos sistemas llevan siempre dos computadores con el mismo hardware ya instalados para solucionar cualquier eventualidad. Lo que supone un gran coste además del coste inicial del sistema de luz. La pérdida de exactitud en la ejecución de órdenes de programación concatenadas muy largas. Lo habitual es que los dispositivos “entren en escena” pasada
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
0 Introducción
12
media hora. Durante ese tiempo habitualmente se están ejecutando órdenes que van acumulando una pérdida de sincronía por redondeo de sus unidades de medida. Sólo un cuarto de segundo ya resulta inaceptable en cualquier espectáculo sincronizado con música. La modificación de la cadena de eventos programados implica recalcular los eventos posteriores, con la posibilidad de fallo que esto implica y la incomodidad obvia. 0.1.3.
Problemas o necesidades
En resumen tenemos estos problemas/ necesidades: 1. No existen actualmente en el mercado MSALP (Micro Sistemas Autónomos de Luz Programables) que ofrezcan precisión mas allá de los 5 minutos desde que se dispara el sistema, actualmente no existe ningún que garantice una sincronicidad total una vez pasado este tiempo. 2. El mejor de todos los sistemas existentes, es muy difícil de programar, y requiere la ayuda de un profesional o de un experto para poder componer una secuencia seleccionada a priori con éxito. 3. El sistema de disparo de los productos disponibles en la actualidad no es preciso cuando se disparan mas de 8 dispositivos simultáneamente. Tanto es así que hasta el proveedor tiene que trucar sus vídeos públicos de demostración para conseguir que la secuencia lanzada coincida con la música. Lo podemos observar en esta demostración de la empresa en el minuto 3:20. 4. Su precio es excesivamente caro. 5. El sistema no es multiplataforma, ni si quiera funciona en todas las versiones del sistema operativo Windows. 6. Ha de ejecutarse en nativo nunca en máquina virtual 7. La batería usada no es resistente a golpes, lo cual es un gran problema si pensaba que estos sistemas están pensados para ser utilizados en el mundo de espectáculo y cualquier golpe o caída accidental pueden terminar con su vida útil.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
0 Introducción
0.2.
13
Objetivos
Dadas la necesidades planteadas, el objetivo de este proyecto es crear un sistema que sea: 1. Preciso en la ejecución de su programación hasta el fin de vida de la batería. 2. Fácil de programar y especialmente orientado a artistas. 3. Preciso en su simultaneidad de disparo de la secuencia. 4. A un precio asequible. 5. Multiplataforma 6. Ejecutable en una máquina virtual 7. Resistente a golpes, mejore las opciones disponibles en el mercado. 8. Autonomía mínima de una hora a un máximo rendimiento .
0.3.
Solución
Partiendo de las necesidades anteriormente descritas, el objetivo que me he planteado es encontrar un sistema interfaz que permita ”interpretar” colores como si de un instrumento de música se tratase. Esta interpretación ”luminosa” se ejecutará a la vez que se ve el vídeo o la música de espectáculo con la que van a ser sincronizado los sistemas de luz autónomos, de forma que la secuencia luminosa deseada quede registrada en sincronía con este audio, permitiendo su posterior edición si fuera el deseo del artista. El registro sincronizado se transmitirá más tarde a los dispositivos de luz programables, con un interfaz multiplataforma quedando permanentemente programados. El arranque de la programación de los dispositivos se hará mediante interruptor físico. Ya sea con la llegada de corriente o al activar un ”reset”. Otros aspectos de los demás dispositivos existentes en el mercado son considerados como adecuados para la realización del prototipo como la carga de batería desde el usb y el difuminación de la fuente de luz a través del dispositivo iluminado con superficies translucidas.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
0 Introducción
0.4.
14
Organización de la memoria
El documento está estructurado en varios capítulos que se detallan a continuación: Introducción: Este capítulo describe a grandes rasgos el problema al que se enfrenta el proyecto y la solución a implementar, además de definir la estructura de la memoria. Conceptos previos y herramientas utilizadas: En este capítulo se hace referencia a todo aquello que es necesario conocer para afrontar la realización del proyecto. Desarrollo: Este capítulo explica como está desarrollado el proyecto, describiendo la especificación técnica del mismo. Pretende ser una guía de como se ha realizado este trabajo de fin de master, para que sirva a la vez de testigo y punto de partida para cualquiera que necesite realizar un proyecto de la misma envestidura. Síntesis del trabajo: En este capítulo se resumen los objetivos alcanzados en este proyecto, así como las posibles mejoras que se podría realizar a largo plazo. Bibliografía: Apartado en el que se citan las fuentes consultadas durante el desarrollo del proyecto.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
1. 1.1.
15
Conceptos previos y herramientas Hardware libre
Se llama hardware libre a los dispositivos de hardware cuyas especificaciones y diagramas esquemáticos son de acceso público, ya sea bajo algún tipo de pago o de forma gratuita. La filosofía del software libre (las ideas sobre la libertad del conocimiento) es aplicable a la del hardware libre. Se debe recordar en todo momento que libre no es sinónimo de gratis. El hardware libre forma parte también del acerbo cultural humano dentro de lo que empieza a englobarse en el concepto de cultura libre que comparte las premisas esenciales de compartición del conocimiento y preservación del acervo cultural humano. Dado que el hardware tiene asociados a él costos variables directos, ninguna definición de software libre se puede aplicar directamente sin modificación. En cambio, el término hardware libre se ha usado principalmente para reflejar el uso del software libre con el hardware y el lanzamiento libre de la información con respecto al hardware, a menudo incluyendo el lanzamiento de los diagramás esquemáticos, diseños, tamaños, firmware y otra información acerca del hardware. Siempre se incluye al menos el diseño del hardware y la distribución de los elementos en la tarjeta madre. Con el auge de los dispositivos de lógica programable reconfigurables, (similares a pequeñas máquinas virtuales sobre hardware), el compartir los diseños lógicos es también una forma de hardware libre. En vez de compartir los diagramas esquemáticos, el código HDL es compartido. Esto difiere del software libre. Las descripciones HDL son usadas comúnmente para instalar sistemas SoC en FPGA o directamente en diseños ASIC. Los módulos HDL, cuando se distribuyen, son llamados semiconductor “intellectual property cores”, o núcleos IP. Existen muchas comunidades que trabajan en el diseño, desarrollo y pruebas de hardware libre, y que además brindan soporte. Algunas de ellas son Open Collector,5 OpenCores6 y el Proyecto gEDA.7 Existen varias dificultades que hacen casi imposible llevar a la práctica el concepto de hardware libre hasta los extremos en los que se concibe el software libre. A continuación se citan algunos de los más relevantes: Dependencia tecnológica extranjera de los componentes Al intentar fabricar un diseño, es posible encontrarse con el problema de la falta de material. En un país puede no darse este problema, pero en otros puede que no se encuentren los materiales necesarios y está demostrado que las TIC, son herramientas indispensables para el desarrollo de las naciones por lo cual es de
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
16
vital importancia a la vez que estratégica el que cada nación no dependa de otra para su desarrollo tecnológico. Altos costos de producción La persona que desea utilizar el hardware que un tercero ha diseñado, primero lo tiene que fabricar, para lo cual tendrá que comprobar los componentes necesarios, construir el diseño y verificar que se ha hecho correctamente. Todo esto tiene un costo. El conocimiento lo poseen pocas empresas Se sigue reteniendo el conocimiento en las grandes industrias productoras; como resultado el consumidor del producto tiene que adecuarse al producto que ofrece el mercado que es por lo general un producto genérico que no cumple con las necesidades muy específicas de un determinado consumidor; allí es cuando se ata, a las decisiones de las empresas productoras, al usuario y no se le da la libertad de elegir. Gran inversión de tiempo en trabajos de diseño redundantes Tanto en el hardware como en el software propietario existe mucho diseño redundante, es decir, se “reinventa la rueda” en vez de usar ese conocimiento previo e innovar en nuevas áreas de investigación y producción. Como ejemplo de hardware libre tenemos el sistema Arduino, que presentamos a continuación.
1.2. 1.2.1.
Arduino Introducción
Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos. Arduino puede tomar información del entorno a través de sus “pines de entrada” de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
17
El microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un ordenador, si bien tienen la posibilidad de hacerlo y comunicar con diferentes tipos de software (p.ej. Flash, Processing, MaxMSP). Las placas pueden ser hechas a mano o compradas montadas de fábrica; el software puede ser descargado de forma gratuita. Los ficheros de diseño de referencia (CAD) están disponibles bajo una licencia abierta, así pues eres libre de adaptarlos a tus necesidades. 1.2.2.
Plataformas
Arduino está preparado para ser controlado y programado desde los tres sistemas operativos más importantes actualmente en el mercado: Windows, Mac OS X o Linux. Es decir es un sistema multiplataforma. El proceso de control básicamente consiste en instalar los drivers y enchufar por usb el Arduino al computador.
Figura 1.1: Conexión de un Arduino al un ordenador
1.2.3.
Placas Arduino
1. Arduino Diecimila La Arduino Diecimila es una placa microcontroladora basada en el chip ATmega168 (datasheet). Tiene 14 E/S digitales (6 de las cuales se pueden utilizar como salidas PWM), 6 entradas analógicas, un cristal de 16MHz, conexión USB y botón de reset.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
18
Contiene todo lo necesario para el soporte del microcontrolador; basta con conectar la placa a un ordenador con un cable USB o alimentarla con un adaptador AC/DC o una batería y comenzará a funcionar. ”Diecimila” significa ”diez mil” en italiano y fue un nombrada de este modo para celebrar el hecho de que más de 10.000 placas Arduino han sido ya fabricadas. La Diecimila es la penúltima de la serie de placas USB; para compararla con versiones anteriores puedes consultar el índice de placas Arduino.
Figura 1.2: Arduino Diecimila
Características principales: Microcontrolador ATmega168 Voltaje de funcionamiento 5V Voltaje de entrada (recomendado) 7-12 V Voltaje de entrada (limites) 6-20 V Pines E/S Digitales 14 (de ellos 6 son salidas PWM) Pines de entrada Analógica 6 Intensidad por pin de E/S 40 mA Intensidad por pin de 3.3V 50 mA Memoria Flash 16 KB (2 KB reservados para el gestor de arranque) SRAM 1 KB EEPROM 512 bytes
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
19
Velocidad del reloj 16 MHz 2. Arduino Duemilanove El Arduino Duemilanove (“2009”) es una placa con microcontrolador basada en el ATmega168 ó el ATmega328 . Tiene 14 pines con entradas/salidas digitales (6 de las cuales pueden ser usadas como salidas PWM), 6 entradas analógicas al igual que el Arduino diecimila. Además dispone de un cristal oscilador a 16Mhz, conexión USB, entrada de alimentación, una cabecera ISCP, y un botón de reset. Para usar el microcontrolado sólo es necesario conectarlo al computador, el procedimiento es análogo al del Arduino diecimila.
Figura 1.3: Arduino duemilamovile
Las características son parecidas a las del Arduino diecimila pero introduce algunas mejoras: Microcontrolador ATmega368 (ATmega168 en versiones anteriores) Voltaje de funcionamiento 5V Voltaje de entrada (recomendado) 7-12V Voltaje de entrada (limite) 6-20V Pines E/S digitales 14 (6 proporcionan salida PWM) Pines de entrada analógica 6 Intensidad por pin 40 mA
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
20
Figura 1.4: Arduino Mini Pro
Intensidad en pin 3.3V 50 mA Memoria Flash 16 KB (ATmega168) o 32 KB (ATmega328) de las cuales 2 KB las usa el gestor de arranque(bootloader) SRAM 1 KB (ATmega168) o 2 KB (ATmega328) EEPROM 512 bytes (ATmega168) o 1 KB (ATmega328) Velocidad de reloj 16 MHz 3. Arduino Mini Pro El Arduino Pro Mini es una placa electrónica basada en el ATmega168 . Tiene 14 entradas/salidas digitales “pines”F (de los cuales 6 pueden ser utilizados como salidas PWM), 6 entradas analógicas, una placa en caja de resonancia, un botón de reinicio, y los agujeros de montaje de cabezales de pin. A seis pines se puede conectar a un cable de FTDI o Sparkfun ruptura bordo para proporcionar alimentación USB y la comunicación a la junta. El Arduino Pro Mini está diseñado para instalaciones semi-permanentes en los objetos o exposiciones. La tarjeta viene sin las cabeceras pre-montada, lo que permite el uso de varios tipos de conectores o directa soldadura de los cables. La distribución de los pines es compatible con el Mini Arduino.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
21
Figura 1.5: Circuitería de Arduino Mini Pro
Hay dos versiones del Mini Pro. Uno corre a 3,3 y 8 MHz, y el otro a 5V y 16 MHz. Este microprocesador ha sido elegido para el segundo prototipo en desarrollo. Existen más placas pero sólo hemos mencionado las destacables para este proyecto. 1.2.4.
Primeras pruebas con Arduino
Figura 1.6: Circuito inicial para hacer lucir un LED de control
Cuando se empieza a trabajar con un nuevo lenguaje de programación, la primera prueba inicial que se suele realizar es el típico “hola mundo”. Como Arduino no dispone de pantalla, para ver que todo funciona de manera correcta lo que podemos hacer es provocar el parpadeo de un LED.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
22
Las placas de Arduino están diseñadas de manera fácil para hacer lucir un LED, simplemente usando el pin digital 13, en la placas utilizadas ya se dispone de fabrica de este LED de control.
Figura 1.7: Ejemplo de programación del parpadeo de un diodo LED con Arduino
1.3.
Blinkm
La serie de productos BlinkM son unos pequeños dispositivos con todos los elementos propios de un automatismo que pretende dotar a las fuentes luminosas de capacidad de programación implementando una pequeña cpu con capacidad de programación especialmente orientada a la secuenciación de luces LED que ya vienen integradas en sus sistemás.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
23
Figura 1.8: Productos de ThingM
La empresa ThingM http://thingm.com/ creó estos dispositivos basándose en el hardware libre de Arduino e implementando también la mayoría de sus mecanismos de comunicación y contagiando sus productos , al menos en la mayor parte, del espiritu libre de Arduino dejando el código fuente disponible de sus soluciones así como la posibilidad de modificar hasta el firmware de los dispositivos. Aunque su licencia no es igual a la de otros hardwares libres como Arduino si que su funcionamiento como empresa y sus licencias son muy cercanas a este movimiento.
Figura 1.9: BlinkM
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
24
Figura 1.11: Programador LinkM
Su producto estrella el BlinkM que se caracteriza también por ser el más barato de todos ellos apenas 12 euros sin gastos de envío con LED y es el que más se ha usado en está investigación, aunque se ha demostrado la poca idoneidad del mismo al ser una fuente de luz totalmente direccional y transparente generando una iluminación no lo suficientemente homogénea y difuminada para el objetivo de los prototipos planteados que pretende iluminar el objeto como si el entero estuviera bañado por luz siendo a la vez el origen de ella.
Figura 1.10: Automatismo BlinkM MinM
Los BlinkM MinM son los hermanos pequeños del BlinkM, aunque más caros son más reducidos de tamaño y su característica más interesante es el LED difuminado que llevan incorporado que produce una fuente de luz más difusa y apropiada para el prototipo propuesto. Evidentemente a cualquiera de estos productos se le pueden cambiar los LEDs e incluso soldar más LEDs paralelos de forma simultánea, incluso de distintos tipos, con la única limitación (casi) de la capacidad de carga de la batería. El hecho de que para nuestro propósito planteado todos los LEDs emitan la misma luz en cada dispositivo hace posible esta implementación que resulta muy interesante para ”recubrir de luz completamente un dispositivo de malabar”. Aunque los BlinkM pueden ser programados con Arduino incluso usar como cpu central el propio Arduino, uno de los puntos más interesantes de este hardware es la
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
25
posibilidad de funcionar de forma autónoma y de ser programados con un dispositivo más barato que los Arduino llamado LINKM que se conecta al dispositivo blinkm o a varios simultáneamente para la ejecución de secuencias de luces desde el ordenador, de forma autónoma (usando la circuitería blinkM y batería) , o conectados a un Arduino alimentado también con baterías si se desea.
1.4.
MIDI
1.4.1.
Introducción
MIDI (Interfaz Digital de Instrumentos Musicales) se refiere a un lenguaje digital que se utiliza a fin de enviar y recibir información musical, es decir todo lo referido a la notas musicales, sus duración, la fuerza de toque y las modulaciones de los parámetros de los sonidos, entre otros. El término MIDI en palabras simples es una interface para que nuestro instrumento musical se pueda conectar a una computadora con diversos fines (siempre y cuando nuestro instrumento tenga una opción de salida compatible con MIDI).
Figura 1.12: Conexión de una dispositivo MIDI a un computador
La especificación denominada como MIDI 1.0, se refiere a la cualidad de que ciertos instrumentos musicales electrónicos, de diferentes marcas, puedan conectarse entre sí, utilizando una estructura de datos en particular, a fin de asegurar su interoperabilidad. Cuando se habla de MIDI se puede referir a la tecnología en sí misma, o también se usa por lo general para referirse a la salida o puerto en el instrumento. También se usa el término para referirnos al cable MIDI, que conecta instrumentos musicales y computadores, permitiendo el viaje de las partituras de la creación u obra musical.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
1.4.2.
26
Elementos básicos
El sistema MIDI, se compone de tres elementos básicos: 1. El protocolo de lenguaje, que permite la configuración del lenguaje. 2. El conector o interfaz de hardware. 3. Un formato que permite la distribución de los archivos denominados Standard MIDI. 1.4.3.
Funcionalidad
La principal función del sistema MIDI es grabar en el computador la música tocada por un instrumento con una salida de este tipo, para luego poder reproducirla tal como la tocamos en el computador, y así también, poder editarla y corregirla. Entre las correcciones que se pueden realizar están los retrasos de tiempo, y del mismo modo, es posible realizar modificaciones de tono, sobregrabar segundas voces, entre otras. Los software diseñados para esta aplicación incluso convierten en tiempo real lo que tocamos a una partitura con todas sus sutilezas. Habitualmente se les llamaba secuenciadores MIDI pero con el tiempo han ido secuenciando también audio, video, y otros elementos. Por eso actualmente se habitúa nombrarlos simplemente como secuenciadores. El sistema MIDI permite a sus usuarios disfrutar de la música de una manera diferente, pudiendo realizar una obra completísima sin tener la necesidad de contar con un gran número de músicos, ya que es posible ir grabar los diferentes sonidos y luego modificarlos o realizar correcciones a fin de obtener resultados increíbles. Los editores MIDI modernos, además permiten añadir pistas de sonido análogas, lo que convierte a nuestras computadoras en verdaderos estudios de grabación. 1.4.4.
Dispositivos MIDI
Un dispositivo MIDI es cualquier interfaz de entrada o salida capaz de comunicar mensajes en este standard que a fin de cuentas y explicándolo de la forma más sencilla posible sería en formato electrónico algo muy similar a lo que podrían ser los pentagramás de notación musical para los instrumentistas. Existen miles de dispositivos MIDI, cada uno de ellos diseñado para controlar algunos aspectos muy diferentes del sonido y otros que no lo fueron pueden ser con un pequeño software estupendos dispositivos MIDI.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
27
Figura 1.13: Ejemplo de aplicación de un controlador MIDI
Aunque un sintetizador frecuentemente se compone de una parte controladora (el teclado) y una parte generadora de sonido, en adelante utilizaremos el término teclado cuando queramos referirnos al dispositivo controlador que genera mensajes MIDI, y el término sintetizador para indicar aquel que genera sonido al recibir mensajes MIDI. 1.4.5.
Especificaciones MIDI
1. Introducción El protocolo MIDI es bastante parecido al RS-232, aunque utiliza niveles eléctricos diferentes y ofrece una mayor velocidad de transmisión. Los mensajes se transmiten de forma binaria y en serie, es decir, mediante pulsos (bits) sucesivos. La transmisión se produce de forma asíncrona o, lo que es lo mismo, siempre que un dispositivo decida enviar un mensaje (por ejemplo, porque un músico ha apretado una tecla). Esta asincronía obliga a que cada byte de mensaje vaya rodeado de un bit de comienzo y un bit de final. Estas transmisiones se realizan a una velocidad de 31.250 bits por segundo, por lo que la velocidad máxima de transmisión es de 3125 bytes/sec. El interfaz MIDI de un dispositivo es el responsable de recibir y transmitir estos mensajes. Aunque la mayoría de dispositivos MIDI incluyen como mínimo un receptor y un emisor, también es posible que incluyan tan sólo uno de los dos. El puerto emisor, denominado MIDI OUT, se encarga de convertir los datos digitales generados por el dispositivo en series de voltajes eléctricos. El puerto receptor, denominado MIDI IN, realiza el proceso inverso.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
28
Puede existir un tercer puerto, denominado MIDI THRU, que simplemente reenvía la información llegada al MIDI IN del interfaz. Los mensajes MIDI conforman el lenguaje a través del cual se comunican todos los dispositivos. La información que sigue está especialmente destinada a programadores o a usuarios con conocimientos informáticos más avanzados, que pueden utilizar esta información como guía de referencia inicial. Es imprescindible para todo aquel que quiera afrontar la programación MIDI. 2. Conceptos iniciales Un mensaje MIDI indica a un dispositivo una acción a ejecutar (activar una nota, etc.) Todo dispositivo que cumple la normativa MIDI dispone de un interfaz capaz de recibir y/o enviar mensajes MIDI. Este interfaz puede tener tres puertos diferentes: MIDI IN, MIDI OUT y MIDI THRU. Todo instrumento emisor (por ejemplo un teclado) debe disponer forzosamente de un MIDI OUT. Todo instrumento receptor (un sintetizador o cualquier instrumento capaz de "sonar") debe disponer de un MIDI IN. El MIDI THRU genera una replica del MIDI IN, que permite encadenar varios dispositivos MIDI. Un secuenciador es un dispositivo capaz de grabar y reproducir mensajes MIDI. Un ordenador equipado con el software y el hardware necesarios, puede funcionar como secuenciador. Aunque la conexión de varios dispositivos MIDI, puede resultar complicada, en la práctica, si nuestro sistema se compone únicamente de un ordenador con una tarjeta de sonido interna y un teclado, la configuración se simplifica notablemente. 3. Mensajes MIDI .La especificación MIDI determina también con precisión el formato de los datos y el orden y disposición de los mensajes que se pueden transmitir.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
29
Figura 1.14: Conexion simplificada de una tarjeta de sonido interna, un teclado y un ordenador.
Existen diferentes tipos de mensajes MIDI y cada uno de ellos tiene un tamaño fijo (normalmente dos o tres bytes). Todo dispositivo MIDI dispone de al menos un microprocesador capaz de interpretar algunos de estos mensajes, aunque no es imprescindible que los entienda todos (cuando un dispositivo recibe un mensaje que no es capaz de interpretar, simplemente lo ignora y pasa al siguiente). Supongamos de momento, que estos mensajes se generan por la acción de un músico sobre un teclado MIDI, y que la sucesión de estos mensajes constituye la partitura o la transcripción de su interpretación (más adelante, cuando estudiemos la integración de los ordenadores, veremos que existen otras formás de generar mensajes no necesariamente ligadas a la acción de un músico sobre un instrumento). Una partitura se compone de una serie de notas de duraciones variables, pero, en realidad, una partitura convencional suele contener mucha más información. Puede indicar por ejemplo los instrumentos que ejecutan estas notas, así como la intensidad y los matices expresivos (vibrato, trémolo, etc.) de cada una ellas. Algo parecido sucede con el MIDI. a) Existe, como era de esperar, un mensaje que indica una nota. Este mensaje incluye la altura y la intensidad de la nota. La intensidad viene determinada por la fuerza o velocidad con que el músico pulsó la tecla, por lo que se denomina “velocity” en terminología MIDI. El mensaje recibe el nombre de Note On. No incluye la duración de la nota, por una razón muy obvia: cuando el músico pulsa una tecla, el sintetizador “no sabe cuánto va a durar la nota”. Cuando el músico deja de pulsar la tecla, el sintetizador vuelve a enviar el mismo mensaje, pero esta vez con intensidad nula. b) Otro mensaje denominado Program Change (cambio de programa), indica que se debe cambiar de instrumento. Contiene un único parámetro, el
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
30
número del nuevo instrumento deseado. Cuando un sintetizador lo recibe, cambia de sonido; las próximas notas recibidas utilizarán este instrumento hasta que reciba un nuevo mensaje de cambio de programa. Este mensaje puede enviarse pulsando uno de los botones que muchos teclados incluyen para este propósito. c) En la mayoría de instrumentos acústicos, la afinación de una nota varía ligeramente a lo largo de su duración. Esto no debe considerarse una imperfección, ya que es uno de los matices que enriquecen el sonido. Sin embargo, en los instrumentos electrónicos, la afinación es, por defecto, estable. Para paliar esta "perfección", los teclados electrónicos disponen de una pequeña rueda giratoria que permite una desafinación controlada. Mientras el músico la gira, el teclado envía sucesivos mensajes denominados Pitch Bend (variación de la altura) cuyo único parámetro indica la cantidad de desafinación aplicable (que es proporcional al ángulo de rotación). d) A la hora de definir mensajes adicionales para indicar otros matices expresivos, los desarrolladores de la especificación MIDI comprendieron que no podían prever la evolución y el desarrollo de los futuros instrumentos electrónicos, por lo que dejaron varios mensajes abiertos. El más importante es el mensaje de Control Change (cambio de control). Este mensaje se compone de dos parámetros, siendo el primero el tipo de control o efecto elegido, y el segundo el valor o intensidad de este control. Entre los controles de uso más frecuente podemos citar: 1) El volumen 2) La posición panorámica 3) La reverberación. Existen algunos más, ya definidos, y otros muchos por definir, lo que convierte al mensaje de control en uno de los más versátiles. Los mensajes del canal Note On Este mensaje le indica al dispositivo, que debe iniciar una nota. Es generado cuando desde un teclado MIDI se aprieta una tecla. El primer byte de datos indica la altura de la nota, de lo que se deduce que el MIDI contempla 128 posibles notas, siendo la 0 la nota más
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
31
grave y la 127 la más aguda. Teniendo en cuenta que existen doce notas por octava, el MIDI tiene pues una tesitura de más de diez octavas (un piano de cola sólo tiene siete) que se corresponde aproximadamente con el número de octavas que el oído humano es capaz de captar. Aunque es posible modificar el mapa de asignación, por defecto, los múltiplos de 12 corresponden a notas Do, siendo la nota 60 el Do central de un piano. Las notas más extremás tan sólo podrán dispararse desde un teclado si modificamos este mapa, dado que los teclados más extensos ocupan siete octavas (de la nota 21 a la 88). En el apéndice B, “relación de alturas y notas MIDI”, se incluye una tabla con estas equivalencias. El segundo byte indica la velocidad de ataque, que viene determinada por la fuerza con que se ha apretado la tecla. Este parámetro se asocia normalmente con la intensidad sonora, aunque en algunos sintetizadores puede modificar también el timbre de la nota (como sucede con los instrumentos acústicos reales) haciendo que, por ejemplo, a mayor velocidad suene más brillante. La velocidad 0 tiene un carácter especial, pues no corresponde a una nota “que no se oye”, sino que funciona en realidad como interruptor de apagado, desactivando la nota indicada, si es que estuviera sonando. Algunos teclados no detectan la velocidad de ataque. En este caso, envían una velocidad constante de 64. Note Off Funciona de forma similar al Note On con velocidad 0, por lo que se envía cuando se libera la tecla pulsada. El primer byte es la altura de la nota. El segundo byte es la velocidad de liberación. La inmensa mayoría de dispositivos no generan ni responden a la velocidad de liberación, por lo que es un mensaje muy poco utilizado. En su lugar, cuando se libera una tecla, la mayoría de teclados envían Note On con velocidad 0, que todos los sintetizadores entienden. Cuando se utiliza, la velocidad de liberación podría afectar a la forma en que desaparece el sonido (más bruscamente para una velocidad mayor). 4. Bytes de status y bytes de datos Los mensajes MIDI se pueden enviar a través de dieciséis canales distintos y que
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
32
el número de posibles instrumentos que puede gestionar un mensaje de Program Change, es de 128. Estos valores no son casuales, corresponden ambos a potencias de dos (24 y 27 respectivamente). Los mensajes MIDI se componen de dos o tres bytes. Estos bytes se dividen en dos categorías,: a) bytes de status y b) bytes de datos, de acuerdo con el valor de su bit más significativo, que en los primeros vale 1, mientras que en los bytes de datos está siempre a cero. Los siete bits libres restantes, son pues los que condicionan que el número de posibles programás en el mensaje de Program Change sea 128, y no 256, y lo mismo es aplicable a cualquier otro mensaje: los datos MIDI están siempre comprendidos entre los valores decimales 0 y 127 (binarios 00000000 y 01111111). Todo mensaje MIDI se compone de un primer byte de status (que determina el tipo del mensaje) y uno o dos bytes restantes de datos (dependiendo del tipo de mensaje). En el byte de status, tan sólo tres, de los siete bits disponibles (no olvidemos que el más significativo está siempre a 1), son los que determinan el tipo de mensaje. Los cuatro restantes indican el canal al que el mensaje va dirigido, lo que explica porque son dieciséis (24) los canales MIDI posibles.
Figura 1.15: Estructura binaria de un mensaje.
1.5.
Lenguaje de programación JAVA
Java es un lenguaje de programación orientado a objetos. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
1 Conceptos previos y herramientas
33
bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible. Se ha usado este lenguaje de programación para desarrollar el interfaz de licencia libre que carga las programaciones a los dispositivos de luz y se está usando principalmente para asimilar las funcionalidades del conversor MIDI2tex al interfaz de carga de archivos y así evitar tener que realizar una ejecución para convertir el fichero MIDI antes de ser cargado a los sistemas de luz.
1.6.
IDE Eclipse
Eclipse es un entorno de desarrollo integrado de código abierto multiplataforma para desarrollar en una amplia variedad de lenguajes. Usado en este proyecto para realizar desarrollos en Java y C facilitando la compilación de los mismos.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
2.
34
Desarrollo
Este capítulo recoge toda la especificación técnica referente al desarrollo del proyecto.
2.1.
Fase de Análisis
Necesitamos un sistema que permita la fácil introducción de comandos programados en el sistema que en nuestro caso concreto producirá luces. Los parámetros que tiene que poder manejar este interfaz de programación temporal son intensidad y colores que no es más que una combinación de la intensidad entre los tres colores básicos. Tiene que poder permitir su programación en tiempo real y también su edición posterior y además poder revisar la ejecución de los parámetros para obtener una vista previa del resultado final. Un secuenciador MIDI cumple todos estos requisitos, es completamente estándar, puede combinar cualquier tipo de elemento multimedia e incluso aquellos que no lo son y todos pueden producir una salida estándar de programación en archivo de formato MIDI Después de este paso necesitaremos un traductor de los comandos que produzca este sistema MIDI al lenguaje del Arduino o del BlinkM como se ha elegido en este caso.
Figura 2.1: Arduino mini pro, usado en uno de los prototipos
Y por último un hardware, en este caso LEDs RGB + blinkM + el programador LinkM aunque experimentaremos con LEDs RGB + Arduino y también con LEDs RGB + Arduino + BlinkM.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
35
Figura 2.2: Prototipo 1, primer paso
2.2.
Diseño e Implementación
Se han construido 2 prototipos con intención puramente experimental e investigadora. Se ha elegido la maza porque es la situación de implementación más compleja de estos dispositivos ya que debe de obedecer unas estrictas normas de durabilidad, resistencia a golpes y lo que lo hace más complejo, de equilibrio dentro del propio prototipo para su correcto manejo como malabar. Evidentemente el tamaño y acople al dispositivo es especialmente delicado. Por eso y para extraer el máximo de experiencia posible se han hecho dos aproximaciones totalmente diferentes. 2.2.1.
Prototipos
1. En el prototipo 1 finalizado se ha usado una batería ultracompacta de alto rendimiento y un montaje de diodo de luz único en una maza de principiante. 2. En el prototipo 2 en fase de elaboración se están implementando dos baterías standar AA en una maza convencional de material translucido con 8 diodos opacos montados en paralelo a una única circuitería BLINKM MINM (similar a BlinkM sólo que más pequeño y con diodo opaco) sobre un chasis prefabricado donde van los diodos LED esta vez de tipo translucido del mismo tipo que los usados en los BlinkM MinM.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
36
Figura 2.3: Prototipo 1, segundo paso
Figura 2.4: Prototipo 1, tercer paso
Figura 2.5: Prototipo 1, cuarto paso
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
37
Figura 2.6: Prototipo 1, quinto paso
Figura 2.7: Dispositivo BlinkM MinM Izquierda comparado a BlinM derecha
Ambos prototipos usan la circuiteria BlinkM, en el caso del prototipo 1 en modo solitario y en el prototipo 2 estará unida a un miniArduino pro (placa de muy reciente fabricación) que hará las veces de procesador central del dispositivo. Es cierto que el Arduino solamente podría hacer el trabajo del BlinkM no siendo
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
38
realmente necesario éste, pero cambiaría el lenguaje de programación del mismo si lo usáramos sin el BlinkM complicando la integración del software que ya tenemos para la programación de los comandos. Sólo nos inclinaríamos por esta solución si tuviéramos una ventaja realmente diferencial que hasta ahora no se ha detectado pero que es posible que para alguna aplicación determinada exista.
Figura 2.8: Circuitería de BlinkM
Figura 2.9: Ejemplo de conexión BlinkM a Arduino Diecimila
Con el objetivo de experimentar a fondo estas posibilidades hemos integrado un miniArduino en el segundo prototipo para establecer las ventajas e inconvenientes comparativos de ambas tecnologías.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
39
Figura 2.10: Conexión Arduino al un ordenado mediante puerto usb
2.2.2.
Hardware
La elección del hardware responde principalmente a motivos económicos y de espacio y varia según la necesidad. En este caso concreto, el más complejo de los posibles, que consiste realizar un malabar de tipo maza, tendremos serias restricciones espaciales y tecnológicas. Las baterías han de durar al menos una hora soportando consumos puntuales extremos de hasta 3w según los LEDs usados. Se han elegido 2 tipos de baterías las NI-MH con formato standard recargable AA como las de uso común pero implementadas para optimizar la carga a través de usb y las especializadas ultra-ligeras y ultra-compactas Li-Po de 110 mAh a 3,7V extraídas del sistema de propulsión de un aero-modelo. De las combinaciones de hardware posibles la más económica y ligera es BlinkM +LEDs RGB + programador a parte LinkM.
Figura 2.11: BlinkM +LEDs RGB + programador a parte LinkM
El BlinkM ya incorpora un LED RGB que puede ser conectado en paralelo con otros diodos para extender la luminosidad a ambas caras del dispositivo.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
40
Tiene un precio aproximado de 15 euros a los que abría que sumarle el costo de la maza (en el caso del prototipo 1 unos 10 euros) más el costo del programador 20 euros en el caso de usar LinkM o 30 euros en el caso de usar como programador el Arduino más barato. No vamos a extendernos con las posibles combinaciones que podrían ser múltiples y realizaremos una implementación del primer prototipo con la combinación que parece más optima. Ésta nos permitiría reducir el precio de producción del prototipo del malabar a apenas 35 euros por malabar que subiría a 50 euros con las baterías ultra ligeras Li-Po y no llegaría a los 40 euros con las baterías standard. Tanto el LinkM como Arduino nos permiten programar varios dispositivos a la vez como se puede ver en la figura 2.11. Aunque Arduino no posee tantas limitaciones al programar dispositivos, programar los 9 dispositivos simultáneos que permite el programador del LinkM parece más que suficiente además de resultar más cómodo por estar ya adaptado el dispositivo específicamente al BlinkM. El precio de prototipo con portes de las piezas incluidos se distancia a simple vista de los 200 euros del elemento más barato producido en serie por las compañías existentes en el mercado. Con esta combinación al producir en masa obtendríamos un producto con un coste fijo en el programador (LinkM) de 20 euros ya que está producido por terceros y obtendríamos un coste de producción del malabar tipo maza fluctuante pero que no pasaría de los 30 euros en el caso de un dispositivo de LED único.
Figura 2.12: Bateria ultra-ligera Li-PO
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
2.2.3.
41
El secuenciador
Como podemos ver en las gráficas siguientes un secuenciador no es más que un sistema de líneas de tiempo que sincroniza diversos eventos ya sean MIDI, audio, video, o como en este caso colores lanzados a un dispositivo programable.
Figura 2.13: Secuenciador del BlinkM
Arduino sólo nos dota de un interfaz para cargar scripts pero no un sistema de programación visual con línea de tiempo. Sin embargo BlinkM descendiente comercial de Arduino con algunas de sus partes licenciadas con algunas restricciones si que posee de un secuenciador, de código fuente abierto que aunque muy limitado por algunas características es muy funcional para pequeñas tareas. Este secuenciador si que es completamente modificable para las necesidades propias, pero sencillamente esta mal planteado para un uso artístico en producción. Puede servir para hacer pequeñas combinaciones y quizás colocarlas en un vehículo a modo de tunning, pero no para acompañar un espectáculo. Los problemas son: Carece de posibilidad de cotejar con otros elementos la linea del tiempo, como música o vídeo sólo dispone de la programación de 48 cambios de luz con opción de hacer después bucle o no
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
42
Una ejecución temporal secuenciada se limitaría tan sólo a esos 48 pasos y a la ejecución de los mismos en 3 o 600 segundos. Las ventajas son: Maneja directamente los LEDs sin necesidad de programarlos Tiene un testigo de color (similar al plugin que fabricaremos) Permite la carga de scripts de color dentro del blinkM También puede funcionar usando Arduino como programador en vez del LinkM
Figura 2.14: Programador LinkM
Éste es un popular secuenciador de apple llamado GarageBand. Se ha elegido éste por ser uno de los más populares y por ser posiblemente el único conocido, que no tiene de por sí la capacidad de exportar a archivos MIDI, siendo necesaria la instalación del la utilidad freeware MIDIO descargable en http://www. macmusic.org/software/view.php/lang/en/id/2221/MIDIO.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
43
Figura 2.15: Secuenciador GarageBand
En este secuenciador como podemos ver, sincronizamos la ejecución de una pista de vídeo, el sonido de la misma, y después tenemos tres pistas MIDI que serán la programación de los tres dispositivos de luz de nuestro sistema. La comodidad es palpable a simple vista. La correlación color asignada la altura de la nota es muy intuitiva. Como observamos en la figura anterior, pulsando las teclas del teclado mientras se ejecuta el video recorreremos los colores del arco iris como vemos en la pista de luces maza 1. En la pista de luces maza 2 podemos ver que simplemente hemos ejecutado un color que se apaga y se enciende e en la pista de luces maza 3 hemos ejecutado un simple color permanente que cambia de brillo. Valor que está asociado a la propiedad sonora de volumen. La flexibilidad de edición es ilimitada. Podemos parar, mover un color/nota cambiando su altura/color, ampliar su duración en el tiempo, y editar el brillo si lo deseamos a golpe de ratón. La flexibilidad de ejecución también es sorprendente. Aunque en este caso hemos usado un instrumento MIDI típico como es el teclado tipo piano, existen miles de dispositivos MIDI que podrían controlar los valores de nota/color y volumen/brillo.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
44
Figura 2.16: Interfaz MIDI para los Ipad ,Ipod,Iphone
Un ejemplo cercano podría ser la superficie de un ipad o el propio trackpad del portátil usando un algoritmo simple de ejes x,y. Existen muchos programas y la mayoría gratuitos y de código abierto que permiten convertir en dispositivo MIDI casi cualquier interfaz de entrada de información de un computador. Muy habitual en su uso son los conversares de señales de los joystick. de juegos a MIDI que podrían ser también apropiado para este uso colocando el negro en el punto muerto del joystick. y generando un circulo de color cromático alrededor de la palanca cuya lejanía del centro podría transmitir el valor del brillo u otros si fuera necesario como cadencias de parpadeo o saturación. 2.2.4.
El plugin
El problema de editar con secuenciadores genéricos es que nos hará falta un añadido o plugin que nos de una indicación visual del color que ha sido programado.Aunque en la ejecución el propio instrumento de entrada podemos tener indicaciones de color en el propio instrumento para saber que color representa cada nota sin duda tener esta referencia sería una apreciable valor añadido. Otra ayuda sin duda es el registro de las notas ya que su representación visual nos ayuda a saber que colores han sido programados. Aunque sencilla el desarrollo de este plugin es una tarea que todavía no se ha implementado e incluye también el propósito de futuro el plantarse la modificación de algún secuenciador de código libre completo para adaptarlo a estas necesidades concretas directamente. Esto daría algunos valores añadidos como el registro de notas acorde con su color en la linea de edición.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
2.2.5.
45
El conversor de notas MIDI en secuencias de colores y valor de luminancia
Tenemos las dos partes para un funcionamiento ideal. Sólo nos falta el comunicador mediador entre los dos lenguajes: el lenguaje standard MIDI y el muy especifico y de programación BlinkM. Aunque en principio puede parecer sencillo realizar este traductor en el que “cierta nota es igual a cierto color” veremos no resulta una tarea sencilla y esa es la razón de que el sistema se encuentre en fase Beta. En principio asignaremos de forma manual ciertas notas a ciertos colores repartidos de forma proporcional para adaptarnos a la comodidad de los usuarios de distintos tipos de teclado con más o menos teclas. El primer problema que nos encontramos es que los instrumentos son polifónicos, es decir pueden emitir varios sonidos a la vez mientras que en los dispositivos sólo podemos emitir un color a la vez. Aunque podemos configurar el instrumento MIDI en el secuenciador y decirle que nuestro instrumento es monofónico y de esta forma limpiar totalmente de notas solapadas la pista de programación, sería deseable implementar en el convertidor también esta función en el futuro. Esto cambiaría totalmente la forma de programar el convertidor, que pasaría de ser un simple sistema de volcado de ordenes secuenciales, a ser un volcado de órdenes referenciadas a una linea de tiempo y en la cual sería imprescindible verificar el solapamiento de notas que ahora en la programación actual no se produce. Otro problema es que la especificación MIDI es increíblemente extensa y aunque no toquemos una sola nota se están transmitiendo muchos mensajes simultáneamente que el convertidor tiene que ignorar, como son los mensajes de sincronía y de otras propiedades típicas de los instrumentos que no vamos a usar como modulación o afinación de la nota (generalmente conocida como Pitch). Hay miles de mensajes en el standard MIDI que permiten hacer prácticamente de todo y que hay que ignorarlos a la hora de transcribir los comandos. Los ficheros MIDI se escriben en formato hexadecimal, eso los hace muy pequeños y optimizados para carga en pequeños dispositivos. Es necesario por este motivo, encontrar algún software y si es posible libre que nos ahorre la ardua tarea de identificar las cadenas hexadecimales de las notas y sacarlas y que realice previamente alguna labor de conversión.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
46
En este caso de entre los programas analizados hemos elegido “mf2t” (MIDI To Text converger) Otros softwares analizados han sido: amidmap MIDI2gmn MIDIcomp MIDI2Mtx Importante resaltar la dificultad que ha tenido encontrar el código fuente de este software en la red a punto de caer en el olvido y la necesidad de adaptar su código fuente para su compilación en alguno de los sistemas actuales. A continuación podemos ver la salida de un fichero MIDI en el que el instrumento interpretado es un piano, y se ha tomado especial cuidado en su interpretación, para no solapar notas en el principio de la intervención, y cuando ésta avanza, se ha producido intencionadamente un solapamiento simultáneo en las notas de la parte final. Se ha tenido mucho cuidado en configurar el sistema para que registrara los menos eventos posibles. La primera parte hace referencia a valores musicales considerados antes de empezar una obra musical como son, Nombre del instrumento, Pista de interpretación, ?empo de la pieza, ompás, etc. De todos los parámetros iniciales sólo nos interesa considerar el tempo que ajustará la variable que determinara a cuantas milésimas de segundo es igual cada unidad de tiempo MIDI y después tenemos los eventos de notas que gracias a este pre-convertidor nos facilitará enormemente el trabajo. De los parámetros de nota ignoraremos el “ch” que es el canal de comunicación. En cuanto a los demás ahora son fácilmente interpretables. En la unidad de tiempo 551 se pulsa la nota 80 asignándola el volumen máximo de 126 y en la unidad de tiempo 1717 se pulsa (en realidad se suelta) la nota 80 asignándola el volumen mínimo 0
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
47
Vemos como las siguientes notas son distintas pero siguen un proceso igual. Esto es debido a que el interfaz MIDI-teclado usado no tenía sensor de presión en sus teclas usando así sólo 2 valores 126 y 0. Si hubiéramos usado un teclado con esta sensibilidad en cada nota habría un volumen distinto representativo de la presión ejercida en cada nota que se traduciría en un brillo distinto en cada color. Como vemos el problema de programación se produce cuando tenemos 2 notas solapadas que se ha resuelto mediante la limitación del instrumento MIDI a modo monofónico en el secuenciador pero que sería deseable condicionar por programación también en el futuro. MFile 0 1 480 MTrk 0 Meta SeqName "Grand Piano" 0 Meta InstrName Ïnst 1" 0 TimeSig 4/4 24 8 0 KeySig 0 major 0 SMPTE 32 0 0 0 0 0 Tempo 500000 551 On ch=1 n=80 v=126 1717 On ch=1 n=80 v=0 1779 On ch=1 n=78 v=126 2946 On ch=1 n=78 v=0 3208 On ch=1 n=77 v=126 4636 On ch=1 n=77 v=0 5297 On ch=1 n=76 v=126 7070 On ch=1 n=76 v=0 8108 On ch=1 n=76 v=126 8322 On ch=1 n=76 v=0 10858 On ch=1 n=76 v=126 11050 On ch=1 n=77 v=126 11118 On ch=1 n=76 v=0 11218 On ch=1 n=79 v=126 11317 On ch=1 n=77 v=0 11464 On ch=1 n=81 v=126 11479 On ch=1 n=79 v=0 11917 On ch=1 n=81 v=0 13161 On ch=1 n=81 v=126 13445 On ch=1 n=79 v=126
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
2 Desarrollo
48
Figura 2.17: Especificaciones técnicas para el retardo
13476 On ch=1 n=81 v=0 13683 On ch=1 n=79 v=0 13714 On ch=1 n=77 v=126 13836 On ch=1 n=77 v=0 13960 On ch=1 n=76 v=126 14059 On ch=1 n=76 v=0 14059 Meta TrkEnd TrkEnd Estos comandos ahora visibles de forma sencilla gracias al desarrollo del software libre MIDI-to-text son convertidos a códigos BlinkM e importados a través del interfaz-secuenciador de BlinkM. De los múltiples comandos que poseen las librerías BlinkM nosotros usaremos por ahora tan sólo dos. 1. Las especificaciones técnicas para el retardo. 2. La asignación repentina de color. Se ha dejado intencionalmente en la captura de las especificaciones técnicas un ejemplo de programación de color con fade (cambio de color de forma progresiva) para hacer ver como se realizaría la programación directa bajo Arduino.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
Síntesis del trabajo
49
Figura 2.18: Asignación repentina de color
Síntesis del trabajo El prototipo desarrollado: Es preciso en la ejecución de su programación hasta el fin de vida de la batería Es fácil de programar y especialmente orientado a artistas. Es preciso en su simultaneidad de disparo de la secuencia. Tiene un margen de precio considerable con respecto a las alternativas existentes. Es multiplataforma Se pueda ejecutar en una máquina virtual Ha mejorado la resistencia a golpes con respecto a productos anteriores
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
Síntesis del trabajo
50
Tiene una autonomía mínima a máximo rendimiento de una hora. Queda por descubrir, cuál es el limite útil de la memoria del BlinkM para conjuntos de comando muy largos con experiencias de usuarios reales y si esta posible limitación inclinaría la balanza al uso de Arduino como CPU principal.
Conclusiones En conclusión podemos afirmar haber avanzado en el campo de los MASLP habilitando funcionalidades antes inexistentes y extendiendo otras poco desarrolladas. Sabemos que es posible afinar mucho más esta tecnología hasta ahora en un estado precario debido a la falta de interés comercial en la inversión de I+D. Hemos demostrado también que es posible avanzar no sólo en el aspecto tecnológico sino también en la optimización económica de la producción de estos dispositivos como demuestra el gran abismo de precio que distancia unos simples prototipos con respecto a los productos elaborados en serie. Hemos comprobado en este momento de la tecnología la idoneidad de usar la solución BlinkM+Programador LinKM, frente a soluciones con Arduino, para el caso de implementación que nos ocupa y con el objetivo de optimización económica.
Líneas de trabajo futuras 1. Realizar un plugin de tipo “vst” que permita la visualización de la programación de colores en cualquier tipo de secuenciador. 2. Traducir el convertidor MIDI a texto a java e integrar todo en un solo producto dentro del interfaz java ya existente en la tecnología abierta blinkM o dentro de una solución integral propia. 3. Estar al tanto de optimización en tecnología de diodos RGB para el estudio de su implementación desde el punto de vista económico. 4. Profundizar en los prototipos con Arduino sin BlinkM para estudio comparativo tecnológico y definir el tipo de uso que define la idoneidad de uso tecnológica y económica de un sistema u otro. 5. Avanzar en el convertidor MIDI a BlinkM incorporando más comandos que interpreten más eficientemente las acciones MIDI.
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"
Referencias
51
Referencias [1] Jonathan Oxer,Hugh Blemings. Practical Arduino: Cool Projects for Open Source Hardware, 2o ed. Estados Unidos de América: Ediciones Apress, 2009. 422 p. ISBN 987-1-4302-2477-8 [2] David Miles Huber Smart Home Automation with Linux, 2o ed. Apress., 2007. 289 p. Estados Unidos, ISBN 987-1-4302-2477-6 [3] VANDYK, J. The MIDI manual: a practical guide to MIDI in the project studio, 2o ed. United States of America: Apress, 2008. 362p. ISBN 987-0-240-80798-0 [4] Helen Casabona,David Frederick Advanced MIDI Applications, 1o ed. Alfred, 1988, 50 p. ISBN 0-88284-366-4 [5] SUEHRING, S. Thinking in Java, 4o ed. Prentice Hall, Canada, 2009. 1463 p. ISBN 0-13-187248-6 [6] Arduino [en línea] Arduino, Home page[Consultado: 10 de mayo 2011]. Disponible en World Wide Web: <http://www.arduino.cc/> [7] BlinkM [en línea] Smart devices make things simple [Consultado: 10 de mayo 2010]. Disponible en World Wide Web: <http://thingm.com/products/blinkm>
Jorge Valencia Álvarez
"Microautomatismos de luz programables autónomos bajo artuino"