1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control...

18
Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A. Santana, Juan C. Zuleta Asesor: Andrés. M. Cárdenas Universidad de San Buenaventura Medellín, Colombia [email protected] [email protected] [email protected], IEEE Member (Aprobado el 10 de Diciembre de 2011) Resumen: En el presente artículo se implementa una interfaz de control inalámbrica para la manipulación de parámetros de audio del protocolo MIDI (Interfaz Digital de Instrumentos Musicales). El diseño de esta interfaz está basado en un guante, el cual esta adecuado con una serie de componentes electrónicos como flexometros para identificar los movimientos de los dedos, Acelerómetros para identificar un cambio en la posición de la mano, un micro-controlador para interpretar y adecuar las señales para la transmisión. La forma como se realiza la comunicación inalámbrica es por medio de módulos XBEE; éstos logran comunicar el guante con el receptor, que en este caso, es una implementación electrónica por medio de otro micro-controlador que toma las señales enviadas del guante y las convierte en protocolo MIDI para que pueda comunicarse con un software especializado de control de sonidos o una consola de control MIDI. Con un simple cambio de posición de la mano o flexión de un dedo se puedan modificar parámetros dentro de un software o consola de protocolo MIDI. Por tal motivo este desarrollo no solo presenta posibilidades para ser implementadas en aplicaciones en sonido; sino en muchas otras más. Palabras claves: Acelerómetro, Control inalámbrico, Flexometros, Posición, Microcontrolador, Protocolo MIDI, Modulo XBEE. 1. INTRODUCCIÓN La necesidad de buscar nuevas alternativas para la variación de parámetros musicales sin utilizar instrumentos físicos, plantea la posibilidad de innovación a través de un elemento que permita desarrollar de forma simplificada las tareas. La integración de Ing. Electrónica y Sonido esta dando como resultado un dispositivo que permite la modificación de variables, en diversos instrumentos electrónicos musicales; siendo estos manipulados por medio de un software y un guante instrumentado que permitirá manipular parámetros de intensidad, panorámica y contenido en frecuencia de señales de audio en forma independiente. Nuestro objetivo es poder controlar con la posición de las manos y movimientos de los dedos parámetros de sonido que puedan ser variados en los diferentes instrumentos, facilitando la manipulación de los equipos que controlan la variación del sonido en los instrumentos musicales con protocolo MDI. Actualmente se han desarrollado varios prototipos en los que se implementan el diseño de interfaces y dispositivos para equipos con protocolo MIDI, con características físicas y electrónicas convencionales, como feders, switches, pulsadores, etc. Pocos se enfocan en equipos que permita con el censado de los movimientos, realizar modificaciones a instrumentos electrónicos acústicos; además de permitir flexibilidad y libre movimiento en áreas amplias, sin tener la necesidad de estar en un solo punto, realizando las modificaciones en los diferentes equipos.

Transcript of 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control...

Page 1: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo

MIDI

Jhon A. Santana, Juan C. Zuleta

Asesor: Andrés. M. Cárdenas

Universidad de San Buenaventura

Medellín, Colombia

[email protected]

[email protected]

[email protected], IEEE Member

(Aprobado el 10 de Diciembre de 2011) Resumen: En el presente artículo se implementa una interfaz de control inalámbrica para la manipulación de parámetros de audio del protocolo MIDI (Interfaz Digital de Instrumentos Musicales). El diseño de esta interfaz está basado en un guante, el cual esta adecuado con una serie de componentes electrónicos como flexometros para identificar los movimientos de los dedos, Acelerómetros para identificar un cambio en la posición de la mano, un micro-controlador para interpretar y adecuar las señales para la transmisión. La forma como se realiza la comunicación inalámbrica es por medio de módulos XBEE; éstos logran comunicar el guante con el receptor, que en este caso, es una implementación electrónica por medio de otro micro-controlador que toma las señales enviadas del guante y las convierte en protocolo MIDI para que pueda comunicarse con un software especializado de control de sonidos o una consola de control MIDI. Con un simple cambio de posición de la mano o flexión de un dedo se puedan modificar parámetros dentro de un software o consola de protocolo MIDI. Por tal motivo este desarrollo no solo presenta posibilidades para ser implementadas en aplicaciones en sonido; sino en muchas otras más. Palabras claves: Acelerómetro, Control inalámbrico, Flexometros, Posición, Microcontrolador, Protocolo MIDI, Modulo XBEE.

1. INTRODUCCIÓN

La necesidad de buscar nuevas alternativas para la variación de parámetros musicales sin utilizar instrumentos físicos, plantea la posibilidad de innovación a través de un elemento que permita desarrollar de forma simplificada las tareas. La integración de Ing. Electrónica y Sonido esta dando como resultado un dispositivo que permite la modificación de variables, en diversos instrumentos electrónicos musicales; siendo estos manipulados por medio de un software y un guante instrumentado que permitirá manipular parámetros de intensidad, panorámica y contenido en frecuencia de señales de audio en forma independiente. Nuestro objetivo es poder controlar con la posición de las manos y movimientos de los dedos parámetros de sonido que puedan ser variados en los diferentes instrumentos, facilitando la manipulación de los equipos que controlan la variación del sonido en los instrumentos musicales con protocolo MDI. Actualmente se han desarrollado varios prototipos en los que se implementan el diseño de interfaces y dispositivos para equipos con protocolo MIDI, con características físicas y electrónicas convencionales, como feders, switches, pulsadores, etc. Pocos se enfocan en equipos que permita con el censado de los movimientos, realizar modificaciones a instrumentos electrónicos acústicos; además de permitir flexibilidad y libre movimiento en áreas amplias, sin tener la necesidad de estar en un solo punto, realizando las modificaciones en los diferentes equipos.

Page 2: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

El departamento de Ingeniería Mecánica y Automatización de la Universidad de Hong Kong, desarrollo a partir de señales eléctricas recibidas por el guante virtual CyberGlobe desarrollado por la empresa Inmersión (este guante capaz de medir los movimientos de la mano, dependiendo de la configuración deseada, pues existe un tipo que puede medir los movimientos ejercidos en cada falange) , un sistema que permite simular la deformación de objetos para la detección temprana de fallos. Los investigadores encontraron que al utilizar una aproximación con elementos finitos, se podían modelar las fuerzas ejercidas por cada dedo En 2003 en la Conferencia sobre nuevas interfaces para la Expresión Musical. Se hablo de la Sonic Banana, un controlador MIDI y de instrumentos musicales alternativos en la forma de un tubo largo y dos pies de goma flexible, hecha de 4 sensores flexibles, cada uno de 5 cm de largo, se montan en una fila a lo largo del interior del tubo de una barra de metal flexible que funciona la longitud del tubo. La flexión en los cuatro sensores envían mensajes MIDI de control continuo de 1-4, respectivamente. Doblando el tubo en lugares diferentes cambia el valor del control que corresponde al sensor en esa ubicación, logrando controlar los parámetros. En la construcción para esta interfaz inalámbrica para controlar variables dentro del protocolo MIDI comprende una parte física que consta de los elementos electrónicos por medio de los cuales controlamos o identificamos los movimientos de los dedos y posición de la mano. Otra parte de la construcción es la lógica por medio de la cual analizamos y realizan los cálculos para la comprensión de los movimientos de los dedos y posición de la mano, para que puedan ser trasmitidas inalámbricamente y comprendida por dispositivos con protocolo MIDI. Dando al usuario un control de los dispositivos MIDI por medio de la movimiento de los dedos o posición de las manos.

2. DISEÑO

Para el desarrollo de la interfaz lo primero que debemos tener claro son las variables en los dispositivos MIDI y la forma como las vamos a modificar o controlar, en este caso sería las manos y sus dedos por medio de la medición de la posición, fuerza, aceleración o flexibilidad. Luego como interpretar estas variaciones, adecuarlas y compararlas, para ser transmitidas inalámbricamente a otro dispositivo que comprenda estos datos y me los convierta a

protocolo MIDI. Después investigar qué tipo de dispositivos electrónico nos permite realizar estas mediciones y lograr crear el siguiente esquema (Fig. 1).

En la detección del movimiento de los dedos se realiza a través de flexometros (Fig. 2a), el cual, se basa en elementos de carbono resistente. El sensor de Flex alcanza gran factor de forma en un substrato flexible y delgado. Cuando el substrato se dobla, el sensor produce una salida de resistencia correlacionado con el radio de curvatura, entre menor es el radio, mayor será el valor de la Resistencia Obteniendo. Este componente es muy similar a un potenciómetro de resistencia variable, ya que cambia su resistencia según su ángulo de inclinación (Fig. 2b). Para poder analizar esta seña y tener una mayor precisión al medir el ángulo del dedo es necesario implementar un divisor de voltaje y circuito Buffer para estabiliza y elimina ruidos que pueda tener la señal (Fig. 2c).

En la detección de la posición de la mano lo realizamos por medio de un acelerómetro (Fig 2a, 2b, 2c). Este tipo de transductor mide el cambio de las aceleraciones producidas por cualquier movimiento, basándose en la segunda ley de Newton; la cual indica que la fuerza ejercida sobre un objeto es proporcional a la aceleración de su masa. Este efecto es generado en el acelerómetro, gracias a una masa que se mueve sobre un elemento piezoeléctrico. Existen dos tipos de acelerómetros, los pasivos y los activos. Para el caso de los pasivos, la señal producida por

Page 3: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

el piezoeléctrico es entregada directamente al diseñador, esto implica que es necesario un circuito amplificador externo. El otro caso, tiene un circuito amplificador interno, por lo cual solo es necesaria una fuente de alimentación. Para este diseño utilizamos el segundo. El acelerómetro envían una señal análoga de un cambio de voltaje dependiendo de su posición en los ejes x, y, z. el acelerómetro envía una variación de voltaje, 0,85v, 1,65v ó 2,45v en cada uno de sus ejes dependiendo del cambio que se realiza en su posición (Fig. 3). La forma como se analiza la posición de la mano es por el cambio de voltaje en los ejes del acelerómetro más no por el movimiento de la mano ya que este sensor no es muy preciso con el movimiento.

Para adecuar estos sensor en la mano se implementa un guante al cual se le puedan adicionar los flexiometros y el acelerómetro, por medio de este se realizan pruebas y mejoras al dispositivo (Fig. 4).

Ya teniendo los flexometros y el acelerómetro interactuando con la mano y dedos, hay que manipular, controlar, convertir e identificar estas señales para su transmisión, para este proceso se utiliza un Microcrontrolador que por medio de su programación toma todas estas señales las procesa y las organiza para que el transmisor inalámbrico las pueda enviar más fácil.

Para la conversión, manipulación y adecuación de las señales se plantea trabajar con el microcontrolador MNF51JM128 (Fig. 5a), por presentar las siguientes características, tener convertidor analógico a digital (ADC) 8 canales y capacidad para transmitir información por protocolo serial (USART). En el mercado uno puede encontrar varios microcontroladores con estas características pero por decisión del grupo se escogió este en específico. Para la conversión de los datos de forma Análogo – Digital se utilizo el Puerto B y para la transmisión de los dato serial se utilizo el Puerto E. (Fig 5b).

La transmisión inalámbrica de los datos se realiza por módulos de transmisión Xbee (transmisor y receptor). El cual tiene un bajo consumo de energía, proporciona información fiable en la entrega de datos entre dispositivos remotos, fácil configuración, buen rango de cobertura, manejo de USART, bajo costo entre otros. Su configuración se realiza por medio de protocolo serial y básicamente se configura que tipo de transmisión, un canal de frecuencia, un nombre para el transmisor y uno para el receptor. (Fig. 6).

Page 4: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

En la recepción inalámbrica hay que decodificar, convertir, manipular y adecuarlos para esto utilizamos nuevamente los microcontroladores, quien en este caso por medio de programación tomas los datos inalámbricos y realiza la conversión al protocolo MIDI (Interfaz Digital de Instrumentos Musicales), para que, las señales que generemos en las manos y dedos puedan ser interpretados como una señal de variación en algún parámetro musical del MIDI.

El protocolo MIDI maneja 8 Bits por trama y además transmite a una velocidad de 32150bits/se, este protocolo es muy parecido al serial, la diferencia es que mientras en el serial un bit equivale a 1 en MIDI tiene un valor de 0. En el protocolo MIDI se maneja 2 tipos de trama (8 bits), la primera trama es la trama de control y consta de valores que oscilan entre los 128 a 254 bytes (Fig. 7), la cual se agrupa por 4bit en los cuales los primeros 4 bit equivalen al canal a manejar y los otros 4 bit equivalen al tipo de control. Y esta nos indica cuantas tramas de variación se necesitarían. La segunda trama es la trama de variación o intensidad y oscila entre 0 a 127 bytes, nos indica que valor debe tomar el tipo de control del canal seleccionado.

Además de la conversión MIDI, debemos implementar un conector MIDI (Fig. 8), el cual será la conexión con la consola o pc. Este conector utiliza un conector de tipo DIN de 5 pines o contactos. La transmisión de datos sólo usa uno de éstos, el número 5. Los números 1 y 3 se reservaron para añadir funciones en un futuro. Los restantes (2 y 4) se utilizan -respectivamente- como blindaje y para transmitir una tensión de +5 voltios, para asegurarse que la electricidad fluya en la dirección deseada. El sistema de funcionamiento MIDI es de tipo simplex, es decir, sólo puede transmitir señales en un sentido. La dirección que toman las señales es siempre desde un dispositivo 'maestro' hacia un dispositivo 'esclavo'. El primero genera la información y el segundo la recibe. En este proyecto la interface de control será el “Maestro” y el PC o consola será el “esclavo”.

Page 5: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

3. PRUEBAS REALIZADAS

Las pruebas realizadas durante el diseño de la interfaz inalámbrica MIDI se pueden agrupar por fases del diseño. En la primera fase de diseño las pruebas realizadas fueron para comprender el funcionamiento de los flexiometros, acelerómetro y Microcontrolador CMF51JM128 que se usarían. Con los flexiometros se identifico la variación de resistencia cuando se da un ángulo de flexión, para identificar la resistencia máxima y mínima que logra, en el acelerómetro se identifico los voltajes en los ejes x,y,z según la posición que se encuentra el acelerómetro. Al identificar estas variables se comenzó a realizar el programa para el Microcontrolador e identificar que puertos del micro se utilizarían, en este caso seria los puertos de conversión análoga digital como entrada y para su visualización de la variación de los parámetros se utilizo el puerto serial del micro y el hipertermia del PC. Esta es una imagen del montaje de prueba de la primera etapa.

En la segunda etapa se realizan pruebas para la transmisión inalámbrica, inicialmente con el modulo Zig-Bee (Wi FS24-100ST), este modulo presenta muy buenas características el inconveniente que presentamos con este modulo es su falta de información en Internet y brindar información muy genérica para su configuración, la cual requería de un código de programación para su funcionamiento además de programas especiales y módulos de la empresa para verificar su correcto funcionamiento.

Por tal motivo se decidió realizar la implementación inalámbrica con otro modulo de transmisión en este caso con los módulos X-Bee, los cuales ya presentan un código preinstalado de funcionamiento, además de una gran infamación en Internet y una configuración mucho mas fácil sin requería programas o módulos especiales para su configuración, lo único que se necesita es un PC con comunicación serial y un programa de comunicación serial para ingresar los datos para su configuración básica, la cual es darle un nombre al modulo indicar el nombre de la red X-Bee, el canal en que trabaja entre otros parámetros y todo se realiza por comunicación serial.

En la tercera etapa se realizo la adecuación de los datos recibidos de los mulos X-Bee para su conversión al protocolo MIDI con el microcontrolador MF51QE128, en esta parte se investigo cómo es el funcionamiento del protocolo MIDI para generar una programación y una interfaz para conectar a un dispositivo MIDI, al microcontrolador que toma los datos inalámbricos y los convierte en protocolo MIDI, se utilizaron los puertos de comunicación serial, porque el protocolo MIDI es muy similar al serial la diferencia que tiene es los BPS que maneja y los datos MIDI son valores inverso al dato serial, es decir mientras en MIDI el dato es 0 en serial es 1, por esto se adecua la señal serial de microcontrolador con una compuerta NOT para que todo tato serial que envía sea lo contrario y equivalgan al dato MIDI.

En la cuarta etapa se realizo se realiza la integración de las anteriores pruebas para la construcción de un circuito impreso para la conexión de todos los elementos y su respectiva muestra y entrega, de los módulos de transmisión

Page 6: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

y de recepción de datos con sus respectivos conectores de salida de datos y análisis para pruebas por puerto serial.

Finalmente, se contemplará en las siguientes imágenes el funcionamiento de la mano con el software MIDI-OX. Visualizando las información recibida por la interfaz.

En la siguiente imagen, muestra como es la captura de los datos MIDI en la PC con el software MIDI-OX.

4. TRABAJOS FUTUROS

Las bases de este proyecto pueden ser utilizadas en el desarrollo de sistemas que permitan controlar de manera inalámbrica diferentes dispositivos electrónicos, es decir, no solo ser implementado en equipos electrónicos de música, sino para controlar robots a distancio, manipular equipos industriales, computadores entre otros. Con los movimientos de nuestras manos. También generar un software que permita a personas con alguna incapacidad motora, auditiva o problemas de habla, comunicarse mas fácil con el entorno y la comunidad que le rodea, siendo este sistema un intérprete de ellos mejorando la calidad de vida de ellos. Por tal motivo las futuras implementaciones que se le pueden dar a este dispositivo, serian todas aquellas en las que por riesgos o por comodidad, se necesita manipular o controlar equipos o software a distancia por medio de la interacción con nuestro cuerpo. 5. RESULTADOS OBTENIDOS

Los resultados preliminares del proyecto fueron los siguientes: En los flexometros se encontraron varias dificultades en los cuales comprometieron el proyecto en ocasiones debido a la variación que se tiene permanentemente con ellos, y su difícil estabilidad por los movimientos que se generan en la mano por la flexión de un dedo evitando obtener datos exactos de los demás dedos, sin embargo se pudo fijar un valor promedio realizando cálculos matemática con respecto a los valores reales que arrojaban los flexometros al momento de medirlos, este promedio son valores dados en porcentajes, minimizando así el rango de datos que muestra, pero obteniendo casi un dato exacto en cada punto de medición y arrojando un mejor valor para su comprensión. Se logro establecer el proceso de transmisión y

Page 7: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

recepción inalámbrica de los datos enviados por el microcontrolador luego de ser adecuados en una conversión ADC (conversión análoga – digital) de manera exacta y sin perdida de información por medio del protocolo de transmisión inalámbrica (XBEE), lo que permitió la realización y procesamiento correcto en el instrumento musical a utilizar. Se implemento el modo de transmisión por XBEE debido a que en el planteamiento del proyecto, se comenzó utilizando otro modulo con protocolo Zig-Bee (Wi FS24-100ST), pero se detectaron varias falencias en este dispositivo como los requerimientos de configuración que eran más extensas, poca información en internet sobre este dispositivo y el fabricante no brindaba información específica sino muy general. Como no se lograr su correcto funcionamiento y manipulación según los requerimientos que necesitamos con respecto a la transmisión, se opto por los módulos XBEE para la transmisión de la información.

6. ERRORES Y FALLAS ENCONTRADAS

Al basarnos en un guante para controlar los

movimientos de la mano no identificamos que

presentaríamos un problema con personas que

tuvieran manos pequeñas o muy grandes ya que

esto causaría que el guante no encajara bien en la

mano del usuario y no se podría controlar bien

movimientos de los dedos, dando como resultado

errores de medición.

Al tratar de realizar la comunicación inalámbrica

con los módulos Zig-Bee (Wi FS24-100ST), no se

logro encontrar mucha información en Internet de

cómo realizar la configuración de estos módulos,

por tal motivo se decidió cambiar es modulo por

un X-BEE, el cuan presenta mucha información en

Internet y brinda una configuración mas sencilla

7. ELEMENTOS QUE SE PUEDEN MEJORAR

DEL DISEÑO Implementar un diseño diferente a un guante para realizar la captura de los movimientos de la mano y evitar el inconveniente ya mencionado, una propuesta seria una pelota que al apretar o soltar nos indicaría la variación a controlar de la mano y no se estaría dependiendo tanto del tamaño de la mano Se puede mejorar el control del movimiento de las manos por giroscopios en vez de acelerómetros ya que el giroscopio son una tecnología que se creó para mejorar el control del movimiento, permitiendo identificar grados y posición de un elemento en el espacio y no depende de la aceleraciones de movimiento, dando un rango de variación mayor y más precisión.

Realizar pruebas con nuevos módulos de transmisión de datos para que más de una persona pueda manipulara los parámetros MIDI todos comunicándose a un solo receptor de datos, generando así una red punto multipunto para protocolo MIDI. Implementar un circuito en montaje superficial para que el diseño sea más compacto y la adecuación de un LCD de 3’ o 7’ para que el usuario pueda identificar que intensidad de señal tiene, nivel de batería e incluso la variación de los parámetros entre otros parámetros.

8. CONCLUSIONES

Se ha implementado un diseño que permite la versatilidad y libre movimiento del guante con los flexometros, acelerómetros y el Xbee, permitiendo así la conexión inalámbrica, sin depender de cables de alimentación, o que limitan el desplazamiento del usuario que se encuentre manipulando el dispositivo. En casos anteriores se evidencio que el usuario se limitaba quedarse en un solo lugar para poder transmitir y manipular los datos en el PC, con este proyecto garantizamos fácil manejo y desplazamiento en cualquier entorno que se desee manipular el dispositivo. Al utilizar protocolo Zig-Bee, se debe tener presente la información que hay en internet sobre los módulos a utilizar debido a que hay modulo que requieren mas o menos configuraciones para enviar los datos, es por esto que se opto con la implementación con módulos XBEE, ya que se tiene suficiente información para la configuración de este, su modulo de transmisión multipunto esta diseñado para una fácil manipulación e interpretación de datos, además de tener varias fuentes tanto en Internet, como libros y experiencias pasadas para la configuración de este.

Este trabajo se elaboró con el fin de mostrar las capacidades con que contamos cada uno de nosotros y de la importancia de buscar una aplicación práctica a lo aprendido y de mostrar las ventajas que un diseño como el de esta interfaz de control inalámbrica para la manipulación de parámetros de audio mediante protocolo MIDI puede ser tan practico y sencillo de utilizar. En la actualidad existen protocolos de mayor robustez que el mismo MIDI, pero de lo sencillo y barato que sale a la hora de su implementación pueden surgir grandes ideas de aplicativos para el mercado actual.

Page 8: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

AGRADECIMIENTOS

Queremos agradecer a los compañeros de carrera, a los profesores y a la institución que nos brindó el apoyo y nos permitió obtener los conocimientos para nuestra formación profesional.

REFERENCIAS [1]. Pallás Ramón. Sensores y Acondicionadores de Señal. 4ta Edición. Barcelona: Marcombo S.A; 2005. 494 p. [2]. El protocolo MIDI [Artículo de Internet]. http://es.wikipedia.org/wiki/MIDI [Consulta: Junio 2 de 2010]. [3]. Conceptos basicos del protocolo MIDI [Artículo de Internet]. http://profeignacio.com/files/midi.pdf [Consulta: Junio 4 de 2010].

[4]. Aplicaciones del protocolo MIDI [Artículo de Internet]. http://www.hispasonic.com/revista/protocolo-midi [Consulta: junio 22 de 2010]. [5]. Conceptos MIDI [Artículo de Internet]. http://www.aulaactual.com/ayuda/ManualMidi.pdf [Consulta: junio 27 de 2010]. [6]. Datasheet XBEE [Artículo de Internet]. http://www.digi.com/pdf/ds-xbee-pro_pkg-rf-modems.pdf [Consulta: Agosto 9 de 2010]. [7]. Manual de Xbee [Artículo de Internet]. http://www.inelsoft.net/manuales/Manual%20IN-Xbee.pdf [Consulta: Junio 4 de 2010]. [8]. Aplicaciones Xbee [Artículo de Internet]. http://www.xbee.cl/ [Consulta: junio 4 de 2010]. [9]. Microcontrolador [Artículo de Internet]. http://es.wikipedia.org/wiki/Microcontrolador [Consulta: Junio de 2010].

Page 9: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

ANEXO 1,. PROGRAMA EN CODE WARRIOR

/*

programa de transmisión serial de prueba con JM128

al presionar una cierta tecla del pc enviara un

mensaje al hyperterminal

*/

/* Archivos de cabecera */

#include <hidef.h> // macro para habilitar interrupciones

#include "derivative.h" // declaracion de perifericos

/* Declaracion de variables y constantes */

volatile word dedo1,dedo2,dedo3,dedo4,dedo5,DATO,DATO2; //varible para los dedos

volatile word tdedo1,tdedo2,tdedo3,tdedo4,tdedo5; //variable para valor a transmitir

volatile word grado1,grado2,grado3,grado4,grado5; //variable para identificar grado de variacion

volatile word ejex,ejey,ejez; //variable del acelerometro

volatile word tejex,tejey,tejez; //variable para valor a transmitir

volatile word posX,posY,posZ; //variable para identificar posicion

volatile word param[8];

word y=0; //variable global

word x=0; //variable global

word bandera=0;

unsigned long retardo=0; //parametro para hacer retardo

char i=0; //variable de iteracion

char j=0; //variable de iteracion

char PTXD_Config=0; //byte de inicializacion del registro PTBD

char PTXDD_Config=0; //byte de inicializacion del registro PTBDD

char PTXPE_Config=0; //byte de inicializacion del registro PTBPE

char PTXSE_Config=0; //byte de inicializacion del registro PTBSE

char PTXDS_Config=0; //byte de inicializacion del registro PTBDS

char PTXIFE_Config=0; //byte de inicializacion del registro PTBIFE

char ADCSC1_Config=0; //byte de inicializacion del registro ADCCFG

char ADCCFG_Config=0; //byte de inicializacion del registro APCTL1

char APCTL1_Config=0; //byte de inicializacion del registro APCTL1

char ADCSC2_Config=0; //byte de inicializacion del registro ADCSC2

char SCI1C1_Config=0; //byte de inicializacion del registro SCI1C1

char SCI1C2_Config=0; //byte de inicializacion del registro SCI1C2

char SCI1BD_Config=0; //byte de inicializacion del registro SCI1BD

char SCI2C1_Config=0; //byte de inicializacion del registro SCI1C1

char SCI2C2_Config=0; //byte de inicializacion del registro SCI1C2

char SCI2BD_Config=0; //byte de inicializacion del registro SCI1BD

word ESTADO,CONTROL,INTEN; //variables para conversion de la temperatura a ASCII

/* Macros y definiciones */

#define Disable_COP() SOPT1 &= 0x3F //deshabilita el COP

/* Declaracion de funciones */

void Delay(unsigned long retardo); //funcion para hacer reatrdos varios

//declare funcion que inicializa PTA

void PTX_Init(char PTXD_Config,char PTXDD_Config,char PTXPE_Config,char PTXSE_Config,char

PTXDS_Config,char PTXIFE_Config);

//funcion para inicializar ADC

void ADC_Init(char ADCCFG_Config,char ADCSC2_Config,char APCTL1_Config,char ADCSC1_Config);

// funcion enviar trama MIDI

void DATOMIDI(word ESTADO,word CONTROL,word INTEN);

// funcion configuracion USART1

void SCI1_Init(char SCI1C1_Config,char SCI1C2_Config,char SCI1BD_Config);

// funcion configuracion USART2

void SCI2_Init(char SCI2C1_Config,char SCI2C2_Config,char SCI2BD_Config);

Page 10: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

/******************************************************************/

/* main(): Funcion principal*/

void main(void) {

ICSTRM = NVICSTRM+52;

ICSC1=0x04; //Reloj en modo FEI y divisor por 1

ICSC2=0x62; //configura reloj

Disable_COP(); //deshabilita el COP

PTX_Init(0x00,0x00,0x00,0x00,0x00,0x00) ; //configura todo el puerto como salida

SCI1_Init(0x00,0x0C,0x016); //configura USART a 9600bps, sin paridad y 8bit

SCI2_Init(0x00,0x0C,0x016); //configura USART a 9600bps, sin paridad y 8bit

//SCI1_Init(0x00,0x0C,0x7); //configura USART a 32500bps, sin paridad y 8bit

SCI2C2_RIE=1; //habilita interrupciones USART1

// SCI1C2_RIE=1; //habilita interrupciones USART2

EnableInterrupts; //habilita interrupciones

for(;;) { //iteracion infinita

while(bandera ==0){

SCI2D = 'M';

while ( SCI2S1_TC == 0 ){ }

while(DATO=='I'){

bandera = 1;

// SCI1D = DATO;

// while ( SCI1S1_TC == 0 ){ }

DATO=0;

j=0;

}

while(DATO=='D'){

bandera = 1;

SCI1D = DATO;

while ( SCI1S1_TC == 0 ){ }

DATO=0;

j=0;

}

}

while(bandera==1){

while(DATO==0){}

dedo1=(DATO-48)*12;

if(dedo1>120){dedo1=120;}

DATO=0;

while(DATO==0){}

dedo1=(DATO-48)*12;

if(dedo1>120){dedo1=120;}

DATO=0;

while(DATO==0){}

dedo2=(DATO-48)*12;

if(dedo2>120){dedo2=120;}

DATO=0;

while(DATO==0){}

Page 11: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

dedo3=(DATO-48)*12;

if(dedo3>120){dedo3=120;}

DATO=0;

while(DATO==0){}

dedo4=(DATO-48)*12;

if(dedo4>120){dedo4=120;}

DATO=0;

while(DATO==0){}

dedo5=(DATO-48)*12;

if(dedo5>120){dedo5=120;}

DATO=0;

while(DATO==0){}

ejex=(DATO-48)*12;

if(ejex>120){ejex=120;}

DATO=0;

while (DATO==0) {}

ejey=(DATO-48)*12;

if(ejey>120){ejey=120;}

DATO=0;

while(DATO==0){}

ejez=(DATO-48)*12;

if(ejez>120){ejez=120;}

DATO=0;

while(DATO==0){}

while(DATO=='F'){

bandera = 4;

DATO=0;

}

}

/***********************DECODIFICACION DE DATOS********************///

/***********************DATOS MIDI A TRANSMITIR********************///

while (bandera == 4){

DATOMIDI(0xB0,0x1A,dedo1);//DATOS MIDI CANAL 0

Delay(1000);//PAUSA

DATOMIDI(0xB1,0x1A,dedo2);//DATOS MIDI CANAL 1

Delay(1000);//PAUSA

DATOMIDI(0xB2,0x1A,dedo3);//DATOS MIDI CANAL 2

Delay(1000);//PAUSA

DATOMIDI(0xB3,0x1A,dedo4);//DATOS MIDI CANAL 3

Delay(1000);//PAUSA

DATOMIDI(0xB4,0x1A,dedo5);//DATOS MIDI CANAL 4

Delay(1000);//PAUSA

DATOMIDI(0xB5,0x1A,ejex);//DATOS MIDI CANAL 5

Page 12: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

Delay(1000);//PAUSA

DATOMIDI(0xB6,0x1A,ejey);//DATOS MIDI CANAL 6

Delay(1000);//PAUSA

DATOMIDI(0xB7,0x1A,ejez);//DATOS MIDI CANAL 7

Delay(1000);//PAUSA

bandera=0;

}

}

/* }}es necesario asegurarse de nunca abandonar el main */

}

/* Funcion para inicializar el puertos a utilizar */

void PTX_Init(char PTXD_Config,char PTXDD_Config,char PTXPE_Config,char PTXSE_Config,char

PTXDS_Config,char PTXIFE_Config) {

PTBD=PTXD_Config; //inicialice estado pines PTB

PTBDD=PTXDD_Config; //inicialice dirección de pines PTB

PTBPE=PTXPE_Config; //inicialice estado de pullups PTB

PTBSE=PTXSE_Config; //inicialice estado del slew rate PTB

PTBDS=PTXDS_Config; //inicialice estado de drive strength PTB

}

/*Funcion para inicializacion del ADC */

void ADC_Init(char ADCCFG_Config,char ADCSC2_Config,char APCTL1_Config,char ADCSC1_Config){

ADCCFG=ADCCFG_Config; //inicializa registro ADCCFG del ADC

ADCSC2=ADCSC2_Config; //inicializa registro ADCSC2 del ADC

APCTL1=APCTL1_Config; //inicializa registro APCTL1 del ADC

ADCSC1=ADCSC1_Config; //inicializa registro ADCSC1 del ADC

}

/* Funcion para inicializar el SCI1 */

void SCI1_Init(char SCI1C1_Config,char SCI1C2_Config,char SCI1BD_Config){

SCI1C1=SCI1C1_Config; //inicialice registro SCI1C1

SCI1C2=SCI1C2_Config; //inicialice registro SCI1C2

SCI1BD=SCI1BD_Config; //inicialice registro SCI1BD

}

/* Funcion para inicializar el SCI2 */

void SCI2_Init(char SCI2C1_Config,char SCI2C2_Config,char SCI2BD_Config){

SCI2C1=SCI2C1_Config; //inicialice registro SCI1C1

SCI2C2=SCI2C2_Config; //inicialice registro SCI1C2

SCI2BD=SCI2BD_Config; //inicialice registro SCI1BD

}

/* Funcion DATOMIDI(): FUNCION DATOS MIDI */

void DATOMIDI(word ESTADO,word CONTROL,word INTEN){

SCI1D = ESTADO; // Envia el caracter */

while ( SCI1S1_TC == 0 ){

}

Delay(100);

SCI1D = CONTROL; // Envia el caracter */

while ( SCI1S1_TC == 0 ){

}

Delay(100);

SCI1D = INTEN; // Envia el caracter */

while ( SCI1S1_TC == 0 ){

}

Delay(100);

}

Page 13: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

/* Funcion de atencion a la interrupcion por Rx */

interrupt VectorNumber_Vsci2rx void ISR_SCI2_RX1 (void){

SCI2S1; //reconoce la interrupción

DATO = SCI2D; //lea caracter que entro

//DATO = DATO2;

}//pone bandera de caracter recibido

/* * Funcion Delay(): Retarda basado en una variable tipo entero */

void Delay(unsigned long retardo){

while(retardo>0){ //llego a cero?

retardo--; //no --> decrementa

}

}

Page 14: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

ANEXO 2 : SOFTWARE ADICIONAL UTILIZADO

Serial_MIDI_Converter :

Éste programa nos permite pasar un señal serial a una señal MIDI. Su funcionamiento es sencillo simplemente le llega los datos seriales y éste se encarga de hacer la inversión y elevarlos a la velocidad de trabajo del protocolo MIDI de los 31,250Kbaud (31,250 bits/ seg). Nota: Antes de proceder a configurar éste programa es necesario instalar un complemento que pertenece al MIDI-OX, que se explicará más adelante. El complemento se conoce como Midi-Yoke.

Configuración utilizada en el proyecto

Después de haber instalado este programa. Nos aparecerá la siguiente ventana como se muestra en el pantallazo de más abajo. Aquí procedemos a seleccionar el puerto asociado con el conversor serial-usb de la base receptora del proyecto; en este caso el puerto que escogimos fue el puerto COM8, pulsamos la letra C para seleccionarlo.

Luego procedemos a elegir la velocidad a la que está recibiendo los datos seriales el pc. La velocidad configurada en el micro-controlador es de los 9600 bps. Seleccionamos la letra A.

Page 15: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

En este paso, simplemente seleccionamos el puerto virtual que se va a comunicar con el programa MIDI-OX. El puerto virtual por defecto es el puerto 1 (MIDI yoke 1). Pulsamos la letra A para seleccionarlo.

Luego seleccionamos el puerto virtual de salida. En donde deseamos q los datos sean mostrados o trasmitidos. En este caso los datos serán visualizados en el programa MIDI_OX. Procedemos a elegir el puerto 1. Pulsamos la tecla C para seleccionarlo.

Page 16: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

Finalmente, el software nos muestra los puertos utilizados en la configuración.

Nota: El programa tarda un poco al configurar los puertos y al hacer la conversión.

MIDI-OX:

Este potente programa nos permite visualizar en una plataforma de Windows todo lo relacionado al protocolo MIDI. Configuración utilizada en el proyecto

Al abrir el programa nos mostrará el siguiente pantallazo.

Page 17: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.

Si no aparece la ventana negra del fondo, seleccionamos en la barra de herramientas del MIDI-Ox,

Display Raw MIDI input

Para visualizar los puertos utilizados, seleccionamos en la barra de herramientas, Display port activity

monitor

Finalmente para iniciar o parar el monitoreo de los datos MIDI, utilizamos Start or stop Monitoring MIDI

data , que se encuentra en la barra de herramientas.

Page 18: 1. INTRODUCCIÓNbibliotecadigital.usb.edu.co/bitstream/10819/1030/1/...Interfaz de Control Inalámbrica para La Manipulación de Parámetros de Audio Mediante Protocolo MIDI Jhon A.