Usar Arduino para reprogramar el bootloader de otro Arduino


arduino-grabar-bootloader

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 circustancias en las que necesitaremos ser capaces de modificar el bootloader de Arduino. Por ejemplo:

Anuncio:

  • Los usuarios avanzados pueden querer modificar y personalizar el proceso de arranque.
  • En proyectos grandes, podemos querer aprovechar el espacio ocupado por el bootloader.
  • Algunos fabricantes envían sus placas sin el bootloader precargado.
  • En alguna circunstancia el bootloader puede corromperse.

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 master, y al que vamos a programar slave. La comunicación entre PC y master se realiza a través de puerto serie, mientras que el master se comunicará con el slave a través de SPI.

Preparar el Arduino Master

En primer lugar vamos a configurar nuestro Arduino Master 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 Master como cualquier otro sketch.

arduino-as-isp

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

Conectar Arduino Master con Slave

Desconectamos el master del ordenador, y conectamos master y slave. Para ello, alimentamos el Arduino Slave desde el Master 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 Master y un Arduino Mini como slave, el esquema de conexión en el master a los pines del slave quedarían de la siguiente forma.

arduino-grabar-bootloader-master

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

arduino-grabar-bootloader-slave

Grabando el bootloader

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

Configuramos el IDE de Arduino. Seleccionamos:

  • El puerto COM al que tenemos conectado el master.
  • El modelo de placa del slave
  • 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.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales de Arduino

Anuncio:

Previous Encuentra dónde está la carpeta del menú de inicio en Windows 10
Next Conectar Arduino a un display LCD HITACHI HD44780
1000
4 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
newest oldest
Diego Lale

Mil gracias Luis, muy bien explicado.

Karlinet

Muy bien explicado, uno de mis sitios favoritos para documentarme y seguir aprendiendo. Aunque en mi caso me funciono presionando el boton de reset 8-1 segundos y dejarlo presionado mientras le doy cargar programa en arduino ide. Gracias por tu apoyo!

Alfonso

Buenas,

Tengo una duda de como habría que hacerlo con un Arduino Mega R3 para reprogramar otro Arduino Mega R3.

¿Podría indicarme el esquema correcto? Solo he conseguido encontrar de Mega a Uno y viceversa pero no de Mega a Mega.

Alfonso

Alguien podria explicar como sería para conectar un Mega como programador para reprogramar el bootloader de otro Mega??