Learning   Examples | Foundations | Hacking | Links

Carga del gestor de arranque de la Arduino Mini.

Por Gian Pablo Vilamil

Este documento explica como cargar un bootloader o gestor de arranque en una Arduino Mini.

Si ya sabes que es un gestor de arranque , por qué quieres cargarlo y estás buscando instrucciones detalladas salta directamente a la sección "Carga el gestor de arranque de la Arduino Mini".

Que es un gestor de arranque y por que cargarlo?

El gestor de arranque es un pequeño programa que se ejecuta al encender la placa Arduino o apretar el botón de reset. Su principal función es esperar a que el entorno de desarrollo de Arduino instalado en tu ordenador envíe un nuevo programa a la placa Arduino. Esto es importante por que, normalmente, necesitas un dispositivo especial para programar la Arduino. El gestor de arranque es lo que te permite programar la Arduino usando, simplemente, un cable USB.

Cuando hablamos de cargar el gestor de arranque en la Arduino, nos referimos a usar un dispositivo especial llamado Programador In-System, o ISP, para reemplazar el programa de gestión de arranque.

¿Porque puede necesitar la Arduino de un gestor de arranque?.

Existen cuatro razones fundamentales para ello:

  1. Tu Arduino no tiene gestor de arranque implementado en ella. Esto puede ocurrir si has sustituido el microcontrolador por un nuevo chip. Esto no es posible en los modelos Mini, en los que el chip no es reemplazable, y todos los modelos Mini salen de fábrica con el gestor de arranque instalado.

  2. Deseas reemplazar el gestor de arranque existente por uno diferente. El gestor de arranque en los Arduinos anteriores a la versión Diecimila imponen un retardo de 10 segundos tras el reseteo, mientras están esperando información procedente del IDE Arduino. Este retraso también ocurre cuando Arduino se conecta o después de ser programada. Hay gestores de arranque alternativos que eliminan este retraso, incluyendo el gestor de arranque Diecimila, el Adabot, el LilyPad y otros. También puedes descargar el código fuente y modificar el gestor de arranque a tu gusto (ver esta página para más detalles y un enlace al código). Esto puede ser útil si quieres que tu proyecto arranque inmediatamente, y especialmente útil si recibe una entrada por el puerto serie. Si el gestor de arranque recibe cualquier entrada durante su ejecución asume que el IDE Arduino intenta comunicarse con él y se detiene a esperar, posiblemente de forma indefinida, impidiendo el inicio del programa. Aquí puedes encontrar información sobre gestores de arranque alternativos.

  3. No utiliza gestor de arranque. El proceso para reemplazar el gestor de arranque en el Arduino también permite sustituirlo por su propia aplicación. La ventaja de esto es que tu programa comenzará su ejecución inmediatamente y te dará 2 KB de memoria adicional para tu programa. La desventaja es que no podrás volver a programar tu Arduino por USB, deberás hacerlo a través de un ISP (al menos hasta que no vuelvas a cargar un gestor de arranque).

  4. El gestor de arranque existente se ha corrompido. Esto es extremadamente raro, sin embargo es posible que, bajo algunas circunstancias la memoria flash del Arduino se corrompa y te resulte imposible cargar tus programas con normalidad. Reinstalar el gestor de arranque debe corregir el problema, es similar a formatear el disco duro del ordenador.

Carga el gestor de arranque de la Arduino Mini.

¿Cual es la diferencia de cargar el gestor de arranque en la Arduino Mini a otras Arduinos?.

Las Arduinos de tamaño normal tienen un conector de 6 pines para el conexionado con el ISP. La Arduino Mini no dispone de estos pines, en lugar de ello hay que fabricar un cable de conexión. Al margen de esto el procedimiento es el mismo. Con pequeñas diferencias en el procedimiento puedes cargar diferentes configuraciones de proyectos basados en ATmel.

¿Que necesito?.

  • Un ISP (por ejemplo el AVR ISP MkII).
  • 6 cables de unión.
  • 1 conector de tira de pines macho, de 12 pines.
  • 2 conectores de tira de pines macho, de 3 pines cada uno.

El programa 8 AVR Studio (de Atmel, descarga gratuita).

¿Como hago el cable?.

Necesitas conectar los 6 pines del Arduino Mini (llamados MISO, MOSI, SCK, RESET, POWER y GND) a los 6 pines del ISP. 3 de ellos corresponden a pines E/S digitales, numerados como 11, 12 y 13, los otros 3 son los pines de reseteo, +5v y GND, que probablemente ya hayas utilizado (ten en cuenta que el pin de +5v no es el mismo que el de +9v, este último se utiliza para suministrar voltaje al ISP).

    

Estos pines en la Arduino son los que hay que conectar con los correspondientes pines del conector de 6 pines del ISP, mostrado a continuación

   

Ten presente que esta es una vista trasera del conector. Si sujetas el conector mirando hacia afuera de ti y el cable rojo hacia arriba es lo que verás.

Una forma simple de empezar con el conexionado del cable es con 6 trozos de cable fino (de la misma longitud), una pieza de tira de pines macho con 12 pines y dos piezas de tira de pines de 3 pines. Quita el segundo y el quinto pin de la tira larga con unos alicates de punta fina, quita también el noveno y el onceavo. Quita todos lo pines de las 2 secciones pequeñas.

Inserta los cables correspondientes a GND, RESET y POWER (en este orden) en los agujeros dejados por el segundo y el quinto pines. Inserta los cables correspondientes a SCK, MISO y MOSI (en este orden) en los agujeros dejados por los pines 9, 10 y 11. Después toma el otro extremo de los cables y pon MISO, SCK y RESET en una de las piezas de 3 pines. POWER, MOSI y GROUND en la otra pieza de 3 pines. Ten en cuenta que MOSI y RESET se intercambian, por así decirlo.

(Nota del Traductor: en el artículo original en ingles el procedimiento se describe tal cual lo he traducido al Español, también puede verse en las fotos cual es el resultado. Personalmente no entiendo como el autor puede cortar los pines para posteriormente introducir en ellos el cable fino, me parece mas sencillo soldar los cables a los pines y el montaje debe funcionar exactamente igual).

Es buena idea utilizar cola caliente (la que se aplica con pistola) para asegurar todo en su sitio. Es muy fácil hacerlo pinchando los dos segmentos de 3 pines en el cable del ISP (asegúrese de que cada uno está en su sitio) y añadiendo unas gotas de pegamento (cuidado de no pegar el cable del ISP). Te debe quedar un cable parecido a este:

  

Nótese que los pines de los extremos no tienen conexión, lo he hecho así para que el conector tenga, exactamente, la misma longitud que la Arduino Mini, siendo así más fácil de alinear. Ten en cuenta el orden de los cables relativo al filamento rojo en el cable del programador. Cuando el filamento rojo está en la parte superior y el cable esta en la parte mas alejada del conector, las correspondencias de los colores son blanco (MISO), verde (SCK) y amarillo (RESET). En la imagen siguiente, con el filamento rojo en la parte inferior, los colores de los cables son: negro (GND), azul (MOSI) y rojo (+5v).

Monta tu Arduino Mini sobre una placa entrenadora, como se muestra a continuación (ten en cuenta que tendrás que quitar el LED del pin 13 durante la programación).

Alinea el conector macho de 12 pines con el lateral de la Arduino Mini. Los cables de POWER, RESET y GND deben coincidir con los correspondientes pines en la placa. Debe verse así (el LED se ha quitado):

Visto desde arriba:

Si estás usando un adaptador USB con tu Arduino Mini conéctalo a tu ordenador ahora. Si no lo estas usando conecta la fuente de alimentación que uses. La Arduino debe estar alimentada eléctricamente para que el ISP pueda trabajar.

Conecta el cable USB desde el ISP a tu ordenador. Verás dos LEDs verdes encendidos en el programador. Nota: no debe haber nada conectado a los pines 11, 12 y 13 de la Arduino, esto puede interferir en el trabajo del programador.

A partir de este punto las instrucciones son, exactamente, las mismas que para grabar el gestor de arranque de cualquier otro microcontrolador ATmel168. Puedes usar las instrucciones de esta página o continuar leyendo.

Como cargar el gestor de arranque usando el IDE de Arduino.

Ahora puedes cargar el gestor de arranque de Arduino utilizando el entorno de desarrollo instalado en tu ordenador. Abre el IDE Arduino en tu ordenador, establece el tipo de placa que estás usando (Arduino Mini), abre el menú "Burn Bootloader" y selecciona tu programador (en este ejemplo el AVRISP MkII).

 

A diferencia de la programación no es necesario apretar el botón de reseteo. El programador resetea la Arduino por ti. Esto instalará (o restablecerá) el gestor de arranque original. Sin embargo, esto es de poca utilidad a menos que estés intentando reparar el gestor de arranque o que tu Arduino Mini, de alguna manera, te llegara sin uno.

Como cargar el gestor de arranque usando AVRStudio.

Para instalar un gestor de arranque alternativo necesitas un programa llamado AVR Studio. Puedes descargarlo aquí. Desafortunadamente AVR Studio solo existe para el sistema operativo Windows. Sin embargo puedes utilizar las instrucciones para cargar el gestor de arranque del micro ATmel168 en Mac OS/X.

Ejecutar AVR Studio. Apretar el botón "cancel" para salir de la ventana de entrada.

Pinchar en el botón "con", es un pequeño botón que parece un pequeño chip. Después seleccionar el tipo de ISP que estás utilizando (en este ejemplo AVR ISP MkII).

Aparecerá una nueva ventana como la que se muestra a continuación. Marca los parámetros tal como se muestran en la imagen. En el campo "input HEX file" introduce el fichero que quieres cargar. Este puede ser:

  1. Un nuevo gestor de arranque.
  2. Un programa hecho por ti mismo. El fichero .hex debe estar almacenado en una carpeta dentro del mismo directorio en que se encuentra la carpeta en la que se almacenan nuestros sketches.

Pulsar el botón "Program". A continuación deberías ver algo de actividad en la ventada de estado. Pulsa "Verify" si quieres asegurarte de que todo ha ido bien. Desconecta el ISP quitando el cable USB del ordenador. Si quieres actuar con seguridad quita la alimentación de tu Arduino. Por último, desconecta el conector del ISP de tu placa entrenadora.

Tu Arduino Mini ya tiene cargado el gestor de arranque!

Share