Flash Chip USB-Serial Arduino Without DFU

by sabas1080 in Circuits > Arduino

3804 Views, 13 Favorites, 0 Comments

Flash Chip USB-Serial Arduino Without DFU

55adbac02e7fb6c341000152.jpeg
ArduinoUno_R3_Front.jpg
ArduinoUno_r2_front450px.jpg  450×315 .png

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

Material

IMG_20150704_175722842_HDR.jpg
temp_1739890770.jpg

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

Arduino Modo ICSP

ArduinoICSP.png

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,

Diagrama

ArduinoICSP (1).png

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.

Programacion

55adb58d4936d43d71000274.jpeg

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!