De Single-Boards y microcontroladores
Las promesas del Internet de las cosas han estado por décadas ya a la vuelta de la esquina, y cada vez parecen acercarse más. Imaginar un mundo de sub-artefactos inteligentes (me niego a darle el título de computadora completa a un empaque de leche, el típico ejemplo, por el simple hecho de que un microcontrolador en su empaque me permita leer «Contenido: 32%; Frescura: 4 días») nos ha resultado natural desde hace mucho, posiblemente por la prevalencia de estas ideas en las novelas de ciencia ficción por mucho más tiempo ya.
Como contraejemplo, la adopción, crecimiento y masificación de Internet, y lo fundamental que nos resulta hoy en día para comprender a la sociedad o participar en ella, nos tomó mucho más por sorpresa, y tal vez sea en parte porque era algo prácticamente nunca imaginado. Si revisamos la ciencia ficción entre los años 1950 y 1980, muchos relatos consideran como un hecho casi cotidiano el tema del viaje en el espacio y –dependiendo, claro, de las inclinaciones narrativas del autor– la inteligencia de las cosas que acompañan a los héroes del relato, pero muy frecuentemente las comunicaciones que describen se sienten, a nuestros ojos y a sólo 20 años de la masificación de Internet, como reliquias de tiempos hace mucho desaparecidos. Vamos, se sienten tan anacrónicas como hoy en día un fax, ese mágico e impresionante implemento que a tantos nos maravilló hace no tanto tiempo.
¿Y por qué el contraejemplo? Porque tuvieron que pasar varios años desde el inicio de la masificación del uso de Internet hasta que fuera terreno explorado y comprendido por el ecosistema que hoy la conforma.
Entonces, decíamos, parece que, ahora sí, las cosas (en contraposición de las computadoras, a quienes podemos ver como ciudadanos de pleno derecho en nuestra red de redes) están a punto de estar tan conectadas como nosotros, con nuestros lentos y analógicos cerebros que requieren de prótesis para participar en el intercambio global de información. ¿Por qué ahora sí?
Hay dos factores fundamentales que han demorado esta realidad, fuertemente interrelacionados: Costo y tamaño. El Internet de las cosas requiere que los miles de computadoras y microcontroladores que nos rodeen sean tan pequeños, y que lleven un precio unitario tan marginal, que podamos olvidarnos de ellos, que no nos acordemos de su existencia excepto cuando requiramos pedirles información (o cuando estos determinen, basados en los valores que les configuramos previamente, que ocurrió un evento de nuestro interés). Y en ambos casos, todo apunta a que ahora sí estamos a punto de dar el paso.
Me gustaría hacer predicciones acerca de cómo es que esto nacerá como un nicho, y se masificará tanto o más que lo que ha hecho Internet. Sería muy divertido ahondar en cómo resolver los problemas de autoconfiguración y de uso de ancho de banda cuando tengamos cientos de redes de área personal luchando por intercambiar mensajes de forma coordinada en un mismo vagón de metro, e imaginar las tremendas implicaciones que estos desarrollos tendrán para otra redefinición más de lo que constituye información íntima, privada, personal… Pero mi horóscopo el día de hoy apuntaba a que todas las predicciones que haga serán erróneas.
Entonces, para evitar caer en la futurología, toca la tarea de evitar que el futuro nos tome desprevenidos. ¿Cómo podemos comenzar a desarrollar habilidades y conocer las herramientas que emplearemos para no sólo utilizar, sino que ser partícipes de la creación del Internet de las cosas?
Los invito a voltear hacia el área denominada del Cómputo de ultra-bajo costo (Ultra Low Cost Computing, ULCC). En los últimos años han salido al mercado varios dispositivos con los que podemos irnos acercando a las restricciones y las realidades del entorno con el que trabajaremos. Sugiero mirar, con ojos muy distintos, en dos direcciones fundamentales: Por un lado, hacia el desarrollo de microcontroladores, y por el otro, hacia el desarrollo de computadoras mínimas (Single-board computers). Y en particular, a pesar de que hay ya una amplia gama de productos que cubren este espacio, los productos más definitorios del sector hoy en día son el Arduino y la Raspberry Pi.
Es dificil definir de forma clara y sin ambigüedad el punto en que deja de ser un microcontrolador y comienza a ser una computadora mínima. El punto que empleo es la existencia o falta de puertos para interfaces estándar de entrada/salida: Al trabajar con microcontroladores, en general interactuaremos con ellos exclusivamente a través de una serie de pines individuales que pueden ser programados y manipulados de forma independiente; en una computadora mínima normalmente es posible conectar por lo menos un teclado y un monitor.
Un punto, a mi entender, muy importante en ambos casos es que estas dos principales plataformas son productos desarrollados en primer término con fines educativos — Tema que abordaré brevemente.
La familia Arduino
La familia de microcontroladores Arduino nace desde modelos muy básicos, con 2KB de memoria y basados en un procesador de 8 bits, pero al ser diseños de hardware libre, diferentes diseños han ido apareciendo, incorporando todo tipo de interfaces, procesadores más avanzados y medios de adquisición de datos.
Pero incluso con los diseños más sencillos, ver lo que en unas cuantas tardes de ocio dedicado a programar puede lograr un aficionado a la electrónica es impresionante: Me tocó ver a un pequeño Arduino con 2.5KB de memoria controlando una pantalla de televisión analógica, empleando únicamente dos de sus hilos de salida. Con sólo usar como referencia los relojes que emplea el viejo estándar de televisión NTSC y un poco de ingenio, nos presentaron un pequeño videojuego. No, no utilizando una tarjeta de video, sino que modulando la frecuencia directamente con el procesador.
Los Arduinos se programan por medio de un lenguaje cercanamente derivado de C, que incluye macros facilitando el uso de las características del hardware.
El precio de los Arduino (a partir de unos 20 dólares) puede parecer elevado si consideramos que querremos embeberlo en todo tipo de productos. Pero una vez desarrollado el prototipo, puede contratarse la manufactura a gran escala de un microcontrolador dedicado, todavía más pequeño y más barato que éste. Los Arduinos están basados en arquitecturas de procesadores disponibles comercialmente, y sin duda los veremos poblando a muchas de esas cosas inteligentes conectadas a la red.
Raspberry Pi
La Raspberry Pi ha causado un gran revuelo e interés en la comunidad de aficionados: Es una pequeña computadora, con prestaciones equivalentes a los equipos de escritorio que estaban en el mercado hace 5 o 10 años, a un precio de apenas €30, y con suficientes puertos y capacidad para considerarla una computadora completa. Además, tiene –al igual que los Arduino– una serie de pines independientes para entrada y salida programable, pensados para manejar una serie de sensores y actuadores según lo requiera cada proyecto.
Lo que logra una Raspberry con su humilde procesador ARM y 256 o 512MB de memoria (depende del modelo) es notable: Puede correr una distribución estándar de Linux, con un entorno ligero de escritorio. El sistema Raspbian, promovido por sus desarrolladores, viene cargado con entornos de enseñanza de programación aptos para niños de diferentes edades, y con herramientas de cómputo en general — Navegador, suite de oficina, etc.
En mi opinión, resulta erróneo presentar a la Raspberry como un reemplazo de computadoras estándar para entornos económicamente desfavorecidos. A pesar de haber experiencias como la de un laboratorio de computación en una región rural de Camerún,1 y probablemente haya muchos otros, estas maquinitas están más bien enfocadas a la enseñanza de computación a otro nivel, enfocadas a crear nuevas soluciones, casos de uso aún no cubiertos. Convertir a una Raspberry en una computadora tradicional eleva fuertemente su costo (el impulsor europeo del proyecto de Camerún estima €250).
¿Fines educativos?
Como ya mencionamos, tanto los Arduinos como la Raspberry fueron creadas originalmente con fines educativos. ¿Por qué resulta esto relevante? Más allá de ser ejemplos de desarrollos exitosos de hardware libre, diseñados por una comunidad de entusiastas, un importante punto es que son proyectos que buscan despertar la creatividad, el asombro que muchos de nosotros sentimos hace tantos años, al tener la oportunidad de usar una computadora por primera vez, al darnos cuenta de que en realidad podíamos hacer que un artefacto mágico nos obedeciera.
Obviamente, esa época pasó, y describir la magia de algo hoy tan cotidiano no hace más que constatar la edad del que escribe. Sin embargo, yendo más allá de la importancia de estos dispositivos como parte de una estrategia comercial y de desarrollo de habilidades profesionales, me parece muy importante que estos "bichitos" pueden encender la curiosidad y atraer a nuevos entusiastas a nuestro campo.
El nivel de matriculación en las carreras que conducen a la formación de profesionales capaces de desarrollar sistemas e impulsar las nuevas tecnologías han ido cayendo a nivel mundial. Nuestra profesión ya no es vista como "la carrera del futuro", y cada vez es menor la proporción de jóvenes que deciden dedicarse al apasionante mundo del desarrollo de sistemas. Sin embargo, la ciencia ficción sigue llamando, seguimos queriendo traer la magia que nos prometieron para aquel nebuloso futuro que no termina de llegar. Estos modestos juguetes pueden también representar parte de la respuesta y traer a nuevos entusiastas.
Pies de página:
1 http://www.raspberrypi.org/archives/3634 — Bringing computing to rural Cameroon