Precipitaciones
Última Actualización 02/12/2008
Añadidas fotos de los sensores, diagrama del cableado con el chip LM324N, explicación del código de wiring, el codigo de wiring, descripción de la aplicación en processing, el código de processing, los archivos de la carpeta data y fotos de los elementos finales (pantalla, sensores, MIU).
Integrantes
Paolo Almario
Mónica Ocampo
Juan Manuel Fernandez
Mónica Sarmiento
Catherine Zapata
Encargado de montar este blog
Paolo Almario (lego.alma@gmail.com)
Tema
Precipitaciones: Medición, representación y modificación de variables que pueden alterar la lluvia o cualquier tipo de precipitación.
Modelo de Interacción final
(lo que pretendemos hacer)
Cómo entendemos las precipitaciones?
Los fenómenos que están presentes en cualquier tipo de precipitación son independientes y pueden alterar por completo la precipitación si se manifiestan de forma diferente.
El ser humano por medio de sus sentidos es capaz de identificar los fenómenos que caracterizan cualquier tipo de precipitación de tal forma que puede saber si está lloviznando, lloviendo, nevando o granizando al ver el fenómeno, oirlo o sentirlo.
Estos fenómenos identificables por el ser humano (viento, lluvia, agua, nieve, truenos, etc…) dependen de condiciones ambientales para que se presenten de una manera u otra (generando distintos sonidos, percepciones visuales y sensoriales), dichas variables ambientales son Altitud, Velocidad del viento y la Cantidad de agua.
Cada una de las variables pueden ser medidas mediante distintos tipos de sensores:
Utilizando wiring como soporte tecnológico, nuestro MIU estará en capacidad de medir estas variables de tal forma que pueda representarlas dentro de él. La representación será sonora y visual dependiendo del valor de las variables que midan los sensores en tiempo real.
Los usuarios al entrar al MIU se encontrarán con un “panel informativo” que proveerá la información de las condiciones actuales de las variables que influyen en la precipitación que está ocurriendo (si la variable de cantidad de agua está en 0, no existirá sonido de precipitación alguna).
Este panel además proveerá información del promedio anual de estas variables de distintas ciudades del mundo, estando en capacidad de conocer los distintos datos que determinan las precipitaciones en puntos distantes del planeta.
Además del “panel informativo” se podrán disponer otros tres “páneles modificables” los cuales podrán cambiar las tres variables que el MIU está representando. Así se tendrá un panel para la altura, uno para la cantidad de agua y otro para la velocidad del viento, cada uno cambiando los sonidos y las luces que representarán la precipitación dentro del MIU.
Una primera aproximación de cómo se dispondrán los paneles y el recorrido pensado que realizarán los usuarios (el panel de información es el de la mitad):
(Pueden bajar esta presentación tipo aplicación de la dirección haciendo click derecho en el link y luego guardar como http://modelwar.com/paolo/vertical/recorrido.swf).
Los páneles modificables
Una posibilidad para construir los páneles modificables es por medio de la utilización de sensores, fotoresistencias y leds para realizar un mecanismo ajustable capaz de cambiar las 3 variables de las cuales dependen las representaciones sonoras y visuales.
La idea es realizar un mecanismo con una fotorresistencia y leds tal que así:
Donde el cuadro negro deslizable es el que gradúa las variables.
Por debajo de lo que el usuario manipulará, se encontrará este mecanismo, donde el deslizable lo que hace es bloquear la cantidad de luz de los leds que detecta la fotorresistencia:
(Pueden bajar esta aplicación flash de la dirección haciendo click derecho en el link y luego guardar como http://modelwar.com/paolo/vertical/modificable.swf. Los botones circulares negro y blanco de la esquina inferior derecha son para dejar ver el mecanísmo de la fotorresistencia y los leds de “debajo”.).
Sin embargo existe un problema con este mecanismo que hay que tener en cuenta a la hora de construirlo, y es que debe ser “a prueba de salvajes”, estos mecanismos van a ser sometidos a un estres mecánico severo por lo que deben ser muy resistentes para que su vida útil sea la mayor posible.
La otra opción
Por lo tanto analizamos otra opción a los páneles mecánicos modificables por los usuarios. Inspirados en estos videos:
Proponemos crear una sola pantalla táctil en la que se fusionarían los 3 paneles modificables y el panel informativo. Así, en la misma pantalla los usuarios estarán en capacidad de informarse sobre las variables que afectan las precipitaciones y, allí mismo, modificarlas.
Exploración Pantalla táctil (por Paolo Almario e Isaias Vega)
Después de realizar varios experimentos se logró hacer un prototipo de pantalla táctil en miniatura:
Paolo Almario e Isaias Vega:
Una vista general del mecanismo:
“Touch Me” : Resultados y conclusiones de Investigación Pantalla táctil (por Paolo Almario)
La primera experimentación que hice con Isaias, a pesar de ser exitosa, no es útil para emplear dentro del MIU debido a que el principio básico mediante el cual se rige es mediante sombras detectables por una WebCam, y pensando en que varios usuarios estarán manipulando u observando la información dentro del MIU es probable que entre tanta gente se bloquee lo que el video beam esté proyectando. Otro problema con el que nos encontraríamos sería disponer el video beam a cierta distancia de la pantalla, por lo tanto quedaría expuesto a los usuarios y podría llegar a descalibrarse o, en el peor de los casos, dañarse o desaparecer =S.
Es por esto que me puse en la tarea de investigar más a fondo el principio mediante el cual funcionan estas pantallas hechas en casa para encontrar una solución que se adapte a los requerimientos y condiciones de nuestro MIU.
A continuación presentaré varios “slides” de una aplicación que creé en flash y que expuse en clase para dar a entender cómo construiremos nuestra pantalla táctil, la aplicación original la pueden ver o descargar en la siguiente dirección (160 KB): http://modelwar.com/paolo/vertical/touchme.swf (para empezar, hacer click… para pasar de “slides” hacer click a la derecha o a la izquierda del “slide”…).
Esta presentación pretende dar a entender, primero, cómo funciona el mecanismo construido en conjunto con Isaias y , segundo, mostrar la solución que implementaremos en el MIU. La experimentación no fue nada fácil y fue algo frustrante e irritante no poder, después de tres días de trabajo intenso, tener la pantalla táctil (prototipo) operativa a un 100%.
1. Tenemos una cámara web:
2. La cámara web está conectada a un pc:
3. Qué ve la cámara web?… Ve lo que esté en su ángulo de visión:
4. Si yo me meto en el ángulo de visión de la cámara web, lo que verá será a mí:
5. Metemos la cámara web en una caja con un vidrio y una superficie proyectable:
(desde aquí empieza la explicación del mecanismo que empleé junto con Isaias)
6. Metemos la cámara web en una caja con un vidrio y una superficie proyectable (a prueba de dummies):
7. El resultado de encerrar la webcam en una caja es que estará en una “habitación” semioscura:
8. Si tocamos la superficie proyectable, lo que la cámara web verá será la sombra de nuestra mano y con más intensidad (más negro) la yema de nuestro dedo que está en contaco con la superficie:
9. El software gratuito que utilizamos (es TouchLib pero para trabajar con sombras se utiliza MTmini) es capaz de procesar la imágen que captura la webcam de tal forma que PRIMERO elimina las “sombras parciales”:
10. y SEGUNDO, invierte la imágen, obteniendo este resultado:
11. Este “punto de luz” (entre comillas porque fue generado a partir de sombra) es lo que ha sido definido como blob, TouchLib está en capacidad no sólo de detectar estos blobs sino también de rastrear su movimiento a lo largo de la pantalla:
12. Página de TouchLib en NUIGroup:
13. Si colocamos y calibramos un video-beam al otro lado de la caja…:
14. …estamos en capacidad de manipular “en vivo” lo que sea que estemos proyectando:
(hasta a quí va la explicación del mecanismo construido en conjunto con Isaias).
15. Para solucionar el problema de las sombras interfiriendo con lo que se proyecta, la solución sería meter el video beam en la caja junto con la cámara y calibrarlos:
16. Ahora bien, si metemos el video-beam en la caja, esta se llenará de luz por lo que perderemos la condicion de “habitación” semioscura, y lo que esto implica también es que no tenemos cómo generar sombras sobre la superficie proyectable, es decir no tendremos blobs. Oh problema!:
17. La solución: InfraRed Light o IR (TouchLib de hecho está pensado para trabajar con IR, MTmini es una adaptación de touchlib que permite generar blobs a partir de sombras, es una forma sencilla de saltarse lo que implica trabajar con IR para hacerse un TouchPad en 5minutos):
18. Entonces, para trabajar con IR necesitaremos una cámara IR:
19. Y una fuente de luz IR:
20. Con estas modificaciones, ya nuestra cámara estará en capacidad de detectar blobs, por lo tanto TouchLib podrá correr correctamente:
21. Pues bien, en este momento ya la decisión está en qué emplear como fuente de luz infrarroja, pueden ser nuestros dedos (que conlleva un trabajo enorme sobre la pantalla para lograrlo) o un bolígrafo que emita luz IR cuando se presione su punta. Para nuestro MIU, inicialmente, emplearemos el bolígrafo.
Prototipo pantalla táctil usando lapiceros IR
Preparé un pequeño y sencillo prototipo ya empleando los lapiceros como fuente de luz infrarroja.
La mesa táctil
Esta es la mesa que construímos y que situaremos en nuestro MIU, a partir de aquí se controlará una aplicación hecha en Processing que se alimentará de los datos enviados por los sensores por medio de Wiring.
Finalmente decidimos quitar el intermediario entre la mesa y los usuarios, el lapicero fue descartado, hicimos las experimentaciones necesarias para lograr que los dedos emitieran luz al entrar en contacto con el acrílico, he aquí la pantalla funcionando ya con los dedos:
Sonido: aplicación en Processing capaz de reproducir sonidos según una interfaz gráfica (por Paolo Almario)
Realizar esta aplicación no fue tarea fácil puesto que jamás había utilizado processing, pero tras un par de días de investigación escribí un programa capaz de dibujar cuadrados que se mueven lateralmente al hacer click y arrastrando.
El programa calcula la posición relativa de los cuadrados con respecto al ancho de la aplicación dando como resultado una posición entre 0 y 10 pudiendo así reproducir 10 sonidos en 10 posiciones diferentes por cuadro sin importar el ancho de la aplicación ni el ancho del cuadro (Woo!!! =D).
Para el sonido utilizé la libreria minim, en la página web hay una descripción muy detallada de cómo utilizar esta librería.
Este es el resultado de una primera prueba cargando sonidos gratuitos de internet, más adelante añadiré sonido aportado por un colaborador.
(hacer click en la imágen)
Después de hacer pruebas, llegué a la aplicación final, visualmente contamos con tres cuadrados “deslizantes”, un boton cargar y unas nubes.
Los cuadrados deslizantes se desplazan dependiendo de la posición del cursor a lo largo de una línea blanca, cada uno representa una de las variables que decidimos manipular. Entiendase la posición del cuadrado a la izquierda como que la variable está en ceros y que a la derecha estará al máximo. Igualmente se aprovechó la capacidad de la librería minim de visualizar un buffer del sonido, por lo tanto mientras que un cuadrado se desplaza a la derecha empezarán a emitirse sonidos cuyo buffer se verá representado sobre la línea en la que se desplaza el cuadrado.
El botón cargar desplaza a los cuadrados a posiciones relativas dependiendo de los valores que lea wiring. Estando así en capacidad de representar en la aplicación las condiciones actuales de agua y viento.
Las nubes cambian a medida que se manipulan las variables de tal forma que pueden aumentar de tamaño, volverse oscuras y generar lluvia o granizo.
Desafortunadamente processing no me ha dejado exportar la aplicación ( outOfMemory ??? ), pero igualmente cuelgo aquí el código de la aplicación. Cuelgo dos versiones, una que necesita que wiring esté mandando la info de los sensores al pc y la otra que corre sin necesidad de esto.
Por favor ignoren la libreria fullscreen, borren esas lineas, que no interfieren en nada con la aplicación.
Código processing (no necesita wiring para correr).
Código processing (necesita wiring enviando variables).
Paquete que contiene la carpeta data (133MB)
mirror
(los servidores molestan, buscaré subirlo en varios lugares para garantizar la descarga).
En la sección de los sensores encontrarán el código de wiring y el cableado del sensor.
Trabajo de los sensores para el MIU
como bien habíamos descrito anteriormente, necesitaremos un anemómetro, un pluviómetro y un altímetro los cuales pretendemos crear para que nos den lecturas reconocibles por wiring de tal forma que podamos representar las condiciones actuales dentro del MIU.
Fotos del primer prototipo de sensor:
El tema de los sensores finalmente fue resuelto gracias a una recomendación de Hernando quien nos surgirió emplear este dispositivo:
Se trata de un sensor sensible a la flexibilidad, básicamente es un potenciómetro cuyos valores dependen de qué tan doblado esté el sensor.
En cuanto a la conexión con wiring utilizamos el chip LM324N, el cableado se hizo de la siguiente manera:
El sensor funcionó pero lograr una escala con los valores que emitía era complicado, ya que cada vez que se inicializaba emitia valores diferentes.
Por lo tanto para el código de wiring decidí dejar que el sensor se calibrara “solo”… El código lo que hace es recibir y almacenar los primeros 50 valores que el sensor transmite y establece el rango entre el menor y el mayor valor recibido. Ese rango lo denominé rango cero, todo valor que se aleje del rango cero supondrá que el sensor está doblado más allá de la calibrada inicial.
Ahora bien, si lo que queremos medir es viento o la cantidad de agua que está cayendo, me centré en la suposición de que el sensor se doblará varias veces en un periodo de tiempo. Entre más veces se doble más viento estará haciendo, o más agua estará cayendo.
Por lo que para generar la escala de 1 a 10 que se acomode con las posiciones de los cuadrados hecha en processing, decidí guardar periódicamente 10 valores en un arreglo, los valores podían ser 0 (cero) lo cual supondrá que el sensor no está sometido a flexión, y otros valores. Si los 10 valores del arreglo se encuentran en cero querrá decir que el sensor no se ha movido de su posición. Si en ninguno de los valores del arreglo encontramos un 0 (cero), querrá decir que en el período de tiempo que tardó en llenarse el arreglo, el sensor jamás estuvo en la posición cero, es decir que debe estar haciendo un ventarrón o, en su defecto, el diluvio universal (=D Woo!!!). Al ser un arreglo de 10 posiciones estaremos en capacidad de medir en una escala de 1 a 10, qué tanto viento está haciendo o qué tanta lluvia está cayendo.
He aquí el codigo de wiring que escribí:
Propuesta de MIU
La primera propuesta de MIU contaba con un túnel de entrada arqueado de doble pared:
La entrada en forma de túnel resultaba problemática en muchos aspectos por lo que se buscaron varias opciones y la solución final fue la siguiente:
(Pueden bajar esta presentación tipo aplicación de la dirección haciendo click derecho en el link y luego guardar como http://modelwar.com/paolo/vertical/presentacion.swf).
Fotos de los MIUs confeccionados y siendo probados arriba del bobo:
Primera experimentación de interacción
La primera experimentación consiste en una representación de la lluvia que se puede hacer alterando páneles que producen distintos colores de lluvia representada en el techo por una proyección, el sistema está explicado en las siguientes imágenes (este no fue el modelo de interacción final, lo utilizamos sólo como base de esta primera experimentación):