Como recuperar un arduino brickeado

Cómo recuperar un arduino brickeado por un sketch

Si te has metido en un problema por que has cargado un sketch en tu arduino y ahora te lo detecta como un dispositivo usb desconocido y no te deja reflasearlo no te preocupes, en este tutorial simple te enseño como cargar un sketch a un arduino brickeado.

Este problema es un poco difícil que se dé, ya que hay que cumplir ciertos requisitos para que te pase. Lo primero es que tienes que tener un arduino compatible con el modo dispositivo usb, es decir, que pueda emular un mando o teclado de forma nativa, ya que de no ser así necesitarás tener un software instalado para que esto ocurra.

Por qué se brickea un arduino y cuales son los síntomas

El problema viene cuando cargamos un sketch en el arduino con una funcionalidad determinada y contiene errores, en este caso, para emular un mando, teclado, ratón u otro dispositivo usb que nos aparecería de forma nativa en el PC al que lo conectamos, detectándolo el ordenador como este otro dispositivo.

Si subes un sketch para emular un mando de consola, por ejemplo, y en alguna parte del código tiene un error grave o simplemente no se puede detectar como dicho dispositivo, lo que conseguimos es que al conectar el arduino por usb aparezca un mensaje que indica que el dispositivo usb no se puede reconocer.

En este punto da igual las veces que hagamos reset, cambiemos de puerto, eliminemos el controlador en el administrador de dispositivos o las virguerías que le hagamos, ya que la solución no es esa.

Léete también  Análisis a fondo del cargador USB Chuwi 100

administrador-dispositivos-arduino-brickeado

Si tienes abierto el IDE de arduino, cuando lo conectas podrás ver que mientras carga la memoria durante un segundo aparecerá en la lista de puertos COM del programa el nombre del arduino que tenemos seleccionado, pero aunque intentes subir un sketch te dará error y desaparecerá inmediatamente de la lista.

Cómo recuperar un arduino brickeado por un sketch

Para recuperarlo el proceso es realmente sencillo y te funcionará casi en el 100% de los casos. Lo primero será cerrar todas las ventanas del IDE de arduino, y si puedes reiniciar el pc mejor que mejor aunque no siempre es necesario (así liberamos puertos). Todo esto con el arduino desconectado del usb.

Ahora abriremos una demo, por ejemplo la más básica con un parpadeo de led, para no subir uno vacío y que veamos que ha funcionado. Este:

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the Uno and
  Leonardo, it is attached to digital pin 13. If you're unsure what
  pin the on-board LED is connected to on your Arduino model, check
  the documentation at http://www.arduino.cc

  This example code is in the public domain.

  modified 8 May 2014
  by Scott Fitzgerald
 */


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

Una vez lo tenemos en la ventana de la aplicación, debes conectar tu arduino por usb y rápidamente abrir el menú herramientas, verás que lo ha detectado ahí y lo seleccionas en el puerto COM21 por ejemplo.

Léete también  Cómo bloquear puertos USB en Windows a usuarios no autorizados

seleccionar-com-arduino-leonardo

Desaparecerá en un momento, pero no te preocupes, ya tienes la mitad del camino andado. Ahora si vuelves al menú herramientas verás que no tienes seleccionado ninguno, pero no toques nada, ya que la próxima vez que se conecte o reinicie se seleccionará automáticamente.

arduino-compilando-ide

Ahora simplemente dale al botón de upload, y verás que empieza a realizar la compilación, espera dos segundos y pulsa el botón del reset del arduino. En caso de que no tenga botón reset puedes desconectar el usb del pc, darle al upload y conectarlo pasado un momento.

¿Por qué funciona este método para desbrickear un arduino?

Tu arduino tiene un boot antes de cargar el sketch que tiene en memoria, y es durante ese inicio del sistema cuando aparece como un arduino y no como otro dispositivo usb. Este es el momento que tienes que usar para cargar un programa básico en la memoria y sustituir el código defectuoso.

El truco está en que tras la compilación, el programa se envía al arduino, y tenemos que conseguir que los dos segundos que nos aparece como un arduino en el menú coincidan con el momento en el que se realiza el upload tras compilar. Como es un sketch pequeño tarda un instante en subirlo y queda reprogramado.

¿Te ha funcionado? ¿Cómo habías brickeado tu arduino?


AYUDANOS a poder seguir dando respuestas. Te podemos echar una mano y tú también a nosotros, símplemente dale a me gusta.