Estado y consideraciones del Software original

Este proyecto está inspirado en el proyecto Freedom Toaster original pero el estado actual de dicho proyecto es confuso, pues no se muestran actualizaciones desde hace más de 3 años y 15 semanas (basado en la actividad de los foros), y la última noticia también ronda esa fecha. Además, existen otras muestras de abandono del proyecto como una página oficial llena de vínculos rotos, información inválida o desactualizada. Para muestra un botón, en la sección sobre el software, indican que la rama de desarrollo es encuentra en:

svn://edison.tsf.org.za/freedomtoaster/trunk

El dominio corresponde a la Shuttleworth Foundation, y “edison” habrá trabajado ahí… sin embargo, parece que ya no :P, pues ese repositorio ya no existe. Además, el documento de instalación muestra dos opciones:

  1. Instalación por medio de un script en Bash (link, todavía disponible el 27 de febrero de 2010). Este script en Bash de 272 líneas está hardcoded al repositorio que mencioné anteriormente, a archivos en la red que ya no están disponibles, a bibliotecas viejas de ubuntu 5.10 y a versiones muy viejas de ciertos otros programas (p.e Firefox 1.5).
  2. Por medio de un “Freedom Toaster Install Pack”, que sigo sin conocer donde puede descargarse, pues el vínculo suministrado (http://www.freedomtoaster.org/installpack) es un vínculo roto (error 404).

Pensamos que el código fuente del FT original se había perdido en la historia, sin embargo, una búsqueda en Google demostró que todavía existen algunas ramas del software en el sitio de Launchpad (osea, dejaron de usar Subversion como sistema de control de versiones y se pasaron a Bazaar):

https://code.launchpad.net/ftsoftware

Sin embargo, el último commit (el 468) a la rama principal fue realizado el 30-04-2007 por Stefano Rivera, pero además, el último commit a la sección de código data del 22-09-2005. Osea, estamos hablando de un software con 5 años de no ser mantenido.

Esta situación tiene implicaciones importantes, nos enfrentamos a un software con las siguientes características:

  • Desactualizado: antiguo (2005), no mantenido (5 años sin actualización), que depende de bibliotecas antiguas, que sólo puede ser instalado en un sistema antiguo (Ubuntu 5.10), que utiliza software antiguo (Firefox 1.5, otros), esto con todas las implicaciones de seguridad y estabilidad.
  • No es instalable: en el estado actual el script de instalación es inservible.
  • Indocumentado: no existe documentación sobre la arquitectura del mismo, cómo está construido, por lo que adaptarlo, actualizarlo o extenderlo es complicado.
  • Contenido obsoleto: El contenido sigue apuntando a versiones viejas de distribuciones de GNU/Linux y proyectos desaparecidos (p.e Firemonger, Caldera Linux).

Las opciones son claras:

  • Reacondicionar el software, actualizarlo y hacerlo instalable en un sistema moderno.
  • Crear un software propio desde cero.

En la reunión del equipo de trabajo que se realizó el jueves en la tarde todavía no se había decidido del todo que camino tomaríamos, sin embargo surgieron dos inquietudes adicionales:

  1. Ninguno de los dos programadores del equipo se sentía a gusto con Perl ni tienen mucha práctica con el mismo.
  2. La interfaz gráfica del software no refleja las consideraciones actuales de diseño de una interfaz gráfica de usuario moderna, ni en apariencia ni en usabilidad:

Por lo que se decidió crear un software desde cero con las características y expectativas del proyecto. Entre algunas consideraciones sobre el mismo (luego escribiremos sobre esto) deseamos crear una interfaz atractiva, moderna y amigable, por lo que seguimos buscando e investigando sobre la plataforma con la cual lo construiremos. Aunque puede ser que la hayamos encontrado.

Sobre Arduino y PWM

En la entrada anterior mencioné al Arduino y la Modulación por Ancho de Pulso (Pulse With Modulation, PWM) que serán utilizados en el proyecto. El Arduino es un dispositivo de hardware y una plataforma de software:

  • El dispositivo de hardware es una placa de circuitos que incluye un microcontrolador y una interfaz de comunicación con la computadora vía USB.
  • La plataforma de software incluye un entorno integrado de desarrollo (IDE, basado en el proyecto Processing), un lenguaje (el lenguaje Arduino, similar a C++), un compilador (avr-gcc) y una biblioteca especializada.

Este conjunto puede utilizarse para crear dispositivos físicos desde un alto nivel y con una gran abstracción de los detalles físicos. Al final, lo que utilizas es un tarjeta con simples entradas y salidas.

El proyecto Arduino es un proyecto Open Hardware, y posee distintas versiones del Arduino para distintas necesidades. Los Arduinos oficiales pueden encontrarlos aquí, aunque debido a su naturaleza abierta, existen muchos clones y adaptaciones no oficiales, como el Sanguino o el Illuminato. Además, el Arduino está diseñado para ser modular, por lo que se le pueden colocar los llamados Shields o escudos para adaptarle distintas funcionalidades (Ethernet, Data Logging, GPS y un gran etc). El que nos interesa a nosotros es el Arduino Duemilanove, pues es el que utilizaremos para crear el controlador de iluminación dentro del Flame Of Knowledge:

Ahora, este placa tiene 6 salidas con la capacidad de generar PWM. La Modulación por Ancho de Pulso, Pulse Width Modulation, PWM, es un técnica para obtener resultados análogos por medios digitales. Se utiliza control digital para generar una onda cuadrada, es decir, una señal que alterna entre encendido y apagado. Este patrón de encendido-apagado puede simular tensiones entre completamente encendido (5 voltios) y apagado (0 voltios) al cambiar la porción del tiempo que la señal se encuentra encendida en relación al tiempo en que se encuentra apagada. La duración del “tiempo encendido” es llamado el ancho del pulso. Para obtener valores análogos variables, se debe cambiar, o modular, ese ancho del pulso. Si se repite este patrón encendido-apagado lo suficientemente rápido con, por ejemplo, una LED, el resultado es como si la señal fuera una tensión comprendida entre 0 y 5 voltios controlando el brillo del LED.

En el siguiente gráfico la líneas verdes representan un periodo regular de tiempo. Esta duración o periodo es inverso a la frecuencia del PWM. En otras palabras, con el PWM del Arduino corriendo a una frecuencia de alrededor de 500Hz, las líneas verdes miden/duran 2 milisegundos cada una. El lenguaje Arduino posee una función llamada analogWrite() que permite controlar el ciclo del PWM con un valor de un byte, es decir, entre 0 y 255. Por lo tanto, un llamada de analogWrite(255) produce un ciclo continuo (es decir, siempre encendido), una llamada de analogWrite(127) genera un ancho de pulso de 50% (encendido la mitad del tiempo), etc.

Decoración luminosa en la cima

Como se pudo observar en el prototipo del diseño, la cima de la pirámide contará con una decoración luminosa de alta intensidad. Aunque en parte me recuerda al Hotel Luxor de la Vegas, Nevada, la verdad es que la inspiración es ajena.. ajá 😛

Para ello estuvimos buscando LEDs de alta luminosidad, pero en serio. Además, de ser posible, deseamos un sistema RGB y poder variar la intensidad de las LEDs (dimming).

Pudimos encontrar este módulo RGB, que consiste en 3 LEDs de alta luminosidad, 1watt por canal, 350mA pico por canal:

Además, la intensidad de las LEDs puede variarse utilizando la Modulación por Ancho de Pulso (Pulse With Modulation, PWM) como se muestra en el vídeo a continuación:

El Arduino Duemilanove, el controlador que utilizaremos para las luces (luego escribiré sobre este), posee 6 salidas con capacidad PWM. Sin embargo se puede extender las salidas con un circuito adicional que utilice chip TLC5940 como lo explica este vínculo.

Si asumimos que la resolución de 10bits (1024 valores, aunque el software y el sistema sólo permite usar 8bits) del PWM del Arduino consisten en pasos de color o intensidad (no del todo cierto), se podría tener un sistema RGB de aproximadamente esa cantidad de bits. Es decir, 255*255*255 = 16 581 375 colores, 16 millones de colores:

Se espera un funcionamiento y rango de color similar al mostrado en el siguiente vídeo, pero con al menos un tercio de la luminosidad mostrada en el mismo, ya que en este utilizan LEDs de 3watts por canal:

Flujo de aire en la torre y disipación de calor

En el prototipo anterior se puede observar la fachada del Flame Of Knowledge (FoK). Aunque todavía se encuentra en diseño las placas de los 4 niveles interiores que serán construidos en aluminio hemos estado considerando la disipación del calor generado por los componentes internos.

Dado que el sistema computacional es un sistema standard y que además posee tarjeta de vídeo integrada, sabemos que el principal productor de calor es el procesador.

El armazón del FoK está diseñado en aluminio, y todos los componentes están fijados a este. Esto permite que la armazón sea un gran heatsink, o en español, disipador de calor.

  • En el primer nivel se ubica la fuente de poder, el subwoofer y los quemadores. La fuente de poder suele generar algo de calor, sin embargo cuenta con su propio ventilador incorporado, por lo que sólo hay que garantizar la entrada de aire. El subwoofer no genera calor relevante. Los quemadores generan calor durante un periodo intenso de actividad, sin embargo se considera que el hecho de estar fijados directamente a la placa base de la armazón de aluminio les permitiría distribuir eficientemente el calor. Esto se corroborará o refutará durante el periodo de la pruebas en el laboratorio.
  • En el segundo nivel se encuentra la principal fuente generadora de calor: la tarjeta madre, un disco duro (costado inferior del nivel3, osea, “colgando”) y el procesador. Por ello, realizamos el siguiente esquema ilustrando el flujo de aire en este nivel de la torre. Se tiene dos ventiladores a cada costado del FoK en configuración push-pull, es decir, un ventilador empuja aire y el otro lo retira. Además, se encuentra en consideración agregar un ventilador especializado para el procesador (ejemplo) en lugar del simple disipador de calor. Pueden encontrar la última versión de este archivo en el repositorio de versiones aquí, a continuación puede observar un renderizado a 30ppp:

  • El tercer nivel se encuentra el controlador del sistema de luces, un dispositivo Arduino, que no genera calor a niveles relevantes.
  • En el último piso se encuentra la LED tricolor de alta luminosidad. Este LED genera calor, tanto que se vende únicamente con su propio heatsink. Este heatsink será fijado directamente a la armazón de aluminio de la estructura y con pasta térmica para garantizar la transferencia de calor. En todo caso, monitorearemos el calor generado en este punto durante el periodo de pruebas.

Primer prototipo del diseño de la torre

Ya se encuentra disponible en el repositorio de archivos el primer prototipo del diseño de la torre. Este diseño es sólo una prueba de concepto y está sujeto a cambios.

Esta versión del diseño se encuentra bastante completa y con ella se logra hacer una buena idea general del producto, se puede ver la organización general de los elementos, el diseño de las fachadas, la relación de tamaño con un ser humano. Sin embargo, los tamaños de las caras, los ángulos y los espacios son aproximados y lejos de ser una medida exacta, esto dado que desconocemos el tamaño total de la pantalla táctil, elemento que determina en gran medida el tamaño final de la fachada frontal y por ende de las demás fachadas, los ángulos y el volumen de la torre.

Aquí pueden encontrar un renderizado a 30 ppp:

Pueden encontrar la última versión del diseño aquí. Este diseño fue realizado con Inkscape, por lo que las fuentes se encuentran en formato SVG, se puede descargar Inkscape desde el sitio oficial: http://www.inkscape.org/ . Pronto escribiremos sobre el Software de desarrollo utilizado, evidentemente libre.

Nombre y logo del producto

Este proyecto de construcción es llamado “CSL-TEC Freedom Toaster”, refiriendonos a la construcción de un FT con los parámetros e interpretación de la CSL-TEC. Sin embargo, el producto perse, la máquina, tiene nombre:

Flame Of Knowledge

Que en español vendría a ser la “Llama Del Conocimiento”, primeramente haciendo alusión al fuego, típico de un quemador, pero también haciendo alusión al conocimiento que este alberga en su interior. Además, hace un bonita alusión a la historia de Prometeo de la mitología griega, quien entrega la llama del conocimiento a los humanos, así como el Software Libre y el Conocimiento Libre quieren difundir el conocimiento a todas las personas, independientemente de su estado socio-económico, nivel educativo, oportunidades o acceso.

Para ello hemos ideado un simple logo:

Y claramente, de poder grabar motivos con laser en las fachadas de acrílicos estos serían alusivos al fuego.

Consideraciones de diseño de la torre

Esta construcción de un Freedom Toaster es muy particular, pues debe cumplir requisitos únicos en el contexto de las comunidades de SL en Costa Rica:

  • Debe servir de máquina duplicadora de discos, para la reproducción masiva de discos durante las actividades de difusión.
  • También, debe servir de quiosco informativo, donde se pueda conocer y quemar paquetes de Software Libre.
  • Debe ser un sistema compacto, autocontenido y fácil de transportar de una actividad a otra.
  • Debe servir de pieza de exposición y ser de diseño llamativo.
  • Debe ser fácil e intuitivo de usar.

Dados estos requisitos, se llegó a las siguientes decisiones de diseño:

  • La forma de la torre será piramidal de base cuadrada pues ofrece una inclinación en las caras expuestas al público de forma que el ángulo de visión y el uso de la máquina sea más natural. Además, es una forma cerrada, muy estable y sólida, que permite contener el equipo en su interior.
  • La fachada se construirá en plástico acrílico transparente (pelimetil metacrilato), con el fin de poder mostrar sus componentes internos para propósitos educativos, así como poder decorar su interior con LEDs.
  • La armazón será construida con vigas y láminas de aluminio, por ser una material resistente, liviano y versátil.
  • Con el fin de construir un equipo autocontenido, de una sola pieza, intuitivo y fácil de usar, se decidió acoplar una pantalla sensible al tacto en una cara de la pirámide.  Además, la torre tendrá que contener todo el equipo necesario: audio, vídeo, procesamiento, quemadores, iluminación, almacenamiento, etc.
  • Dado que es necesaria la clonación masiva de discos, el equipo contará con 4 quemadores de CD/DVD.