Microautomatismos de luz programables autónomos bajo Arduino

51
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

description

Proyecto de investigación (fin de Master) encaminado a lograr un mejor rendimiento y las capacidades de estos pequeños sistemas autónomos de iluminación programadas. Con un enfoque especial en las necesidades de los artistas y la viabilidad económica de los tecnología desarrollada.

Transcript of Microautomatismos de luz programables autónomos bajo Arduino

Page 1: Microautomatismos de luz programables autónomos bajo Arduino

UNIVERSIDAD DE LEÓN

CURSO ACADÉMICO 2010/2011

Trabajo Fin de MasterMicroautomatismos de luz

programables autónomos bajoArduino

Micro autonomous programmable andautomatic lights under Arduino

MEMORIA

Jorge Valancia Álvarez

Trabajo Fin de Master

Escuela de Ingenierías Industrial e Informática

Page 2: Microautomatismos de luz programables autónomos bajo Arduino
Page 3: Microautomatismos de luz programables autónomos bajo Arduino

UNIVERSIDAD DE LEÓN

El presente documento es presentado como Trabajo de Fin de Máster por D. JorgeValencia Á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

Dr. D. Rafael Santamaría Sánchez

Vo Bo Autor

D. Jorge Valencia Álvarez

León, 7 de julio de 2011

Page 4: Microautomatismos de luz programables autónomos bajo Arduino
Page 5: Microautomatismos de luz programables autónomos bajo Arduino

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 mee-

ting the needs of artist people and the economic viability of the researched products.

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 6: Microautomatismos de luz programables autónomos bajo Arduino
Page 7: Microautomatismos de luz programables autónomos bajo Arduino

Índice 7

Índice

0. Introducción 100.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 151.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 342.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"

Page 8: Microautomatismos de luz programables autónomos bajo Arduino

Índice 8

Síntesis del trabajo 49

Referencias 51

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 9: Microautomatismos de luz programables autónomos bajo Arduino

Índice de figuras 9

Índice de figuras

1.1. Conexión de un Arduino al un ordenador . . . . . . . . . . . . . . . . 17

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"

Page 10: Microautomatismos de luz programables autónomos bajo Arduino

0 Introducción 10

0. Introducción

0.1. 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 es-

pectacular 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 equi-

pamientos 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 impresio-

nes 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 mer-

cado 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 hard-

ware 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 “Global-

tech” 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"

Page 11: Microautomatismos de luz programables autónomos bajo Arduino

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 mate-

rial 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 cuan-

do 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 me-

diante 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 com-

plicado 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 ga-

rantizar al máximo la minimización de la latencia de disparo y con las incomo-

didades 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 concatena-

das muy largas. Lo habitual es que los dispositivos “entren en escena” pasada

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 12: Microautomatismos de luz programables autónomos bajo Arduino

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 me-

dida. 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 de-

mostració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"

Page 13: Microautomatismos de luz programables autónomos bajo Arduino

0 Introducción 13

0.2. 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 plantea-

do 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 programa-

bles, con un interfaz multiplataforma quedando permanentemente programados.

El arranque de la programación de los dispositivos se hará mediante interruptor físi-

co. 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"

Page 14: Microautomatismos de luz programables autónomos bajo Arduino

0 Introducción 14

0.4. 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 en-

frenta 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 refe-

rencia a todo aquello que es necesario conocer para afrontar la realización del

proyecto.

Desarrollo: Este capítulo explica como está desarrollado el proyecto, describien-

do la especificación técnica del mismo. Pretende ser una guía de como se ha rea-

lizado 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 desa-

rrollo del proyecto.

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 15: Microautomatismos de luz programables autónomos bajo Arduino

1 Conceptos previos y herramientas 15

1. Conceptos previos y herramientas

1.1. Hardware libre

Se llama hardware libre a los dispositivos de hardware cuyas especificaciones y dia-

gramas 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 defini-

ció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 li-

bre 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 tam-

bié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 “inte-

llectual 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 conti-

nuació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"

Page 16: Microautomatismos de luz programables autónomos bajo Arduino

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 redun-

dante, 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. Arduino

1.2.1. Introducción

Arduino es una plataforma de electrónica abierta para la creación de prototipos ba-

sada en software y hardware flexibles y fáciles de usar.

Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entor-

nos 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"

Page 17: Microautomatismos de luz programables autónomos bajo Arduino

1 Conceptos previos y herramientas 17

El microcontrolador en la placa Arduino se programa mediante el lenguaje de pro-

gramació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 nece-

sidades.

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 ATme-

ga168 (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"

Page 18: Microautomatismos de luz programables autónomos bajo Arduino

1 Conceptos previos y herramientas 18

Contiene todo lo necesario para el soporte del microcontrolador; basta con co-

nectar 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"

Page 19: Microautomatismos de luz programables autónomos bajo Arduino

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 ali-

mentación, una cabecera ISCP, y un botón de reset.

Para usar el microcontrolado sólo es necesario conectarlo al computador, el pro-

cedimiento es análogo al del Arduino diecimila.

Figura 1.3: Arduino duemilamovile

Las características son parecidas a las del Arduino diecimila pero introduce al-

gunas 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"

Page 20: Microautomatismos de luz programables autónomos bajo Arduino

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"

Page 21: Microautomatismos de luz programables autónomos bajo Arduino

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 pro-

yecto.

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"

Page 22: Microautomatismos de luz programables autónomos bajo Arduino

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 elemen-

tos 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 es-

pecialmente 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"

Page 23: Microautomatismos de luz programables autónomos bajo Arduino

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 hard-

ware libre de Arduino e implementando también la mayoría de sus mecanismos de co-

municació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 posibili-

dad 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"

Page 24: Microautomatismos de luz programables autónomos bajo Arduino

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"

Page 25: Microautomatismos de luz programables autónomos bajo Arduino

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"

Page 26: Microautomatismos de luz programables autónomos bajo Arduino

1 Conceptos previos y herramientas 26

1.4.2. 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 secuen-

ciadores MIDI pero con el tiempo han ido secuenciando también audio, video, y otros

elementos. Por eso actualmente se habitúa nombrarlos simplemente como secuencia-

dores.

El sistema MIDI permite a sus usuarios disfrutar de la música de una manera di-

ferente, 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 pentagra-

más de notación musical para los instrumentistas.

Existen miles de dispositivos MIDI, cada uno de ellos diseñado para controlar al-

gunos 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"

Page 27: Microautomatismos de luz programables autónomos bajo Arduino

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éc-

tricos 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 di-

gitales 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"

Page 28: Microautomatismos de luz programables autónomos bajo Arduino

1 Conceptos previos y herramientas 28

Puede existir un tercer puerto, denominado MIDI THRU, que simplemente reen-

ví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 usua-

rios con conocimientos informáticos más avanzados, que pueden utilizar esta in-

formació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 ca-

paz 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 forzosa-

mente 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 complica-

da, en la práctica, si nuestro sistema se compone únicamente de un orde-

nador 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 for-

mato de los datos y el orden y disposición de los mensajes que se pueden trans-

mitir.

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 29: Microautomatismos de luz programables autónomos bajo Arduino

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 inter-

pretar 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 estu-

diemos 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), indi-

ca que se debe cambiar de instrumento. Contiene un único parámetro, el

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 30: Microautomatismos de luz programables autónomos bajo Arduino

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 lige-

ramente a lo largo de su duración. Esto no debe considerarse una imperfec-

ció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 (varia-

ció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 expre-

sivos, los desarrolladores de la especificación MIDI comprendieron que no

podían prever la evolución y el desarrollo de los futuros instrumentos elec-

tró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 con-

vierte 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 dedu-

ce 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"

Page 31: Microautomatismos de luz programables autónomos bajo Arduino

1 Conceptos previos y herramientas 31

grave y la 127 la más aguda. Teniendo en cuenta que existen doce no-

tas 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 aproximadamen-

te 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 cen-

tral 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 sintetizado-

res puede modificar también el timbre de la nota (como sucede con los

instrumentos acústicos reales) haciendo que, por ejemplo, a mayor ve-

locidad 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 velo-

cidad 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 No-

te 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"

Page 32: Microautomatismos de luz programables autónomos bajo Arduino

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 com-

prendidos 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 mo-

delo 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 com-

pilació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"

Page 33: Microautomatismos de luz programables autónomos bajo Arduino

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 princi-

palmente 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"

Page 34: Microautomatismos de luz programables autónomos bajo Arduino

2 Desarrollo 34

2. Desarrollo

Este capítulo recoge toda la especificación técnica referente al desarrollo del proyec-

to.

2.1. Fase de Análisis

Necesitamos un sistema que permita la fácil introducción de comandos programa-dos 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 poste-

rior 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"

Page 35: Microautomatismos de luz programables autónomos bajo Arduino

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 investigado-

ra.

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 to-

talmente diferentes.

2.2.1. Prototipos

1. En el prototipo 1 finalizado se ha usado una batería ultracompacta de altorendimiento 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íasstandar AA en una maza convencional de material translucido con 8 diodosopacos 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"

Page 36: Microautomatismos de luz programables autónomos bajo Arduino

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"

Page 37: Microautomatismos de luz programables autónomos bajo Arduino

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"

Page 38: Microautomatismos de luz programables autónomos bajo Arduino

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 mi-

niArduino en el segundo prototipo para establecer las ventajas e inconvenientes com-

parativos de ambas tecnologías.

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 39: Microautomatismos de luz programables autónomos bajo Arduino

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 espa-cio 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 extre-

mos 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"

Page 40: Microautomatismos de luz programables autónomos bajo Arduino

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 mala-

bar 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 lavez 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"

Page 41: Microautomatismos de luz programables autónomos bajo Arduino

2 Desarrollo 41

2.2.3. 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 pro-

gramació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 ser-

vir 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 des-

pués bucle o no

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 42: Microautomatismos de luz programables autónomos bajo Arduino

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"

Page 43: Microautomatismos de luz programables autónomos bajo Arduino

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 cam-

biando 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 dis-

positivos MIDI que podrían controlar los valores de nota/color y volumen/brillo.

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 44: Microautomatismos de luz programables autónomos bajo Arduino

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"

Page 45: Microautomatismos de luz programables autónomos bajo Arduino

2 Desarrollo 45

2.2.5. El conversor de notas MIDI en secuencias de colores y valor deluminancia

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 con-

vertidor 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ánea-

mente 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 pe-

queñ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 ta-

rea 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"

Page 46: Microautomatismos de luz programables autónomos bajo Arduino

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"

Page 47: Microautomatismos de luz programables autónomos bajo Arduino

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 sola-

padas 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"

Page 48: Microautomatismos de luz programables autónomos bajo Arduino

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 softwa-

re 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 ejem-

plo 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"

Page 49: Microautomatismos de luz programables autónomos bajo Arduino

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"

Page 50: Microautomatismos de luz programables autónomos bajo Arduino

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 habili-

tando 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 solu-

ció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 in-

terpreten más eficientemente las acciones MIDI.

Jorge Valencia Álvarez "Microautomatismos de luz programables autónomos bajo artuino"

Page 51: Microautomatismos de luz programables autónomos bajo Arduino

Referencias 51

Referencias

[1] Jonathan Oxer,Hugh Blemings. Practical Arduino: Cool Projects for Open Sour-

ce 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]. Dispo-

nible 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"