Cambiar bootloader de Arduino Nano y quemar sketches con otro arduino por ISP

Estoy utilizando Arduinos Nanos, los compatibles del chip CH340, para hacer prototipos rápidos y les he cargado el bootloader Optiboot que hace que el micro arranque más rápido, de hecho arranca de forma instantánea y ocupa menos, además me interesa que los micros trabajen a 1 Mhz para optimizar el consumo. El Nano es prácticamente lo mismo que el Uno pero mucho más pequeño y económico sobre todo los compatibles.
En este otro artículo se puede ver cómo programar el microcontrolador por separado desde un Arduino Uno: Programar Atmega328 con Arduino de la forma más sencilla

Enlace de Optiboot: https://github.com/Optiboot/optiboot

Los Nano:

Como casi toda la información se encuentra en inglés y en ocasiones es confusa o desfasada, he creído útil explicar cómo lo hago. Lo que explico puede ser válido para el Uno y otros Arduinos y compatibles aunque en la práctica yo solamente lo he probado en Nano. Tengo que eludir toda responsabilidad por las consecuencias del uso que se haga de este artículo que debe ir a cargo del propio lector, pero espero que sea útil y didáctico. Yo he realizado muchas pruebas, vamos que les he hecho a los Nano todo tipo de perrerías y no les ha ocurrido nada malo, además al precio que se pueden conseguir tampoco es ningún desastre cargarse alguno, véase Nano en Ebay.

Primero preparar el IDE de Arduino para poder usar Optiboot:
En el enlace que puse al principio lo explica en Ingles, para versiones del IDE posteriores a la 1.6.5. Resumiendo en español se trata de acceder a la versión de Optiboot que nos interesa en https://github.com/Optiboot/optiboot/releases y copiar el enlace URL del archivo .json. Entonces vamos a Archivo -> Preferencias y pegamos dicho enlace en “Gesor de URLs Adicionales de Targetas"
Damos a OK y nos vamos a Heramientas -> Placa -> Gestor de Targentas, ahí buscamos nuestro Optiboot y le decimos Instalar:
En el caso de la imagen anterior ya está instalado.
Ahora si vamos a Heramientas -> Placa podremos ver al final las de Optiboot:
Ya podemos quemar el bootloader Optiboot en los Nano, incluso podremos hacer que trabajen los micros a menos Megahercios si nos interesa menor consumo y no necesitamos velocidad. También nos sirve el método ISP para, utilizando un Arduino, grabar micros sueltos sin Arduino y realizar productos muy eficientes en consumo para poder alimentarlos con pilas.
Lo que yo hago generalmente es realizar un prototipo utilizando un Nano, es rápido para empezar y hacer las pruebas necesarias afinando el programa y la electrónica. Después una vez definitivo lo grabo en un micro suelto y lo acabo con una mínima electrónica.
A Microchip se le pueden pedir samples del Atmega328p en su web.

Segundo convertir un Nano en programador ISP:
Cargamos en un Nano el sketch de ejemplo "ArduinoISP". Lo hacemos con la forma habitual de cargar los sketches, conectamos al USB, en Herramientas seleccionamos Placa, Procesador, Puerto y Programador:
Y subimos. Ya tenemos un programador ISP. Podemos comprobarlo conectando un led al pin 9 con su correspondiente resistencia de 220 Ω, si parpadea simulando un latido es que todo ha ido bien. Ahora tenemos que conectar un condensador de 10 µF entre Reset y Ground para que no se active indebidamente el reset al programar.

Tercero conectar nuestro programador ISP al Arduino a programar y quemar bootloader:
Conectamos de esta manera:
Ahora con nuestro Nano programador ISP conectado al USB vamos a Herramientas y seleccionamos Placa, Procesador, CPU Speed, Puerto y el Programador que debe ser "Arduino as ISP", en nuestro caso podría ser como en la siguiente imagen:
Solo nos queda ir a Herramientas -> Quemar Bootloader y ocurrirá como en este video:

Ya tenemos Optiboot en el segundo Nano. Podemos usarlo con normalidad cargando los sketches por usb, eso sí hay que acordarse de seleccionar correctamente de nuevo Placa, Procesador y CPU Speed como cuando se le cargó el bootloader.

Este sistema de programación mediante ISP también se puede utilizar para cargar directamente los sketches. Lo único que varía es que en el último paso en lugar de quemar bootloader nos vamos a Programa -> Subir Usando Programador. Esto machaca el bootloader, al menos parcialmente, y ya no será operativo, solo funcionará el sketch cargado, además los fuses quedarán sin configurar correctamente ya que éstos siguen diciendo que hay un bootloader y no lo hay, aunque esto no suele ser un problema y nos funcionará correctamente. Si queremos un micro funcionando con muy poca energía, con pilas o baterías, podemos cargar Optiboot a 1 Mhz (oscilador interno), después le cargamos el sketch que nos interesa y podremos hacerlo funcionar con muy poca electrónica ya que no necesitará oscilador externo como se hace aquí: Programar Atmega328 con Arduino de la forma más sencilla

En este otro vídeo se carga un sketch por ISP que machaca el bootloader:
Como se puede ver, se carga el sketch Blink de ejemplo del IDE de Arduino.

Los posibles errores que puedan surgir como por ejemplo este:
Normalmente son debidos a fallos en las conexiones, a no haber colocado el condensador de reset en el programador y, por mi experiencia, cuando ya te has hartado de repasarlo todo y ver que está bien, el fallo es causado por una soldadura fría como es el caso del error que he puesto más arriba, hay que repasar las soldaduras.

Páginas de referencia útiles para este artículo:
https://www.luisllamas.es/usar-arduino-para-reprogramar-el-bootloader/

Si quieres, puedes contribuir a hacer crecer el blog:



Comentarios

Escríbeme, comenta o pregúntame lo que quieras:

Nombre

Correo electrónico *

Mensaje *

Entradas populares