Programando el Hardware (II): Arduino y el Hardware Abierto

Hace un par de semanas introdujimos el mundo de la programación Hardware, con las FPGA y los ASIC. Como ya dije, esas herramientas están muy enfocadas al desarrollo hardware puro, en otras palabras, se programan en bajo nivel y se crean nuevos dispositivos hardware específicos, siendo las FPGA un sistema para pruebas. Para un uso más “mundano” o “de andar por casa” existen otras placas, como las llamadas Arduino.

Arduino es una plataforma abierta y sencilla, tanto a nivel de programación como de hardware, enfocada a hacer pruebas y ejemplos simples, permitiendo crear lo que se desea en poco (muy poco) tiempo respecto a las FPGA. Su mayor inconveniente es que por tanto no están diseñadas para hacer diseños robustos hardware y en caso de querer profundizar en la placa más de lo debido la programación puede convertirse en algo más complejo que las anteriores.

Arduino

¿Cómo Funciona?

Arduino oculta casi toda la capa hardware al programador o diseñador. Éste no ha de preocuparse de voltajes o conexiones entre pines, solamente ha de programar en un lenguaje de “alto nivel”. Respecto a la parte hardware la placa tiene sus estándares, como son el uso de procesadores Atmel AVR (de 8 bits) y conexiones externas como leds, pines de entrada lógicos (1 o 0) y alguno de entrada analógico. También incluyen algún sistema de programación de la placa, ya sea USB, puerto paralelo o Bluetooth.

Es por estas especificaciones tan “restrictivas” (desde el punto de vista de un diseñador hardware) que su desarrollo software es sencillo, pero no abre la puerta a creaciones complejas.

Hay que destacar que se trata por tanto de una placa con un procesador que ejecutará instrucciones, al más puro estilo de los procesadores normales, y no un conjunto de transistores con la posibilidad de enlazarse entre si a gusto del diseñador.

Como programarla

Hello World en Arduino
Hello World en Arduino

Arduino dispone de un lenguaje de programación especifico, llamado Arduino también, muy similar a C/C++ (con la misma sintaxis) y algunas funciones que encapsulan todo el sistema hardware. Un ejemplo es el conjunto de funciones pinMode(), digitalWrite() y digitalRead(), que indican qué modo tiene el pin (entrada o salida), escribe en él o lee en él. Como se puede ver es bastante más sencillo y con una mentalidad “software”.

Hay dos funciones clave a tener en cuenta cuando se desarrolla en Arduino. Por una parte está setup(), que se ejecutará al inicio, una única vez, sirviendo para especificar las conexiones y los modos de los pines e incluso los voltajes (si se llega a dicho nivel). Por otro lado está loop() que se podría traducir como el “main” del programa, con la salvedad de que como su nombre indica se ejecutará indefinidamente. En este apartado se hace todo el juego de tiempos, luces, y cálculos que se crean oportunos.

En Arduino actualmente existen varias decenas de librerías creadas por la comunidad para facilitar los periféricos, como puede ser las conexiones Ethernet o Bluetooth. Una vez más las funciones son muy sencillas y cómodas, agilizando el proceso de creación de programas.

Uso actual

Actualmente arduino es la herramienta básica para dotar a los ordenadores de sensores externos. Aunque se puede utilizar la placa separado del PC lo normal es tenerla conectada y utilizarla como nuevos puertos de entrada y salida (Sensores de temperatura, luz, motores que mover o incluso puertos ethernet para agilizar la velocidad de la placa estándar del PC.) Podríamos decir que algunos usos actuales son muy cercanos a la robótica.

Su facilidad de ampliación y su sistema Open-Source lo convierte en una buena placa para cualquier programador. Además la comunidad que está detrás del proyecto permite que día a día salgan nuevos “programas” y “placas” que hacen incluso la vida más cómoda (como es en el caso de la domótica).

Precios

Uno de los puntos clave de Arduino son sus precios. Al tratarse de un procesador estándar y de unos componentes medianamente sencillos podríamos estar hablando de placas por menos de 50€. De hecho la placa más cara no llega a lo 100. Por otro lado al ser un sistema Open-Source hasta en el diseño hardware es posible bajarse los diseños del procesador y modificarlos (u optimizarlos) a gusto del programador.

Es por esto que Arduino puede ser una buena opción para todo aquel que quiera probar con el hardware y parte de robótica a alto nivel.

Conclusiones

Aunque las placas Arduino son muy sencillas los resultados pueden ser sorprendentes. En poco tiempo y con poco coste se puede conseguir dotar al PC de sensores relacionados con la habitación (y por tanto acercar la domótica al usuario). Diseñar un robot sencillo tampoco debería ser dificil, por lo que las placas arduino son herramientas muy versátiles.  Si por el contrario lo que se desea es profundizar y optimizar el hardware (como ya vimos con las FPGA) arduino no es conveniente, una vez más por estar demasiado simplificado.

En las próximas entregas hablaré de la robótica un poco más mostrando ejemplos “baratos” y asequibles para cualquiera que desee iniciarse en el mundillo.

One thought on “Programando el Hardware (II): Arduino y el Hardware Abierto

  1. Pingback: Bitacoras.com

Leave a Reply

Your email address will not be published. Required fields are marked *