You are on page 1of 4

LINUX USER Workspace: Arduino

Introduccin a Arduino

Contacto Fsico
La tarjeta Arduino es ideal para experimentar con ordenadores fsicos. Mostramos como ejemplo cmo crear un simple temporizador. POR DMITRI POPOV
l sitio web del proyecto describe a Arduino como una plataforma electrnica abierta para la creacin de prototipos basada en software y hardware flexibles y fciles de usar, lo cual no suena muy excitante. A pesar de ello, esta diminuta y barata plataforma nos permite construir todo tipo de proyectos increbles y sin la necesidad de saber soldar. Arduino [1] es bsicamente una tarjeta que puede ser programada para controlar diferentes actuadores (motores, luces, etc.) segn la entrada que recibe de sensores conectados a ella. Prcticamente cualquier sensor puede conectarse a la tarjeta/placa Arduino una fotoresistencia, un sensor de movimiento, un sensor de temperatura o un sensor de presin y se puede programar el microcontrolar de a bordo para llevar a cabo distintas acciones con los actuadores conectados a los pines digitales de salida de la tarjeta.

La parte de programacin se lleva a cabo en el entorno de desarrollo integrado (IDE) de Arduino, el cual usa un lenguaje de programacin basado en Processing [2] relativamente fcil de aprender. De modo que, an sin tener ninguna experiencia en programacin, podemos aprender rpidamente lo bsico. La seccin Referencia del sitio web de Arduino contiene una detallada referencia del lenguaje para poder comenzar, pudindose usar la versin PDF libre del Arduino Programming Notebook [3] como otra referencia rpida y prctica. Los programas de Arduino reciben el nombre de bocetos, y podemos escribir, depurar y cargarlos a la tarjeta usando el entorno de desarrollo grfico. Arduino se desarroll como una solucin para introducir a la gente en el mundo de la computacin fsica (creacin de sistemas fsicos interactivos que pueden detectar y responder al mundo analgico), pero es ms que simplemente una herramienta educativa. Podemos usar la tarjeta para crear todo tipo de soluciones inteligentes, desde una alarma activada por movimiento, hasta un disparador de fotos activado por rayos (de los de rayos y truenos) para nuestra cmara DSLR. Existe la posibilidad de comprar diferentes modelos de Arduino, siendo el ms pequeo tambin el ms barato, y con un coste de unos 30 dlares, de modo que no nos va a costar un ojo de la cara iniciarnos en el excitante mundo de la computacin fsica. Es probable que tambin deseemos aadir a nuestra lista de la compra una placa protoboard, un conjunto de cables puente, un par de LEDs y resistencias. Usando una protoboard, podemos crear proyectos basados en Arduino sin la soldadura de componentes una solucin perfecta para experimentar.

Preparativos
Lo primero es instalar el entorno de desarrollo en nuestro sistema para escribir bocetos y subirlos a Arduino. Si estamos ejecutando Ubuntu o alguna de sus derivadas, instalar el software requerido es tan fcil como ejecutar:
sudo apt-get install arduino

Dmitri Popov es licenciado en Lengua Rusa y en lenguajes de computacin. Ha estado escribiendo sobre Linux y software de cdigo abierto durante aos, y sus artculos han aparecido en revistas y sitios web daneses, britnicos, norteamericanos, alemanes y rusos.

EL AUTOR

Este comando instala el IDE estndar de Arduino escrito en Java (Figura 1). Este

60

Nmero 82

WWW.LINUX- MAGAZINE.ES

Workspace: Arduino LINUX USER

Figura 1: El IDE de Arduino no es una maravilla, pero es utilizable.

IDE sirve, pero no se integra muy bien con el escritorio Linux. Afortunadamente, el proyecto Gnoduino [4] proporciona una alternativa muy eficiente y de peso ligero diseada especficamente para el entorno de escritorio Gnome (Figura 2). Gnoduino ofrece soporte para dilogos nativos y una renderizacin de fuente mejorada, junto con una prctica funcionalidad de numeracin de lneas. Gnoduino est escrito en Python, y los usuarios de Ubuntu pueden instalarlo mediante su PPA dedicada [5] usando los siguientes comandos:
sudo add-apt-repository U ppa:pmjdebruijn/gnoduino-release sudo apt-get update sudo apt-get install goduino

dibujar un esquema Figura 2: Gnoduino proporciona una alternativa muy lograda al IDE para usarlo como estndar de Arduino. referencia. Aunque podemos usar papel y lpiz, existe una no requiere instalacin. Para hacernos herramienta mejor llamada Fritzing [7]. con la ltima versin, vamos al sitio web Este software ofrece un entorno grfico del proyecto, desempaquetamos el completo para proyectos Arduino, y archivo descargado, y ejecutamos el podemos usarlo para disear trazados de script Bash Fritzing.sh en el directorio placa, esquemas y tarjetas de circuito resultante para iniciar la aplicacin. impresas (PCBs). La vista placa en Fritzing nos permite Usar Fritzing para este simple proyecto crear diseos de placa situando compopuede parecer exagerado, pero cuando nentes en ella y cablendolos (Figura 3). nuestros diseos Arduino sean ms La coleccin central de componentes en avanzados, apreciaremos las capacidala paleta Parts incluye los numerosos des y herramientas de Fritzing. Fritzing componentes esenciales: desde resisten-

A continuacin conectamos la tarjeta Arduino a nuestra mquina, y ya estamos listos para comenzar a trabajar en nuestro primer proyecto. Podemos crear todo tipo de artilugios con Arduino, pero para entender cmo funciona todo, lo ms sensato es empezar por algo simple. De modo que describir cmo crear un temporizador sin lujos para practicar la tcnica Pomodoro [6] de gestin del tiempo. Para este proyecto necesitaremos tres componentes: un LED, una resistencia (cualquiera entre los 200 y 680 ohms) y dos cables conectores. La resistencia es opcional y se utiliza para limitar y prevenir daos al LED.

Esquemas con Fritzing


Antes de colocar los componentes en el protoboard y conectarlos, es buena idea
Figura 3: Fritzing ofrece un entorno grfico para la creacin de diseos para Arduino.

WWW.LINUX- MAGAZINE.ES

Nmero 82

61

LINUX USER Workspace: Arduino

cias e interruptores, hasta LEDs y varios sensores. Fritzing tambin nos permite importar colecciones de componentes de terceros al cubo de componentes. Para hacerlo, elegimos File | Parts Bin | Open y seleccionamos la coleccin que deseemos. Incluso podemos disear nuestros

propios componentes en Fritzing la pgina Creating Custom Parts [8] del sitio web ofrece varios recursos para ayudarnos con esto. Una vez que hayamos situado un componente en la placa, podemos modificar sus propiedades en la paleta Inspector.

Figura 4: Fritzing tambin genera un esquema de cableado basado en el diseo de la placa.

Figura 5: Usando Fritzing podemos disear trazados para PCB.

Por ejemplo, podemos especificar la tolerancia, resistencia y espaciado de pines para resistencias, y color y tamao para LEDs. Para conectar los componentes usando cables conectores, pulsamos con el botn derecho del ratn sobre el socket de la placa deseada, luego arrastramos el ratn al socket de destino mientras mantenemos pulsado el botn derecho del ratn. Despus, podemos cambiar el color del cable aadido en la paleta Inspector para hacer que el diseo de la placa sea ms claro. Por defecto, Fritzing aade cables rectos, lo cual puede ser bastante frustrante cuando se trabaja con diseos complejos. Podemos doblar los cables pulsando la tecla [Ctrl] y cogiendo y arrastrando con el ratn hasta conseguirlo. Mientras trabajamos en el diseo de la placa, Fritzing genera en el fondo un esquema de cableado de nuestro proyecto, que podemos ver cambiando a la vista Schematic (Figura 4). Todas las conexiones entre componentes se consideran provisionales y se muestran como finas lneas, siendo necesario usar el ratn para cablear los componentes. Hacer esto manualmente puede ser un poco (o muy) arduo, especialmente cuando trabajamos en un diseo complejo. Afortunadamente, Fritzing proporciona una buena solucin: La funcionalidad Autoroute puede cablear componentes automticamente para nosotros. Los resultados pueden no ser correctos a veces, pero en la mayora de las ocasiones, la funcionalidad lo hace bien. Adems, podemos ajustar y optimizar el cableado generado automticamente de forma manual si fuera necesario. Fritzing tambin nos permite exportar el esquema de cableado a distintos formatos. Podemos guardarlo como un fichero de imagen con File | Export | As image, que soporta PNG, SVG, PDF y otros formatos. Tambin podemos usar File | Export | List of parts (Bill of Materials) para generar una lista de la compra bien formateada de todos los componentes usados en el proyecto. Por si esto no fuera suficiente, podemos usar Fritzing para disear un PCB para nuestro proyecto. De esta manera, podemos convertir nuestro prototipo en un producto de verdad o en una placa Arduino (Figura 5). Mejor an: el servicio Fritzing Fab [9] puede fabricar PCBs

62

Nmero 82

WWW.LINUX- MAGAZINE.ES

Workspace: Arduino LINUX USER

listos para usar basados en nuestro diseo. Por ahora, sin embargo, nos limitaremos a usar Fritzing para crear un diseo de placa para el temporizador similar al que aparece en la Figura 3. Luego, podemos usarlo como una gua para cablear los componentes en un placa real y conectarlos a Arduino para completar el proyecto de hardware.

Escribir un Boceto
El paso siguiente es escribir un esquema para el temporizador. Necesitamos programar Arduino para poner en marcha un LED cada 25 minutos para que nos indique que es hora de descansar. Para hacer que las cosas sean un poco ms interesantes, podemos hacer que el LED parpadee cinco veces antes de que se ponga en marcha para atraer nuestra atencin. Para comenzar, ponemos en marcha el IDE Arduino o Gnoduino e introducimos el boceto del Listado 1. Cmo funciona este esquema? Como cualquier programa o script, el primer asunto es definir variables para usarlas en el programa. En este caso, la declaracin int var = 0 define la variable var (la cual actuar como un contador) y pone su valor a cero. Adicionalmente, cualquier boceto Arduino ha de contener dos bloques. La funcin setup() contiene el cdigo que se ha de ejecutar una vez al principio del programa, mientras que la funcin loop() contiene el programa en s, el cual se ejecuta una y otra vez. A diferencia de un ordenador regular, Arduino no puede ejecutar mltiples programas, y los programas no pueden cerrarse. Cuando encendemos Arduino, ste ejecuta el cdigo, detenindose solamente cuando desenchufamos la tarjeta. En este caso, la funcin setup() inicializa

el pin digital nmero 13 como salida usando la declaracin pinMode(13, OUTPUT). Esto permite al boceto controlar el LED conectado al pin 13. La funcin loop() contiene el programa en s, el cual se puede dividir en ms o menos dos partes. La primera parte es el bucle while, que enciende el LED (la instruccin digitalWrite(13, HIGH), espera un segundo (instruccin delay (1000)), apaga el LED (instruccin digitalWrite(13, LOW)), espera otro segundo y luego incrementa el contador en 1 (instruccin var++). El bucle se ejecuta hasta que el valor de var es 5 (lo que significa que el LED parpadea cinco veces). Una vez que el valor de var alcanza 5, entra en accin la segunda parte del programa, enciende el LED, espera 15 segundos, apaga el LED y espera durante 25 minutos. Para comprobar si el boceto contiene errores, pulsamos el botn Verify en el IDE de Arduino. Si todo ha ido sin problemas, deberemos ver Binary scheme size: 1086 bytes (of a 32256 mazimum) (el tamao del boceto puede variar) en el panel de la consola. En caso contrario, veremos un mensaje de aviso indicando los errores en el boceto. Finalmente, podemos pulsar Upload para cargar el boceto en Arduino. La tarjeta comenzar a ejecutar el cdigo inmediatamente. Felicidades, nuestro primer proyecto Arduino est funcionando.

Listado 1: Boceto de Temporizador


01 int var = 0; 02 03 void setup() { 04 pinMode(13, OUTPUT); 05 } 06 07 void loop() { 08 while(var < 5){ 09 digitalWrite(13, HIGH); 10 delay(1000); 11 digitalWrite(13, LOW); 12 delay(1000); 13 var++; 14 } 15 digitalWrite(13, HIGH); 16 delay(15000); 17 var = 0; 18 digitalWrite(13, LOW); 19 delay(1500000); 20 }

segundo LED, podemos conectar un altavoz y programar Arduino para que reproduzca un tono o una simple meloda. En resumen, tenemos muchas opciones para ajustar y mejorar este simple temporizador. Y, una vez que hayamos dominado lo bsico, podemos trabajar en proyectos basados en Arduino ms complejos y excitantes. I

Ms All
Aunque el temporizador basado en Arduino mostrado aqu es bastante simple, podemos mejorarlo. Por ejemplo, aadiendo un segundo LED al pin digital 9 y volviendo a escribir el esquema de modo que haga que el primer LED parpadee antes de encender el segundo LED (vase el Listado 2). En vez de usar un

RECURSOS
[1] Sitio web oficial de Arduino en espaol: http://www.arduino.cc/es/ [2] Lenguaje de programacin de proceso: http://processing.org [3] Notebook de programacin de Arduino: http://www.lulu.com/ product/file-download/ arduino-programming-notebook/ 3524028 [4] Gnoduino: http://gnome.eu.org/evo/ index.php/Gnoduino [5] PPA Gnoduino: http://launchpad.net/ ~pmjdebruijn/+archive/ gnoduino-release [6] Tcnica Pomodoro: http://www. pomodorotechnique.com [7] Fritzing: http://fritzing.org [8] Partes a medida de Fritzing: http://fritzing.org/learning/tutorials/ creating-custom-parts [9] Fritzing Fab: http://fab.fritzing.org/fritzing-fab

Listado 2 :Boceto de Temporizador Mejorado


01 int var = 0; 02 03 void setup() { 04 pinMode(9, OUTPUT); 05 pinMode(13, OUTPUT); 06 } 07 08 void loop() { 09 while(var < 5){ 10 digitalWrite(13, HIGH); 11 delay(1000); 12 digitalWrite(13, LOW); 13 delay(1000); 14 var++; 15 } 16 digitalWrite(9, HIGH); 17 delay(15000); 18 var = 0; 19 digitalWrite(9, LOW); 20 delay(1500000); 21 }

WWW.LINUX- MAGAZINE.ES

Nmero 82

63

You might also like