Mostrando entradas con la etiqueta ciencia. Mostrar todas las entradas
Mostrando entradas con la etiqueta ciencia. Mostrar todas las entradas

viernes, 9 de julio de 2010

Vigo Transforma - Tecnoarte

Esta semana se está celebrando Vigo Transforma. Hay conciertos y fiesta varia, pero lo que a mi realmente me llamó la atención es que hay obras de arte que hacen uso de la tecnología. Ayer fui a ver dos, Body Paint y el Aquófono. Son súper simpáticos... con un poco de suerte aún estaréis a tiempo de ver el Body Paint si os pasáis por la Casa das Artes.

Hoy voy a explicar más o menos cómo funcionan estos dos aparatos, para quien tenga curiosidad por conocer los entresijos de estos aparatos que convierten la tecnología en arte.


Body Paint es una instalación interactiva que convierte una pared en un lienzo que podemos pintar con nuestros propios cuerpos.
Es tremendamente divertido correr por la habitación viendo que vas dejando estela, mover los brazos para intentar dibujarte alas, o simplemente saltar por ahí y ver como la pared se va salpicando de colores.



Para los niños es como magia.... y para gran parte de los adultos también.... bueno, pues vamos a aprender magia.

En realidad el aparato es muy sencillo. Tiene un proyector (grande, pero que funciona igual que cualquier otro proyector), que es el que proyecta la imagen que ha calculado el ordenador en la pared.
¿Y cómo sabe el ordenador dónde estamos y por dónde nos movemos para pintar ese trozo de la pared?, pues con la ayuda de una webcam.

Parece fácil ¿no?, con una webcam vemos lo que hay delante, buscamos dónde está la gente y por dónde se mueve, y pintamos esa parte de la pared.
El problema viene cuando nos damos cuenta de que la cámara, además de ver a las personas ve también la pared, y conseguir diferenciar la pared pintada de las personas andando por ahí es muy, pero que muy complicado, así que tenemos que inventar algún truco para hacer esto más simple, para que la cámara pueda ver a las personas, pero ignorando la pared.

Para hacer eso el artista utiliza luz infrarroja. Si seguís mi blog seguro que ya os suena esto de la luz infrarroja, por que ya comenté cosas sobre el tema cuando hablé de Pantallas Multitáctiles.
La idea es que la luz infrarroja no la podemos ver, si nos apuntan con un foco infrarrojo, nos parecerá que el foco está apagado... sin embargo, se puede preparar una cámara que sí que sea capaz de verla, y lo que es más, se puede preparar una cámara que únicamente pueda ver ese tipo de luz.

Así que repasamos: Necesitamos un proyector, un ordenador, unos focos de luz infrarroja y una cámara que pueda ver infrarrojos, y que sin embargo no vea la luz que sale del proyector.


En esta foto se ve bien el proyector... un proyector bastante potente.
Además también se ven los focos de infrarrojos, que parece que brillan muy poco, pero que en realidad son unos focos bastante potentes. Y si os fijáis también está por ahí la webcam, aunque en esta foto es un poco difícil de apreciar.



Y este es el ordenador, que se ocupa de calcular dónde deben ir las manchas de color.

Aquí tenéis otra foto para que veáis el aparato con más detalle.


Así que recapitulamos. Tenemos unos focos de infrarrojos que están iluminando la habitación con una luz invisible.
Tenemos una cámara que ve únicamente las cosas iluminadas por luz infrarroja, o sea, todo lo que esté iluminado con luz infrarroja lo podrá ver, pero las cosas iluminadas con luz normal no será capaz de verlas.
Tenemos un ordenador que recibe la imagen de la cámara, ve dónde está la gente y cómo se mueve, pinta esas zonas con pintura, y le envía la imagen al proyector.
Tenemos el proyector que dibuja en la pared los colores.
Y ya por último, tenemos a la gente correteando por ahí, iluminada por luz infrarroja que no ve, cuyos movimientos pintan la pared del fondo con luz que sí que puede ver.



El Aquófono es, en concepto, incluso más sencillo.
Es un "instrumento musical" que utiliza gotas de agua para tocar notas. Esta es la pinta que tiene:


Utilizan unos goteros, de los típicos de los hospitales para dejar caer las gotas más rápido o más despacio.
Por debajo tienen ocho sensores, que detectan cuándo cae una gota y mandan una señal, que se traduce en una nota musical. Al dejar caer muchas gotas, suenan muchas notas musicales.

Estos son los goteros:


Y estos son los sensores:


Los sensores envían la señal a un ordenador.... creo que a través de un sintetizador... pero ahí ya no puedo decir nada por que tampoco me fijé demasiado. El ordenador asigna un sonido a cada sensor, y lo toca cada vez que cae una gota en el sensor correspondiente.

Lo mejor para entender el chisme este es ver un vídeo... aquí os dejo uno que grabé cuando fui a verlo:





Bueno, y aquí lo dejo por hoy, espero que os hayan resultado interesantes las explicaciones, y a ver si con un poco de suerte sois capaces de ver estos aparatos en persona, que son la mar de divertidos.

viernes, 23 de abril de 2010

Pantalla multitáctil en acción

Bueno, ayer no tenía sueño, y como hoy no tenía que madrugar, aproveché que por fin tengo materiales y software, y preparé el primer experimento multitáctil en casa que funcionó a la perfección.

Ya hice una introducción sobre cómo funcionan este tipo de pantallas en la Introducción a las pantallas táctiles multipunto y también expliqué de modo resumido cómo funcionan las pantallas por plano láser.

Algunas cuestiones las volveré a repetir aquí para que queden claras.

La idea del invento es bastante sencilla, básicamente consiste en convertir una pantalla normal, o una superficie de proyección en una pantalla táctil capaz de reconocer varias pulsaciones a la vez. El iPhone, por ejemplo, utiliza tecnología capacitativa para detectar las pulsaciones y poder hacer esos gestos tan simpáticos para ampliar y reducir las fotografías.
La cuestión es que no tenemos la capacidad que tiene apple para fabricar ese tipo de pantallas y colocárselas a nuestra tele del salón o a la pantalla del ordenador.

Sin embargo, utilizando infrarrojos sí que podemos lograr esto con un equipo de lo más asequible.

La idea es relativamente simple. Utilizaremos una webcam apuntando a la pantalla (o a la superficie donde vayamos a tocar con los dedos). Esta webcam estará preparada para ver únicamente luz infrarroja. La luz infrarroja no puede verse a simple vista, de modo que todo lo que hagamos con ella es completamente invisible.
Por ejemplo, cuando vamos al cine a ver una película en 3D, nadie ve los flashes de luz infrarroja que le dicen a las gafas que tienen que cerrar uno u otro ojo. Tampoco vemos los pulsos de luz que emiten los mandos a distancia cuando cambiamos de canal en la televisión, ni vemos la línea de luz que detecta si estamos en la puerta del ascensor para que esta no se cierre y nos pille en medio.

Una vez que tenemos la cámara preparada, tenemos que conseguir que nuestros dedos brillen cuando toquemos la pantalla. La webcam registrará esos puntos luminosos, y después sólo tenemos que usarlos para controlar nuestros programas.

Hay varios sistemas para hacer que los dedos brillen al tocar la pantalla, pero el que utilicé yo es el denominado Plano láser.
Seguro que ya habéis visto más de un láser, sobre todo de los rojos. Emiten una luz muy concentrada (normalmente en un punto) y tremendamente potente.
A un láser se le puede añadir una lente que hace que en vez de dibujar un punto dibuje una línea.
Seguro que habéis visto en alguna película escenas parecidas, cuando llega algún tipo de robot y escanea un objeto, pasando una línea de luz por él. La idea es parecida.
El láser con la lente crea un plano de luz que no se ve, a no ser que algo lo atraviese, como por ejemplo un dedo.

Así que coloqué un láser infrarrojo con su lente en una esquina de la televisión, intentando que el plano de luz quedase paralelo al de la pantalla.

Este es el láser pegado en la televisión:

Es un láser infrarrojo de 780 nm (esto viene siendo como el tono de infrarrojo... como si fuese un infrarrojo clarito... no sé si me explico) Lo compré en eBay por unos 7 dólares. En la misma tienda compré también la lente para que dibuje una línea.

Lo alimenté con una fuente de alimentación de ordenador modificada que preparé hace poco para este tipo de experimentos.


La cámara que utilicé fue una PS3-Eye. La conseguí por poco más de 20€ y tiene unas características muy buenas. Las más importantes para este experimento es que tiene una respuesta muy rápida (se puede conseguir que grabe a 60 fotogramas por segundo) y tiene una sensibilidad muy buena a los infrarrojos.
El caso es que en general no interesa que las webcams capten infrarrojos, de modo que estas cámaras muchas veces llevan un filtro interno que bloquea ese tipo de luz.
Lo primero que tuve que hacer para adaptar la cámara fue quitar ese filtro, a base de cutter y algo de fuerza haciendo palanca.
Una vez eliminado el filtro la cámara ya capta infrarrojos a la perfección, pero como el filtro forma parte de la óptica, la cámara queda desenfocada sin él.
Con un poco de bricolaje conseguí enfocarla.
El siguiente paso es que la cámara capte únicamente los infrarrojos, y no la luz normal.
Para eso me compré un filtro que bloquea toda la luz visible por debajo de 720 nm.

El caso es que al hacer pruebas me di cuenta de que hay luz infrarroja por todos lados... el sol emite cantidad de luz infrarroja, y las lámparas halógenas... incluso la televisión emite infrarrojos. Eso hace que la webcam capte mucha luz, y en comparación los dedos no brillan tanto.
Lo que tendría que haber hecho es comprar un filtro que únicamente deja pasar un rango determinado de infrarrojos, para que además de bloquear la luz visible, me bloquease la luz infrarroja que no me interesa.

Aquí tenéis la cámara con el filtro:


Aunque el filtro no era el más adecuado para la tarea, sí que fue suficiente como para que funcionase todo.


Bueno, vamos ya con lo interesante.
Después de montar todo el tinglado, esto es lo que se podía ver por la cámara:



Como podéis ver, los dedos brillan cuando los acerco a la pantalla, y brillan bastante, por que el láser que utilicé tiene bastante potencia (como cinco veces más potente que uno normal de los chinos)
También podéis ver que el vídeo no tiene color. Eso es por que el filtro bloquea toda la luz visible, y los colores entran dentro de la luz visible.
La pantalla de la televisión se ve de un color claro por que está emitiendo infrarrojos. La imagen que emite no se ve por que es bloqueada por el filtro.

Vale, ahora ya tenemos nuestro modelo básico. Una pantalla, una webcam, y un sistema que hace que los dedos brillen cuando tocan la pantalla.

Ahora llega la parte del software. Necesitamos un programa que sea capaz de ver la imagen de la webcam y reconocer esos puntos luminosos. la gente del Natural User Interface Group
(NUIGroup) ya se han ocupado de eso, creando el Community Core Vision (CCV).

Este programa utiliza el vídeo que toma de la WebCam, le aplica una serie de filtros para tener una imagen clara de los puntos luminosos, los identifica, y envía los datos a nuestro programa.

Esta es la pinta que tiene el CCV:


No se aprecia demasiado bien por que estoy metiendo yo las manos por en medio, pero lo voy explicando.
En el recuadro superior izquierdo se ve lo que capta la WebCam, tal cual, con unas cuantas señalizaciones de los puntos que es capaz de reconocer.
En la parte inferior se ven varias imágenes pequeñas, que nos enseñan cómo va quedando la imagen al aplicarle los filtros.
El primero de los filtros quita el fondo, para quedarse únicamente con las pulsaciones. Así no tenemos que preocuparnos demasiado por la luz ambiente.
El resto de los filtros limpian la imagen, eliminan todo lo que no sea un punto brillante y lo amplifican para que se vea claramente.

Una vez que el CCV ya reconoce pulsaciones, tenemos que calibrarlo.
La cuestión es bastante tonta. La webcam no tiene por qué estar perfectamente centrada y orientada con respecto a la pantalla, y se ve en la imagen que no lo está. Para que el programa pueda traducir correctamente las pulsaciones a coordenadas, tenemos que darle unos cuantos puntos, para que sea capaz de identificar después en qué parte de la pantalla estamos pulsando.

En mi opinión lo mínimo para calibrar decentemente una pantalla son 3x3 puntos.
El programa te marca los puntos, y tienes que pulsar en ellos hasta que el círculo se vuelve blanco.
Una vez calibrado ya es capaz de reconocer perfectamente dónde pulsas, como se puede ver en este vídeo, que hice al terminar de calibrar.


Una vez llegados a este punto lo siguiente ya es probar a ver qué tal funciona. Así que puse a funcionar el programa de fotografías y.....




No funciona por que me olvidé de realizar un paso importante: indicarle al CCV cómo tiene que enviar los datos de las pulsaciones.

Una vez configurado el método de envío (que dependerá del programa que vayáis a utilizar) la cosa ya es muy distinta.

Este es un programa para pintar con los dedos:


Y aquí tenéis el programa de fotografías funcionando:


Todos estos programas vienen como ejemplos con el CCV, y por eso son estupendos para hacer las pruebas o dejar boquiabiertas a las visitas sin tener que matarnos mucho, pero la idea será crear nuestros propios programas aprovechando esta tecnología.

Bueno, espero que os sirva toda esta información y que disfrutéis con las pantallas multitáctiles tanto como yo... aunque ahora voy a tener que limpiar la pantalla de la tele.

martes, 6 de abril de 2010

Barco Putt-Putt

Ya hace bastante que quería poner un post sobre este tipo de barcos, pero no acabo de encontrar los materiales que buscaba para construir uno.
La cuestión es que encontré uno ya hecho a la venta, lo compré, y os pongo aquí unas fotillos y un vídeo para que veáis cómo son estos barcos y cómo funcionan.

Más adelante, cuando fabrique uno yo mismo, sacaré fotos y pondré otra entrada con el tutorial.


Lo primero es hacerse una idea de cómo son estos barcos. Si ya habéis visto la película Ponyo en el acantilado ya os sonarán los barcos que funcionan con una vela (de las que tienen cera y una mecha).
A quién no haya visto la película.... ya está tardando, que es una película estupenda que debería ver todo el mundo.
Os pongo aquí un vídeo de Youtube en el que se ve el barco y cómo funciona (en italiano... lo siento, no encontré otra cosa, y no me apetece ponerme ahora a copiar la escena de mi DVD)
Vídeo del barco en la película.


Habrá gente que no conozca estos barcos, y que al ver la película pensará "Es un barco mágico" o "Esto queda muy bonito en la película, pero seguro que esos barcos no funcionan". Bueno, pues el caso es que sí que existen esos barcos, y sí que funcionan.

Este fue el barco que yo me compré:


Por la parte de abajo tiene esta pinta:


Si le quitamos la "tapa" se puede ver el mecanismo:


Y esta es la fuente de calor que utiliza:


La única diferencia con el barco de Ponyo es que el mío no funciona con una vela de cera, si no con una de aceite. Con un hilo de algodón y aceite de cocina puedo rellenar el cacito de la vela, y no tengo que preocuparme de encontrar velas a la medida del barco.
En el caso de fabricar uno yo mismo, seguramente lo haré con un tamaño que me permita utilizar las velitas pequeñas que venden en las tiendas, a pesar de lo interesantes que me parecen las velas de aceite, mucho más fáciles de hacer en casa que las de cera (que tampoco es que sean muy difíciles)

Tenía unas ganas locas de probarlo, y de sacarle un vídeo para el post, así que llené de agua el lavabo y lo puse a dar unas vueltas.
Aquí tenéis el vídeo:



Bueno, y ahora vamos a ver cómo funciona, y por qué.

El motor del barco es tremendamente sencillo, consta de la vela, dos tubos y un... optaré por llamarlo "hervidor", aunque no sé si será lo más adecuado.

Para que el barco funcione hay que meter agua por los tubos hasta que tanto los tubos como el hervidor estén llenos. Después se apoya el barco en el agua, de modo que el final de los tubos quede sumergido, y que de ese modo no cojan aire. Una vez cebado el barco sólo hay que encender la vela y ponerla debajo del hervidor.
En unos segundos empieza a moverse el barco.

¿Cómo y por qué funciona?
El mecanismo de este barco es un motor de dos tiempos. Con un funcionamiento muy sencillo basado en calor y presión.
El hervidor está lleno de agua, y se le aplica la vela, que es una fuente de calor. El agua que tiene dentro se calienta y acaba convirtiéndose en vapor de agua.
El vapor de agua ocupa mucho más que el agua, de modo que el hervidor se hincha, haciendo un primer "pop" al combarse la tapa hacia afuera.
Al convertirse el agua en vapor, ocupando mucho más volumen, expulsa agua por los tubos.
Es como si tenéis una manguera llena de agua, y sopláis por un extremo. Por el otro extremo sale el agua que tenía la manguera.
El agua que sale a presión por los tubos impulsa al barco hacia adelante.
Al expulsar el agua, la presión en el hervidor disminuye, y con menos presión, el vapor vuelve a convertirse en agua, ocupando mucho menos. Aquí es cuando se oye el segundo "pop", al combarse hacia adentro la tapa del hervidor.
Como resultado de la conversión de vapor en agua, y la disminución de volumen, se crea una succión, que recoge agua de fuera de nuevo hacia los tubos.
Al absorber agua el barco se frena un poco, pero se frena menos de lo que se acelera al expulsarla, así que en suma, el barco avanza.

Y una vez llegados aquí, se vuelve a repetir el proceso. En cada vuelta se oyen dos "pops" de la tapa del hervidor, y bueno, escuchando el vídeo os podéis hacer una idea de lo rápido que pasa todo esto.


Muy pronto (espero) las instrucciones para fabricar uno de estos barcos en casa.

martes, 22 de diciembre de 2009

Cine en 3D

El Domingo pasado fuimos un grupo de amigos a ver Avatar (película muy recomendable, por cierto), ya con la idea de verla en el tan anunciado últimamente 3D.

La cuestión es que aunque sí que están haciendo mucha publicidad sobre las nuevas películas en 3D, no suelen explicar cómo funciona, o por qué.

Para los curiosos que quieran saber, voy a explicar aquí por qué podemos ver las películas ( y todo lo demás) en 3D, y cómo consiguen hacerlo en el cine.


Empecemos por lo básico. ¿Para qué necesitamos dos ojos?
Si nos tapamos un ojo seguimos viendo igual ¿Para qué necesitamos el otro entonces?

La primera respuesta es que con dos ojos cubrimos más ángulo que con uno. Los animales que necesitan ver todo su entorno, tienen los ojos más separados, para cubrir más ángulo.
Así, por ejemplo, un ciervo tiene los ojos bastante separados, y es capaz de ver cosas que le quedan casi a su espalda.
Esto pasa con muchos animales, sobre todo con animales que son presas frecuentes de depredadores. Con dos ojos son capaces de ver el doble, y es más difícil que otro animal se les acerque por la zona a la que no están mirando.

Sin embargo los depredadores tienen los ojos más juntos, apuntando en la misma dirección, lo que da lugar a que veamos por un ojo casi lo mismo que por el otro.


Tener dos ojos nos da más ángulo de visión, pero parece que lo estamos desaprovechando.... ¿De qué nos sirve ver lo mismo con los dos ojos.
La ventaja reside en que estamos viendo lo mismo desde dos sitios distintos, y el cerebro puede interpretar esas diferencias.
¿Y cómo nos ayudan las diferencias? Cuanto más lejos está una cosa, menos diferencias hay entre un ojo y otro, mientras que si algo está muy cerca, las diferencias son mayores.
Por ejemplo... vamos en un coche, viendo por la ventanilla. Las nubes del fondo apenas se mueven a medida que avanza el coche, mientras que los postes de la luz que van pegados a la carretera pasan tan rápido que ni los vemos.

Así que al tener dos ojos podemos saber a qué distancia están las cosas. El hecho de que a cada ojo nos llegue una imagen ligeramente distinta de lo mismo nos sirve para apreciar la profundidad, para saber con exactitud si algo está cerca o lejos, y saber cuánto de cerca o de lejos está.


Ahora que ya sabemos que para ver en 3D cada ojo tiene que ver una imagen ligeramente distinta, llega la pregunta ¿Cómo conseguimos ver con cada ojo una cosa diferente?

Las primeras aproximaciones consistían en unas gafas con un cristal rojo y otro azul. Seguro que os suenan las gafas.

Si intentáis ver un dibujo pintado en rojo a través del cristal rojo, se os confundirá con el fondo blanco (que veréis rojo por culpa del cristal). Lo mismo pasa con el azul. Eso significa que si tienes un dibujo rojo y otro azul, por el ojo derecho (rojo) solo verás el azul, y por el ojo izquierdo (azul) solo verás el rojo.
El sistema funciona, pero es muy limitado. Para empezar se pierde toda la gama de colores, ya que solo podemos utilizar el rojo y el azul, y no juntos. Es como ver la imagen en blanco y negro.
Además ver a través de un cristal coloreado no es demasiado bueno para la vista.
Y ya para dar el golpe de gracia... el cerebro está acostumbrado a que las diferencias entre un ojo y otro sean pequeñas. Con estas gafas un ojo ve de color rojo y el otro ve de color azul... eso es mucha diferencia, y el cerebro se cansa mucho más.

Juntando todo eso, no es de extrañar que el método de las gafas de colorines no tuviese mucho éxito.

Lo que se utiliza ahora son gafas con cristales polarizados. Si habéis ido ya al cine a ver alguna película en 3D seguro que os suenan:



Pero ¿Cómo consiguen estas gafas que cada ojo reciba una imagen distinta?

La respuesta puede que suene rara, pero básicamente lo que hacen es cerrar los ojos alternativamente, de modo que solo estás viendo por un ojo cada vez.
Mientras, en la pantalla se van alternando fotogramas... uno para el ojo derecho, el siguiente para el izquierdo, y volvemos a empezar.
Cuando en la pantalla está una imagen que deberías ver con el ojo derecho, las gafas oscurecen el cristal de la izquierda para que no veas por ese ojo.

Dicho así suena bastante mal, pero como la película intercala los fotogramas muy rápido, y las gafas cambian muy rápido, el efecto es de una imagen distinta para cada ojo.

¿Y cómo saben las gafas cuándo tienen que cambiar?
Bueno, en la foto se puede ver que justo en el medio de las gafas hay un punto negro. Eso es un receptor de infrarrojos, igual que el que utiliza la televisión para que podamos cambiar de canal.
En alguna parte del cine (probablemente cerca de la pantalla, o detrás de la misma) hay una luz infrarroja que emite un flash cada vez que toca cambiar de ojo. Las gafas lo detectan con ese sensor, y cierran el ojo correspondiente, y abren el otro.
Como no somos capaces de ver la luz infrarroja, todo este proceso es casi mágico, pero seguramente con alguna cámara de móvil podréis ver los fogonazos de luz (depende de si el móvil tiene filtro infrarrojo o no).

Es muy divertido, mientras estás en el cine, tapar el sensor. Las gafas dejan de ver la luz infrarroja, y se apagan..... y de repente, el 3D se va al cuerno, y en la pantalla solo ves una imagen borrosa, mezcla de las dos imágenes que deberían corresponder a cada ojo. Si vais a ver una película en 3D, os recomiendo que probéis a tapar un momento el sensor.


En general es una experiencia muy interesante. Ahora que ya hay bastantes películas que se pueden ver en 3D, os recomiendo que vayáis a ver alguna que os interese, para vivir la experiencia.

miércoles, 4 de marzo de 2009

Pantallas Táctiles Multipunto (Plano láser)

Ya os comenté hace un tiempillo alguna cosa sobre las Pantallas Multitáctiles, y ya di alguna idea de cómo montarse una en casa en plan baratillo.

Hoy vamos a ver uno de los métodos para conseguir puntos de luz justo donde ponemos los dedos.

La idea en este caso es crear un plano de luz con un láser. Quizás conozcais alguno de estos niveles, que tienen un láser para ayudar. Lo que hacen es dibujar una línea en la pared. El caso es que si algo se interpone entre la línea y la pared, también queda iluminado. Seguro que habeis visto cantidad de veces ese efecto en películas futuristas, cuando usan algún tipo de escáner para comprobar cosas.

Bueno, pues para hacer pruebas me conseguí un láser rojo con una lente que dibuja una línea (en vez del típico punto)

Si el dedo no corta el plano de luz, no se ilumina:


Pero si toca el plano de luz....



La idea es fácil de entender, ahora solo queda preparar una superficie sobre la que tocar, y crear un plano de luz justo encima, de modo que al tocar la superficie, los dedos queden iluminados.

Esta fue la superficie que improvisé:


Es una lámina de acetato apoyada en el escritorio por un lado, y en una pila de cajas y libros por el otro.
Puse unas marcas para delimitar la superficie en la que se podía tocar, llegaba el láser, y se veía en la webcam.

El laser lo coloqué en una esquina.


Y con ayuda de una silla y una camiseta, ajusté más o menos el plano de luz justo encima de la superficie.


Por último coloqué la WebCam en el suelo, apuntando hacia arriba.



Una vez montado todo este tinglado, apagué las luces e hice algunas pruebas con tBeta, que es la librería encargada de filtrar las imágenes, sacar de ahí los puntos iluminados, y convertirlos a coordenadas.
Esta es la pinta que tenía tBeta mientras hacía las pruebas:



En el cuadradito superior izquierdo aparece la imagen de la webcam, y en el superior derecho, la imagen una vez filtrada. Se puede ver cómo detecta los puntos claros sobre el fondo oscuro, y como saca coordenadas de ellos.

Una cosa que también se puede ver en el video, es que los planos de luz tienen un gran defecto, y es que los dedos hacen sombra, de modo que detrás de cada dedo hay un espacio en sombra donde no se detectan más pulsaciones. Esto se soluciona facilmente utilizando tres o cuatro láseres, y no solo uno como hice yo. Además, al utilizar varios láseres, se consigue que cada dedo aparezca como un punto gordo (o como un aro) y no como una luna. Se puede ver que en ocasiones no detecta bien las pulsaciones, por que la "luna" es muy fina. Con varios láseres este problema se solucionaría.


El paso siguiente es pensar. "Bien, ya puedo meter los dedos aquí y me reconoce las pulsaciones ¿Cómo hago ahora para que además esto sea una pantalla?". La solución es utilizar un proyector. Como de momento no tengo uno, no puedo hacer pruebas en ese aspecto, pero si puedo avanzaros el siguiente problema:
¿Y si en la imagen proyectada hay puntos rojos? ¿Los reconocerá como pulsaciones?
La respuesta es sí, los reconocería como pulsaciones, y el resultado sería horroroso, es más, la luz del proyector podría borrar completamente la luz de los láseres.
La solución a esto es utilizar láseres de un color no visible, en este caso infrarrojos, y poner en la cámara un filtro que solo deje pasar ese espectro de frecuencias (este filtro puede ser un carrete velado, por ejemplo).

Así que al final la idea es que tenemos un láser que crea un plano de luz infrarroja justo por encima de la pantalla, donde estamos proyectando la imagen, y por debajo, la webcam, que lleva un filtro que bloquea la luz visible, con lo que no es capaz de grabar nada de lo que se proyecta en la pantalla, pero sí la luz infrarroja de los láseres.


Aún hay dos soluciones más que se utilizan para hacer pantallas multipunto con webcams, pero esas las veremos otro día.

sábado, 24 de enero de 2009

Pythagora Switch

Todo el mundo conoce el programa "El Hormiguero" (al menos en España). Un programa estupendo, con experimentos, cosas curiosas, frases de niños.

Si seguís el programa, conocereis los "Efecto Mariposa", que básicamente son Máquinas de Rube Goldberg (más información aquí).
Pues hoy os voy a hablar del programa del que están copiadas (sí, copiadas, descaradamente) todas las partes de todas las máquinas que hacen en el Hormiguero.

Es un programa infantil japonés llamado Pythagora Switch. Cada capítulo dura unos 15 minutos, y está compuesto de varias partes, entre las que destacan las máquinas de Rube Goldberg, por supuesto.

Cada capítulo, además de tener alguna de estas máquinas, tiene además alguna explicación sobre algún fenómeno científico, y lo que es más importante, cómo ese fenómeno se utiliza hoy en día para hacer objetos cotidianos.
También tienen los mandos a distancia para papás (y abuelos), en los que los niños hacen mandos y en los botones escriben sílabas, y luego los padres hacen cosas que empiezan por esa sílaba.
Además están las animaciones. La animación de los 10 palos, en los que 10 rayas tienen sus "aventuras" y van haciendo distintos dibujos (que siempre están compuestos como mucho de 10 rayas), o la de Framy, que es un perro hecho exclusivamente a base de unos pocos rectángulos.
También tienen la marcha del algoritmo, que es un bailecillo que consiste en ir haciendo una serie de posturas al ritmo de la canción. Esta teneis que verla para entender lo simpática que es.
Aquí teneis la marcha del algoritmo ¡Con los ninjas! >_<

En cada capítulo hacen la marcha con distinta gente. Los bomberos, un equipo de fútbol, las azafatas del autobús.... hay de todo.

El programa me parece genial en todos sus aspectos, las máquinas que tienen están bastante mejor hechas y mucho mejor grabadas que las del Hormiguero y las explicaciones son muy interesantes.
Os dejo aquí con uno de los programas, subtitulado al inglés (lo siento, pero no tengo noticia de nada mejor que esto ^_^U). En este hablan sobre la electricidad estática.



Si quereis descargar alguno de los capítulos, podeis probar suerte en la web del fansub Dattebayo, que han subtitulado unos cuantos episodios en inglés:
Dattebayo! Fansubs

Es una pena que no haya más programas como este, o como El Mundo de Beakman (jo, como me molaba ese programa), y nos tengamos que conformar con cosas como El Hormiguero, que aunque no está mal deja mucho que desear.

lunes, 19 de enero de 2009

MacGyver Handbook



Encontré este libro en versión PDF navegando por ahí, y aunque está en inglés, y eso echa para atrás a mucha gente, me pareció muy interesante y divertido.

Básicamente es un compendio de instrucciones para salir de situaciones peliagudas vistas en la serie de televisión, seguidas de una explicación de cómo funciona y por qué (o por qué no, que la tele a veces nos engaña)

Un libro tremendamente divertido con el que podremos aprender a escapar de un pozo de serpientes (fastídiate Indiana Jones) o hacer un soldador de arco voltaico con dos monedas de cuarto de dólar.

Una lectura muy recomendable para quien quiera reirse un rato, y aprender unas cuantas cosas curiosas.

http://www.macgyverbook.com/

O para ver directamente el PDF pincha aquí.



Cuando me quede sin ideas para posts, a lo mejor decido traducir algunas de las páginas del libro.... aunque no sé si será buena idea con lo quisquillosos que están últimamente con las cuestiones de copyrrights.

jueves, 4 de diciembre de 2008

Pantallas Táctiles Multipunto (Introducción)

Ya había comentado que iba a preparar algo sobre el tema, y parece que causa espectación, así que voy a empezar con una introducción al tema, para ir abriendo boca.

Lo primero es ¿Por qué táctil? ¿Por qué usar los dedos?
Para contestar a eso os voy a enseñar una imagen curiosa, aunque un tanto grotesca

Estos bichos tan raros son una representación del cuerpo humano según la cantidad de cerebro que utilizamos en cada parte. Si dedicamos más cerebro a las manos, entonces las manos son más grandes, si dedicamos poco cerebro a los pies, los pies son pequeños.

Es fácil fijarse que tienen una cabeza enorme, sobre todo la boca, y es facilísimo fijarse en que las manos son grandísimas.

Esto es por que hemos aprendido a utilizar las manos y la boca para realizar tareas tan complejas como hablar o escribir. Y no solo hemos aprendido, si no que llevamos entrenando toda la vida. Somos unos maestros en lo que respecta a tocar cosas. Podemos meternos una uva en la boca, y escupir las pepitas limpias. Plantearos lo que os costaría hacerlo con un cuchillo y un tenedor... y en la boca no os hace falta ni ver.

Ahora pensad en la primera vez que utilizasteis un ratón de ordenador... La primera vez siempre resulta complicado, por que no estamos entrenados. También a los niños les resulta complicado coger los lápices de colores y pintar sin salirse de las líneas, pero con entrenamiento al final conseguimos manejar bien cualquier aparato, ya sea un lápiz, o un ratón.
Ahora bien ¿Para qué aprender a usar un ratón si ya somos unos maestros en lo que se refiere a tocar?
Es más, ¿Por qué limitarnos a un ratón cuando podemos transmitir tanta información con las manos? Tenemos cinco dedos en cada mano, que podemos mover por separado, podemos rozar suavemente o apretar con fuerza, y podemos hacer figuras complejas con las manos. Un ratón suele tener 3 botones (y una rueda) que no suelen pulsarse a la vez, y que no entienden de presiones.

Una pantalla táctil no solo es mucho más fácil de usar, y más cómoda, si no que además nos da la opción de sacar más partido a nuestras manos.
Un ejemplo de cómo aprovechar la información de más que podemos transmitir es Dasher un programa pensado para que los discapacitados puedan escribir a una velocidad razonable (Si tal ya hablaré otro día de él, que es muy interesante)

A lo mejor después de todo este rollo, aún hay gente poco convencida, así que os voy a poner unos ejemplos, vistos en el cine, de lo que podrían llegar a ser las pantallas táctiles en un futuro, y como su uso parece mucho más fácil de aprender que los actuales sistemas de ventanitas, ratón y teclado.

Primero... La Isla. La mesa del despacho es una enorme pantalla de ordenador, donde se puede dibujar, pasarse ventanas de uno a otro, y usar una pirámide de cristal para manejar cosas.


Siguiente, Babylon. El mapa se agranda, y permite calcular rutas o ver información. Es como el Google Maps, pero fijaos lo fácil de controlar que sería con solo dos dedos, en vez de utilizar un ratón con rueda. (Otro día hablo sobre papel con tinta electrónica, que también es un tema muy interesante)


Y como último ejemplo, Minority Report. En donde utilizando 3 dedos de cada mano es capaz de manejar varias imágenes y vídeos, ampliando, avanzando y retrocediendo.


La gran ventaja de todas estas interfaces de ciencia ficción es que se pueden usar las manos, y varios dedos a la vez, para conseguir efectos sorprendentes.

¿Y por qué en las pantallas táctiles solo podemos pulsar en un punto?
Bueno, es una cuestión de tecnología en muchos de los casos. Hay ciertas pantallas táctiles que funcionan "escuchando el eco de los golpes". Digamos, para hacerlo simple, que cada vez que pulsamos en el cristal de la pantalla generamos unas ondas (como cuando tiramos una piedra al agua), y en los bordes de la pantalla tenemos sensores que nos dicen cuando llegan esas ondas. Comparando los tiempos de llegada sabemos exactamente dónde se produjo la pulsación. Pero claro... esto funciona bien para una pulsación única, si pulsamos en dos puntos a la vez la cosa puede liarse.
Hay otras que funcionan mediante dos láminas conductoras separadas entre sí muy poquito. Cuando pulsamos sobre una, la deformamos hasta que toca con la otra y hace contacto. Es como si llenásemos la pantalla de botones transparentes y muy muy pequeñitos. Con este tipo de dispositivos se podrían leer pulsaciones en varios puntos, pero supone un aumento del coste del sipositivo.

Si quereis saber más sobre cómo funcionan las pantallas táctiles, podeis ver este enlace.

El caso es que existe un método muy barato y efectivo de fabricar un dispositivo multipunto. Y es con una WebCam.
La idea es identificar en una imagen los puntos donde se está pulsando. Una webcam normalucha tiene una resolución de 320x240. Si contamos cada pixel de la imagen como un "botón", que está pulsado cuando el color es negro, y que no está pulsado cuando el color es blanco, tenemos un dispositivo táctil de 76800 "botones". Además, como las webcams graban varias imágenes por segundo, no solo podemos saber dónde tiene los dedos la gente, si no que podemos saber si los mueven, hacia dónde, y con qué velocidad.

Lo mejor es verlo, que lo entendereis mejor:


Ahora el único problema es conseguir un sistema que nos de imágenes donde los puntos donde pulsamos sean blancos, y los puntos donde no pulsamos sean negros (o al revés), y que además, puedan montarse sobre una pantalla, o pueda proyectarse sobre ellos, para tener así una pantalla táctil multipunto, y poder hacer cosas como las de Minority Report, La Isla o Babylon.

Hay varios modos de conseguir eso, pero los explicaré en otro post, que este ya queda muy largo.


Si te ha interesado puedes seguir leyendo aquí.

miércoles, 14 de mayo de 2008

Robot Xilófono - Parte 4: Programación e interfaz.

Bueno, con este post termino ya el tutorial del robot. Este en vez de fotografías llevará código, así que me temo que para quien no le guste la programación, pues será un post un rato pesado.

Antes de ponerme a explicar lo que yo hice, voy a explicar qué opciones tenemos para controlar el robot.

Lo único que necesita el robot es que le mandemos números por el puerto paralelo, si tenemos un programa que ya hace eso, pues ya nos sirve. Ahora bien, como es un robot musical, es importante cuándo mandar los valores. Por ejemplo: Es posible que haya algún modo de mandarle valores mediante algún tipo de impresora, de modo que simplemente tendríamos que darle a imprimir un documento con los valores, y el propio sistema operativo se encargaría de enviar los datos al robot. Pero ¿Cuánto tardaría en empezar? ¿Y si mete el trabajo en cola para imprimirlo un poco más tarde? ¿Manda todos los datos igualmente espaciados en el tiempo? ¿Cuánto tiempo pasa entre un dato y otro?
Hay demasiadas cosas que no controlamos, y que sería interesante controlar.

Lo mejor en este caso es conseguir acceso directo al puerto paralelo, y meter los datos directamente cuando nosotros queramos.

¿Cómo se consigue acceso al puerto paralelo?
En Linux, hay que ejecutar el programa como superusuario, y usar sus funciones para pedir permisos de acceso.
En Windows no existen esas funciones, así que hay que buscar librerías que suplan esa carencia, y den acceso al puerto de la impresora.

Aparte de las consideraciones del sistema operativo, tenemos que tener en cuenta el lenguaje que vamos a utilizar. Algunos lenguajes tienen funciones del tipo outb(valor, puerto). Si conseguimos usarlas, es un modo directo y efectivo de mandar datos al puerto paralelo. Otros lenguajes tienen librerías para acceder al puerto paralelo. Buscando información me encontré con pyParallel, que es una librería para acceder al puerto paralelo desde Python.
Dependiendo de qué lenguaje querais usar, tendreis que buscar librerías y similares.

En mi caso me decanté por lo conocido y sencillo, que fue lenguaje C en sistema Linux. La limitación de esta elección fue que el programa debe ejecutarse como superUsuario, pero por el resto, da acceso directo al puerto paralelo, y el C es un lenguaje con el que estoy muy familiarizado.

Así que lo primero es explicar cómo accedemos al puerto paralelo.
Jairo me pasó este archivo:
/***************************************************************************
* parport.c
*
* Wed Dec 27 03:22:16 2006
* Copyright 2006 Jairo Chapela Martínez
* jairochapela@gmail.com
****************************************************************************/

/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

#include <stdio.h>
#include <unistd.h> /* needed for ioperm() */
#include <sys/ioctl.h>
#include <sys/io.h>
#include <fcntl.h>
#include <linux/parport.h> /* for outb() and inb() */
#include <linux/ppdev.h>

#define BASE_PORT 0x378

int fd;
const char* parport_path = "/dev/parport0";

int init_parport (void)
{
fd = open (parport_path, O_RDWR);
if (fd < 0)
{
printf ("Sorry, you were not able to gain access to the ports\n");
exit (1);
}

return 0;
}


void parport_write (unsigned char byte)
{
int value = byte;

if(ioperm(BASE_PORT, 3, 1))
{
perror("ioperm");
exit(1);
}

outb(value, BASE_PORT);
}

Podemos compilar el fichero c y hacer una librería, podemos incluirlo como si de un fichero .h se tratase, o podemos copiar las funciones y pegarlas en nuestro código. init_parport() inicializa el puerto y parport_write(byte) manda un byte al puerto paralelo.

Con estas dos funciones ya podemos comunicarnos perfectamente con nuestro robot. Cómo programe cada uno su interfaz ya es otra cosa.

Mi interfaz tenía esta pinta.


Como era para el día de la ciencia en la calle, quería que fuese una cosa que llamase la atención, y que fuese fácil de utilizar. Opté por el OpenGL por que ya lo había usado antes, y las cosas en 3D quedan muy bonitasy resultonas.

La interfaz funciona de la siguiente manera:
Al pulsar en las teclas de abajo, se envía directamente el dato al puerto paralelo, y se toca la nota al momento. De ese modo, es como un teclado, al pulsar una tecla, suena la nota.
En la partitura se pueden poner notas, y al darle a play (El botón con la flecha azul) se tocan todas seguidas.
Las flechas rojas son para cambiar de página, para poder hacer canciones un poco largas, ya que en esa partitura solo caben 24 notas. La página actual se puede ver encima de la partitura, hay un total de 10 páginas.
Hay unos botones de siguiente y anterior (botones con la flecha y un cuadro azules), que sirven para cambiar de canción entre las que hay guardadas en disco.
El botón de stop (el del cuadrado azul) para de reproducir la canción en curso.
Por último, el botón de grabar (círculo rojo) guarda en disco la partitura actual.

Un detalle que ya tenía pensado, pero que consideré imprescindible una vez que me dijeron que nos iban a poner una pantalla táctil, es el de las animaciones. Por un lado, está bien tener algún tipo de animación continua de fondo. En mi caso, el toroide de la esquina superior derecha.
Su única función es que se vea que está funcionando, un poco a modo de los salvapantallas, es algo que se mueve, y por lo tanto el ordenador está haciendo algo. También sirve para tener una referencia de la fluidez de las animaciones, y saber si se nos ha colgado el programa.
Por otro lado, los botones y "entes pulsables" deberían tener todos algún tipo de animación, y más en una pantalla táctil. En general la gente espera de los ordenadores respuestas inmediatas. Si pulsas un botón, tiene que pasar algo, y si el programa es lento, la partitura tiene silencios al principio, o el xilófono tarda un poco en dar la primera nota, la gente se impacienta, así que tienes que dejar bien claro que sí que han pulsado el botón. Lo normal es animar el botón. La gente pulsa el botón, ve que el botón se hunde, y sabe que lo ha pulsado. En una interfaz con un ratón o similar, tenemos el propio botón del ratón para convencernos, pero de una pantalla táctil no solemos fiarnos, por que no hay mecanismo físico tangible, así que tenemos que hacer un mecanismo software tangible.

Lo siguiente que queda ya es programar en C usando las librerías de OpenGL. En este caso utilicé también las librerías GLU y GLUT, que facilitan muchísimo el uso de ventanas, ratón, teclado, timer, etc. Y que además son portables entre plataformas, con lo que el mismo código OpenGL se puede compilar en Windows y en Linux sin mucho problema.

En principio no voy a comentar aquí cómo se utiliza el OpenGL, por que para eso hay tutoriales, cursillos, ejemplos, etc. Pero si alguien está muy interesado, puedo pasarle el código, o comentarle algunos truquillos, o darle alguna página de referencia.

Y bueno, aquí se acaba el tutorial del robot que toca el xilófono.... ya tengo ideas para los siguientes experimentos, ahora solo necesito tiempo libre, y una excusa para fabricarlos ^__^

Pd. Perdón por el código sin indentar ni nada, pero no encuentro un modo sencillo de ponerlo con sus tabulaciones, espacios y demás... tendré que investigar al respecto.

Robot Xilófono - Parte 3: El montaje.

Bien, ahora que ya sabemos cómo va la electrónica, vamos a ver cómo se monta el resto del aparato. Este ya va a ser el típico post de inventos que se hacen con lo que se encuentra por casa.

Lo primero fue buscar un sistema eficaz para golpear las notas del xilófono.

En un primer momento pensé en electroimanes. Pondría los palos elevados con muelles y atados a una chapa, que sería atraída por el electroimán.
Me fue completamente imposible encontrar electroimanes, con lo que no pude hacer pruebas, y no sé qué tal funcionaría el invento así.

Descartados los electroimanes por la imposibilidad de conseguirlos, la siguiente opción eran los motores eléctricos.

La primera idea con los motores fue hacer lo mismo que con los electroimanes. Palos con muelle, motor debajo, y un cordel atando el palo al motor, cuando el motor gira, recoge la cuerda y el palo baja.
La idea no funcionó demasiado bien cuando la probé, así que pasé al plan B. Buscar palos gordos, y encajarlos directamente en los ejes de los motores.

En casa tenía palillos chinos (de los de comer) que eran perfectos para el invento.


Como estos palillos tenían que golpear en las notas del xilófono, necesitaban algún tipo de bola en las puntas, así que me pasé por una tienda de abalorios, y me compré estas.


Ya vienen perforadas, por que se utilizan en collares y similares. Lo único que tenía que hacer, era encajar el palillo en el agujero de las bolas.

Además, hacían falta motores. Cogí de los motores cutres típicos. Los que funcionan con una pila cualquiera. De los que tenía en casa cuando era pequeño de haber desmontado algún juguete.


Ahora la duda era ¿Cómo enganchar los palillos al motor?
En un primer momento uno puede pensar en hacer un pequeño agujero en la punta del palillo, y encajar ahí el motor, pero esto tiene dos problemas.
En primer lugar, la distancia desde el motor hasta la punta del palillo es muy grande, y obliga a colocar los motores más alejados del xilófono, cuando lo mejor sería un diseño más compacto.
Por otro lado, la fuerza que tiene que hacer el motor para mover una cosa depende de la masa de esa cosa, y de la distancia de esa masa al centro de giro. Esto suena raro, pero es fácil de entender. Cuesta mucho menos girar algo por su centro que por una esquina. Si colocaba el motor hacia el centro del palillo, recortaba la distancia a la punta, y el motor necesitaba menos potencia para mover el palo.

El siguiente problema era cómo hacer que los palillos volviesen a levantarse una vez que el motor estuviese en reposo.
Al tener un trozo de palillo sobrante por la parte de atrás, se me ocurrió que si ese trozo pesaba más que el otro, caería siempre, y el palillo volvería a su posición erguida en el momento en el que el motor dejase de funcionar, así que me puse a hacer los agujeros en los palillos; uno para encajar el eje del motor, y otro para colgar un peso.

Los palillos agujereados quedaron así:


Ahora solo había que colocarles la bola en la punta, y encajarlos en los motores.

Un poco de cola térmica ayudó a que las piezas quedasen bien unidas.

Ahora tocaba buscar pesos. En un primer momento pensé en colgar algún tipo de saquito con arena, así podría ajustar el peso que quería. Pero eso era mucha complicación, quedaba feo, y ocupaba mucho espacio en el montaje final, así que opté por esto:



Plomos de pesca. Muy pequeños, fáciles de colocar y como los hay en muchos pesos, no me costó encontrar el que más me convenía.

Para continuar el montaje ya necesitaba empezar a cuadrar las cosas, así que saqué el xilófono de su bolsa.


Una vez montado todo el sistema de los motores y con el xilófono delante, me di cuenta de una cosa. En total, motores, palillos, pesos y bolas, eran más anchos que las notas del xilófono, lo que significaba que no podía poner los 8 juntos y seguidos, así que decidí hacer dos grupos de 4 motores, uno a cada lado del xilófono.

Para colocar los motores en su sitio necesitaba una base.
La base debería:
Tener sitio para el xilófono
Tener sitio para el circuito
Elevar los motores por encima del xilófono, para que los palos golpeen desde arriba
Limitar en cierto modo el movimiento de los palos.

Así que cogí unos trozos de contrachapado que había en casa, y preparé esto:


Un hueco para el xilófono, unas plataformas elevadas a los lados, y un hueco lateral donde colocar la circuitería.
El hueco lateral para la circuitería me quedó muy escaso.... es lo que pasa por cortar la madera sin tener todas las medidas. Sirvió igualmente, pero parte del circuito está en el aire.

Ahora solo había que colocar los motores en su sitio. Para esto utilicé cola térmica. Es cómoda, fácil de usar y rápida.
De modo que pegué los motores en sus plataformas, con cuidado de que al caer diesen exactamente en su nota del xilófono.
Quedaron así:


Una de las ventajas de la plataforma para los motores es que los palillos no podían subir hasta la vertical, y al reducir el ángulo que suben, se reduce también el tiempo que tarda el motor en bajarlo hasta que golpea, además de que queda más bonito.

Un detalle más de cerca de la colocación de los motores y de los plomos:


Bien, de modo que ya tenemos una estructura con el xilófono, y los 8 motores colocados, con sus palillos con bolas en una punta, y plomos en la otra.

Ahora solo quedaba conectar todo para que funcionase. Para eso, había que colocar la circuitería.


La coloqué para que se viese bien. Al fin y al cabo, el chisme fue diseñado para el Día de la Ciencia en la Calle, y debería verse cuanto más mejor del mecanismo de funcionamiento.
Como no tenía tornillos, y de todos modos el contrachapado era un poco fino para ellos, simplemente pegué las placas con los circuitos a la madera con cinta adhesiva por las dos caras. Esta cinta pega mucho, y tiene un poco de acolchado entre las dos caras con pegamento, lo que viene bien ya que la placa, por la parte de abajo también tiene soldaduras y similares, que evitan que se pueda pegar directamente y de forma contundente.

El cableado es un poco tedioso, por que hay muchos cables. Para empezar, del cable de la impresora llegan 9 hilos, uno de los cuales hay que replicarlo 7 veces. Los circuitos necesitan alimentación. Y por último, los motores deben ir conectados a los relés.
En total, unas 60 terminaciones de cables que hay que colocar, pero con seguir las instrucciones e ir poco a poco no hay problema.

Un detalle con respecto a los cables y a la alimentación. Los relés del circuito son interruptores, y están preparados para ser interruptores de aparatos que funcionen prácticamente a cualquier voltaje. Eso significa que los motores pueden funcionar al voltaje que nos de la gana.
Estos motores funcionan normalmente entre 3 y 6 voltios. A más voltaje, más velocidad del motor.
Buscar otro transformador de 5 o 6 voltios para los motores era un rollo, además de que así necesitaríamos 2 enchufes. Estos motores pueden funcionar a 12 voltios siempre que no se los tenga activos demasiado tiempo (En una de las pruebas uno se quedó atascado funcionando a 12 voltios, y casi se quema. Lo desenchufamos en cuanto pudimos, pero ya estaba echando humo)
En este robot, los motores funcionan durante una décima de segundo más o menos; lo suficiente para que le de tiempo a bajar al palo para golpear el xilófono. Con menos tiempo el golpe sonará más suave, con menos tiempo aún, el palo no llegará a tocar el xilófono. Con más tiempo, la nota sonará más fuerte, con más tiempo aún, el motor estará haciendo fuerza aunque el palo ya esté abajo.
Como la mayoría del tiempo los motores estarán parados, y hay que esperar a que el palo vuelva a su posición antes de tocar otra vez la misma nota, los motores no suelen sufrir mucho, aunque estén conectados a 12 voltios, y como con 12 voltios funcionan más rápido, y eso significa menos tiempo entre nota y nota, y además, el circuito ya funciona con 12 voltios, pues aprovechamos el mismo transformador para todo, y hacemos que todo funcione con 12 voltios.

Por cierto, el transformador era este:


Como tenía que mover 8 motores además de dar corriente al circuito, el de la tienda de electrónica me dijo que me llevase uno de 2 amperios, y es probable que le hagan falta. Si haceis pruebas con el típico adaptador de pilas, sabed que esos tienen entre 300 y 500 miliamperios, y probablemente los esteis forzando y podais estropearlos, o quizás sencillamente no tengan potencia para mover bien los motores, así que sed cuidadosos con las pruebas, y para la versión final comprad uno de estos, que total solo son 15 euros.

Bueno, pues ya tenemos base, xilófono, mecanismos de golpear, circuitería y alimentación. Y el resultado final fue este:


Quizás un poco tedioso de explicar, pero en realidad es un mecanismo muy sencillo.

A mucha gente le llamó la atención que usase plomos de pesca, palillos chinos, o los típicos motores con los que jugaban de pequeños. Una cosa es plantear la ciencia de modo sencillo para que lo pueda entender todo el mundo, y otra es montar los robots con piezas que tenemos en casa, o en la tienda de la esquina.
No me lo esperaba, pero mucha gente se fijó en eso, y les pareció muy simpático.

Y bueno, dentro de poco, la cuarta y última parte, la que trata del software que controla este robot desde el ordenador.

martes, 13 de mayo de 2008

Robot Xilófono - Parte 2: El circuito.

Hoy toca hablar de la circuitería que hace posible la comunicación entre el ordenador y el robot. Es una parte muy importante del robot, en general la que más asusta, pero se puede tratar como una caja negra. O sea, es un circuito, que por un lado se conecta al puerto paralelo, y por el otro activa cosas. No es necesario saber cómo lo hace si no queremos, así que en realidad no es necesario controlar de electrónica para montarlo o para usarlo, simplemente lo montamos como dicen las instrucciones, y nos creemos que funciona.


Vamos a empezar por el puerto paralelo.
¿Por qué el puerto paralelo? ¿Por qué no un puerto USB, o el puerto serie? La respuesta es bien sencilla. Por que es más fácil.
Que un puerto sea Paralelo, significa que manda los datos a la vez. El puerto paralelo estándar del ordenador puede mandar 8 bits de información (ocho unos o ceros) de golpe. Un puerto serie, o USB, por el contrario, mandan los datos uno a uno con un tiempo determinado entre uno y otro. La diferencia a la hora de trabajar con ellos es que con el paralelo, recibes los 8 datos separados, con el serie, recibes uno, esperas un tiempo, recibes otro, esperas un tiempo, recibes otro, esperas un tiempo.....
Imaginaos que yo os voy a pasar un número de teléfono escrito en un papel, para que llameis. Tengo dos opciones, puedo escribir todo el número en un único papel, y os lo doy, o puedo escribir cada número del teléfono en un papel distinto, y os voy pasando los papeles uno por uno.
En el primer caso es muy fácil llamar, cogeis el papel, marcais el número, y punto.
En el segundo caso, teneis que ir guardando los números que os voy pasando, bien ordenaditos, y cuando ya están todos, juntarlos y llamar.
El primer caso sería el puerto paralelo, el segundo el puerto USB o serie. No es demasiado difícil darse cuenta de que es más fácil el primer método.

Ahora se preguntará alguien ¿Por qué se usa tanto el USB entonces? pues por que es mucho más versátil. Siguiendo con el ejemplo del teléfono. Imaginemos que en el papel caben 9 números, ni uno más, ni uno menos, siempre hay 9 números. ¿Qué pasa si queremos llamar al extranjero, que hay que pulsar unos 12 números? No nos caben... ¿Qué pasa si queremos llamar a un teléfono de información? Eso son solo 5 números a lo mejor, nos sobran. Un puerto paralelo está muy limitado.
En cambio si os voy pasando los números uno a uno, os puedo mandar un número de teléfono tan grande o tan pequeño como quiera. Esa versatilidad es lo que hace que hoy en día se utilice tanto el USB.

Bien, que me estoy liando con cosas que poco tienen que ver con el robot.
Vamos a usar el puerto paralelo, así que hay que saber para qué vale cada cosa. Esta es la pinta del enchufe del puerto paralelo.

Si pinchais en la fotografía y la veis en grande, pueden distinguirse los números de los pines, empiezan en 1 y acaban en 25, de izquierda a derecha, primero la fila de arriba y luego la de abajo.

Para este invento vamos a usar 9 pines únicamente.

Los pines del 2 al 9 son los que transportan los 8 bits de datos. El pin 2 es el bit de menor peso, y el 9 el de mayor peso.
El noveno cable es el cable de tierra. Todas estas cosas de electricidad funcionan con 2 cables, bueno, este es el segundo, para todos los otros. Este lo podemos enchufar en cualquier pin entre el 18 y el 25, ya que tienen todos la misma función.

Así que ahora ya tenemos nuestro enchufe paralelo macho, y ya sabemos qué pines vamos a usar..... pues toca coger el soldador de estaño, y soldar los cables a donde tocan.
Yo compré cable de 10 hilos.... me sobró uno, pero es mejor que comprar los hilos sueltos y que luego queden por ahí.
Si no habeis soldado mucho, esto puede ser un suplicio, así que, paciencia, y practicad un poco antes, son soldaduras pequeñitas y se pueden hacer difíciles. Despacito y con buena letra, que se suele decir.
Esta fue la pinta que le quedó a mi enchufe.

Como podeis ver, hay estaño en el pin 1.... nos confundimos al soldar, y tuvimos que "des-soldar" después para poner el cable donde tocaba, también hay estaño en el pin 25, por que el cable de tierra iba ahí enchufado en un principio, pero no me fiaba y lo cambié de sitio.
También se puede ver, por los goterones de estaño, que no estoy muy habituado a soldar estas cosas. Necesité a alguien que me sujetase los cables para que no se moviesen mientras los soldaba.
Cuando soldeis, apuntad los colores de los cables, y a qué pin van.
En mi caso eran: 2-Lila 3-amarillo 4-marrón 5-verde 6-rosa 7-gris 8-azul 9-rojo 24-negro

Bueno, una vez soldado esto, le colocamos la caja, y listo, ya tenemos nuestro cable de puerto parelelo listo para usar.


Ahora toca la parte del circuito.

El circuito en sí no es un circuito, son 8 circuitos iguales, enchufado cada uno a uno de los cables de datos.
El circuito es este:

Si llevais este dibujo a una tienda de electrónica, os pueden dar las piezas sin problema, luego solo teneis que soldarlas según el dibujo (recordad que los diodos y los transistores tienen que ir con su orientación, si los colocais al revés pueden explotar)
Vcc es la corriente que necesita el circuito para funcionar, 12 voltios.

¿Y qué hace este circuito? La señal que llega del puerto paralelo tiene 5 voltios, y muy pocos amperios. Si intentais mover un motor o activar un relé con eso, os encontrareis con que no tiene potencia suficiente. Además, los motores, relés y electroimanes, tienen bobinas, que pueden devolver corriente por el cable, y fastidiaros algo en el ordenador.

Este circuito hace 2 cosas:
Protege el puerto paralelo de los posibles problemas que puedan dar las bobinas.
Aumenta la potencia de la señal a 12 voltios, con una corriente decente.

O sea, a la pieza K1 del circuito (en este caso es un relé) le llegarán 12 Voltios cuando entre una señal por el puerto paralelo.

El relé funciona como un interruptor. Se le enchufa algo, y ese algo se enciende o se apaga según llegue señal o no por el puerto paralelo.
Así que la idea es sencilla.... tenemos una entrada del puerto paralelo, un circuito que amplifica la señal, y un relé que enciende el mecanismo que golpea el xilófono cuando queremos, solo tenemos que repetir esto 8 veces, y ya podemos manejar 8 notas.

Para quienes quieran meterse con rollos de electrónica lo menos posible, estos circuitos ya vienen montados (yo no lo sabía, me lo dijeron en la tienda de electrónica cuando fui a por los componentes)
Como esto lo costeaba la universidad, y preferíamos soldar lo menos posible, compramos los circuitos ya hechos.
Esta es la pinta que tienen:

Ya le había colocado el cable de tierra común en las señales cuando saqué la foto.
Un detalle interesante es que tiene leds, que se encienden cuando llega la señal, y claro, con lucecitas estas cosas siempre quedan más chulas.
Como la placa venía con 4 circuitos, tuvimos que comprar 2.

Estas placas vienen con instrucciones, para que sepais dónde poner cada cable.



Así que lo único que quedaría por hacer, es poner todos los cables.
El resultado, en mi caso, quedó así:


Y listo, ya está terminada la parte electrónica del robot.

Posiblemente existan placas de este estilo que funcionen por USB, todo es cuestión de buscarlas, o de desmontar un ratón o un joystick y aprovechar el chip controlador USB que llevan dentro. Como es algo que me interesa, cuando tenga tiempo buscaré información, y el siguiente robot irá por USB.