Salam ‘alaykum El Cairo

“Salam ‘alaykum” o “La paz sea contigo”, el saludo típico, también es un sentimiento que te embarga al llegar a El Cairo. Su inmensidad, la sensación del pasado en el presente, ejemplificado por la silueta de las tres pirámides que hacen sombra sobre el mar de luz visible al llegar de noche en avión, es sobrecogedor. Una ciudad que nunca duerme, y que te despierta a las 4:30am con la casi musical llamada a la oración, otro ritmo de vida.

Este será mi “hogar” durante un mes, durante el cual impartiré cursos sobre electrónica y arduino para el OpenLab de Medrar, una estupenda oportunidad que me ha sido concedida gracias a la gente de Hangar. Muchas gracias.

Empieza el viaje.

Connect – Arduino + Ruby + FTP + lindenScript + OpenSIM

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.

captura-opensim.pngEntre 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 scrip 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.

Tutorial de Arduino

Con la idea de hacer una serie de tutoriales de iniciación a la plataforma arduino, he grabado el primero, un pequeño video explicando como ejecutar el ejemplo “blink” y contando un poco acerca de su funcionamiento.

Os dejo con el video:

Desde la sala de control

panorama-situation.pngEstos dias estoy participando del proyecto de un amigo, Pablo de Soto, arquitecto y activista, miembro de hackitectura.net. Situation Room, una instalación que simula , emulando las salas de control militar y similares, una posible sala de situación civil, desde la que se analizarian y cartografiarian datos relevantes para la sociedad. Junto con la instalación, se están desarrollando una serie de talleres y charlas, con participantes como el Bureau d’etudes, y los componentes de hackitectura.net, en los que se tratarán diferentes temas como qué datos serían relevantes para monitorizar y cartografiar, o como hacerlo a nivel de software y representación. Estoy colaborando con la parte técnica de la instalación, soft, hard, y algun guiño tech como un efecto de luces realizado con Arduino. Muchas gracias a Pablo por contar conmigo.

Un saludo desde la sala de control.

P.O.V.

“Persistence of vision” (persistencia de la visión), es el efecto por el cual una serie de imágenes estáticas son percibidas como una imagen animada, por ejemplo en el cine, los fotogramas de una pelicula, o como una serie de imágenes son percibidas como una sola si se suceden en los tiempos adecuados. Este efecto, tradicionalmente asociado a la retina, ahora se sabe que es debido a como el cerebro procesa la información visual. Bien, se suelen llamar POV’s a los sistemas que juegan con este efecto. Uno de los más de moda ultimamente son los “air writers” algo asi como dibujos en el aire.

El otro dia construí uno con el Arduino para probar el efecto en casa… 5 leds verdes, un arduino, cable para los puentes y una placa de prototipo sin soldadura. Defines una fuente, en este caso de 5×3 (con los pixeles horizontales dobles) y envias cada columna muy rapidamente a los leds. Al mover el conjunto tienes tu efecto. Como siempre una imagen vale más que mil palabras:

POV

La foto está tomada con una exposición de 4 segundos y en la oscuridad (salvo la luz que entraba por a puerta detrás de la camara… ).

LCD Serial – 16F84A

lcd-serial.jpegMi primer proyecto con PIC’s. Se trata de un interfaz serie (UART) para comunicar con un LCD de matriz (de los basados en el controlador de Hitachi). Utiliza un PIC 16F84A que recibe los datos serie a traves de una patilla (2400Bps, 8N1), y se los manda al LCD utilizando el protocolo de 4 bit de datos, con lo que todavía quedan patillas libres por si se quisiera hacer otra cosa, (que no es el caso). La idea es de usarlo conjuntamente con el Arduino, asi solo gasto una patilla del Arduino para controlar el LCD.

El protocolo es muy simple, si recibe un caracter ascii cualquiera, lo manda como carácter a la pantalla LCD a la posición actual del cursor, a no ser que sea el carácter 0xFE que entonces lee el siguiente byte y lo manda como código de control al LCD.Al iniciarse, el PIC manda el texto “Ok.” a la pantalla del LCD para comprobar que funciona correctamente, asi que para cualquier aplicación lo primero seria mandar el código de control de “limpiar pantalla” ;-)

lcd-serial_2.jpgAdjunto los esquemas del circuito y el diseño del PCB, así como el programa del PIC, por si a alguien le sirve de ayuda. En las pruebas estoy usando un 16F84A/04 y de hecho el circuito utiliza un cristal de 10Mhz, a la que tenga acceso a un /20, lo probaré a 20Mhz para ver si funciona bien a 9600bps, que a 10Mhz tuve problemas de timing.

Los archivos:

LCD Serial – PCB – Pistas
LCD Serial – PCB – Componentes
LCD Serial – Programa del PIC (2400bps)

Los componentes son: Q1: Cristal 10MHz, R1 Resistencia 1KOmh, R2 Potenciómetro 20K, C1 y C2 Condensadores cerámicos de 22pF. El conector del LCD es de 16 contactos (en lugar de los 14 normales) porque mi LCD tiene retroiluminacion y se alimenta en las patillas que estan antes de la “1” normal de GND. Para un LCD sin iluminacion, habria que conectarlo a partir de la patilla 3.