Introduction: Flash Chip USB-Serial Arduino Without DFU

About: Fundador de The Inventor's House Hackerspace, Movimiento Maker y Hardware Libre, DIY, Workaholic

Hola amigos

Ayer me llegaron dos arduino un Duemilanove y un UNO, el Duemilanove era un cambio de chip y volver a cargar el bootloader, pero el Arduino UNO ni siquiera era detectado por la PC pero seguía ejecutando el ultimo sketch "Blink" que el usuario le había cargado, sospeche que el microcontrolador (MCU) encargado de hacer la conversión USB-Serial (puede ver hacks realizados con este MCU aqui) tendría tal vez el bootloader dañado y por eso no había podido ser reconocido por la PC

Step 1:

Step 2: Material

El material que vamos a requerir es:

  • Arduino UNO (dañado y que no detecta nuestra PC)
  • Arduino UNO en correcto funcionamiento
  • Cables Hembra Macho

Step 3: Arduino Modo ICSP

Lo primero fue cargar en otro arduino UNO correctamente funcionado el sketch de “Arduino programador ICSP” como el ejemplo que marca arduino.cc, después hay que conseguir el bootloader del MCU encargado de la conversión USB-Serial en este caso un ATMEGA16u2 lo pueden encontrar en su carpeta de arduino ubicada en:

/arduino-1.6.0/hardware/arduino/avr/firmwares/atmegaxxu2

En mi caso el archivo sera "UNO-dfu_and_usbserial_combined.hex", una vez localizado debemos usar avrdude dependiendo el sistema operativo que usen, yo en este caso estoy usando una distro de linux, si están usando algun otro sistema operativo es solo descargar e instalar el AVRdude correspondiente,

Step 4: Diagrama

Antes de ejecutar el comando debemos hacer la conexión necesaria desde nuestro “Arduino Programador” al Arduino que vamos a programar, como nos podemos dar cuenta conectamos el puerto ICSP del microcontrolador (MCU) convertidor USB-Serial a los pines del Arduino en modo programador y alimentamos desde el mismo Arduino.

Step 5: Programacion

Una vez hecha la conexión como se muestra en el diagrama ejecutamos el siguiente comando

avrdude -p at90usb162 -F -P /dev/ttyACM0 -b 19200 -c avrisp -U flash:w:Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

Los leds de TX y RX del Arduino empezaran a parpadear y se nos notificara cuando este terminado el trabajo, una vez terminado podemos desconectar el Arduino y probar si es detectado por nuestra PC, en mi caso aun asi esto no funciono porque el chip esta dañado físicamente.

Espero esto les haya servido, para revivir su Arduino de algún experimento que hayan hecho y lo tenga otra vez funcionando, espero sus comentarios Saludos Inventores!