usar-arduino-para-reprogramar-el-bootloader

Usar Arduino para reprogramar el bootloader de otro Arduino

  • 3 min

El bootloader de Arduino es un software alojado en la memoria flash que nos permite programar Arduino a través del puerto serie sin necesidad de usar un programador externo.

De forma resumida, durante el arranque de Arduino el bootloader comprueba si se está intentando programar el Arduino. Si es así, graba el programa en la memoria, y reinicia Arduino. En caso contrario, el bootloader ejecuta el último programa grabado.

El bootloader de Arduino es una de las partes esenciales en las que reside la comodidad y sencillez de uso de Arduino (y por tanto de su éxito). En general lo normal es que no necesitemos lidiar con él.

Sin embargo, hay varias circunstancias en las que necesitaremos ser capaces de modificar el bootloader de Arduino. Por ejemplo:

En cualquiera de los casos, no necesitamos disponer de un programador externo si no que podemos grabar el bootloader de un Arduino usando otro Arduino como programador.

Al Arduino que actúa como programador lo llamaremos maestro, y al que vamos a programar follower. La comunicación entre PC y maestro se realiza a través de puerto serie, mientras que el maestro se comunicará con el follower a través de SPI.

Preparar el Arduino maestro

En primer lugar vamos a configurar nuestro Arduino Maestro como programador. Para ello, simplemente tenemos que carga el Sketch “Arduino as ISP” de la librería de ejemplos de Arduino. Lo cargamos en el Maestro como cualquier otro sketch.

arduino-as-isp

Así de fácil. Con esto hemos convertido nuestro Arduino en un programador ISP.

Conectar Arduino Maestro con Follower

Desconectamos el maestro del ordenador, y conectamos maestro y follower. Para ello, alimentamos el Arduino Follower desde el Maestro conectando Vcc y Gnd de ambas placas. Por otro lado, conectamos los pines del bus SPI entra ambas placas.

Si, por ejemplo, estamos usando un Arduino UNO como programador Maestro y un Arduino Mini como follower, el esquema de conexión en el maestro a los pines del follower quedarían de la siguiente forma.

arduino-grabar-bootloader-master

Mientras que la conexión vista desde follower (Mini en el ejemplo) a los pines del maestro serían las siguientes.

arduino-grabar-bootloader-slave

Grabando el bootloader

Ahora podemos proceder a quemar el bootloader en el Arduino. Conectamos el maestro al ordenador a través del puerto serie, manteniendo la conexión entre maestro y follower.

Configuramos el IDE de Arduino. Seleccionamos:

  • El puerto COM al que tenemos conectado el maestro.
  • El modelo de placa del follower
  • Como programador, “Arduino ISP”

arduino-as-isp-2

Finalmente seleccionamos “Quemar bootloader” para iniciar el proceso de grabación.

arduino-as-isp-3

Tras un montón de lucecitas y parpadeos en los LED de ambas placas veremos un mensaje en el IDE informando de que el bootloader se he grabado correctamente.

Listo, hemos grabado con éxito el bootloader, y podemos desconectar ambos Arduinos y usarlos con normalidad.

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github. github-full