Reprogramar el bootloader de un Arduino

Reprogramar el bootloader de un Arduino

Uno de los Arduino Nano dejó de funcionar bien porque ya no permitía grabar nuevos sketches.

La programación y carga de sketches se hace usando Arduino IDE y fallaba la carga de cualquier sketch, incluidos los que solo encienden el led del Arduino que vienen como ejemplo en el Arduino IDE.

Al intentar grabarle un nuevo programa, el proceso nunca terminaba o terminaba con errores pero no se conseguía grabar ningún sketch.

Probado en Windows y Linux y era imposible subir un nuevo programa. En cambio, con la misma configuración sí era posible grabar normalmente programas en otro Arduino Nano similar.

El Arduino Nano no tenía conectado nada salvo el cable USB. Se probó con dos cables USB tipo-C diferentes y en diferentes puertos USB del PC y en todos fallaba la carga de un nuevo programa.

El Arduino parece que seguía ejecutando el último programa grabado (el ejemplo de encender/apagar el led que viene en el Arduino IDE).

En Windows se quedaba indefinidamente intentando la carga del sketch (no pasaba del mensaje "Uploading") o bien, salían errores de timeout al cabo de 10 intentos de subir el programa...

En Linux ocurría lo mismo y aparecían errores como los siguientes...

En la siguiente página y en algunos vídeos encontré que este problema puede deberse a que el Bootloader del Arduino está corrupto o se ha borrado intencionadamente y siguiendo los pasos que indican pude arreglar el problema...

https://support.arduino.cc/hc/en-us/articles/4841602539164-Burn-the-bootloader-on-UNO-Mega-and-classic-Nano-using-another-Arduino

El bootloader es un programa que viene precargado en las placas Arduino y que se encarga de que se puedan carga sketches en el Arduino.

El código que forma el bootloader se puede corromper o borrar y para restaurarlo o flashearlo se puede usar otro Arduino que haga la función de "programador".

Conexiones entre la placa Arduino Nano que funcionará como "programador" y la placa Arduino Nano en la que se va a flashear el bootloader...

Arduino Nano funcionando como programador Arduino Nano en el que se va a flashear el bootloader
Pin 10 RST (Reset)
Pin 11 Pin 11
Pin 12 Pin 12
Pin 13 Pin 13
5V 5V
GND GND

Proceso para flashear el bootloader

Una vez que el Arduino Nano que va a actuar como programador esté conectado por USB al equipo y que se haya configurado el tipo de placa (Nano) y el puerto USB en el que está conectada, hay que cargar el sketch que lo configurará como un programador ISP. Esto se puede hacer desde el menú "Archivo", "Ejemplos", "11.ArduinoISP"...

Una vez cargado el ejemplo "ArduinoISP" hay que grabarlo en el Arduino que está conecado por USB (el que va a funcionar como programador)...

El sketch debería cargarse normalmente y una vez terminada la carga, para configurar este primer Arduino Nano como programador hay que ir a la opción "Herramientas", "Programador" y allí cambiar la opción que suele estar configurada "AVRISP mkll" por la opción "Arduino as ISP"...

Luego ya solo faltaría ir a "Herramientas", "Quemar Bootloader" para que el primer Arduino proceda a grabar el bootloader en el segundo Arduino...

Una vez grabado el Bootloader, el segundo Arduino que no funcionaba bien ya debería funcionar correctamente y ya debería permitir volver a cargarle programas.

Para que Arduino IDE vuelva a configurarse para grabar sketches y no como "programador ISP" habría que volver a la opción "Herramientas", "Programador" y volver a configurar la opción "AVRISP mkll"...