Sie sind auf Seite 1von 49

ARTE ELECTRONICO INTERFASES

EUGENIO TISELLI 2003

2. Sensores y actuadores
Recordemos la definicin de transductores: dispositivos que traducen las seales de un dominio a otro. Los sensores, u rganos de los sentidos del ordenador, son transductores que convierten las seales fsicas en seales elctricas, los actuadores son aquellos que realizan la tarea inversa. Pues bien, en este tema analizaremos los diferentes tipos de sensores y actuadores, teniendo siempre en cuenta que nos interesa conocerlos con el fin de crear interfaces fsicas que tendrn un papel especfico dentro de alguna obra interactiva. Podemos partir de una versin aumentada del diagrama

que anteriormente habamos analizado, y que constituye el modelo de interaccin humano-ordenador. En esta nueva versin del diagrama, encontramos que la interaccin, o sea, el proceso que ocurre entre humano y ordenador y que posibilita el intercambio de impulsos, puede tener diferentes modalidades. Los impulsos provenientes del ordenador pueden llegar al humano en forma de luz, sonido y/o percepcin tctil del movimiento. A su vez, los impulsos humanos llegan al ordenador bsicamente en diferentes formas de accin muscular: movimiento, voz, etc., o tambin como impulsos luminosos, si es que nos interesa detectar el movimiento o el color sin la utilizacin de ningn dispositivo aadido al cuerpo. Como veremos, el tipo de sensor y actuador a utilizar en una interfaz depende directamente del impulso que deseamos captar. Hablemos en primer trmino sobre los sensores. Podemos distinguir fundamentalmente dos grandes categoras de sensores: los digitales y los analgicos. Es el tipo de seal generada por cada una de estas categoras lo que nos permite distinguir entre una y otra. Los sensores digitales son aquellos cuya respuesta a un impulso se da de forma binaria: si o no, 1 o 0, mientras que los sensores analgicos generan respuestas elctricas que varan dentro de un rango determinado, y que pueden tomar cualquier valor comprendido dentro del mismo. Esta categora est representada por la gran variedad existente de

pulsadores e interruptores: dispositivos que, en cualquier momento, pueden encontrarse en alguno de sus dos estados, encendido o apagado. Este tipo de sensores se adapta de forma magnfica para las situaciones en las cuales nos interesa detectar la presencia de algo o de alguien en un punto determinado, sin importarnos otro tipo de informacin aadida. Existe, como hemos mencionado, una gran variedad de sensores digitales: los pulsadores, que consisten generalmente en botones que al ser pulsados cambian de estado (de encendido a apagado o viceversa), y que al soltarlos regresan a su estado original, y los interruptores que, a diferencia de los pulsadores, permanecen en uno de los dos estados sin que tenga que existir sobre ellos una accin continua (pensemos en los interruptores de corriente que existen para encender o apagar las luces de nuestra casa). De estos dos tipos bsicos de sensor digital se deriva una serie extensa de variantes, que incluyen, por

ejemplo, a las fotoclulas de barrera. Estos sensores consisten en circuitos elctricos ms o menos complejos en los cuales existe un emisor y un receptor de seales infrarrojas. Emisor y receptor se encuentran separados, y necesitan colocarse frente a frente y sin obstculos para que la seal llegue de un punto a otro. Cuando algn objeto se coloca entre los dos puntos la seal se interrumpe, generando una variacin en la respuesta del circuito. Tenemos as un sensor digital, que nos da una respuesta si existe un objeto interrumpiendo el haz infrarrojo, y la respuesta inversa si dicho haz se transmite de un punto a otro sin interrupcin. El segundo tipo de sensores, los sensores analgicos, son an mas variados. Esta enorme diversidad nos obliga a subdividirlos en diferentes categoras. Una primera categorizacin puede hacerse segn la naturaleza de los impulsos captados por los sensores analgicos. As pues, tenemos la siguiente lista: -Movimiento (presin, torsin, inercia) -Luz -Sonido -Temperatura -Humedad -Voltaje -Magnetismo -Electromagnetismo

2.1. Tipos y clasificaciones de sensores


Esta lista es bastante general, as que nos conviene hacer una clasificacin ms precisa, en la que clasificaremos los sensores segn la tecnologa con la que estn fabricados, y mencionaremos, para cada uno de los tipos, el tipo de energas que permiten captar. Partiendo entonces de la lista anterior, elaboremos una segunda lista: - Resistencias variables: Sensores cuya resistencia elctrica vara segn la intensidad de la seal captadas. Hay diferentes tipos de resistencias variables:

- potencimetros : captan giro, deslizamiento

- sliders : captan el desplazamiento lineal sobre una superficie

- termistores : captan temperatura

- fotoresistores : captan luz - sensores resistivos de fuerza (force sensitive resistors - FSR): captan presin o tacto

- flexores : captan flexin, movimiento - Acelermetros : Estos sensores son circuitos elctricos relativamente complejos que permiten captar el movimiento de un objeto sobre el cual estn colocados, o bien la inclinacin de ste.

- Sensores piezoelctricos : Sensores fabricados con material piezoelctrico, que tiene la particularidad de producir una variacin de voltaje cuando se deforma. Estos sensores son bastante verstiles, y permiten

captar energas tales como fuerza, temperatura o sonido. Pensemos que estas tres energas, al ser aplicadas sobre algn material, producen una deformacin del mismo y que dicha deformacin, a pesar de ser imperceptible en ocasiones, puede detectarse elctricamente.

- Sensores infrarrojos : Sensores basados en la transmisin y recepcin de seales infrarrojas, que viaja en un haz invisible desde el transmisor hasta el receptor. Estos sensores pueden tener dos configuraciones: en la primera, el emisor y receptor se encuentran colocados en un mismo sitio. Esto implica que, para que el receptor reciba la seal del emisor, sta ha de rebotar en alguna superficie. Esta configuracin permite tener un sensor infrarrojo que detecta la cercana de un objeto. La segunda configuracin existe cuando tenemos el emisor y el receptor separados, pero colocados frente a frente. En este caso, el haz infrarrojo debe viajar desde el emisor hasta el receptor sin encontrar obstculos, en caso contrario, la seal no llegar a su destino. Esto nos permite hablar de sensores infrarrojos que detectan la presencia de un objeto. Notemos que, en este ltimo caso, tendremos un sensor digital, es decir: un sensor que nos dar un valor cuando el haz infrarrojo fluya sin interrupcin, y el valor inverso cuando el haz se interrumpa. Podemos mirarlo como un interruptor que funciona con seales infrarrojas.

- Sensores biopotenciales : Estos sensores, utilizados generalmente dentro de un contexto mdico, sirven para medir diferentes energas generadas por los procesos vitales del cuerpo humano. En general se trata de sensores bastante especializados, que pueden llegar a ser muy caros o difciles de conseguir. Dentro de este tipo de sensores tenemos a aquellos que miden la tensin muscular, el movimiento de los ojos, la actividad cerebral, y la actividad cardaca, entre otros impulsos.

- Sensores de campo electromagntico : Estos sensores permiten medir el campo electromagntico que se encuentra rodeando a todos los cuerpos fsicos. Este campo existe naturalmente en torno a cualquier objeto debido al fenmeno elctrico conocido como inductancia, que consiste en la creacin de un campo electromagntico perpendicular a toda corriente elctrica que fluye a travs de un circuito. Existe una gran cantidad de objetos en la naturaleza, entre ellos el cuerpo humano, a travs de los cuales se transmite electricidad. Mediante estos sensores, que detectan el campo electromagntico, podramos percibir la cercana de un cuerpo. Sin embargo, tengamos presente que los campos electromagnticos son enormemente inestables, y que por lo tanto este sensor no nos dar informacin fiable, ya que es bastante probable que dicha inestabilidad haga que se comporte casi de manera aleatoria.

- Sensores de sonido : Podemos decir que un micrfono comn y corriente es un sensor de sonido. Las vibraciones captadas por ste se convierten en impulsos elctricos y, en el caso de los micrfonos conectados directamente a un ordenador, en seales digitales. Podemos utilizar esta seal de diferentes maneras, ya sea para captar la informacin fsica del sonido, como amplitud (volumen) o frecuencia (tono), o bien, a travs de software sofisticado, reconocer patrones de voz, por ejemplo.

- Ultrasonido : Sensores que captan seales ultrasnicas, es decir, ondas de sonido cuya frecuencia es tan alta que resultan inaudibles para el odo humano. Los sonares son sensores de ultrasonido que se basan en el sistema de deteccin de objetos utilizado por animales como el murcilago: este roedor emite sonido de altsima frecuencia que, al rebotar y regresar a su odo, le proporcionan informacin sobre objetos cercanos. As pues, los sonares permiten la deteccin de objetos.

Tenemos, finalmente, un tipo de sensor que ser objeto de estudio detallado en temas siguientes: la

cmara digital. Simplemente pensemos ahora que la cmara puede captar imgenes que, mediante diferentes herramientas de software, pueden ser analizadas para rastrear movimientos, colores e incluso patrones. En general, podemos decir que gran parte de estos sensores provienen del campo de la informtica industrial, y que se han utilizado dentro del contexto de fbricas y lneas de produccin desde hace ya bastantes aos. Sin embargo, la entrada de estos dispositivos en el mundo del arte electrnico interactivo es relativamente reciente, y ello nos permite analizarlos de una forma novedosa, encontrando aplicaciones creativas para ellos. Una forma de categorizacin de los sensores que resulta bastante interesante dentro del contexto del diseo de interfaces para la interaccin humano-ordenador es aquella que los agrupa segn el tipo de acciones humanas que permiten percibir. Bsicamente se tratar de accin muscular, subdividida en dos tipos: isomtrica, o bien, acciones que generan presin sobre otros objetos, y movimiento. Podemos trazar el siguiente cuadro: Accin muscular: - Isomtrica: sensores de presin - Movimiento: - con contacto mecnico: potencimetros, sliders, flexin - sin contacto mecnico: sensores de ultrasonido, campo magntico, acelermetros, fotoresistores, infrarrojos

2.2. Actuadores
Por parte de los actuadores tenemos, adems de los dispositivos "tradicionales" que transforman los procesos que ocurren dentro del ordenador en seales fsicas perceptibles (la pantalla genera luz, los altavoces generan sonido), a toda una serie de dispositivos que permiten transformar las seales digitales en seales elctricas, para ser utilizadas dentro de un circuito. Un LED (Light Emitting Diode),

por ejemplo, es uno de los actuadores ms simples. Se trata de un componente elctrico que genera luz al existir el flujo elctrico a travs de l. Otro actuador

muy comn, tal vez el ms verstil, es el rel. Un rel es un interruptor que recibe una seal de voltaje, y en base al valor de sta permite o impide el flujo de corriente a travs de un circuito. Mediante un rel, por ejemplo, podemos controlar el encendido o apagado de cualquier dispositivo elctrico. Tanto los LEDs como los rels generan impulsos externos que podramos llamar digitales, haciendo una analoga con los sensores digitales: tienen dos estados, encendido o apagado. Aplicando la dicotoma digital-analgico que utilizamos para clasificar los sensores, podemos decir que tambin existen los actuadores analgicos que, a diferencia de LEDs y rels, generan impulsos fsicos cuya intensidad vara analgicamente dentro de un rango. Un ejemplo de este tipo de actuadores son los altavoces piezoelctricos, que generan frecuencias proporcionales al voltaje que se les aplique, o bien de

los servomotores, dependiendo tambin del voltaje de alimentacin

que giran un nmero determinado de grados,

3. Algunos conceptos de electricidad


Antes de continuar, ser necesario definir algunos conceptos bsicos sobre electricidad. Los ltimos temas de este curso estn orientados a la creacin de interfaces fsicas utilizando microcontroladores. Para ello, tendremos que tener algunas nociones sobre circuitos y sus diferentes caractersticas y componentes. Ya que hemos hablado sobre sensores, y hemos introducido algn trmino que pudo haber creado algunas dudas, presentemos ahora definiciones formales. Ms adelante, cuando comencemos a

ensamblar circuitos sencillos, iremos introduciendo nuevas definiciones; sin embargo, hablemos ahora de ciertos conceptos fundamentales: -Circuito elctrico: Un circuito elctrico es el conjunto de dispositivos que permiten el paso de electrones a travs de l. Los electrones son una de las partculas que componen al tomo; estas partculas tienen una carga negativa. Para que los electrones fluyan a travs de un circuito, necesita existir una diferencia de polaridades en sus extremos. En uno de ellos, una existir una polaridad negativa, dada por la acumulacin de electrones. En el extremo opuesto, una carga positiva generada precisamente por la ausencia de electrones. Naturalmente, los electrones tendern a equilibrar las cargas del circuito, y fluirn desde el polo negativo hacia el positivo. Todo aparato elctrico necesita de este flujo de electrones para funcionar -Voltaje y tierra: El voltaje, tambin llamado diferencia de potencial, nos indica la cantidad de carga que fluye a travs de un circuito. El voltaje se mide en volts (V), y siempre estar expresado en relacin a un punto de referencia llamado "tierra", cuya carga es de 0 volts. Pensemos en las distancias: nosotros medimos la distancia en metros, siempre expresados en relacin a un punto que nosotros consideramos como "distancia 0". Por ejemplo, si queremos medir la distancia que hay desde la pared hasta la puerta, comenzamos desde 0 en la pared, y el valor resultante lo obtendremos cuando hayamos llegado hasta la puerta. Lo mismo ocurre con el voltaje. Cabe mencionar que existen valores estndar para el manejo de voltajes dentro de los circuitos informticos. Como sabemos, todas las seales dentro de un ordenador son de naturaleza binaria, es decir, 0s o 1s. De la misma manera que podemos describir las seales intercambiadas entre nuestras neuronas como "impulsos elctricos", las seales digitales son tambin impulsos cuyas cargas de voltaje pueden valer 0 volts (0) o 5 volts (1). - Resistencia: Cuando hablbamos de sensores, nosotros definimos a cierto tipo de sensores como "resistencias variables". Una resistencia es un componente elctrico que regula el voltaje en un circuito. Si hacemos una similitud entre el flujo de electrones a travs de un circuito y el flujo de agua a travs de una caera, las resistencias elctricas seran una especie de "embudos" que regulan la cantidad de flujo. Las resistencias son necesarias ya que, de no existir, los electrones fluiran a travs de un circuito con tal rapidez que lo quemaran. Esto es lo que conocemos como "corto circuito". Las resistencias se expresan en ohms (simbolizados por la letra griega "omega"), y podemos decir que mientras mayor sea una resistencia, menor ser el voltaje que atraviese el circuito.

4.1. Puertos y protocolos


Ahora que hemos hablado de sensores e interfaces, cabe preguntarnos cmo conectar un sensor o un actuador al ordenador para que ste lo lea. Para responder, demos primero un vistazo a la parte trasera de nuestro ordenador: observaremos cables conectados a diferentes terminales: el ratn, el teclado, la pantalla... todas estas terminales, que constituyen las entradas y salidas fsicas del ordenador, se llaman puertos. Los puertos enlazan y comunican al ordenador con dispositivos externos. Observaremos que hay puertos muy diferentes, que varan de ordenador en ordenador. Algunos de los puertos mas comunes son:

- Puerto serie, tambin llamado puerto COM. Este puerto permite una comunicacin serial bidireccional con el ordenador, es decir, los datos, ordenados en bytes (paquetes de ocho bits) son enviados de manera secuencial desde y hasta el ordenador.

- Puerto paralelo, llamado tambin puerto LPT. Generalmente se usa para enviar grandes cantidades de informacin, ya que permite la circulacin bidireccional de datos en paralelo, a diferencia del puerto serie, en el que los datos circulan de manera secuencial. Comnmente encontraremos impresoras conectadas a este puerto, que poco a poco va cayendo en desuso ya que est siendo substituido por otros de mayor velocidad.

- Puerto USB (Universal Serial Bus). Este puerto permite la comunicacin serial a altas velocidades. Este puerto est substituyendo a los puertos paralelos e incluso al puerto serie. De hecho, en los ordenadores Macintosh ms recientes no existe un puerto serie, en su lugar encontramos uno o dos puertos USB.

- Puerto MIDI: El puerto MIDI permite la comunicacin entre dispositivos informticos capaces de comprender el protocolo MIDI. Es poco comn encontrarlo, pero veremos cmo puede sernos til, y de qu manera podemos introducir mensajes MIDI en el ordenador adaptando otros puertos. Es importante mencionar que los puertos MIDI son unidireccionales, y que por lo tanto existir siempre un puerto de entrada y uno de salida, cada uno por separado. Ya que hablamos de MIDI, introduzcamos el concepto de protocolo: ya hemos mencionado que todos los datos en un ordenador se transmiten como cadenas de 0s y 1s, las cuales podemos ver como seales elctricas cuyo voltaje vara de forma discreta entre 0 y 5 volts. Leer estas cadenas nos resultara imposible, y por lo tanto necesitamos encontrar una manera de ordenarlas de tal forma que resulten inteligibles para nosotros. Este ordenamiento, junto con las reglas que rigen el intercambio de la informacin, es lo que llamamos protocolo: un lenguaje para el intercambio de mensajes inteligibles cuyo uso se ha estandarizado, y que permite la comunicacin con el ordenador. Existen diferentes protocolos asociados a las distintas formas en las que es posible comunicar dispositivos informticos. El protocolo RS-232, por ejemplo, est asociado al puerto serie, y por lo tanto permite el intercambio de mensajes secuenciales entre dispositivos. El protocolo MIDI, asociado a los puertos MIDI, permite el intercambio de mensajes musicales entre diferentes dispositivos.

4.2. El protocolo MIDI


MIDI significa "Musical Instruments Digital Interface", y fue creado en 1983. Es para nosotros de especial inters ya que gran parte de las interfaces fsicas que utilizan sensores se comunican con el ordenador utilizando este protocolo. El hecho de que el MIDI sea un lenguaje de alto nivel para el intercambio de mensajes musicales no significa que pueda ser usado solamente dentro de aplicaciones sonoras. Como veremos, en ltima instancia los mensajes MIDI son nmeros y, con un poco de programacin, podemos manipular un nmero para realizar cualquier tarea: desde la emisin de sonido hasta el movimiento de una imagen en pantalla. MIDI es un caso especial de protocolo serial: consiste en la transmisin secuencial de bytes, de la misma manera que el protocolo RS-232. Sin embargo, en MIDI los bytes estn ordenados de una manera especfica. La mayora de los mensajes MIDI estn compuestos por un conjunto de 3 bytes y cada uno de ellos utiliza solamente 7 bits, en vez de los 8 que generalmente suele tener un byte. El primer byte representa el tipo de mensaje MIDI, y los dos siguientes sern parmetros que afecten a dicho mensaje, cuyos valores estarn entre 0 y 127 (para 7 bits existen 128 posibles combinaciones de 0s y 1s). Existen diferentes tipos de mensajes MIDI que, como veremos, estn basados en el paradigma del teclado musical:

- Note On: Estos mensajes permiten generar una nota. El segundo byte es el nmero de nota y el tercero su intensidad. Por ejemplo, el mensaje MIDI Note On 60, 64 genera la nota 60 (Do central en un piano, o "Do5") con valor de intensidad medio (64). - Control Change: Estos mensajes permiten aplicar controladores continuos a una nota. Imaginemos un control de volumen, por ejemplo, que va variando mientras se emite una nota. sto se puede lograr mediante los mensajes Control Change, en los cuales el primer byte indica el tipo de controlador, y el segundo el valor de dicho controlador. Por ejemplo, el mensaje MIDI: Control Change 7, 127 pone un valor de 127 (valor mximo) al controlador 7 que es, precisamente, el controlador de volumen. Existen otros mensajes MIDI, como Program Change por ejemplo, pero con los mensajes que ya hemos mencionado nos bastar para trabajar. El MIDI tiene, adems, 16 canales de comunicacin. Pensemos en cada canal como un instrumento independiente en una orquesta: MIDI es un protocolo que permite la polifona, es decir, que puede recibir hasta 16 voces simultneamente, o bien, que tenemos hasta 16 conductos independientes para el envo de datos. Cada uno de los mensajes anteriores (Notas y Controladores) nos indicar, adems, en que canal se est transmitiendo.

4.3. Interfaces digitalizadoras y software MIDI


Para responder la pregunta que nos hicimos al inicio de este tema, sobre cmo conectar un sensor o actuador al ordenador, definamos un ltimo concepto: la interfaz digitalizadora. Las interfaces digitalizadoras traducen los voltajes generados por los sensores como resultado de la percepcin de energas fsicas a seales digitales organizadas segn algn protocolo comprensible para el ordenador. Despus de mirar los puertos en la parte trasera del ordenador, nos qued claro que es imposible conectar los transductores directamente. Mas an, dichos transductores generan seales de voltaje que no son directamente legibles por el ordenador. Es por eso que necesitamos un dispositivo intermedio al cual podamos conectar los sensores y actuadores, y que la seal generada por estos se traduzca a una seal digital. Existen en el mercado diferentes interfaces digitalizadoras, entre ellas: I-cubeX,

desarrollada por Infusion Systems, atoMIC, http://infusionsystems.com/catalog/index.phpdesarrollado por IRCAM, http://www.ircam.fr/ y SensorLab, desarrollado en STEIM. http://www.steim.org/steim/ Estas tres interfaces, aunque tienen ligeras diferencias en cuanto a especificaciones tcnicas y utilizacin, comparten la caracterstica de que todas ellas generan seales digitales organizadas segn el protocolo MIDI. Esto resulta ser ventajoso ya que, como habremos intuido, no bastan los transductores conectados a una interfaz digitalizadora para controlar interactivamente los contenidos audiovisuales: tambin hay que contar con un software que pueda leer las seales provenientes de la interfaz digitalizadora y mapearlas a diferentes acciones visuales o sonoras. La cantidad de software que es capaz de leer seales MIDI es bastante grande, y va desde los sofisticados secuenciadores de audio, tales como Cubase

o Audiomulch, http://www.audiomulch.com/ hasta entornos de programacin multimedia o visual como Macromedia Director http://www.macromedia.com/ (con la ayuda de algn Xtra, http://www.audiomulch.com/midiio/ o extensin para leer MIDI), MAX http://www.cycling74.com/index.html o PD, pasando por aplicaciones de corte ms experimental como Resolume, http://www.resolume.com/index.php que permite mezclar video en tiempo real, o MIDIPoet, que permite manipular textos e imgenes de forma interactiva. Sin embargo, una configuracin informtica en la que exista una interfaz digitalizadora como IcubeX, y cuya seal est siendo leda por Director puede resultarnos bastante cara. Los precios de las interfaces digitalizadoras disponibles en el mercado suelen ser altos, al igual que los de las herramientas de software multimedia. Es por sto que, en los siguientes temas, estudiaremos la forma de fabricar nuestras propias interfaces digitalizadoras y leer las seales que stas generan desde aplicaciones gratuitas o de bajo costo. Es muy importante pensar que el trabajo con interfaces fsicas dentro del arte electrnico no es una cuestin elitista, se trata simplemente de conocer las diferentes tcnicas para lograr la comunicacin entre el mundo fsico y el entorno audiovisual utilizando componentes y aplicaciones baratas o gratuitas.

Esta sesin es de carcter eminentemente prctico; aqu abundan ejemplos de aplicaciones informticas para la creacin de interfaces fsicas. Concretamente, estudiaremos cmo conectar un microcontrolador con el ordenador, y cmo crear y programar circuitos capaces de trabajar con sensores y actuadores. Aprenderemos a leer la seal que llega desde el microcontrolador utilizando entornos de creacin multimedia, y finalmente hablaremos sobre la cmara como sensor

1. Microcontroladores, conceptos, componentes


Llegamos a la parte prctica de nuestro curso. Aqu aprenderemos cmo utilizar los microcontroladores con el fin de crear nuestras propias interfaces fsicas, y lograr que se comuniquen con el ordenador. Ya hemos mencionado una de las ventajas de utilizar microcontroladores en vez de comprar una interfaz digitalizadora como IcubeX: el costo, mucho ms reducido. Sin embargo, otra ventaja no menos importante es que el microcontrolador es muchsimo ms flexible que cualquier interfaz digitalizadora disponible en el mercado, ya que nosotros programaremos dicho dispositivo para que realice exactamente la tarea que nos conviene. De hecho, dentro del IcubeX, atoMIC o SensorLab realmente hay microcontroladores, que ya tienen un programa predefinido, que traduce las seales de los sensores a MIDI. Mediante los microcontroladores, nosotros seremos capaces de crear dispositivos "a medida", sto es, interfaces digitalizadoras que traduzcan los datos de los sensores a cualquier protocolo, y con diferentes parmetros y condiciones. Un microcontrolador es un ordenador en miniatura; tiene todas las caractersticas que nos hacen distinguirlo como tal: procesador, memoria y entradas y salidas. Los microcontroladores

ya han sido utilizados desde hace mucho tiempo dentro del contexto de la informtica industrial, al igual que los sensores y actuadores. Hasta hace pocos aos, programar dichos ordenadores era una tarea de expertos: haba que programarlos en un lenguaje llamado Ensamblador, que es tal vez el lenguaje "menos amigable" para el ser humano; las instrucciones que utiliza son crpticas, y est basado en el manejo directo de la memoria, lo cual llega a resultar bastante confuso. Sin embargo, con la llegada de nuevos microcontroladores con lenguajes mucho ms fciles de aprender, estos dispositivos se convierten en algo utilizable por cualquiera con ciertos conocimientos bsicos de programacin y electrnica. Decimos bsicos, ya que realmente para fabricar circuitos y hacerlos funcionar no hace falta ser un experto. Utilizaremos los microcontroladores Basic Stamp II,

fabricados por Parallax. Hemos elegido este modelo ya que, como mencionbamos en el prrafo anterior, es programable en un lenguaje bastante accesible: el P-Basic. Este lenguaje es una variante del Basic (Beginners' All-Purpose Symbolic Interchange Code), un lenguaje creado para ensear programacin a principiantes. La mayor parte de las instrucciones de este lenguaje son palabras en ingls, y su estructura resulta clara. El Basic Stamp II tiene, como todo microcontrolador, un procesador, que en este caso particular permite la ejecucin de comandos en P-Basic. La velocidad de este procesador es de 3000 a 4000 instrucciones de P-Basic por segundo. Si lo comparamos con los microcontroladores programables en lenguaje Ensamblador, resulta un procesador lento. Sin embargo, esta velocidad ya es suficiente para los fines que a nosotros nos interesan. La memoria del Basic Stamp II es una memoria EEPROM, que por sus siglas en ingls (Electrically Erasable Programmable Read Only Memory) es una memoria de "slo-lectura" que es elctricamente borrable y reprogramable. Aqu hay varias caractersticas que vale la pena sealar: las memorias de los microcontroladores ms antiguos no podan ser borradas y reprogramadas, ya tenan programas preestablecidos. Posteriormente, surgieron memorias que permitan la reprogramacin mediante la aplicacin de luz ultravioleta a lo largo de un tiempo determinado. Estas memorias, sin embargo, tenan un tiempo limitado de vida, y podan ser reprogramadas un nmero determinado de ocasiones. Las memorias EEPROM, de creacin ms reciente, permiten ser borradas y reprogramadas un nmero prcticamente ilimitado de veces mediante la aplicacin de una simple seal elctrica. Por otra parte, tenemos que la memoria del Basic Stamp II es limitada en cuanto a capacidad: puede almacenar entre 500 y 600 instrucciones. Adems, esta memoria solamente acepta un programa a la vez. En cuanto a las entradas y salidas del Basic Stamp II, tenemos 16 pequeas patitas metlicas, llamadas "pins", que pueden fungir como entradas o salidas. Cada una es independiente, y puede generar o recibir

seales elctricas desde 0 hasta 5 volts. Hay otros 8 pins que, como veremos en un diagrama ms adelante, estn reservados para la realizacin de diferentes funciones especficas.

1.1. Elementos para la prctica


Utilizaremos los microcontroladores Basic Stamp II para la creacin de diferentes circuitos bsicos: le

lectura de un sensor digital (interruptor)

, la lectura

de un sensor analgico,

la generacin de seal para

actuadores digitales (LEDs

o rels,

por ejemplo) y finalmente la comunicacin con el ordenador, utilizando el protocolo serie y el protocolo MIDI. Para ello, necesitaremos el siguiente material:

- Microcontrolador Basic Stamp II

- Protoboard : Se trata de una tabla que nos permite crear circuitos elctricos a nivel prototipo. Esta tabla tiene una serie de agujeros que nos permiten insertar y sacar fcilmente los diferentes componentes del circuito, sin tener que soldar. Si miramos un protoboard de frente, como se muestra en la foto, encontraremos que en cada extremo hay dos lneas verticales de agujeros. Cada una de estas lneas es independiente, y a travs de ellas se transmite la seal que conectemos en cualquier punto. Por ejemplo, si conectamos en la esquina superior izquierda del protoboard una seal de 5 volts, toda esa lnea compartir dicha seal, y a ella podremos conectar componentes que requieran dicha seal de voltaje (foto).

En el centro del protoboard, encontraremos agujeros tambin, que representan lneas horizontales. Estas lneas tambin son independientes entre s, y las seales son compartidas por todos los puntos de la lnea. Sin embargo, existen divisiones verticales que interrumpen la seal de las lneas horizontales, impidiendo su paso (foto).

- Cable serie: Para lograr la comunicacin entre el ordenador y el microcontrolador, necesitaremos de un cable serie. Es importante que al menos una de las terminales de este cable sea de tipo "hembra", ya que la mayora de los ordenadores tienen un puerto serie de tipo "macho". Para aquellos ordenadores que tengan puertos USB pero no cuenten con un puerto serie, ser necesario comprar adems un cable adaptador

de serie a USB. Estos cables incluyen adems software, que permite al ordenador reconocer la comunicacin serial que llega a travs de los puertos USB.

- Batera de 9 volts, terminales (tierra y voltaje) para alimentar el microcontrolador.

con "capucha" con dos

- Multmetro: Un multmetro es un dispositivo que nos permite hacer diferentes mediciones de seal elctrica. No haremos mediciones muy sofisticadas, as que no hace falta comprar un multmetro caro.

- Pinzas de corte o alicates. Utilizaremos, adems, los siguientes componentes y materiales: - Cable para conexiones: se trata de cable delgado, tambin llamado hilo, que pueda ser insertado fcilmente en los agujeros del protoboard

- Resistencias: Estos componentes regulan el paso de voltaje a travs de un circuito. Como ya vimos en un tema anterior, el voltaje es inversamente proporcional a la resistencia, es decir: a mayor resistencia, menor voltaje. Los circuitos que montaremos necesitan, concretamente, de resistencias de dos valores: 220 ohms y 10 Kilo ohms. Podemos saber el valor en ohms de una resistencia mediante la tabla que se muestra en la figura:

observemos que todas las resistencias tienen una banda dorada. Si al mirar una resistencia colocamos esta banda del lado derecho, podemos saber el valor de la resistencia leyendo las bandas de colores impresas sobre dicho componente de izquierda a derecha. Por

ejemplo, si tenemos una resistencia cuyos colores, de izquierda a derecha son: rojo, rojo y caf, mediante la tabla podemos saber que: rojo=2, rojo=2, caf=0, por lo tanto tenemos 220 ohms.

- Capacitores o condensadores: Los capacitores o condensadores son componentes que almacenan electricidad. Son algo as como un cubo que se llena de agua, y que tiene un tiempo de carga y un tiempo de descarga. Veremos ms adelante cmo, midiendo el tiempo de descarga de un capacitor, podemos saber el valor que tiene una resistencia variable (sensor). La capacitancia, o cantidad de electricidad que pueden almacenar los capacitores se mide en faradios (F). Concretamente, necesitaremos capacitores de .1 microfaradio.

- Pulsador o interruptor

- Fotocelda

- Potencimetro : Los potencimetros (al igual que las fotoceldas) son resistencias variables. Como ya habamos visto anteriormente, estos sensores dan diferentes valores de resistencia segn la intensidad de la seal fsica captada. Para los circuitos que nosotros montaremos aqu, utilizaremos potencimetros con un valor de resistencia entre 100 y 200 Kilo ohms.

- LEDs Cabe mencionar que dicho material puede conseguirse prcticamente en cualquier tienda de componentes electrnicos (con excepcin del microcontrolador Basic Stamp II, que probablemente habr que pedir por correo o buscar en una tienda especializada), y que su costo no es elevado. Adems de estos materiales, habr que conseguir el software que permite programar el microcontrolador desde el ordenador. Dicho software puede descargarse gratuitamente desde la pgina web de Parallax : www.parallax.com. Este software funciona para ordenadores PC, ya sea con Windows, DOS o Linux, y tambin para Macintosh (solamente sistema operativo OS X). Desde esta misma pgina web se pueden descargar varios manuales referentes a la utilizacin del Basic Stamp, y tambin ejercicios y proyectos. Se recomienda ampliamente la descarga de estos textos. Nuestra primera prctica ser crear el cable serie que nos permitir la comunicacin entre el microcontrolador y el ordenador. Para ello, cortaremos a la mitad dicho cable. Observaremos que dentro

de l hay diferentes conductos elctricos, cada uno de un color distinto. Hay tambin una malla metlica, que protege la seal que transita por el cable de interferencias externas. Los conductos elctricos son nueve, y cada uno corresponde a un pin de los terminales del cable serie.

El siguiente diagrama

(ojo esta al revs, cotejar


nos muestra los pins que utilizaremos para la comunicacin con el

con los nmeros de la ficha real)

microcontrolador: el pin nmero 2 es Rx (recepcin de datos), el pin 3 es Tx (transmisin de datos), el 4 es DTR (lnea de atencin) y el 5 es GND (tierra) (fig). Necesitamos encontrar los conductos correspondientes a estos pins para conectarlos a los terminales correspondientes en el microcontrolador. Para identificarlos, haremos lo siguiente: primeramente, colocaremos el multmetro en el modo "diodo".

Este modo permite saber si hay una lnea que conecta un punto con otro. Si tomamos los terminales de medicin del multimtro colocado en este modo y los juntamos, obtendremos en el display un valor que tiende a llegar a cero; sto indica que hay conexin. Pondremos uno de los terminales de medicin en alguno de los pins del cable serie, y el otro en cada uno de los conductos, hasta que encontremos las correspondencias.

Para poder colocar un terminal de medicin en un pin del cable serie hembra, podemos insertar un trozo de hilo elctrico, el cual nos ayudar a realizar la

medicin (foto). Los pins 6 y 7 del cable serie, DSR y RTS respectivamente, han de ser conectados entre s para lograr que el software editor del Basic Stamp haga la autodeteccin del puerto, es decir, que detecte automticamente a qu puerto est conectado el microcontrolador. Bastar con unir los conductos correspondientes a dichos pins. Una vez que hemos identificado los pins y los conductos, podremos conectar el microcontrolador al puerto serie del ordenador.

1.2. Conexin del microcontrolador

Para realizar la conexin del microcontrolador con el ordenador, miremos primero el diagrama

del Basic Stamp. O

bservaremos que, en la parte superior del grfico que representa el microcontrolador, hay una seal en forma de semicrculo o media luna. Tomemos el Basic Stamp y busquemos en uno de sus extremos esta misma seal, que nos indicar la forma correcta de leer los pins: siempre comenzaremos de izquierda a derecha y de arriba a abajo teniendo la seal en la parte superior. Veremos entonces que los cuatro primeros pins, en la parte superior izquierda del microcontrolador, estn reservados para la comunicacin serial con el ordenador: sirven tanto para programarlo como para intercambiar diferentes datos. Siguiendo un orden de arriba a abajo, tenemos la siguiente distribucin: Tx, Rx, ATN y GND. Dichos pins guardan una correspondencia con los conductos que hemos identificado en el cable serie. Para conectar los conductos a los pins correspondientes del microcontrolador, primero insertaremos el Basic Stamp en el Protoboard,

procurando ponerlo en la parte central de forma que una de las divisiones verticales pasen por el centro de ste. Una vez colocado, insertaremos los conductos en los agujeros del protoboard que estn inmediatamente a la izquierda del microcontrolador. Observemos que

el conducto correspondiente a Rx del cable serie va al pin Tx del microcontrolador. sto resulta lgico, ya que los datos transmitidos por el Basic Stamp sern los datos recibidos en la conexin serie. De forma complementaria, el conducto Tx del cable se conecta al pin Rx del microcontrolador. El conducto DTR se conecta al pin ATN, y el conducto GND se conecta al pin GND. Hemos seguido un orden descendente, comenzando desde el extremo superior izquierdo (foto).

1.2. Conexin del microcontrolador


Nos falta simplemente conectar la alimentacin necesaria para el funcionamiento del microcontrolador. Si miramos nuevamente el diagrama que muestra los pins del Basic Stamp, encontraremos que tambin los cuatro pins de la parte superior derecha estn reservados para funciones especficas. En un orden descendente, los dos primeros, PWR y GND representan voltaje y tierra respectivamente. Es aqu donde conectaremos la batera de 9 volts para hacer funcionar el microcontrolador (foto).

El siguiente pin, RES, es una entrada que permite hacer un "reset" o borrado de la memoria. Nosotros no utilizaremos este pin, ya que dicho borrado se realiza de forma automtica cada vez que reprogramamos el Basic Stamp desde el editor. Por ltimo, tenemos el pin "+5V", muy importante ya que en l existe una seal constante de 5 volts. La mayor parte de los circuitos que ensamblaremos requieren de una alimentacin precisamente de 5 volts, as que tomaremos dicha alimentacin desde este pin. Los 16 pins restantes, llamados P0-P15, quedan libres para trabajar.

1.3. Test de conexiones

Demos un primer paso, que nos permitir saber si hemos realizado correctamente las conexiones de comunicacin con el ordenador. Una vez colocado el cable serie y la alimentacin junto a los pins correspondientes del microcontrolador, hagamos funcionar el editor del Basic Stamp. En Windows tendr la apariencia que se muestra en la figura.

Este editor consiste en una interfaz de texto que nos permitir introducir el cdigo en P-Basic para programar el microcontrolador. En el tema siguiente comenzaremos a estudiar algunos aspectos de este lenguaje. De momento, nos centraremos en las generalidades sobre el funcionamiento del editor, y la comunicacin con el Basic Stamp. En la parte superior del editor hay un men que nos permite realizar diferentes operaciones: abrir un archivo de cdigo (estos archivos tienen la extensin .bs2), salvarlo, editarlo, etc. Hay, sin embargo, algunas operaciones especiales que cabe mencionar: En la opcin del menu "Edit", elijamos la opcin "Preferences". Aparecer una pantalla en la cual detallaremos algunos aspectos del funcionamiento del editor. En la lengeta "Editor operation"

de dicha pantalla, se encuentran los parmetros de conexin con el microcontrolador. Generalmente mantendremos los valores por defecto, sin embargo, en la opcin titulada "Default COM Port", o puerto COM (esta es otra forma de llamar al puerto serie) por defecto, elegiremos el puerto al cual est conectado el Basic Stamp [alta] [baja]. Es posible que algn ordenador tenga ms de un puerto serie; en este caso, habremos de elegir el puerto correspondiente. La nomenclatura de dichos puertos es COM1, COM2, ... COMn, donde 'n' es el nmero de puertos serie del ordenador. Si hemos conectado entre s los conductos DSR y RTS de nuestro cable serie, podemos utilizar la opcin AUTO, que permite detectar automticamente el puerto al cual est conectado el microcontrolador. Pulsemos el botn "OK" o "Aceptar" de esta pantalla, y procedamos a revisar si el editor es capaz de comunicarse con el Basic Stamp. En la opcin del men "Run", elegimos la opcin "Identify". Esta opcin nos responder con un mensaje satisfactorio, si es que se ha logrado identificar al microcontrolador, o bien con un mensaje de error, donde nos indica que no ha podido comunicarse. Las causas de error ms comunes son: el cable serie est mal conectado, la alimentacin est mal conectada o la batera est descargada, o bien no hemos elegido el puerto serie adecuado.

2. Circuitos y programacin del Basic Stamp, circuitos bsicos


Podemos decir que el trabajo con microcontroladores se divide en tres grandes rubros: la creacin de circuitos, utilizando los componentes elctricos, la programacin del microcontrolador para dar funcionalidad a dicho circuito, y finalmente, la intercomunicacin entre microcontrolador y ordenador. Los circuitos son configuraciones fsicas que nos permiten introducir seales al microcontrolador, o bien percibir los procesos que ocurren en un nivel interno del mismo. Debemos saber que la creacin de circuitos es una tarea que cuenta con mtodos y lenguajes estandarizados en forma de diagramas, que nos permitirn leer cualquier circuito y traducirlo a una configuracin fsica, o bien reproducir algn circuito

que hayamos ensamblado, para permitir que otros lo conozcan. As pues, estudiemos la simbologa de los circuitos:

Voltaje

- Tierra -

- Diodo -

- Resistencia -

- Resistencia variable - Condensador Vayamos directamente a nuestro primer circuito, que habremos de ensamblar en el protoboard (figura):

Este circuito nos permite conectar un LED a uno de los pins del microcontrolador. Para comprender este esquema y traducirlo a una configuracin fsica, comencemos por examinar lo que hay en los extremos del mismo. En la parte superior, tenemos una alimentacin de 5 volts, que provendr del Basic Stamp. Tomemos en cuenta que, adems de haber un pin del Basic Stamp que ya nos da esta alimentacin, cualquier otro pin puede controlarse internamente para generar dicha seal de forma intermitente. Es muy importante no utilizar voltajes superiores, ya que podramos quemar el microcontrolador. En el extremo inferior del diagrama, tenemos la conexin a tierra. Recordemos que, para el funcionamiento de cualquier

circuito, es necesario que exista voltaje y tierra, lo cual asegura un flujo de electrones a travs de l. En la parte central del circuito observemos dos elementos: una resistencia de 10 K (abreviacin de Kilo ohms) y un diodo (LED). As pues, tenemos que uno de los terminales de la resistencia se conectar en un orificio contiguo a algn pin del Basic Stamp (tomemos el pin 8, por ejemplo, que es el que est en la esquina inferior derecha), y el otro se llevar a otra lnea. En esta misma lnea se conectar un terminal del LED, y su otro terminal se llevar a una lnea en la que exista tierra. El circuito queda montado tal como se

muestra en la fotografa y el vdeo [alta] [baja]. Ahora queremos dar funcionalidad a este circuito, y lograr que el microcontrolador controle el LED, haciendo que ste se encienda y se apague de forma intermitente. Es lgico que el circuito por s mismo no basta, hay que escribir un programa. De la misma manera que tenemos componentes y estructuras bsicas para trabajar con circuitos, tambin tenemos comandos y estructuras para escribir programas en P-Basic, el lenguaje de programacin del Basic Stamp. El lenguaje P-Basic tiene, como todos los lenguajes de programacin, la capacidad de definir variables y constantes. Las variables son una especie de "casilleros" que pueden contener diferentes "objetos" a lo largo del tiempo. En el caso de P-Basic, dichos "objetos" son valores numricos, cuyo rango de variacin depender del tipo de variable. Existen 3 tipos bsicos: BIT (0 y 1), BYTE (desde 0 hasta 255), y WORD (2 bytes, desde 0 hasta 65,535). Conforme vayamos avanzando, iremos mirando ejemplos de cmo declarar estas variables, y cundo conviene usar un tipo u otro. Las constantes, por su parte, son valores fijos que se definen desde el inicio de un programa. Tambin pueden ser de tipo BIT, BYTE o WORD. La estructura de los programas escritos en P-Basic es secuencial, es decir, los comandos se van ejecutando desde el inicio del programa hasta el final, uno a uno. Veremos, sin embargo, que a travs de ciertas instrucciones, podemos modificar el flujo de la ejecucin del programa, realizando bucles o saltando de un punto del programa a otro. Los diferentes puntos de un programa se pueden definir con nombres que llamaremos "etiquetas". Al hacer una referencia a una etiqueta, saltaremos al punto del programa marcado con dicha etiqueta

2.1. Comandos de P-Basic


A continuacin hacemos una seleccin de algunos de los comandos ms utilizados en P-Basic, clasificados segn su funcin. Asumimos aqu que partimos desde nociones bsicas sobre lo que es programacin. Asimismo, evitamos hacer una revisin exhaustiva del lenguaje, ya que para ello estn los manuales de Parallax, que se pueden descargar gratuitamente desde su pgina web. http://www.parallax.com/

Referencia de comandos: - Estructuras de decisin y control de flujo: IF ... THEN : evala una condicin, que resultar ser verdadera o falsa. Si el resultado es verdadero, saltar a la etiqueta indicada. GOTO : salta directamente a la etiqueta indicada. - Estructuras para crear bucles: FOR ... NEXT : Establece un bucle que se repite un nmero determinado de veces. - Entradas y salidas digitales: INPUT : Permite configurar un pin del Basic Stamp como entrada OUTPUT : Permite configurar un pin del Basic Stamp como salida LOW : Pone un voltaje de 0 volts en un pin HIGH : Pone un voltaje de 5 volts en un pin - Entradas y salidas analgicas: PWM : Coloca un voltaje que puede variar entre 0 y 5 volts en un pin de salida RCTIME : Lee un voltaje variable en un pin de entrada

2.1. Comandos de P-Basic


- Comunicacin a travs del puerto serie: SERIN : Recibe un caracter o caracteres a travs de la entrada serial del Basic Stamp SEROUT : Enva un caracter o caracteres a travs de la salida serial del Basic Stamp - Tiempo: PAUSE : Hace una pausa, expresada en milisegundos Depuracin de errores y trazado de variables: DEBUG : Permite depurar un programa, observando los valores que van tomando las variables en un punto determinado de la ejecucin. Despus de esta breve introduccin al lenguaje P-Basic, procedamos a escribir diferentes programas que activarn nuestro primer circuito. Recordemos que hay un LED conectado al pin8 del microcontrolador. Consideremos este primer programa: inicio: high 8 goto inicio Examinmoslo lnea por lnea: en primer lugar, estamos definiendo una etiqueta, llamada inicio. Observemos que hace falta escribir dos puntos despus de la etiqueta cuando sta se define. La siguiente instruccin, high 8, coloca un voltaje de 5 volts en el pin 8, que es justamente donde est conectado el LED. Finalmente, tenemos goto inicio: esto significa que estamos estableciendo un bucle infinito, y que por lo tanto los 5 volts sern constantes Para introducir este programa en el microcontrolador, hay que seguir estos pasos: 1. Para revisar si el cdigo est escrito correctamente, elegiremos del men "Run" la opcin "Check Syntax". El editor del Basic Stamp nos responder con un mensaje satisfactorio, si es que no se han encontrado errores de sintaxis, o bien nos indicar la ubicacin del error.

2. En el mismo men "Run", elegir la opcin "Run". Este proceso introduce el cdigo en el Basic Stamp; este cdigo se queda all almacenado hasta que introduzcamos un programa nuevo. Sigamos estos pasos, y observemos cmo el LED se enciende de inmediato. Antes de continuar introduciendo nuevos programas para este circuito, hagamos un experimento: primeramente, quitemos la pila para evitar cualquier problema. Substituyamos la resistencia de 10 k por una de nuestras resistencias de 220 ohms. Una vez hecho esto, volvamos a colocar la pila. Que sucede? El LED es notoriamente mas brillante. Podemos observar as que fluye mas voltaje a travs del circuito, ya que la resistencia es menor. El brillo del LED es proporcional al voltaje. Ahora, queremos que el LED titile. Debemos encenderlo y apagarlo. Consideremos entonces este programa: inicio: high 8 low 8 goto inicio Al introducir este programa en el microcontrolador, veremos que el LED se enciende pero no titila, a pesar de que hemos colocado intermitentemente voltajes de 5 y 0 volts (high y low, respectivamente) Por qu no titila? La respuesta es sencilla: Las instrucciones se ejecutan tan rpidamente, que nuestro ojo no alcanza a apreciar que el LED efectivamente titila, pero a una velocidad muy alta. Modifiquemos entonces el programa de esta manera: tiempo con 500 inicio: high 8 pause tiempo low 8 pause tiempo goto inicio Aqu estamos definiendo una constante, llamada "tiempo", cuyo valor es de 500. Esta constante la utilizamos en la instruccin "pause", que nos permite introducir un retraso en la ejecucin del cdigo. Estos retrasos se miden en milisegundos, as que tendremos medio segundo de pausa cada vez. Hagamos un ltimo ejercicio usando este mismo circuito. Supongamos que queremos hacer titilar el LED 10 veces solamente, y despus apagarlo. Podramos hacer los siguiente: i var byte tiempo con 500 inicio: for i = 1 to 10 high 8 pause tiempo low 8 pause tiempo next

fin: low 8 goto fin Analicemos: estamos definiendo "i", una variable de tipo byte (recordemos: nmero de 0 a 255), y una constante. Despus de la etiqueta inicio, estamos generando un bucle que se repite 10 veces mediante la instruccin "for i = 1 to 10", donde i es la variable que lleva el conteo de bucle. Se ejecutan entonces todas las instrucciones que se encuentran enseguida, hasta que la instruccin "next" hace que el bucle se repita, incrementando en 1 la variable "i". Cuando i vale 11, entonces salimos del bucle, y nos encontramos con la etiqueta "fin", que est justo despus del final del bucle. Aqu establecemos un bucle infinito, en el que lo nico que hacemos es poner 0 volts en el pin 8.

2.2. Funcin del pulsador


Modifiquemos ahora nuestro circuito, introduciendo un pulsador. Este circuito nos servir para aprender no solamente a generar salidas de voltaje, sino a revisar la seal que hay en alguna entrada. Observemos

el siguiente circuito . Tenemos aqu un interruptor cuyas terminales van a tierra por una parte, y por otra a un pin del microcontrolador. En el otro extremo, una resistencia de 10 k cuyas terminales van a un voltaje 5 volts y al mismo pin que el interruptor. Nos interesa conservar el circuito del LED, ya que lo encenderemos y apagaremos mediante el interruptor.

Observemos en esta foto cmo quedara el circuito en el protoboard: hemos hecho una pequea modificacin. Ahora el LED est conectado en el pin 9, y el interruptor est en el 8. Notemos tambin que estamos tomando la alimentacin constante de 5 volts provista por el Basic Stamp para alimentar la seccin del circuito con el interruptor. Una vez colocados los componentes en el protoboard, introduzcamos el siguiente programa: inicio: if in8 then enciende

low 9 goto inicio enciende: high 9 goto inicio Recorramos el cdigo lnea por lnea. Despus de la etiqueta inicio, utilizamos un condicional, que hace la siguiente pregunta: "Hay un voltaje de 5 volts en el pin 8?". La instruccin "in8" devuelve un valor de 1 (verdadero) si lo hay, y 0 (falso) si no lo hay. En el caso de que la condicin se cumpla, saltamos a la etiqueta "enciende", en la cual se colocan 5 volts en el pin 9, que es donde est conectado el LED, y de all volvemos al inicio. En caso contrario, colocamos 0 volts en el pin 9, y volvemos tambin al inicio. Los pulsadores pueden ser de muchos tipos: hay algunos que permiten el flujo de corriente al pulsarlos, y otros que lo hacen cuando no estn pulsados. Si queremos cambiar el "sentido" de nuestro pulsador, podemos modificar la instruccin condicional de esta forma: "if not in8 then enciende". El operador "not" invierte el valor devuelto por "in8". De esta forma, si in8 devuelve "verdadero", tendremos "falso" y viceversa. Quitemos ahora todos los componentes del protoboard, ya que ensamblaremos un ltimo circuito bsico: un circuito RC, que nos permitir leer el valor de un sensor analgico

2.3. Circuitos RC
Los circuitos RC, o "resistencia-condensador", son precisamente combinaciones de resistencias y capacitores que nos permiten conocer las magnitudes de los voltajes variables. Pensemos en los capacitores como cubos que almacenan agua: un cubo se llena, y dependiendo de que tan lleno est, tarda ms o menos tiempo en vaciarse. Los circuitos RC funcionan bajo un principio muy similar: el capacitor se carga con voltaje hasta un cierto nivel, dependiendo del valor de la resistencia, y es precisamente el tiempo de descarga lo que nos permitir leer el valor de dicha resistencia. Recordemos que nosotros definimos cierto tipo de sensores como "resistencias variables", por ejemplo los potencimetros o fotoceldas. En el siguiente digrama tenemos un circuito RC.

En el extremo inferior del diagrama, tenemos una resistencia variable con una de sus terminales conectada a tierra. En el extremo superior, un condensador con una de sus terminales conectada a un voltaje de 5 volts. Las terminales restantes, tanto del condensador como de la resistencia variable se conectan a un mismo punto, a partir del cual hay una resistencia 220 ohms que se conecta a un pin del Basic Stamp. Esta resistencia es de proteccin, ya que cuando la resistencia variable tenga un valor de cero, el voltaje que llegar al microcontrolador ser de 5 volts. Nos interesa estar siempre un poco por

debajo de este lmite mximo. Si elegimos el pin 8 como el pin de conexin con el Basic Stamp, nuestro

circuito quedar tal como se muestra en la foto y el vdeo [alta] [baja]. Aqu hemos utilizado una fotocelda; sin embargo se puede sustituir directamente por cualquier otro sensor resistivo. Ahora escribamos el siguiente programa, que nos permitir leer los valores obtenidos por la combinacin de resistencia y condensador: valor var word inicio: high 8 pause 1 rctime 8,1,valor debug ? valor goto inicio Revisemos el programa: en primer lugar, definimos una variable llamada "valor" de tipo word, que contendr el resultado del sensor. Recordemos que los valores de tipo word van desde 0 hasta 65,535. Por lo tanto, podemos decir que la resolucin del sensor ser de 65,535; esto significa que, al menos potencialmente, nuestra resistencia variable podr tomar 65,535 valor distintos. Despus de la etiqueta "inicio", lo primero es descargar totalmente el condensador. Imaginemos nuevamente a un condensador como si fuera un cubo de agua. Si queremos medir de forma confiable el tiempo que tarda en vaciarse, antes de llenarlo por primera vez tenemos que asegurarnos de que no hay un residuo de agua que haya quedado dentro. De forma similar, antes de cargar el condensador, nos interesa que se encuentre totalmente libre de carga; de esta forma nuestra lectura ser fiable. Esto lo logramos colocando 5 volts en el pin 8 y haciendo una pausa de 1 milisegundo. Este tiempo es ms que suficiente, ya que los condensadores se cargan y descargan a velocidades medibles en microsegundos. Una vez que el condensador se descarga, ste se vuelve a cargar con un voltaje proporcional al valor de la resistencia variable. Utilizamos la instruccin "rctime", que nos permite medir el tiempo de descarga del condensador. Esta instruccin tiene los siguientes parmetros: el nmero de pin (8), el siguiente valor es el estado (puede ser 0 o 1). En este caso utilizamos un 1, ya que nos interesa medir el tiempo de descarga del circuito. Un 0 medira el tiempo que tarda en cargarse.) y por ltimo la variable en la que ser almacenado el valor del sensor, en este caso la variable "valor". La siguiente instruccin, "debug", nos permite mirar desde el editor los valores que la variable "valor" va tomando. La instruccin debug permite la utilizacin del modificador "?", que indica al editor del Basic Stamp que ha de desplegar el nombre de la variable, seguido de su valor. Una vez que introducimos este programa, en el editor aparecer una ventana de depuracin ,

donde podremos ir observando los valores [alta] [baja] que va tomando la variable. Estos valores irn variando en relacin directa con la manipulacin fsica que hagamos del sensor.

3. El protocolo serie, comunicacin del Basic Stamp con Eyesweb


Despus de haber conectado diferentes tipos de sensores al microcontrolador, llega el momento de plantearnos la comunicacin de los valores obtenidos de dichos sensores al ordenador. Tal como ya habamos mencionado, el Basic Stamp se comunica con el ordenador a travs del puerto serie. Cualquiera de los pins del microcontrolador puede servir como entrada o salida de datos seriales. El protocolo serie tiene diferentes caractersticas que definen la forma en la que ste se configura y transmite. Aqu las analizaremos: - Baud rate: Indica la velocidad con que los datos se transfieren. Esta velocidad se mide en "bauds", que se traduce como "nmero de smbolos, o estados nicos del canal de comunicacin por segundo" (definicin tomada del Free Online Dictionary of Computing). http://wombat.doc.ic.ac.uk/foldoc/ Existen velocidades estndar, que en el caso del Basic Stamp van desde 300 hasta 9600 bauds. - Data bits: Nmero de bits que conforman un paquete de datos, o byte. Por lo general, utilizaremos 8 bits, aunque en ciertos casos la comunicacin requerir de 7 bits. - Stop bits: Bit extra, con valor de "1", que indica la terminacin de un paquete transmitido a travs de la va de comunicacin serial. - Parity: Bit extra, utilizado para la deteccin de errores dentro del protocolo serie. En el Basic Stamp, generalmente utilizaremos los siguientes parmetros: 9600 baud rate, 8 data bits, no stop bits, no parity.

Resultar obvio que, para comunicar el Basic Stamp con el ordenador hace falta crear un circuito

que sea capaz de enviar y/o recibir informacin a travs del puerto serie, y tambin utilizar un software en el ordenador que nos permita realizar esta tarea. Comencemos por crear el circuito. Utilizaremos el circuito del interruptor que ensamblamos en el tema anterior, conectando dicho componente al pin8, tal como se muestra en la foto .

Ahora, escribiremos el siguiente programa para hacer que, cada vez que activamos el interruptor, se enve un carcter al ordenador: pin con 16 baud con 16468 inicio: if in8 then mensaje goto inicio mensaje: serout pin,baud,["x"] goto inicio

Analicemos el cdigo: en la primera lnea estamos definiendo una constante, llamada "pin". Esta constante la utilizaremos para definir el nmero de pin por el cual saldr el mensaje serial. Recordemos que el Basic Stamp tiene pins que van desde el 0 hasta el 15. Cuando utilizamos el pin 16 para comunicacin serial, estamos especificando que usaremos el conducto que ya est conectado por defecto. El mismo cable serie que hemos utilizado para programar el microcontrolador nos servir, sin necesidad de mover las conexiones, para realizar el intercambio de mensajes. Definimos tambin otra constante, llamada "baud", que nos indica los parmetros de la comunicacin serial. Este valor proviene

de unas tablas que podemos encontrar en el manual del Basic Stamp. El valor 16468 equivale a decir que usaremos una velocidad de 9600 bauds, 8 bits de datos, sin bit de paridad e invertido. Este ltimo parmetro indica que estamos usando el pin 16 para comunicacin serial. Siempre que se usa este pin, los datos se invierten. Tenemos nuestra primera etiqueta: "inicio". Aqu estamos revisando, mediante la instruccin in8, si es que hay alguna seal de voltaje en el pin nmero 8, que es donde tenemos conectado el interruptor. De ser as, saltaremos a la etiqueta "mensaje", en la cual estamos enviando un caracter a travs del puerto serie mediante la instruccin "serout". Esta instruccin tiene tres parmetros: el pin que se utilizar para enviar el caracter, el "baud mode", y el caracter a enviar. Los dos primeros parmetros los hemos definido a travs de sus respectivas constantes, el tercero se especifica con la sintaxis de parntesis cuadrados y comillas dobles: ["x"], significa que enviaremos un caracter que corresponde a una "x". As pues, tenemos un circuito en el cual hay un pulsador que, al ser activado, enva una "x" al ordenador a travs del puerto serie Nuestro programa est listo para cargarse en el Basic Stamp, pero ahora tenemos que resolver la cuestin de cmo leer este caracter. El software a elegir depende principalmente de lo que queramos hacer con las seales provenientes del microcontrolador: mostrar un grfico o una animacin, reproducir un sonido... existe una gran variedad de aplicaciones multimedia que pueden leer el protocolo serie. Por ejemplo: - Macromedia Director: http://www.macromedia.com/ a travs de un Xtra o extensin, llamado commXtra, http://www.directxtras.com/main.asp?UUID=1484112& podemos tener acceso al puerto serie desde este popular entorno de desarrollo. - PD, http://www.seeq.com/popupwrapper.jsp?referrer=&domain=pure-data.org MAX: http://www.cycling74.com/index.html Estos dos entornos de programacin visual ya cuentan con objetos que pueden leer el puerto serie. Estas dos herramientas se adaptan especialmente bien a la utilizacin de sonido, aunque no se limitan a ello. - Processing: http://processing.org/ Esta nueva herramienta, que permite escribir programas en un lenguaje similar a Java, cuenta tambin con mtodos de lectura del puerto serie. Processing est especialmente dirigido para la creacin de grficos algortmicos, con diferentes niveles de interactividad. - Eyesweb: http://www.eyesweb.org/ Esta herramienta, dirigida especficamente a la manipulacin de imagen y video en tiempo real, cuenta con objetos para comunicarse con el puerto serie. Usaremos esta aplicacin por diferentes motivos: se trata de una aplicacin gratuita, desarrollada por la Universidad de Gnova. Esta aplicacin, junto con manuales, documentacin y ejemplos, puede bajarse de Internet. Se trata, adems, de una aplicacin que en un tema posterior nos permitir hablar sobre la utilizacin de la cmara como sensor

4. Una breve introduccin a Eyesweb


Eyesweb es un entorno de programacin visual que funciona en Windows, dedicado al desarrollo de aplicaciones multimedia en tiempo real. Est especialmente dirigido al anlisis de imgenes, y del contenido expresivo del movimiento. Es una plataforma abierta capaz de interactuar con diferentes puertos de comunicacin: MIDI, TCP/IP (lo cual nos permite intercomunicar dos o ms ordenadores conectados a una red) y, por supuesto, el puerto serie. Actualmente hay una gran cantidad de artistas e investigadores interesados especficamente en la captura de movimiento a travs de cmaras que estn utilizando este software. En cuanto al entorno de programacin, se trata de un sistema visual e intuitivo, en el que a travs de la interconexin de mdulos se logran diferentes configuraciones ejecutables, que realizan funciones complejas orientadas al multimedia. Los principales elementos que componen a Eyesweb son:

- Manager (Administrador): Este componente mantiene la informacin de las interconexiones entre los bloques, y verifica que sean correctas. Verifica que el intercambio de informacin entre dos ligas sea homogneo. Tambin se encarga de manejar la informacin sobre el nmero de entradas y salidas de cada bloque. - Scheduler (Temporizador): Este componente regula el intercambio de informacin entre bloques en tiempo de ejecucin. Existen dos tipos de bloques: activos, que generan datos nuevos, y pasivos, que se activan solamente cuando tienen nuevos datos que procesar. - Blocks (Bloques): Los bloques son mdulos de software que generan o procesan datos. EyesWeb tiene un conjunto de bloques predefinidos, clasificados en libreras. Sin embargo, el sistema puede extenderse con nuevos bloques creados por el usuario. - Datatypes (Tipos de datos): Los tipos de datos son las diferentes cualidades de la informacin intercambiada entre bloques. Veamos

un pequeo ejemplo de un programa (demo5 en carpeta programas eyesweb, abrir con eyesweb) escrito con los bloques de Eyesweb. Ya que estamos experimentando con el intercambio de mensajes con el microcontrolador, veamos este sencillo programa, que nos permite leer el puerto serie. Tenemos un mdulo que permite leer los datos del puerto serie, y un pequeo campo en el cual se desplegarn estos datos. El primer mdulo lo hemos tomado de la librera "Input", subcarpeta "Serial", que se encuentra en la parte izquierda de la pantalla. Lo hemos incluido dentro del rea del programa (el rea central de la pantalla) simplemente arrastrndolo hasta all. Este mdulo, "serial input" tiene una salida; si pasamos el cursor sobre dicha salida, en la parte inferior de la pantalla veremos que se trata de un tipo de datos Math.scalar, o sea, un valor numrico escalar. Por lo tanto, si queremos observar los datos que entran por

el puerto serie, tenemos que elegir un campo de despliegue para este tipo de datos. El campo de despliegue de nmeros escalares lo hemos tomado de la librera "Output", subcarpeta "Math", subcarpeta "Scalar", y lo hemos arrastrado hasta el rea del programa. Finalmente, los dos mdulos se unen creando un conector desde la salida del mdulo "serial input" hasta la entrada del mdulo "display". sto se logra arrastrando el ratn desde un punto hasta otro. Algunos mdulos tienen parmetros internos que pueden ser modificados. En el caso de "serial input", tenemos que especificar los parmetros de comunicacin serial. Si hacemos doble click sobre dicho mdulo, aparecer una pequea pantalla en la cual podemos especificar estos valores. Los parmetros que nos interesan para comunicarnos con el Basic Stamp se expresan de la siguiente manera: 9600,n,8,1, es decir: baud rate de 9600, sin paridad, 8 bits de datos y 1 stop bit. Especificaremos adems el nmero de puerto serie al que est conectado el microcontrolador: 1 = COM1, 2 = COM2, etc. Pues bien, tenemos ahora un emisor de mensajes seriales, el microcontrolador con el pulsador conectado, y un receptor, Eyesweb con un programa para leer el puerto serie. Una vez programado el Stamp y listo el patch de Eyesweb, hay que desconectar el cable "ATN" (el tercero de arriba hacia abajo en el extremo superior izquierdo del Stamp) para que la comunicacin pueda darse. -Obviamente, si hace falta reprogramar el Stamp, hay que reconectar este cable Conectemos de esta manera el microcontrolador y activemos el programa de Eyesweb utilizando el botn "Lock & start", ubicado en la barra de botones de la parte superior de la pantalla. Deberamos observar que, en el campo de despliegue aparece el nmero 120. Por qu? Es precisamente este nmero el correspondiente a la letra "x" en la codificacin ASCII (American Standard Code for Information Interchange). Esta codificacin, convertida en un estndar dentro de lo computacin, asigna nmeros a todos los smbolos y caracteres alfanumricos. Una "A" mayscula, por ejemplo, tiene un cdigo ASCII de 65, mientras que la "a" minscula tiene el cdigo 97. Vemos as que, lo que realmente se transmite a travs del cable serie son nmeros que van desde 0 a 255 (8 bits) y que corresponden a caracteres. Modifiquemos el programa del pulsador, para obtener un cdigo "120" (x) cuando el pulsador est activado, y un cdigo de "121" (y) cuando est desactivado: pin con 16 baud con 16468 inicio: if in8 then mensaje serout pin,baud, ["y"] goto inicio mensaje: serout pin,baud,["x"] goto inicio

Ensamblemos ahora nuestro circuito RC,

utilizando una

fotocelda o un potencimetro conectados al pin 9. Leeremos ahora valores provenientes de un sensor analgico, y los aplicaremos al siguiente programa (demo6, en carpeta programaseyesweb) de Eyesweb. Este programa tiene los siguientes mdulos. Inicialmente, el mdulo "bitmap reader", que lee una imagen tipo bitmap (extensin .bmp). Al hacer doble click sobre este mdulo, podremos elegir la imagen a utilizar. Esta imagen pasa a travs de un operador de imagen, llamado "rotate" (se encuentra en la librera "Imaging", subcarpeta "Operations") que, como su nombre lo indica, permite rotar una imagen. Finalmente, la salida de esta operacin llega a un mdulo que despliega la imagen (librera "Imaging", subcarpeta "Output"). Observemos que el mdulo "rotate" tiene adems una entrada que permite especificar el ngulo de rotacin en grados

4.1. Ejemplo: control del ngulo de rotacin de una imagen desde el microcontrolador
Utilizaremos el sensor para controlar el ngulo de rotacin, y para ello escribiremos el siguiente programa en P-Basic: pin con 16 baud con 16468 sensor var word inicio: high 9 pause 1 rctime 9,1,sensor if sensor <= 300 then grados1 if sensor >400 and sensor <= 1000 then grados2

if sensor >1200 then grados3 goto inicio grados1: serout pin,baud,[0] goto inicio grados2: serout pin,baud,[30] goto inicio grados3: serout pin,baud,[60] goto inicio Analicemos: en las primeras lneas, hasta el comando "rctime", estamos leyendo el sensor tal y como habamos aprendido en el tema anterior. En las siguientes lneas, enviaremos distintos ngulos dependiendo del valor del sensor: si el valor es menor que 300, entonces enviamos 0 grados (etiqueta "grados1"). Si es mayor que 400 y menor que 1000, enviamos 30 grados. Notemos aqu la utilizacin del operador "and", que nos permite unir varias condiciones en una sola evaluacin. Si el valor del sensor es mayor que 1200, enviamos 60 grados. Estos valores son totalmente arbitrarios, lo cual quiere decir que cada quien podr modificarlos segn su conveniencia. Se podran enviar mas de 3 valores de ngulos, por ejemplo. Conectemos ahora el microcontrolador, carguemos el programa y activemos por otra parte el programa de Eyesweb. La interaccin con el sensor nos dar diferentes rotaciones de la imagen. Hemos explorado aqu algunas formas bsicas de intercomunicacin entre sensores y elementos multimedia a travs de microcontroladores y software especializado. A partir de aqu se abre un camino extenso, en el cual podremos experimentar con diferentes configuraciones, conectar varios sensores a la vez, montarlos en diferentes interfaces y, por otra parte, realizar manipulaciones audiovisuales cada vez mas complejas Como conclusin a esta seccin, se ofrece un programa (esta en carpeta programas eyesweb) en P-Basic -------------

'Este programa mide hasta 15 potenciometros u otros sensores 'resistivos, y enva datos de controladores MIDI de 7 bits. 'Se puede modificar facilmente para enviar mensajes de nota o 'pitch-bend. Los valores no estn normalizados para escala completa, 'esto se debe hacer en el programa que recibe los mensajes, por ejemplo 'Eyesweb, tomando en cuenta las particularidades del sensor utilizado. ' 'Aqu est el circuito de conexin para la salida MIDI: '

' ' ' ' ' ' ' ' ' ' ' ' ' ' ' +5 volts | | | / NC l o1 vista posterior del conector MIDI out ___ ___ / l_l \ \ 3o l NC

\ o4 2 5o /

|__/\/\/______\_| o |_/___/\/\/_____> al pin de datos de Basic Stamp 220 ohms | _l_ /// tierra \___|___/ 220 ohms

'constantes, no modificar midibaudmode con 32780 '31.25kb, 8n1, non-inverted, open collector 'MIDI status bytes: controller con %10110000 + midichannel noteon con %10010000 + midichannel pitchbend con %11100000 + midichannel

'declaracion de variables valor var word pin var nib 'almacena el valor de 16 bits leido del sensor 'pin/sensor que se est leyendo actualmente

statusbyte var byte data1 var byte data2 var byte

'MIDI status; controller, noteon, o pitchbend 'primer byte de datos MIDI, por ejemplo numero de controlador o nota 'segundo byte de datos MIDI, por ejemplo valor o velocidad de la nota

'configuracion del usuario - modificar segn las necesidades 'los pins no utilizados se convierten en salidas DIRS = %1111111111111111 'todos salidas OUTS = %0000000000000000 'todos con 0 volts midichannel con 1 midioutpin con 0 sensor1 con 14 sensor2 con 15 'canal MIDI de transmisin 'pin conectado a la salida MIDI. 'primer pin con un sensor conectado 'ultimo pin con sensor conectado

inicio: for pin = sensor1 to sensor2 'lee el valor del sensor high pin pause 1 rctime pin, 1, valor valor = valor >> 1 'quitar el bit menos significativo

'enviar los 7 bits mas significativos como valores de controlador continuo statusbyte = controller data1 = pin 'mensaje de tipo controlador

'numero de controlador

data2 = value.highbyte

serout midioutpin, midibaudmode, [statusbyte, data1, data2] next goto inicio

capaz de generar MIDI desde el microcontrolador. Este programa, totalmente comentado para su comprensin y modificacin, lee el valor de un sensor o sensores, y los convierte a mensajes MIDI. Como habamos mencionado, el MIDI es una forma de comunicacin serial, por lo tanto podemos utilizarlo junto con el microcontrolador, basta especificar algunos parmetros particulares sobre la velocidad de transmisin del MIDI (baud rate) y orden de los bytes de datos. El cable MIDI, cuyo diagrama se incluye en el cdigo, se conectar al pin 0, y los sensores pueden conectarse desde el pin 1 hasta el 15. El nmero del controlador MIDI enviado corresponder al nmero de pin en el que se encuentra el sensor, y el valor del controlador ser proporcional al valor del sensor. Por otro lado, Eyesweb tiene diferentes mdulos capaces de leer MIDI; a partir de estos mdulos se puede generar sonido, manipulaciones de imagen y muchas otras cosas. Los manuales y ejemplos pueden descargarse desde la misma pgina de Eyesweb

5. La cmara como sensor: Software, ejemplos y nuevas tendencias


A lo largo de este curso hemos hablado sobre interfaces fsicas. Especficamente, en los ltimo temas, hemos visto algunas aproximaciones tcnicas para la creacin de interfaces fsicas. Todas ellas implican un contacto directo del interactor humano, es decir, los sensores han de ser directamente manipulados por la persona mediante diferentes manifestaciones gestuales relacionadas con algunos objetos. La tendencia actual, sin embargo, es convertir al propio cuerpo humano en interfaz para la introduccin de datos en el ordenador y la interaccin audiovisual, sin necesidad de que el interactor manipule ninguna clase de objeto. Actualmente se han hecho experimentos en este sentido en los cuales estn involucradas las cmaras digitales que, mediante programas especializados, son capaces de "ver" e interpretar aquello que ven. As pues, podemos hablar de la utilizacin de estas cmaras como sensores; como los "ojos" del ordenador. A continuacin haremos algunas breves consideraciones sobre tcnicas de visin por ordenador, y aprovecharemos Eyesweb, que como ya habamos mencionado, es un entorno enfocado a la captura y anlisis del movimiento. En general, podemos dividir las tcnicas de visin por ordenador en tres grandes rubros: -Deteccin de color: El flujo de imgenes captado por una cmara no es otra cosa que una secuencia de mapas de pxeles, cada uno con un diferente valor de color. Pensemos en estos mapas como matrices de NxM, donde N es la anchura y M la altura medida en pxeles. Por lo comn, las webcams capturan a resoluciones que son mltiplos o submltiplos de 320x240 pxeles, aunque sto vara segn el modelo. La deteccin de color est basada en el anlisis en tiempo real de cada fotograma para encontrar pxeles cuyo valor de color sea igual o cercano a un valor especificado. -Deteccin de movimiento [alta] [baja]: Cada fotograma capturado por una webcam puede ser comparado pxel a pxel, o bien con el fotograma anterior, o bien con un fotograma de referencia para detectar movimiento. -Deteccin de patrones [alta] [baja]: Este mtodo de visin por ordenador es el ms sofisticado, y el que ms procesamiento requiere. Consiste en el reconocimiento de patrones especficos por parte del ordenador, y su ubicacin en el espacio real. Existen pocas aplicaciones que logren implementar este

mtodo satisfactoriamente. Una de ellas es ARToolkit, http://www.hitl.washington.edu/research/shared_space/download/ una librera de funciones para programas escritos en C++ que permite el reconocimiento de patrones rectangulares, y su ubicacin en el espacio tridimensional. ARToolkit trabaja con el concepto de "Realidad aumentada", en el cual se busca la fusin de imgenes y entornos reales con elementos digitales. En estas imgenes

podemos ver algunos ejemplos de aplicaciones

de esta librera que, desafortunadamente, aun requiere de un alto nivel de conocimientos en programacin

para ser utilizada. Regresemos entonces a los dos primeros mtodos de visin por ordenador: estos mtodos estn a nuestro alcance gracias a diferentes aplicaciones o extensiones de entornos de programacin. Por ejemplo, para Macromedia Director existe el Xtra "Track Them Colors", http://www.smoothware.com/ que permite la deteccin de colores y movimientos mediante sencillas funciones aplicables en Lingo, el lenguaje propio de este entorno Para MAX existe Jitter, uhttp://www.cycling74.com/index.html na extensa librera de objetos para manipulacin de imagen que incluyen algunos objetos para deteccin de color y movimiento. Tambin para MAX existe Cyclops, un objeto bastante flexible utilizable para estos fines. Sin embargo, es probable que la herramienta mas sofisticada y cercana a nosotros sea precisamente Eyesweb, que cuenta con una variada gama de mdulos especficos para el trabajo con visin por ordenador.

Comencemos con un programa (demo2) simple, que posteriormente nos permitir hacer operaciones mas sofisticadas. Se trata de una configuracin que permite la substraccin de fondo a partir de un fotograma de referencia, es decir, nos permite obtener solamente las figuras que son ajenas a un "fondo", que es precisamente el fotograma inicial de nuestro flujo de video. Al iniciar este programa, el mdulo "frame grabber", en el extremo izquierdo, nos permite obtener imgenes provenientes de una webcam. Cuando comienza el flujo de estas imgenes, el comando "Start" activa el mdulo "Buffer", en el cual se almacena el primer fotograma, que ser el fotograma de referencia. Estos fotogramas son convertidos previamente de color a escala de grises, gracias al proceso hecho por el mdulo "color to gray". Esta conversin har que el procesado necesario para la substraccin de fondo sea mas rpido, ya que la resolucin de color de una imagen en escala de grises es menor, y por lo tanto mas manejable, que la resolucin de una imagen a color. Despus del primer fotograma, a los fotogramas sucesivos se les "restar" el fotograma de referencia, mediante la operacion "dyadic arithmetic", de la librera "imaging". Este mdulo hace una resta de las matrices de ambos fotogramas; la imagen resultante estar compuesta exclusivamente por los pxeles que se encuentren en el fotograma actual y no en el de referencia, es decir, por las imgenes que han entrado en escena. Ejecutemos este programa activando el botn "Lock & start". Es importante que al iniciar captemos solamente el "fondo" de la escena. De esta manera, cuando nosotros entremos en el encuadre, seremos detectados como "figuras ajenas al fondo", y por lo tanto cualquiera de nuestros movimientos podr ser utilizado como informacin significativa dentro de Eyesweb. Veamos el siguiente ejemplo (demo 4 en carpeta programas), que parte de este programa inicial para crear un ndice de cantidad de movimiento. Mediante diferentes mdulos especficos para anlisis de movimiento, se logra, a partir de la substraccin de fondo, encontrar un valor que es directamente proporcional con las figuras en movimiento captadas por la webcam. Al ejecutar este programa, veremos por un lado las imgenes captadas por la webcam, transformadas a blanco y negro para facilitar los clculos, y por otro una grfica que vara, aumentando y disminuyendo segn las figuras se mueven frente a la cmara. Observemos que la imagen proveniente de la webcam tiene una latencia, que variar segn la potencia del ordenador. Esto significa que los clculos realizados por Eyesweb son bastante sofisticados, y consumen bastantes recursos del sistema. Si quisiramos hacer una manipulacin sofisticada de imagen o sonido, es probable que un solo ordenador no sea suficiente para procesarlo todo. En este caso, tenemos que plantearnos la posibilidad de interconectar varios ordenadores, cada uno dedicado a una tarea especfica: uno a recoger datos del entorno, y otro a manipular imgenes y/o sonido basndose en dichos datos. Las formas de interconectar ordenadores son muchas, aqu mencionaremos dos de las mas simples: - MIDI: a travs del intercambio de mensajes MIDI entre dos ordenadores (un receptor y un emisor) podemos transmitir cualquier tipo de datos numricos. Recordemos que MIDI, a pesar de ser un protocolo dirigido al intercambio de mensajes musicales, permite de hecho el envo de diferentes valores numricos, independientes de su significado. Este ejemplo (demo9 en carpeta programas) enva los valores obtenidos mediante el programa anterior a travs de algn puerto MIDI de salida. Se utiliza el mdulo "linear rescale", para convertir los ndices de cantidad de movimiento (que varan entre 0 y 1) a valores MIDI (que varan entre 0 y 127). Se utiliza tambin el mdulo "midi output", que enva un mensaje MIDI, en este caso un mensaje tipo "Control Change", con el controlador 1, y un valor que depende del ndice de movimiento. Este programa se utilizara para enviar valores a otro ordenador, en el cual tendramos que hacer funcionar este programa.(demo10 en carpeta) - TCP/IP: Este protocolo, propio de las redes informticas, tambin nos puede servir para transmitir cualquier tipo de datos entre dos o mas ordenadores conectados a la misma red. La comunicacin a travs de TCP/IP tambin necesita de un emisor, llamado "cliente", y un receptor, llamado "servidor". El cliente debe enviar los datos a la direccin del servidor, que en el protocolo TCP/IP consiste en una secuencia de 4 nmeros cuyo rango va de 0 a 255, llamados "direccin IP", por ejemplo 127.26.0.250. Se

debe adems especificar un puerto de envo, que consiste en un nmero que puede ir desde 1025 hasta 65,535 (los nmeros inferiores se encuentran reservados para diferentes servicios de comunicacin a travs de la red). Para conocer la direccin IP de una mquina en la red, y el nmero de puerto que se puede utilizar, lo mejor es ponerse en contacto con el administrador de la red. Para transmitir los datos de captura de movimiento a travs de la red, utilizaremos este programa (demo11) El ndice de cantidad de movimiento se transmitira tal cual, sin necesidad de conversiones, utilizando el mdulo "send to network", en el cual hay que especificar la direccin IP y el puerto de la mquina que va a recibir el dato. Este otro programa (demo12) deber estar funcionando en la mquina receptora. Se utiliza el mdulo "receive from network", que deber estar esperando informacin en el mismo puerto especificado en el mdulo de envo. Como ejemplo final, aprovecharemos el programa de cantidad de movimiento y retomaremos un tema que haba quedado pendiente al hablar de microcontroladores: el envo de mensajes seriales desde el ordenador al Basic Stamp para el control de los actuadores. Haremos el siguiente programa (demo13)en Eyesweb, que enviar un "1" a travs del puerto serie si la cantidad de movimiento es mayor a 0.5, o un "0" si es menor. Dicha comparacin se hace mediante el mdulo "unary operator logical", que devuelve 0 si una condicin de comparacin no se cumple, u otro valor si se cumple. Finalmente, convertimos este valor resultante a un "string", o caracter alfanumrico, ya que nos interesa enviar el caracter "0", y no el caracter cuyo cdigo ASCII sea 0. Por el lado del microcontrolador, conectaremos un LED (recordemos aqu el circuito

para la conexin de un LED) que se encender si recibimos un "1" desde el ordenador, y se apagar si recibimos un "0". Asegurmonos que los parmetros de envo de mensajes serie en Eyesweb sean 9600,n,8,1 (9600 bauds, no parity, 8 bits de datos, 1 stop bit) y que el puerto de envo sea el mismo al que est conectado al Basic Stamp. En el microcontrolador, introduzcamos el siguiente programa: datain var byte pin con 16 baud con $4054 inicio: serin pin,baud, [datain] if datain = "1" then on if datain = "0" then off goto inicio ciclo:

on: high 8 goto ciclo off: low 8 goto ciclo Aqu vemos la introduccin de un nuevo comando, "serin", el complemento del comando "serout". Al igual que este ltimo, "serin" requiere de un pin y un "baud mode", y adems de una variable en la cual se recibirn los datos, en este caso la variable tipo byte "datain". Al cargar este programa en el Basic Stamp, tendremos un sistema configurado en el cual se enciende o se apaga un LED dependiendo de la cantidad de movimiento detectada por una webcam

Sesin 1
1 Jameson, Frederic, "Postmodernism, or, The Cultural Logic of Late Capitalism", Post-Contemporary Interventions. Durham, NC: Duke University Press, 1991 2 Schwarz, Hans-Peter, "Media Art History", Media Museum ZKM. Prestel, Munich, 1997 3 Paul, Christiane, "Digital Art", Thames & Hudson World of art. London, 2003 4 Matthews, Harry, Brotchie, Alastair, Ed, "OULIPO Compendium", Atlas Arkhive Six. Atlas Press, London, 1998 5 Varios, "STEIM", Folleto publicado por los veinticinco aos de STEIM, Amsterdam, 1993

Sesin 2
1 Schwarz, Hans-Peter, "Media Art History", Media Museum ZKM. Prestel, Munich, 1997 2 Paul, Christiane, "Digital Art", Thames & Hudson World of art. London, 2003 3 Bowers, John, Fleischmann, Monika, Hellstrm, Sten-Olof, Hoch, Michael, J-Aro, Kai-Mikael, Kulessa, Thomas, Novak, Jasminko, Shaw, Jeffrey, Strauss, Wolfgang, "Navigation and Devices", deliverable 6.1, eRENA, 1998 4 Eco, Umberto "Opera Aperta", Bompiani. Milano, 1995 5 Kramer, Sybille, "Spielerische Interaktion", Schone Neue Welten? Auf den Weg zu einer neuen Spielkultur, Florian Rotzer (ed.), Munich, 1995 6 Bongers, Bert, "Physical Interfaces in the Electronic Arts: Interaction Theory and Interfacing Techniques for Real-Time Performance", Trends in Gestural Control of Music, IRCAM, Centre Pompidou, Paris, 2000

Sesin 3
1 Jord , Sergi, "Audio Digital y MIDI", Gua Monogrfica, Anaya Multimedia. Madrid, 1997 2 O'Sullivan, Dan, "Physical Computing", New York University 1 Parallax, "Basic Stamp Programming Manual"

Das könnte Ihnen auch gefallen