Arduino [Hardware libre para una ciencia comunitaria]
En Tercera Vía, ya hemos tocado el tema de la ciencia comunitaria en un par de notas, primero para señalar los referentes más notables que nos ayudarían a diseñar un modelo de ciencia autogestionada y luego para señalar algunas de las fallas institucionales en la investigación y formación científica en el país. Ahora iniciaremos una serie de artículos y textos que nos ayudarán a definir rutas de trabajo, a partir de tecnología libres, de fácil acceso y con las que podemos construir lo que nuestra imaginación dicte.
Iniciaremos esta tentativa revisando el interesante proyecto Arduino, una plataforma electrónica “open-source” o de código abierto cuyos principios son contar con software y hardware fáciles de usar. Con este recurso, no es necesario tener experiencia en robótica o programación para realizar proyectos espectaculares ya que Arduino es un proyecto comunitario y justo a eso nos referimos cuando hablamos de código abierto, no solo a la posibilidad de utilizar libremente sus componentes, sino a la comunidad que lo soporta y se apoya mutuamente liberando proyectos exitosos, resolviendo dudas y empujando la innovación por medio de la práctica directa.
A diferencia con productos similares, los entornos de desarrollo y lenguaje de programación de Arduino, así como las placas en las que se ejecutan han sido desarrollados de la mano, por lo que tenemos asegurada tanto la compatibilidad como la sencillez de desarrollo sobre ellas.
Respecto al Software, otra de las ventajas de Arduino es la facilidad para iniciar en el mundo de la programación con proyectos directos, ya que cuenta con un IDE (Integrated Development Enviroment) para casi todas las plataformas (Windows, Linux, Mac). El IDE es un lugar donde podemos escribir nuestras aplicaciones, descargarlas al Arduino y ejecutarlas o depurarlas desde allí. Al ser libre, también el IDE es gratuito y descargable desde aquí. A partir de la instalación, solo debemos iniciar con la experimentación siguiendo los tutoriales o si se es muy neófito en el tema, se puede hacer gran parte del trabajo simplemente cortando y pegando los códigos que nos interesen. Es importante saber que el microcontrolador en la placa se programa mediante el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing), por lo que aprender el lenguaje de programación es sencillo, sobre todo si ya tienes experiencia en otros lenguajes de programación como C o Java.
Pero el software no es útil si no lo asociamos a un entorno concreto que lo traduzca, estamos acostumbrados a que el Hardware que utilizamos está cerrado y su manipulación es bastante elemental; cuando compramos una computadora solo tenemos la posibilidad de mejorar sus componentes por otros más potentes y esos cambios tienen límites desde el diseño, esto es importante comprenderlo porque esa condición del Hardware comercial nos limita demasiado, nos exige muchos conocimientos para modificarlos y nos impone fechas de consumo (obsolescencia programada). En una plataforma como Arduino hay infinidad de placas basadas en el proyecto comunitario, ya que al ser hardware de código abierto cualquiera puede hacer una placa.
El hardware Arduino más sencillo consiste en una placa con un microcontrolador y una serie de puertos de entrada y salida. Los microcontroladores AVR más usados son el Atmega168, Atmega328, Atmega1280, y Atmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños, aunque también nos encontramos microcontroladores CortexM3 de ARM de 32 bits que coexistirán con las más limitadas, pero también económicas, AVR de 8 bits. ARM y AVR son plataformas diferentes, pero gracias al IDE de Arduino los programas se compilan y luego se ejecutan sin cambios en cualquiera de las plataformas, sin embargo por el momento hay ciertos problemas de compatibilidad de librerías entre plataformas, así que habrá que tenerlo en cuenta a la hora de elegir placa Arduino o esperar una solución comunitaria a dichos problemas.
La diferencia entre los distintos Arduino la encontraremos por un lado en la tensión utilizada en las placas. Generalmente las microcontroladoras con CortexM3 tienen un voltaje de 3,3 voltios, mientras que la mayor parte de las placas con AVR utilizan una tensión de 5 voltios. Esto luego es fundamental para utilizar lógica TTL (frente a lógica CMOS) por ejemplo, lo que abre la posibilidad de utilizar chips baratos y complementar el Arduino con alguna funcionalidad externa. También hay placas que pueden conmutar el voltaje, así que tampoco es un factor determinante para seleccionar una placa u otra. Y, por otra parte, el número de conexiones, procesador utilizado, memoria y el número de entradas y salidas, así como la posibilidad de alimentar distintos elementos desde la propia placa Arduino. Hay placas que incluso no necesitan drivers para Linux o para Mac, como las basadas en el chip ATmega8U2 (un ejemplo es el Tosduino Uno R3), siendo detectado por dichos ordenadores como un periférico más.
Arduino se puede utilizar para desarrollar elementos autónomos o bien para conectarse a otros dispositivos o interactuar con otros programas. Nos sirve tanto para controlar un elemento (por ejemplo un motor que controle el movimiento de una persiana con base en la intensidad de la luz) o bien para enviar la información de una fuente (como puede ser un teclado) a otra (como un ordenador).
Así, podemos catalogar los usos que podemos darle a Arduino en dos grandes grupos; aquellos en los que el Arduino es utilizado como microcontrolador, tiene un programa descargado desde un ordenador y funciona de forma independiente de éste, y controla y alimenta determinados dispositivos y toma decisiones de acuerdo al programa descargado e interactúa con el mundo físico gracias a sensores y actuadores. Un ejemplo sería este uso de Arduino para el control de este agente autónomo que sigue una línea:
O aquellos en los que la placa Arduino hace de interfaz entre un ordenador (como podría ser una Raspberry Pi) u otro dispositivo, para ejecutar una determinada tarea y para traducir dicha tarea en el mundo físico a una acción (actuadores). Y al contrario, gracias a sensores que están conectados a la placa Arduino podemos hacer que el ordenador ejecute determinada acción. Por ejemplo esta placa de Pimoroni para simplificar la creación de una maquinita tipo arcade:
Hay una cantidad considerable de placas Arduino, por lo que si estás interesado en utilizar esta plataforma tendrás que pensar bien cual es el proyecto que quieres emprender. Los hay de todo tipo y por supuesto que son adaptables a necesidades específicas, así que el límite es nuestra imaginación y nuestro presupuesto. Al respecto, cabe destacar que el bajo costo de los productos de Arduino facilitan su apropiación y aplicación para resolver necesidades comunitarias. Con Arduino podemos motorizar huertos urbanos, crear drones económicos, diseñar motores, fabricar prótesis, hackear instrumentos musicales, inventar ploters y demás herramientos para el desarrollo de proyectos gráficos.
Todo esto lo podemos lograr, gracias a los componentes periféricos (shields) que interaccionan con las placas señaladas y que incluyen gran variedad de funciones y aplicaciones: GPS, relojes en tiempo real, conectividad por radio, pantallas táctiles LCD, placas de desarrollo, motores, bocinas y múltiples sensores ambientales.
Para obtener una lista completa lo mejor es ir a la Wikipedia y ver todos los modelos existentes y para simplificar los primeros pasos lo normal es ir hacia una placa sencilla. El modelo más utilizado es el Arduino UNO r3, o al menos el que más se utilizan en proyectos de internet abiertos a la comunidad. Si por el contrario ya se tiene mayor conocimiento o se requiere más potencia, por ejemplo para manipular una cantidad considerable de motores lo mejor es iniciar con un Arduino MEGA r3. Por otro lado, si se quiere fabricar algo que consuma poca energía y que tenga un uso muy específico, nada mejor que optar por una placa mini.
Si lo que se requiere es hacer un proyecto que integre Arduino con Robótica, se pueden adquirir diversos kits de desarrollo con proyectos específicos, educativos y muy ilustrativos. En el Distro Federal, tenemos una buena opción para adquirir lo necesario con los distribuidores de AG Electronica; la variedad de proyectos es inmensa, incluso llegando a la tecnología de impresión en 3D, grabadoras láser, plotters y por supuesto robots. Si queremos simular la programación de un Arduino, podemos hacerlo gracias a VirtualBreadBoard, un entorno de simulación y desarrollo de aplicaciones embebidas para microcontroladores. Es capaz de simular diverso hardware, como Arduino, Netduino, botónes, LCDs, etc.
Dada la enorme cantidad de posiblidades, placas y periféricos, es necesario estudiar un poco antes de invertir en el hardware. Podemos iniciar por familiarizarnos con el IDE y el lenguaje de programación de Arduino, mientras vamos revisando tutoriales e imaginando las aplicaciones que tendría en nuestros propios proyectos personales. Lo más importante es destacar que Arduino es una muestra de que el Internet es una fuente importante de conocimiento y nos obliga a replantearnos nuestra relación con la academia y las rutas tradicionales de aprendizaje, que las tecnologías hoy en día son bastante accesibles, tanto en lo económico como por la cantidad de opciones y lo mejor de todo, que la ciencia está siendo rescatada de los rígidos espacios académicos y aplicada por comunidades independientes en laboratorios libres y autogestionados. En México existen referentes interesantes que iremos revisando en estas entregas y pronto tendremos aplicación de Arduino en proyectos colectivos desde la plataforma Alterius: un laboratorio de autogestión que busca vincular las Artes con las Ciencias en laboratorios independientes.
Actualización: Recomendamos esta charla TED, con Massimo Banzi, uno de los creadores de este increíble proyecto:
Escucha nuestro podcast
- Con información de Xataca.
- Selección, edición y apuntes del Colectivo Alterius.
1 comentario
[…] Arduino [Hardware libre para una ciencia comunitaria] […]