Connect – Arduino + Ruby + FTP + lindenScript + OpenSIM

Posted on Jun 21, 2008

Esta semana he asistido al taller Connect, en el centro de arte LABoral, ya soy un veterano de ellos. Este curso/taller trataba sobre la interconexión de hardware/software a través de diversos protocolos… serial, usb, midi, osc… arduino, processing, puredata, php, python… muy divertido.

Entre todo lo que fuimos haciendo, mis pequeños proyectos durante el curso han sido un teletenis (al estilo clasico del PONG de los 70) en processing, cuyas raquetas respondian a dos potenciometros conectados a un arduino… vamos, como el original pero con un backend high-tech.

Pero el otro proyectillo que surgió, junto con Pablo de Soto, y que acabó siendo bastante interesante, fue la idea de tomar datos del mundo real e insertarlos en un mundo sintético en tiempo real, siendo los cambios paralelos en ambos entornos.

Pues nada, instalé un servidor de OpenSim (el software liberado que corre en los servidores de Second Life), y empezamos a jugar con lindenScript, el lenguaje de scripting de este motor, sintaxis similar a C… sin problema. Asi, encontramos el llHTTPRequest… la mitad ya estaba hecho.

Con un SquidBee, recogemos los datos de luminosidad, humedad y temperatura del entorno real, y despues de transformarlos en valores «humanos» (% de luminosidad y humedad, y ºC de temperatura) los enviamos por el puerto USB/Serie a un PC, ejecutando un script en Ruby, que crea un archivo de texto con estos datos y lo sube a un ftp cada 10 segundos.

Luego desde el mundo de OpenSim, tenemos un script asociado a un objeto, que cada 10 segundos también hace un HTTPRequest a la url donde se sube el fichero, lo descarga y lo parsea extrayendo los datos que usamos para modificar el estado de este objeto. En este caso, es la «Farola» (palo con una bola roja encima), que cambia de color con la temperatura (de negro si es menor de 15º a 100% rojo si es superior a 30º), y de opacidad con la luminosidad (transparente a 0% de luminosidad a opaco con el 100%). El sensor de humedad se nos estropeó, asi que no hicimos nada con el.

La idea ahora es aplicar estos cambios globalmente en el mundo virtual, de manera que podamos cambiar el estado del dia virtual dependiendo del dia real, etc. Pero ha sido interesante este primer paso.