TECNOLOGÍA - MICROTUTORIALES: ARDUINO
DATOS PUBLICACIÓN PRESENTACIÓN
16-Febrero 2013. Original para Mundo Azul
ABSTRACT
Arduino es, probablemente, la plataforma más popular del ámbito del hardware libre. En esta plataforma se combinan el hardware propiamente dicho, placas y shields, con el software (sketches) y su entorno de desarrollo. Este microtutorial repasa los conceptos fundamentales de Arduino y sus elementos constituyentes.
TUTORIAL
Arduino

Hardware libre
Arduino es, quizá, la iniciativa más conocida dentro de un movimiento mucho más amplio que podríamos denominar el movimiento del hardware libre o del hardware abierto y que surge algo así como una traslación al mundo del hardware del exitoso concepto del software libre o software abierto.

La esencia de estos movimientos de ‘tecnología libre’ es la creación comunidades que de forma colaborativa, construyen soluciones y las comparten con el resto de la comunidad permitiendo, sin ninguna limitación o con limitaciones muy laxas y sin contrapartida económica, el uso de esa tecnología, su reutilización y su modificación.

Pero ¿cómo se puede compartir hardware?

En el caso del hardware, dos son realmente los elementos que se pueden compartir y reutilizar:
  • Diseños: los diseños y especificaciones, típicamente en forma de ficheros procesables por una solución CAD (Computer Aided Design), de circuitos, placas, etc. De esta forma, cualquiera con los medios necesarios para la construcción de placas puede, simplemente, utilizar el diseño de terceros. En casos como por ejemplo es Arduino, además de ser libres los diseños, se ofrece la posibilidad de adquirir las placas ya construidas.
  • Software: a pesar de que hablamos del hardware libre, en el ámbito de la electrónica digital donde existen elementos inteligentes programables como microprocesadores o microcontroladores, una parte muy importante del diseño de placas es el software de control. Por ello, otro elemento muy fundamental del hardware libre es la compartición de ese software que actúa sobre unas placas o microcontroladores definidos.
Historia de Arduino
Arduino, probablemente la más conocida plataforma de hardware libre, surge en 2005 en el Instituto Italiano de Diseño Interactivo Ivrea.

Inicialmente nace como un proyecto de carácter educativo, para satisfacer la necesidad de disponer de un dispositivo de bajo coste e independiente de sistema operativo para ser utilizado en clases.

Massimo Banzi, con la ayuda del español David Cuartielles, hicieron el primer diseño del hardware. Poco después se les unió David Mellis para aportar el software y, finalmente, se integraron Gianluca Martino que realizaba las placas y Tom Igoe.

El software de Arduino se apoya en Wiring el cual, a su vez, parte del Lenguaje Processing. La historia es como sigue: Processing es una plataforma (lenguaje más entorno de desarrollo) basada en Java y surgida en 2001 de los trabajos de Casey Reas y Benjamin Fry, y orientada a comunidades de diseño visual y arte electrónico.

En la época en que surgió Arduino, Casey Reas desarrollaba su labor en El Instituto Italiano para el Diseño Interactivo Ivrea donde coincidió con Massimo Banzi. Un estudiante, el colombiano Hernando Barragán, había realizado su tesis sobre estos conceptos y, en concreto, había creado Wiring, apoyándose en Processing, como una plataforma de desarrollo para entornos hardware.

El software de Arduino es una implementación de Wiring, el cual surge de Processing que, a su vez, es una extensión de Java con un IDE (Integrated Development Environment) propio.

Elementos de Arduino
Los elementos fundamentales de Arduino son tres:
  • Las placas: placas de electrónica digital que, fundamentalmente, aportan una capacidades de entrada / salida tanto analógica como digital, y capacidades adicionales de procesamiento aportadas por un microcontrolador.
  • Software y entorno de desarrollo: un lenguaje y un entorno de desarrollo para crear el software que ejecutará el microcontrolador, aportando la lógica del equipo.
  • Shields: que son extensiones hardware a las placas base de Arduino.
Veamos algo más sobre cada uno de estos elementos.

Las placas. Arduino UNO

El elemento hardware central de Arduino son las placas (boards).

Las placas no son más que un equipamiento hardware digital, casi un computador muy sencillo, con capacidades para interactuar con el entorno, con sensores, activadores y transductores, y con posibilidades de programación.

En la breve historia de Arduino han existido varias placas diferentes como las denominadas Diecimila, Duemilanove o Mega. En el momento de escribir este microtutorial, la placa dominante es la denominada UNO.

La placa UNO incluye, entre otras cosas:
  • Un microcontrolador ATmega328.
  • 6 pines de entrada analógica.
  • 14 pines para entrada / salida digital. De estos 14 pìnes, existen seis que, usando la técnica denominada PWM (Pulse Width Modulation) se pueden convertir en salidas analógicas.
  • Un puerto USB utilizado fundamentalmente para conectar la placa al ordenador y realizar la carga y depuración de software.
  • Un botón de ‘reset’.
Las placas de Arduino pueden ser construidas utilizando los diseños disponibles pero también pueden ser adquiridas en línea ya construidas en store.arduino.cc

El software y entorno de desarrollo

El lenguaje de Arduino es, como se ha explicado, Wiring, una derivación de Java, por lo que su sintaxis básica es la de este conocido lenguaje, aunque añadiendo algunas funciones propias, una estructura de programa diferente y un muy sencillo entorno de desarrollo propio.

Los programas de Arduino se denominan ‘sketches’ y tienen siempre dos bloques fundamentales:
  • Inicialización: que se incluye en una función siempre existente denominada setup(). Todo el código de inicialización de la placa debe incluirse en esa función.
  • Funcionamiento permanente. Una vez inicializada, la placa ejecuta de forma repetitiva y sin fin el código contenido en una función denominada loop().
El lenguaje de Arduino es muy sencillo, e incluye los siguientes elementos:
  • Variables y constantes
  • Operadores: aritméticos, booleanos, de comparación y de composición.
  • Estructuras de control: condiciones y bucles
  • Funciones, que podríamos agrupar en varios bloques como son:
    • Gestión de entradas / salidas digitales y analógicas
    • Temporización
    • Comunicación por puerto serie
    • Funciones matemáticas
El entorno de desarrollo propiamente dicho, el IDE, es también muy sencillo y está pensado para ser ejecutado en un ordenador y en diferentes plataformas: Windows, Linux, Mac OS, etc. Los sketches desarrollados se cargan luego en el microcontrolador utilizando el puerto USB. El IDE ofrece algunas facilidades adicionales, por ejemplo, para depuración de programas.

Como apoyo para entender el aspecto de un sketch de Arduino se muestra a continuación en sketch que enciende un LED situado en el pin 13. Este programa viene a ser el ‘Hola mundo’ de Arduino:

#define LED_PIN 13

void setup () {
pinMode (LED_PIN, OUTPUT);   // establece el pin 13 como salida digital
}


void loop () {
digitalWrite (LED_PIN, HIGH);  // enciende el LED
delay (1000);                           // espera un segundo (1000 milisegundos)
digitalWrite (LED_PIN, LOW);  // apaga el LED
delay (1000);                           // espera un segundo
}

El IDE de Arduino puede ser descargado en línea en www.arduino.cc

Los shields

Los shields son extensiones en forma de placas para labores concretas y que se encajan sobre una placa original de Arduino.

Actualmente existen shields, por ejemplo, para:
  • Control de motores
  • Conexión Ethernet
  • Conexión inalámbrica (WiFi)
Los shields pueden, al igual que las placas, ser adquiridos en línea en store.arduino.cc

Operativa
Tras conocer los elementos, podemos ahora entender cómo funciona el conjunto, tal y como se esquematiza en la siguiente figura:



Arduino funciona, fundamentalmente, como una suerte de intermediario entre unas entradas del mundo exterior procedentes de sensores, y unas salidas que irán a activadores o transductores para actuar sobre ese mundo exterior. La lógica esas interacciones se gestionan desde el microcontrolador que ejecuta un programa, un sketch, desarrollado mediante el IDE.

Para realizar un proyecto Arduino tenemos, pues que hacer lo siguiente.
  • Diseñar e implementar la electrónica para la adquisición de señales del exterior.
  • Diseñar e implementar la electrónica para actuación en el exterior
  • Desarrollar y cargar en la placa el software (el ‘sketch’) de control.
De cara a diseñar la electrónica de sensores y activadores suele ser útil el uso de una placa de pruebas que permite de forma sencilla probar la inclusión de componentes y su conexionado. También son de utilidad en esta labor los shields que aportan soluciones ya construidas e, incluso, el Shield denominado Proto está orientado, precisamente, a facilitar la implementación de circuitos ‘ad-hoc’.

El software que constituye los sketches se desarrolla, como hemos visto, con el IDE:

La comunidad Arduino
Como todas las iniciativas ‘libres’ Arduino se construye alrededor de una comunidad que comparte ideas, diseños y soltare.

El sitio web de la comunidad es www.arduino.cc y en él existen foros de discusión, una Wiki (Playground) y un blog.

Conclusiones
Arduino es una implementación del concepto de hardware libre que ataca dos partes: el hardware propiamente dicho (mediante el diseño y construcción de placas y shields) y el software mediante la utilización de un lenguaje y un IDE propios (aunque fuertemente entroncados con Java y C++). La apertura se implementa por la compartición de diseños en lo que a hardware se refiere, y por la gratuidad del entorno de desarrollo y por la compartición en lo relativo a software.

Quizá por su carácter pionero, Arduino es, probablemente, la plataforma más popular de hardware libre.

Referencias

[1] “Introducción a Arduino”. Massimo Banzi. Editorial O’Reilly / Anaya Multimedia 2012. ISBN 978-84-415-3177-2..

LICENCIA
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.