Aeropónica

Estimados lectores: han pasado más de tres meses desde la última tanda de artículos subidos. Fueron meses de intenso trabajo: tengo novedades de SAMSA, del Butiá, del XY, algún proyecto musical y fundamentalmente dos proyectos nuevos vinculados al physical computing, y al computing “pelado”, nomás. Comenzaré hablando de uno de los emprendimientos más audaces de los que me ha tocado participar en estos últimos tiempos.   

Aeropónica es una planta artificial de 10 metros de alto y 6 de ancho, dotada de 28 flores robóticas que interactúan con el público mediante sensores, instalada desde el 27 de julio en el espacio central del Centro Cultural de España, lugar donde permanecerá por un lapso de 8 meses. Se trata de un proyecto original del artista plástico Juan Perazzo, que resultó seleccionado en la Convocatoria abierta Intervenciones espacios no convencionales llevada a cabo por el CCE en 2010.   

Aeropónica

Más allá de que el resultado final de esta obra es de una gran belleza, dejándonos plenamente satisfechos a todos quienes participamos en ella, este proyecto me parece particularmente destacable por las siguientes razones:   

  • Fue realizado en un tiempo y con un presupuesto realmente acotados, teniendo en cuenta su magnitud: estamos hablando de dos meses para su realización total y aproximadamente 2000 dólares para la parte mecánico/electrónico/informática, incluyendo materiales y honorarios de la gente que trabajó (entre la cual me incluyo, por eso conozco la cifra; no conozco los detalles del resto del proyecto, pero es más o menos del mismo orden).
  • Dadas las condiciones en que se desarrolló el trabajo, no hubo mayor tiempo para pruebas ni especulaciones: cualquier error o descuido en los cálculos o en la praxis, podría haber derivado en un fracaso total (situación de la que estuvimos al borde en todo momento). Hubo que hacer todo “de una”, como si realmente supiéramos hacerlo, y no faltaron imprevistos de todo tipo a lo largo del proceso.
  • Se trata de una instalación grande y compleja, que nos obligó a pensar, resolver problemas, tomar decisiones, y sobre todo, trabajar duramente. Se usaron 30 microcontroladores, 1500 metros de cable, hubo que desarmar más de 200 unidades de DVD para reciclar el sistema mecánico (al cual muchas veces también hubo que hacerle adaptaciones), etc., y esto por hablar solamente de la parte que me involucra. La plástica, por su lado, es de una fineza extraordinaria, producto también del esfuerzo de mucha gente, y no olvidemos lo que es la estructura física, el trabajo de colgar la planta en ese lugar, etc., etc.   

Por todos estos motivos, me siento más que contento de haber aportado al desarrollo de Aeropónica. Aunque, como sistema interactivo, su “conducta” no es de las más originales que puedan encontrarse (por el momento), es la primer instalación de esta naturaleza que se realiza en el pais, y talvez en la región.   

El jueves 14 de Octubre, a las 19:30hs, habrá una charla en el café del CCE, a cargo de Juan, Marcelo y quien suscribe, para dar a conocer los detalles de la realización de este interesante proyecto. Por mi parte, les voy a contar aquí cómo fue mi experiencia en la elaboración del sistema de control, junto a quiénes tuve el placer de trabajar, los desafíos técnicos a los que nos enfrentamos y cómo los resolvimos, en lo que va a constituir un auténtico “thriller tecnológico”.   

    

Parte 1 – Los comienzos

Hace aproximadamente dos meses, Marcelo Vidal (VJ Chindogu) vino a mi casa y me mostró un PDF con unos dibujos de unas flores mecánicas, informándome que con ese proyecto acababan de ganar un concurso del CCE, pero que él se tenía que ir para Alemania, y a ver si yo los podía ayudar a controlar esas flores con Arduino. Acepté la propuesta, y ahí mismo nos pusimos a ver posibles soluciones para la mecánica. Su idea original era utilizar motores paso-a-paso con un “sinfín”, como suelen encontrarse en las disketteras y las unidades de CD.   

Boceto original de la flor, a cargo de Marcelo.

Debo decir que yo soy un poco lento para ir adquiriendo toda la información, o talvez me concentro demasiado en un primer aspecto y no presto atención al resto de los detalles. El asunto es que no fue hasta unos dias después cuando se produjo una nueva reunión, esta vez con Marcelo y Juan Perazzo (a quien tuve el gusto de conocer en esa oportunidad), que tomé conciencia del verdadero alcance de lo que se proponían. Se trataba de desarrollar un sistema que permitiera controlar 28 motores, y recibir data de 8 sensores de distancia ultrasónicos; había que diagramar un circuito electrónico que involucraría uno o más microcontroladores, construirlo, y luego programar el sistema con alguna conducta (de la cual ni hablábamos por entonces porque era algo aún demasiado lejano). Todavía no sabíamos qué tipo de motores se usarían, cómo sería el sistema de trasmisión mecánica, pero ya había una idea más clara de los plazos (27 de julio) y del presupuesto (no debíamos exceder los 30 ó 35 dólares por flor).   

Según mis cálculos, era absolutamente imposible cumplir con el objetivo, y fue lo que les dije, ya que dos meses era perfectamente el tiempo que podía tomar hacer las pruebas necesarias para decidir qué tipo de solución íbamos a adoptar. De todas maneras acepté seguir trabajando, confiado en que, llegado el momento, las dificultades iban a obligar a Juan a posponer la fecha de inauguración, como ocurre sistemáticamente con todo, aquí en Uruguay.   

Prototipo de flor, con el sistema de arrastre de bandeja de CD

Sin embargo, las cosas iban más rápido que lo que yo esperaba. No sé si fue en esa misma reunión o en la siguiente que quedó establecido cómo sería el sistema mecánico. Marcelo había quedado con la idea de los motores paso-a-paso, pero desarmando unidades de CD en busca de dicho motor, yo me percaté de que el sistema de arrastre de la bandeja era una buena alternativa, aunque tenía la desventaja de funcionar con un motor DC, es decir, sin ningún sistema que permitiera tener un control exacto de la posición. A Juan le gustó la idea de los sistemas de arrastre de bandeja, porque tenían un recorrido de unos 10cm, contra los 5cm de los steppers, y se veían más fáciles de adaptar al movimiento de las flores, que por aquel entonces ya tenían una forma definida (consistían en un pequeño paraguas infantil invertido, movido por una varilla metálica), aunque todavía no estaba clara la manera concreta de instalarlos.   

Bien, les dije entonces que para empezar necesitaba una Arduino Mega, una protoboard, cablecitos, un integrado L293D (puente en ‘H’ para controlar motores DC) y un sensor de distancia como los que se iban a usar (los Maxbotix LV-EZ1, eran sensores ultrasónicos baratos, con un rango bastante mayor al de los clásicos infrarrojos Sharp). Con todo eso y el paraguas metido en un caño de PVC con el sistema de arrastre de la bandeja de la unidad de CD que desarmamos acá mismo “recortado” y pegado con Poxipol, yo me encargaría de hacer un prototipo que luego extenderíamos a todas las flores. A modo de encoder, para tener un mínimo control de la posición, le dije a Juan que hiciera unos agujeritos a lo largo del recorrido de la pieza móvil, planeando utilizar un sistema óptico, con un emisor y receptor IR a ambos lados de dicha pieza.   

Imagen de previsualización de YouTube    

    

Parte 2 – Flores inteligentes

La semana siguiente Marcelo ya estaba de viaje, quedamos Juan y yo en un ping-pong de idas y venidas entre su casa y la mía (que, por suerte, se encontraban bastante próximas, al igual que el estudio de Marcelo, todos en la zona del Parque Rodó), durante el cual fuimos optimizando el sistema mecánico, que al principio estaba muy duro. El punto clave de esa etapa fue el descubrimiento de la curva en forma de “S” que había que practicarle a la varilla metálica que trasmitía el movimiento. Los materiales llegaron con cierto atraso, pero yo no tardé en desarrollar el prototipo que les había prometido. Hasta ahí no tuve ninguna dificultad, todo parecía encaminado, pero el momento de las decisiones difíciles no tardaría en llegar.   

Desde el principio, la propuesta que me había llegado era que yo diseñara el sistema, “alguien” se encargaría de construirlo y replicarlo 28 veces, y finalmente yo me encargaría de desarrollar el software para el mismo. Pero yo veía que algo se iba complicando. Si usábamos los sistemas de arrastre de las bandejas de CD/DVD, la mecánica se simplificaba (a esa altura parecía claro que no había tiempo ni recursos para intentar otra cosa) pero el sistema de control se hacía un poco más complicado desde el punto de vista del software: el encoder óptico pasivo, para funcionar correctamente, necesitaba que el microcontrolador estuviera todo el tiempo pendiente de él, de lo contrario, si le “perdía el rastro” no había manera de controlar la posición exacta del motor. Empecé a imaginarme un sistema con 28 de esos encoders y yo tratando de programar todo 5 días antes de la inauguración, y la ví muy oscura…   

Días antes yo había tirado la idea de hacer “flores inteligentes”, es decir dotadas de un microcontrolador propio, pero como divague teórico para un supuesto proyecto en el que el presupuesto no fuera una limitante. Sin embargo ahora tenía que decirle a Juan que no había otra opción, esa era la única solución posible, poner un microcontrolador en cada flor. Así tuviera que sacrificar mis honorarios, yo prefería la tranquilidad de tener un poder de procesamiento local a nivel de la flor, entre otras cosas, para implementar el famoso “plan B”, es decir, que si todo fallaba, cada flor se comportaría autónomamente, con alguna programación aleatoria que “salvara la plata”. Cada flor sería ahora una especie de servo digital inteligente, pensaba yo, lo cual simplificaría enormemente la programación en la placa central.   

Primer prototipo de Arduino "casera" que iría en cada flor

Para Juan no estaba clara la diferencia con lo anterior (es decir, con una sola placa controlándolo todo), excepto que esto era más caro, pero para mí era un profundo alivio. Posteriormente estuvimos viendo con Marcelo, al regreso de su viaje, cuál era el clon más económico de Arduino que existía en el mercado, y que pudiera conseguirse en Buenos Aires. Respuesta: Solarbotics Ardweeny, un clon de Arduino sin USB, sin regulador de voltaje, que viene desarmado y cuesta 10 dólares en origen, casi 20 en Baires.   

Pero cada decisión aparentemente acertada que tomábamos, nos abría las puertas a nuevos y más complicados problemas. El incluir una Ardweeny con un L293D y un encoder óptico en cada flor, complicaba bastante la labor de ese hipotético individuo encargado de la materialización del sistema electrónico. Dicho sea de paso, me enteré de que no existía tal individuo, y quedó en mis manos la consecución de una persona que pudiera cumplir ese rol. Afortunadamente el Fede (Federico Andrade, compañero del proyecto Butiá) aceptó el trabajo, y demostró una gran solvencia al encargarse de la fabricación de más de 20 placas (es decir, el circuito que hay en cada flor, formado por la Ardweeny, el L293D, un regulador de voltaje y otros componentes más) y de ayudarme con la programación y algunas decisiones difíciles.   

El mismo prototipo, construido sobre un circuito impreso "universal"

Aspecto final de las placas basadas en Ardweeny

Otra de las dificultades que surgieron, fue la de conseguir los materiales electrónicos: en Eneka se agotaron los L293D, en Buenos Aires también, como asimismo las Ardweeny. Finalmente hubo que comprar todo en Solarbotics y hacer una importación, con la consiguiente demora en trámites aduaneros y demás. Por su parte la obtención de unidades de CD/DVD para desguazar tampoco progresaba. Marcelo compró varios lotes, y hasta recorrió los asentamientos en busca de unidades, pero por error estábamos descartando todas aquellas que no tuvieran una trasmisión exclusivamente basada en engranajes (o sea la gran mayoría, que eran “a gomita”) como así también las que tenían más de 5 cm de alto (o sea aquellas en las que el motor con el sistema de reducción ocupaba más de la mitad del espacio entre un lado y el otro de la bandeja de CD).   

    

Parte 3 – 1Km y medio de cable

Mientras tanto yo me enfrentaba a otro problema no menos grave, del cual nunca di demasiados detalles a Marcelo y Juan para que no se alarmaran. Se trataba del problema de la comunicación entre la Arduino Mega central y las 28 Ardweenys que estarían en las flores. El factor del que yo tampoco había tomado conciencia en las primeras reuniones, era que entre las flores más distantes y el sistema de control podría llegar a haber distancias de hasta 15 metros. No estaba claro el sistema de comunicación (yo barajaba varias opciones, pero tampoco había tiempo ni presupuesto como para intentar soluciones más “profesionales” como Ethernet, WiFi, ZigBee, RS485, etc.) ni el tipo de cable que usaríamos. Otro factor que empeoraba las condiciones era la imposibilidad de hacer un cableado tipo bus que fuera recorriendo las flores. Por razones que nunca me quedaron del todo claras, pero que eran contundentes al fin, había que cablear desde cada flor directamente al sistema central. Las decisiones acerca del tipo de comunicación, tipo de cable y tipo de conectores (si es que usaríamos conectores; en principio estaba claro que sí, porque de otra manera el montaje hubiera sido prácticamente imposible) eran de una importancia vital, pero yo todavía no podía adelantar nada.   

Mi primer intento fue con el protocolo I²C. Estudié bastante sobre I²C, leí sobre cableados, sobre el famoso límite de capacitancia de 400pf, sobre las resistencias de pull-up, hice numerosas pruebas (para las primeras pruebas tuve que construir yo mismo 4 placas, y nunca tuve, hasta dos días antes del montaje final, 4 flores completas para realizar ensayos de comunicación), intenté hacer algunas correcciones en la biblioteca Wire de Arduino, la que se encarga de gestionar el I²C, dado que la misma no cuenta con un buen sistema de manejo de errores, me imprimí y estudié el largo y entreverado capítulo “2-wire interface” del manual del Atmega328 (el microcontrolador de las Ardweeny), pero en definitiva, nunca pude superar algunos problemas de fondo del I²C (de los cuales hablaré en otro artículo). Con Fede nos juntamos 2 ó 3 veces a trabajar en la programación y a hacer experimentos, trabajamos muchas cosas, probamos la comunicación, hicimos un “sistema operativo” que funcionaba tanto sobre I²C como sobre Serial (yo ya tenía claro que había que tener una alternativa al I²C, el Serial era una posibilidad, aunque había que probar si era posible compartir las mismas líneas para varias flores simultáneamente; también habíamos pensado usar serial sincrónico [el comando shiftOut de la Arduino] o directamente pines de I/O sueltos, y teníamos previsto incluso cablear directamente desde los sensores hasta el sistema central, si todo lo demás fallaba), estuvimos trabajando con los sensores (que a mí me daban un gran dolor de cabeza, muy inestables, pero al Fede parece que le respondían mejor), hicimos el famoso “timeout” con el que la flor entra en “modo automático”, y varias cosas más. Por ese entonces ya era normal acostarse a las 6 ó 7 de la mañana todos los días.   

Imagen de previsualización de YouTube   

Una de las ideas de Fede que se mantuvo hasta el diseño final, fue la de usar doble fuente de alimentación: una fuente para los motores y otra distinta para las Ardweeny, intentando de esta manera reducir la interferencia producida por los motores, que afectaba seriamente la comunicación y provocaba errores de medida en el sensor. Por mi parte, yo me preocupé por la posibilidad de programar remotamente las flores, dado que el firmware (o el software “slave” como lo llamábamos) todavía no estaba pronto, y teníamos claro que era muy probable que no estuviera pronto hasta el dia mismo de la inauguración, como así tampoco lo estaría el “master” (o sea el que corría en la Arduino Mega). Para programar remotamente las flores, yo había incluido una línea de Reset entre los cables que llegarían a las Ardweeny, pero comprobé que esto provocaba el reinicio involuntario de las placas. (15 metros de cable no son una cosa trivial, eso lo tenía claro desde el comienzo, pero nunca había tenido la oportunidad de probar en la práctica una cosa así, y finalmente tampoco la tuve: hubo que quedarse con la primer solución que funcionó, sin sacarse la duda de si existían soluciones mejores). Por suerte encontré, finalmente, una forma de programar las flores a la distancia sin usar el Reset: era un poco complicada, pero era segura. (De hecho, la seguimos usando hasta hoy y nunca falló.)   

A todo esto, había que llegar a un diseño definitivo en cuanto a cables y conectores, para poder ir comprando los materiales y armando de una vez las famosas placas. La compra de materiales quedaba casi siempre a cargo de Marcelo, a quien más de una vez le entregaron mal la mercadería en Eneka, lo que provocaba también algunos retrasos. Al final, una de las últimas compras la hice yo, quedando en manos de Marcelo el tema del cable. El diseño final en cuanto a cable y conectores fue el siguiente: a cada flor llegaría un cable telefónico con una ficha RJ11, para llevar los datos, 2 líneas para Serial y 2 para I²C, y 4 cables sueltos de 0.5mm, con una ficha “blanca” de 4 polos, para llevar la alimentación, 2 líneas de masa, una de +12V para el motor y otra de +9V para la Ardweeny (a través del regulador de voltaje interno).   

Mecanismos extraídos de las unidades de CD/DVD

    

Parte 4 – Papelera de reciclaje

Yo seguía intentando resolver el tema de la comunicación (todavía estábamos lejos de llegar a la programación de la “conducta” propiamente dicha) pero ya estábamos a dos semanas de la fecha de inauguración y todavía no se había llegado a reunir los 28 sistemas mecánicos de las flores, por lo que tuve que interrumpir mis tareas y abocarme a resolver el tema de la mecánica. En ese momento, recién había llegado la segunda partida de Ardweenys (¡y la primera de L293D!! hasta ese día sólo habíamos contado con 3 puentes en “H” en total, para hacer las pruebas) por lo que Fede estaba totalmente dedicado a armar las placas. Yo literalmente me interné en lo de Juan para sacar, a como diera lugar, los 28 sistemas mecánicos. Marcelo se nos sumó, y entre los tres logramos superar ese paso, que era apenas uno de los muchos que aún nos quedaban. En esa internación en lo de Juan, de paso, se me confirmó definitivamente una cosa, y por primera vez no me quedaron dudas al respecto: la inauguración sería el 27 de julio, pasara lo que pasase, no cabía en los planes ninguna posibilidad de aplazamiento.   

La conclusión de los sistemas mecánicos constituye todo un capítulo, como cada uno de los dias de estas últimas 2 semanas, en donde se fue dibujando la forma definitiva del proyecto. El primer paso fue utilizar los sistemas que eran “a gomita”. Pero aun así no llegábamos al número necesario, hizo falta utilizar también aquellos sistemas “altos”, a los cuales les cortábamos el motor, lo soldábamos a una pieza de cobre en forma de “U” y luego pegábamos esta pieza con Poxipol a la estructura, de forma tal de reducir las dimensiones del sistema, para que cupiera adentro del caño de PVC. Finalmente acoplábamos nuevamente el motor al resto del mecanismo usando alguna gomita del tamaño apropiado, sacada de alguno de los sistemas que por diversas razones quedaban descartados. Revolviendo hasta la última de las cerca de 100 unidades semidesarmadas que todavía quedaban en el estudio de Marcelo, y reciclando desde motores, hasta engranajes sueltos y gomitas, llegamos justo a los 28 mecanismos que necesitábamos. Nótese que tanto en esta etapa como en todas las siguientes, el paso fundamental, y el que más tiempo nos insumía, era el testeo de cada una de las flores. Algunas fallas que aparecieron después de instalada la planta, se debieron justamente a no haber tenido el suficiente tiempo para testear los sistemas, aunque debo decir que el poco tiempo que tuvimos, lo aprovechamos bien.   

El estudio de Marcelo, centro de reciclaje de las unidades de CD/DVD

Ejemplo de mecanismo adaptado, con el motor cambiado de lugar

Parte 5 – Nacen 28 flores

Una vez llegados a este punto, nos dimos cuenta de que el trabajo que quedaba era aun mayor que todo el que ya habíamos hecho. El proceso de cerrar cada flor consistía en:   

  • desarmar los “ópticos” y montarlos en una plaquita. Los “ópticos” eran unos interruptores ópticos IR, que venían encapsulados con el emisor enfrentado al receptor, dejando entre ellos un espacio por el que podría pasar el riel agujereado, es decir, prácticamente lo que nosotros necesitábamos, con el único problema de que el espacio era muy angosto, entonces había que desarmar el encapsulado, extraer los componentes y soldarlos a una plaquita de PCB universal (hecha con los restos de las mismas PCB universales con las que Fede fabricaba los circuitos) a la distancia correcta.
  • montar ese óptico en el mecanismo, pegándolo con silicona.
  • dotar tanto al óptico como al motor de unos cables con un conector en la punta, para poder conectarlos en las placas. La decisión de usar conectores en lugar de soldar los cables directamente a las placas, fue mia y se respetó hasta el último momento, a pesar de que todo parecía indicar que insumía más tiempo. La razón para esto es que facilitaba el testeo: dado que cualquiera de los componentes podía fallar, era muy fácil probar un motor o un óptico en una placa que sabíamos que andaba, o probar una placa dudosa con un óptico y un motor buenos conocidos, etc. (Con respecto a los ópticos, hay un detalle curioso, y es que la luz ambiente los afectaba, introduciendo otro factor de incertidumbre en los testeos. Este fenómeno se veía notablemente reducido al iluminar con lámparas de bajo consumo, en lugar de incandescentes, hecho que asombró a Juan, pero que tiene en realidad una explicación muy simple).

Interruptores ópticos desarmados y soldados en pequeñas plaquitas

Colocación del "óptico" sobre el riel perforado

  • pegar la placa con la Ardweeny, con silicona adentro de la flor, buscándole un lugar apropiado, sin que afectara al mecanismo, y en el que los cables pudieran salir cómodamente.
  • Hablando de cables, éstos se conectaban con fichas a las placas, pero debían quedar colocados antes de cerrar la flor, porque el lugar donde se conectaban resultó quedar unos 15cm adentro de los caños de PVC que formaban la estructura. En consecuencia, había que preparar un juego de cables para cada flor antes de que éstas se cerrasen. La preparación del juego de cables consistía en cortar los cuatro cables de 0.5mm junto con el cable telefónico, en tiradas de 11m o 13m, ya que no se permitía que hubiera añadidos (ya se sabe que los añadidos introducen todo tipo de problemas en el cableado) y luego aproximarlos con cinta o con “sunchos” cada 15 ó 20cm. (Los cálculos que nos llevaron a estas medidas estandarizadas de 11 y 13 fueron muy confusos, un ping-pong entre Marcelo y yo, con el kilómetro y medio de cable ahí en el piso, y Juan que no soportaba más la conversación). Luego de cortar y juntar el cable, había que colocarle las fichas en las puntas, una de ellas soldada y la otra con la pinza telefónica.
  • Finalmente había que alinear el caño de salida para que pasara la pieza móvil, pegar la tapa y el caño (con “cinta pato”), atar el cable con un precinto a la pared del caño (practicándole para ello dos agujeritos con un taladro), y por supuesto…
  • …comprobar que anduviera todo bien. El testeo era una parte sumamente tediosa, pero habíamos llegado a la conclusión de que no nos lo podíamos “rifar”. Incluso una vez que adquirimos más práctica en el armado, hacíamos un “doble testeo”: uno antes de pegar la placa con silicona (“empetrolar” como decía yo) y otro al final de todo. Cada testeo consistía en: programar la placa remotamente (es decir, a través del cable; para ello usábamos mi notebook, instalado en el último metro cuadrado que quedaba disponible en la casa de Juan; con la prueba de programación remota, probábamos a su vez la comunicación Serial, que sería el sistema que a la postre terminaríamos usando en toda la planta) y luego probar el movimiento, es decir, dejar que el programa local arrancara, hiciera su propio test de la mecánica (el “pajeo” como lo llamábamos) y luego esperar que entrara en el modo automático e hiciera 4 ó 5 movimientos. Muchas veces, en este testeo saltaban problemas mecánicos que nos obligaban a volver atrás y revisar cosas como la alineación de la varilla, cambiar de gomita, hacerle “topes” a los sistemas, embadurnarlos en vaselina, etc. Cada flor era única, completamente distinta a las otras y tenía sus propias virtudes y defectos.

Este proceso no podía hacerse esperar, porque una vez finalizado, Juan y su equipo debían practicarle a las flores una decoración, que llevaría también unos días, y ya estábamos muy próximos a la fecha límite. Una semana antes de la inauguración debían estar todas las flores absolutamente prontas.   

Presentación del circuito en el interior de la flor

Sensores de distancia ultrasónicos Maxbotix LV-EZ1, usados en el proyecto.

El armado final de las flores insumió 4 días consecutivos, distribuidos de la siguiente manera:   

  • Primer dia. Integrantes: Juan y yo. Resultado: 4 flores. Hora de finalización: muy tarde. Ese día lo que hicimos fue armar 4 flores con los 4 cables que yo usaba en mi casa para realizar las pruebas, que ya estaban prontos y probados. Después de eso, tuve que traerme nuevamente 4 flores, esperar que Fede tuviera prontas 4 nuevas placas, armar 4 nuevos cables, y todo eso para hacer pruebas durante unas pocas horas, ya que al otro dia tuve que entregar todo nuevamente.
  • Segundo día. Integrantes: Juan, Marcelo y yo. Resultado: 6 flores. Hora de finalización: más tarde todavía. Ese dia instituimos la técnica “oficial” de testeo, por lo que debimos re-testear las 4 flores del dia anterior. En total íbamos 10 flores, no habíamos alcanzado el objetivo parcial propuesto originalmente, que era tener 14 flores por día.
  • Tercer día. Integrantes: Marcelo, Fede y yo. Resultado: no me acuerdo bien, pero creo que entre 8 y 11 flores. Hora de finalización: 8 a.m. Ese día pasó de todo, empezaron a fallar mecanismos, ópticos, placas, todo. En un momento la vimos realmente negra. Al final empezaron a salir las flores, pero seguíamos lejos del final. Me acuerdo que no teníamos casi estaño para soldar los conectores, trabajábamos con tramitos de hasta 1cm. En esta jornada fue que empezamos también a armar las 8 flores que llevaban sensor, en las cuales el testeo abarcaba una etapa más: probar que la flor enviara correctamente los datos del sensor, a través del Serial.
  • Cuarto día. Integrantes: Marcelo y yo. Resultado: todas las flores que faltaban, menos una. Hora de finalización: 5 a.m. Llegamos hasta la penúltima flor, requechando componentes electrónicos como antes lo habíamos hecho con las piezas mecánicas. Algunas placas que había construido Fede fallaron, entonces fueron desarmadas, y vueltas a combinar entre sí, y así logramos llegar hasta la flor número 27. Los ópticos que fallaron fueron sustituidos por unos nuevos comprados por Marcelo ese mismo día en Rondeau, que eran distintos a los originales, un poco más difíciles de instalar, pero igual funcionaron.

La última flor la armé yo acá en mi casa, requechando lo “inrequechable”, utilizando una Ardweeny adicional que Marcelo se había traido para él. (en una de las pruebas con Fede, volamos un microcontrolador, aplicándole por error 9V en lugar de 5V). Aproveché para quedarme con esa flor un par de dias más, y hacer las últimas pruebas antes de pasar a trabajar directamente en el CCE.   

Imagen de previsualización de YouTube   

    

Parte 6 – En el CCE

En los dias siguientes, mientras Juan y su equipo se dedicaban a armar la planta en el propio CCE (luego de transportar con sumo cuidado las 28 flores y el resto de las partes hasta allí), yo me dediqué a avanzar lo más posible con la programación. La primer medida que tomé fue descartar completamente el I²C. Usando Serial (a 57.6Kb/s) ya habíamos probado con Fede que se podía conectar el mismo TX del Master con múltiples RX de distintas flores, simultáneamente (cada flor tenía un ID distinto), pero mi intento de unir los TX de varias flores hacia un mismo RX del Master había fracasado, si bien sabía que esto era básicamente posible, porque es precisamente lo que hicimos en el Proyecto Butiá con los motores AX-12. No había tiempo para hacer más pruebas, de modo que la solución adoptada fue usar dos Arduinos Mega: cada una de ellas tiene 4 puertos Seriales, o sea que tendríamos 8 receptores, exclusivamente para las flores con sensor, y también 8 emisores, para compartir entre las 28 flores, lo que nos daba la seguridad absoluta de que iba a funcionar. Las dos Arduinos Mega las teníamos, porque Marcelo también se había traido una para él.   

Bueno, en esos días le di bastante forma al programa “Slave”, haciendo un protocolo de comunicación que soportaba varios comandos, permitía controlar la posición, la fuerza del motor (usando PWM), la frecuencia y amplitud de los “latidos”, enfín, una sobrada cantidad de sofisticaciones que finalmente no llegaron a usarse el día de la inauguración. El Master a su vez, estaba programado en forma totalmente orientada a objetos (las Arduino soportan C++), muy prolijo, y constaba de diversas “conductas” que tampoco se utilizaron mayormente.   

Con todo esto pronto, me fui al CCE a intentar realizar pruebas con las ramas que quedaran “boyando” por ahí. En el CCE, el ambiente de trabajo era sumamente cómodo, mucho mejor de lo que yo esperaba (había calefacción, por ejemplo). El primer dia, las cosas no me salieron del todo bien, pero luego llegó el Fede y pudimos encaminar nuevamente el trabajo. Llegamos a hacer una prueba por primera vez con 2 ramas simultáneas (7 flores) y anduvo todo bien, por lo que ya respirábamos una gran tranquilidad.   

Imagen de previsualización de YouTube   

Conexiones usadas en la prueba con 7 flores

Espacio central del CCE, dos dias antes de "colgar" la planta

El siguiente paso era esperar que la planta estuviera colgada, para soldar, de alguna manera que no estaba clara todavía, las 168 puntas de los cables a “algo”, y de allí a las Arduino Mega. El Fede ya no estaría para ese entonces (tenía que viajar a Bs. As. a un curso; la noche anterior habíamos estado reprogramando cada flor con el ID correcto y rotulando los cables, para facilitar la tarea ulterior) así que esta última etapa la resolveríamos entre Marcelo y yo. El domingo a eso de las 20hs llegué al CCE y ví aquello: era espectacular. No participé de la colgada, pero Juan y la gente que estuvo, aseguran que fue, por sí sola, una cosa digna de un artículo tan extenso como el presente. Sólo vi el resultado final, y la verdad es que impresionaba por lo aparatoso, siendo a su vez de una gran belleza.   

Marcelo había comprado los últimos materiales el sábado de mañana, y otra vez le habían entregado mal la mercadería, pero el lunes finalmente teníamos todas las cosas necesarias: 28 llavecitas dobles (que servirían para programar fácilmente las flores, sin necesidad de conectar y desconectar cables como veníamos haciendo hasta el momento), 2 PCB universales grandes, las 2 fuentes de alimentación (una de ellas era una fuente de PC) y una serie de conectores que finalmente no usamos, esta vez sí soldamos todos los cables directamente a la placa. Con todo el cablerío soldado, empezamos a probar rama por rama la conducta de las flores y los sensores. Era una tarea cansadora, porque había que subir y bajar repetidamente los dos pisos que separaban el sistema de control, de las puntas de algunas ramas. Para realizar estas pruebas, yo programé en el Master una conducta muy simple, que sustituía a todas las conductas sofisticadas en las que había estado trabajando los días anteriores: si el sensor superaba cierto umbral, todas las flores de esa rama se abrirían al máximo, separadas por cierto delay, y de lo contrario se cerrarían al máximo también. Con ese comportamiento inequívoco, establecimos los umbrales de los 8 sensores, los movimos cuando fue posible, para que no quedaran apuntando en direcciones erróneas, intentamos “revivir” un par de flores que sucumbieron al stress de la colgada, y cuando terminamos de hacer todo esto, eran las 5 a.m., y carentes ya de energía, decidimos dejar así la instalación, con esa misma conducta básica.   

No hubo sorpresas en cuanto al funcionamiento del sistema en general, todas las ramas andaban, cada una con su sensor, todas las flores respondían excepto las dos accidentadas, y una tercera que se trancaba ocasionalmente. Ya estábamos ultimando los detalles para la inauguración del dia siguiente (Marcelo se encargaba entretanto de acomodar los “tachos” alquilados especialmente para iluminar la obra), cuando en un momento, mientras le estaba explicando a Marcelo cómo encender el sistema, ocurrió algo que nos dejó paralizados.   

La fuente de alimentación que usábamos para las dos Arduino Mega y las 28 Ardweenys de las flores, era una fuente de esas que entregan varios voltajes, y cuya punta se puede intercambiar e invertir de polaridad. Nosotros la usábamos en 9V, 4A, con ella entrábamos a una Arduino, y desde allí sacábamos alimentación hacia las 28 flores. La Arduino tiene un diodo protector contra polaridades inversas a la entrada, pero como Marcelo había notado que éste calentaba mucho, yo decidí “puentearlo”; en efecto, el diodo, si bien “aguantaba”, no estaba preparado para alimentar 28 placas a la vez. Ocurrió entonces que al sacar el plug de alimentación por última vez, éste se separó del cable, y al volver a ponerlo, si bien verifiqué la polaridad, algo me traicionó y lo conecté al revés.   

Cuando le fui a mostrar a Marcelo “¿ves? Conectás este plug acá…” observé que al conectar el plug, los leds de “power” de las Arduino no se encendieron. Inmediatamente retiré el plug, y quedé inmovilizado por unos 10 segundos, temiendo lo peor. No sé si Marcelo realmente entendía el alcance del riesgo que estábamos corriendo, pero él también estaba inmovilizado. Verifiqué la polaridad de la conexión, y efectivamente, estaba al revés. A punto de ponerme a llorar, no me animaba a enchufar el plug nuevamente. Sabía que las Arduino iban a encender, que los leds se iban a iluminar, pero no podía asegurar nada respecto a la situación adentro de las flores. Si las Ardweeny se habían quemado, no había “plan B”, no había nada, estábamos perdidos para siempre.   

Afortunadamente no pasó nada, fue sólo un gran susto, probamos una por una las flores, todas seguían funcionando, fijamos ese plug con más o menos un metro de cinta pato, nos reímos bastante, imaginándonos el desastre, pero quedó claro que, por esa noche, no daba para hacer ninguna prueba más: así quedó hasta el día siguiente en la inauguración.    

P. G., 29/7/10 (corrección: T. Laurenzo.)   

Imagen de previsualización de YouTube   

Imagen de previsualización de YouTube   

Más fotos de Aeropónica

  

 

Be Sociable, Share!

25 Comentarios »

  1. avatar Alex Beim Dice:

    Pablo, increible!
    Es increible lo que estan haciendo con tan poca cosa
    Felicitactiones!

    Alex

  2. avatar pabloxid Dice:

    Alex! Gracias por tu respuesta instantánea, y por el apoyo permanente que siempre nos das. Un gran abrazo.

  3. avatar luisa Dice:

    Pablo, ví la obra hace un par de días y me encantó, felicitaciones!

    Y qué bueno que publicaste este artículo, me estaba preguntando cómo funcionaba :).

  4. avatar pabloxid Dice:

    Hola Luisa, muchas gracias por tu comentario.

    Bueno, la verdad es que les estoy debiendo todavía una reprogramación de toda la planta. Tenemos todos los elementos como para hacer un comportamiento bien interesante, el problema son los sensores, que sensan lo que ellos quieren, por eso al final los dejamos trabajando en “binario”. A mí me encantaría hacer cualquier cosa para aprovechar a full esas 30 Arduinos, pero el criterio de Juan y Marcelo tiende a ser más sobrio…

  5. avatar tom Dice:
  6. avatar Juanma Dice:

    Enhorabuena por la instalación, es fantástica!!!

    Y enhorabuena también por el relato sobre las penas y penurias de compra de componentes, accidentes de cables, puenteos, …, me he sentido muy identificado con su relato (aunque yo trabajo a una escala mucho menor que ustedes)!!!

    He leído arriba que los ultrasonidos no miden lo que ustedes les gustaría y he vuelto a ver la imagen del sensor, y me he fijado que el cable blanco está soldado al pin AN. Yo siempre que uso ese sensor, uso el pin PWM y me funciona muy bien, hasta que la distancia es menor de 15 cm, que es cuando se vuelve un poco loco con los ecos y tal. Pero bueno, como no conozco el código, supongo que ustedes usan el sensor de otra manera.

    De todas formas, enhorabuena por el trabajo!!!

    Jma

  7. avatar pabloxid Dice:

    Hola, Juanma, bienvenido, y gracias por tu comentario.

    El sensor dispone de 3 salidas: analógica, PWM y Serial. Nosotros usamos la analógica, porque entendemos que el sensor es esencialmente analógico, y las otras 2 salidas las genera con un hardware adicional, presuponiendo que el conversor A/D de la Arduino debía ser mejor que lo que trajera el propio sensor (creo que tiene un PIC). Pero nada de esto fue comprobado en la práctica, dado que no tuvimos tiempo para ello.

    Yo te diría que el principal problema de este sensor es que es “estático”, mide correctamente cuando está todo quieto, pero si tu le mueves la mano delante, tarda bastante tiempo en estabilizar la medida, no sólo los 20ms intrínsecos de su hardware, sino bastante más. Esto nos obligó a promediar una ventana móvil de 32 muestras, lo que provoca un retraso enorme en la medida final.

    El otro gran problema que tiene es que su patrón geométrico es un tanto extraño y caprichoso, a veces detecta minúsculos objetos completamente fuera de la línea central, y otras veces no “ve” grandes objetos que están muy próximos a ella. No tuve demasiado tiempo para estudiar a fondo su comportamiento, pero intuitivamente te puedo decir que estos sensores son “raros”, comparados con los infrarrojos Sharp, con los cuales he trabajado anteriormente. Los IR Sharp sólo alcanzan los 90cm, por lo que quedaron descartados para este proyecto, pero son muchísimo más confiables.

    Saludos,

    P.G.

  8. avatar Marcos Dice:

    Excelente Pablo, como siempre una sorpresa tras otra contigo, jajaja. En breve me voy a dar una vuelta por ahi a ver esto en directo.

    Un abrazo grande!!!

  9. avatar Pabloxid Dice:

    Estimadísimo, un placer tenerlo por acá! Muchas gracias por sus apreciaciones.

    Un gran abrazo.

  10. avatar Alvaro Dice:

    Fantastico!!!
    Estara funcionando en diciembre? (en ese caso probablemente pueda verla). Dara frutos en enero? Y el polen?

  11. avatar pabloxid Dice:

    Alvarungen!

    Qué excelente noticia! (la de tu probable visita). Venite que en diciembre va a estar. Eso sí, calculo que algunas flores ya estarán “marchitas” para ese entonces. En este momento hay 4 que no funcionan :(

    Lo de los “frutos” dependerá de nuestro trabajo, pero hay cosas que lamentablemente están fuera de nuestro alcance, por ejemplo, subir y arreglar las broken flowers.

    Te mando un abrazo grande.

    Pabloxid.

  12. avatar xopxe Dice:
  13. avatar pabloxid Dice:

    Oh cielos, leoncio..

  14. avatar sumo.uy 2010 | Palmera blog Dice:

    [...] participar nuevamente, en esta oportunidad para hacer una breve presentación sobre el proyecto Aeropónica, de Juan Perazzo y Marcelo Vidal, en el cual yo estuve a cargo del diseño y construcción del [...]

  15. avatar Let’s get physical (computing) « el astronauta Dice:

    [...] Making off de Aeropónica (de Juan Perazzo, Marcelo Vidal y Pablo Gindel) Ivy Noise (de Daniela Di Maro & Roberto [...]

  16. avatar marmota chico Dice:
  17. avatar Da Vinci Dice:

    The GREATEST blog that I have read this month :D

    My Regards,
    Leonardo

  18. avatar Control de Brazo Robotico USB II Dice:

    [...] Aeropónica | Palmera blog [...]

  19. avatar Aeropónica « xKowalski Dice:
  20. avatar Eva Mendez Dice:

    Estaba buscando otra cosa en google y di con tu web. Por cierto muy buenos artículos..

  21. avatar Trey Dice:

    Great job! Slightly reminds me of work done by Philip Beesley!

  22. avatar pabloxid Dice:

    Thank you very much.

    I am amazed with the work of Philip Beesley, did not know him yet.

    Now I’m working for this company http://tangibleinteraction.com/ in Vancouver, which is also dedicated to “media art”, etc.

  23. avatar Ivan Dice:

    Hola me interesa realizar esto, pero de cuantos volts y amp tiene el motorcito que viene en la unidad de cd con la corredera?

  24. avatar pabloxid Dice:

    No sé de cuántos volts será realmente, pero nosotros lo alimentábamos con 12V, y de consumo, no creo que sobrepasara los 500mA.

    Saludos,
    P.G.

  25. avatar Un sólido de Catalán | Palmera blog Dice:

    [...] en sí, es digna de un relato aún más sorprendente de lo que fuera el de la planta del CCE [Aeropónica] en el 2010, o el de Celebra mismo; con situaciones como tener que armar 12 controladores de LED y [...]

RSS alimentación de los comentarios de esta entrada. TrackBack URL

Dejar un comentario