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
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
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
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
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
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!