Plataforma Arduino – 1. Primeros Pasos

Creado por zako | Creado en Electronica | Creado el 17-06-2008-05-2008

3

Saludos, soy David, aka zako, nuevo colaborador de Yousk, y voy a escribir principalmente sobre “cacharreo”. Para empezar, haré una serie de entregas en formato tutorial sobre la estupenda plataforma Arduino, un proyecto libre para la creación de una plataforma para el prototipado de hardware con microcontroladores. Y bien, ¿que significa todo eso?, empecemos:

Introducción:

Un microcontrolador, es un circuito integrado (chip) que auna las principales partes de una computadora, CPU, memoria, y entrada/salida. Para ello emplean una arquitectura un poco distinta a la conocida Eckert-Mauchly (mal llamada Von Neumann) que usan nuestros PC’s, la arquitectura Harvard, en la que los datos (variables) y el programa, se almacenan en memorias diferentes. En el caso de los microcontroladores modernos, la memoria del programa es del tipo FLASH, con lo que una vez cargado el programa, al iniciar el micro, empezaria a ejecutar este programa inmediatamente, sin perder la memoria del programa al desconectarlo de la alimentación.

Conociendo Arduino:

Volviendo a la plataforma arduino, veamos de que consta a nivel de hardware. El diseño principal de la placa arduino, consta de las siguientes características:

  • Microcontrolador AVR ATmega168 (Atmega8 en versiones anteriores, y Atmega328 planeado para futuras)
  • CPU de 8 bits, hasta 20Mhz de reloj
  • 16K de memoria de programa
  • 1K de RAM
  • 512Bytes de EEPROM
  • 6 conversores analógico/digital de 10bits
  • puerto serie UART, SPI
  • 6 canales PWD (Pulse width modulation)

De momento puede que no conozcamos estos términos, pero iremos descubiéndolos poco a poco en siguientes entregas de estos artículos. Además, la placa Arduino tiene muchas ventajas:

  • Tiene un chip (FTDI) que se encarga de convertir el puerto serie del Atmega en un puerto serie sobre USB, con lo que tenemos conectividad USB hacia/desde un ordenador por ejemplo para programarlo o para enviar y recibir datos por el,
  • La placa nos hace accesibles los pines del micro en conectores, para poder conectar nuestros circuitos a él.
  • Dispone de un circuito de alimentación para cuando no lo alimentemos por USB
  • Conector ICSP que de momento no usaremos a no ser que desprogramemos el micro (muy poco probable y casi imposible de hacer por error!).

¿Cómo se usa?

El escenario básico sería conectar el arduino por usb a nuestro PC, realizar un programa en el IDEArduino, mandárselo y el empezaría a ejecutarlo inmediatamente, quedando guardado en su memoria FLASH sin perderlo al desconectarlo de la alimentación, ejecutándolo cada vez que lo volvamos a conectar. Como acabareis de leer, además, la plataforma arduino incluye un entorno de desarrollo (IDE), en el que realizar nuestros programas, compilarlos, y mandarlos al arduino. Usa un lenguaje de programación propio, basado en C, muy sencillo de aprender, y adaptado conceptualmente a la filosofia de programación de un microcontrolador, en el que un único programa se repite continuamente. Además, el lenguaje incorpora varias librerias para manejar hardware externo como pantallas LCD, matrices de LED’s, memorias EEPROM…

Proyecto “Hola Mundo”

El proyecto Hola mundo, tratará de hacer parpadear el led con nuestra placa arduino utilizando el IDE y cargándole el código a través del usb

Material necesario:

  • Placa Arduino Diecimila en alguno de los distribuidores españoles (Bricogeek y libelium) o también podéis comprar una freeduino, que es un clon de la arduino, pero más barata. Podéis encontrar esta última en ebay. El precio de la arduino ronda los 35 euros con portes y la freeduino 20 euros con portes, aproximadamente.
  • 1 Led, del color que os dé la gana, que podéis comprar por muy poco dinero en cualquier tienda de subministros electrónicos
  • Cable Usb de tipo A-B, que es el mismo que suelen traer las impresoras que se conectan por USB, y es el que utilizaremos para conectar la arduino al pc

Paso 1: instalación del driver

  • Primero debemos descargarnos el IDE para Windows (trabajaremos con windows), que trae todo, también el driver para que el sistema reconozca correctamente la arduino por el usb. Lo descargaremos de su web oficial. Ahí, también está todo el ide para linux y mac OS X:

Descargamos la versión Windows Aquí

  • Extraemos la carpeta que hay dentro del zip en el escritorio,  en este caso, la carpeta arduino-0011 (el número dependerá de la versión del IDE que descarguemos)
  • Conectamos el cable USB al arduino, y el otro extremo en el PC. Al instante, nos aparecerá un cuadro notificando que windows ha reconocido un hardware nuevo. En el cuadro que nos abre, seleccionamos “No por el momento” y después “instalar desde una lista o una ubicación específica” y finalmente hacemos un examinar y seleccionaremos la carpeta driver, que está dentro de la que hemos extraido en el escritorio, y lo instalará. Es posible que detecte más cosas, pero tenemos que seguir este mismo procedimiento.

Paso 2: Montaje del proyecto

Vamos a ver un pequeño “Hola Mundo” Arduino y explicar de que consta cada parte. Primero veamos un esquema del Arduino y expliquemos un poco las partes principales que vamos a usar:

Esquema Arduino

  • Los conectores de pin superiores numeradas de 0 a 13, que son 14 Entradas/Salidas digitales, esto es, podemos ponerlas a 1 (5voltios) o a 0 (0 voltios), vamos, encenderlas o apagarlas.
  • Además las dos primeras entradas/salidas están conectadas al puerto serie UART del micro, con lo que podriamos usarlas para comunicarnos con dispositivos externos en modo serie
  • Bien, una vez conectado el arduino al USB y instalado los drivers en el pc, vamos a conectar un LED a uno de los pines del arduino

Para los que no tengais conocimientos de electrónica, un LED es un diodo, un dispositivo semiconductor que además emite luz. Digamos que es como una pequeña bombilla, pero con muy bajo consumo y que se puede alimentar con pequeño voltaje y corriente, y que además tiene polaridad. En cualquier tienda de electrónica podéis comprar unos cuatro por un euro o algo así, pedis que os den varios leds de 5mm de diferentes colores y podemos empezar con ello.Bien, como comento, el LED tiene polaridad, con lo que tenemos que tenerla en cuenta.

  • Normalmente tiene una patilla más larga, que sería el polo positivo (ánodo),
  • La más corta la negativa (cátodo).

Como hay veces que las dos patillas miden lo mismo por haber reutilizado un led o algo, pongo el esquema para que podáis reconocer cada polo:

  • Insertaremos el ánodo (patilla larga) del led en el pin digital 12 del arduino,
  • Insertaremos el cátodo (patilla corta) en el pin etiquetado como GND que está un poco más a la izquierda del pin 12, digamos que el pin GND siempre es como el polo negativo del circuito.

Paso 3: Programando arduino con el IDE

Ahora nos vamos a la carpeta que antes extraimos en el escritorio y haremos doble click sobre el programa arduino.exe, y debería abrirse el IDE. Si como a mí, no se te abre nada, haz doble click sobre run.bat. y ya debería verse el programa, el IDE, nuestro entorno de desarrollo:

  • Recordemos que no debéis cerrar la ventana negra (el command) porque si no se os cerrará el IDE

Ahora, introduciremos todo el siguiente código en el IDE, como en la imagen anterior:

/* Hola LED arduino */
/* variable que referencia el pin del led */ int pinLED = 12;
void setup()
{
pinMode(pinLED, OUTPUT);
}
void loop()
{
digitalWrite(pinLED, HIGH);
delay(1000);
digitalWrite(pinLED, LOW);
delay(1000);
}

    Vamos a repasar el programa que hemos escrito:

    • La primera (y tercera) línea entre /* y */ es un comentario, el compilador ignora totalmente lo que pongamos entre esa combinación de simbolos, se usan para introducir anotaciones en el código, para que cuando volvamos a abrir el archivo dentro de meses, sepamos para que hicimos cada cosa. En un programa tan sencillo parece estúpido usarlos, pero en programas complejos se hace indispensable y es de buena costumbre usarlos siempre, asi nos vamos acostumbrando.
    • Luego tenemos int pinLED = 12; Aqui definimos una variable, pinLED, de tipo entero (int) con lo que podria guardar un número entero de 8 bits (entre -32768 y 32767), y la iniciamos con el valor 12, con lo que siempre que escribamos pinLED sería lo mismo que escribir 12, a no ser que modifiquemos la variable a lo largo del programa.
    • Luego tenemos el primer bloque entre llaves “{“. Se trata de una función, la función setup(), que se usa para inicializar los puertos y datos y cualquier cosa que necesitemos antes del programa principal. Esta función se ejecuta una vez al iniciar el arduino.
    • Dentro de esta función llamamos a pinMode(pinLED, OUTPUT); Esta función define el funcionamiento de los pines digitales del arduino como entradas o como salidas, aqui como vemos, le dice al arduino que configure el pin pinLED como salida (OUTPUT) con lo que pondrá el pin 12 a funcionar como una salida de datos. Y ahora la función principal de todo programa arduino, la función loop. Todo lo que definamos dentro de esta función, será el programa principal del arduino, y se repetirá indefinidamente (mientras alimentemos el arduino , claro ;-) )
    • Entonces llamamos a la funcion digitalWrite(pinLED, HIGH), con la que escribimos el valor digital HIGH en el pin pinLED, vamos, ponemos el pin 12, en “alto” o a 5 Voltios, con lo que circulará electricidad a través del LED conectado a esta patilla y se encenderá.
    • Luego llamamos a la función delay(1000) que hace una pausa en el programa el tiempo en milisegundos que le digamos, en este caso 1000 milisegundos = 1 segundo.
    • Entonces ponemos el pin 12 a 0 voltios con digitalWrite(pinLED, LOW), con lo que se apagará, y esperamos otro segundo apagado con otro delay.

    Volviendo al proyecto:

    • Primero compilamos el programa dando al botón “PLAY”(el triangulo normal dentro del círculo), y si no tiene errores (done compiling) nos diria el tamaño final del programa en la venta de estatus del IDE, si hay algun error nos lo mostraría.
    • Si no hemos tenido errores al compilar, podemos darle al botón de upload, enviando el programa al arduino, que empezará a ejecutarlo después de grabar el programa en su memoria FLASH… y tachan!!! tenemos nuestro intermitente DIY .

    • Entonces como dijimos, el arduino volveria al inicio de la función loop, empezando de nuevo con el encendido del led, delay, apagado, delay… repitiendo esta secuencia hasta el infinito y más alla (TM).

    Resultado:

    Aquí el resultado final de todo el trabajo (de fondo la final de la eurocopa)

    En siguientes capítulos iremos introduciendo nuevos componentes y sumergiendonos en las librerias del arduino y lo que podemos ser capaces de realizar con el. Un saludo y hasta la próxima entrega, cualquier duda podeis escribirme a zako ARROBA ladecadence PUNTO net. Hasta pronto!