En este POST voy a explicar cómo programar un
Arduino UNO a través de ICSP, que no es más que un método de programación serie
en circuito que se realiza mediante un conector de 6 pines (MOSI, MISO, SCK, RESET,
VCC y GND ) que nuestra placa Arduino tiene para tal fin, teniendo acceso a la
memoria de programa (Flash) del microcontrolador AVR (Atmega328) y poderle grabar
directamente desde el PC el Bootloader, que es un gestor de arranque interno
necesario para que nuestro Arduino se pueda comunicar correctamente con el IDE,
o cargarle cualquiera de los programas (Sketchs) que nos interesen, sin necesidad
de utilizar el puerto USB de nuestro Arduino.
|
Conector
ICSP en un Arduino UNO
|
Para poder hacer uso de este método de programación
va a ser necesario un hardware adicional denominado programador. En nuestro
caso vamos a utilizar como programador ICSP un Arduino UNO, un USBTinty y un
USBasp, aunque también existan otros métodos alternativos a los citados.
1º MÉTODO ICSP: Arduino UNO como programador ICSP.
Para este método de programación ICSP vamos a
necesitar inicialmente un Arduino UNO configurado como programador ICSP. Para
ello le debemos de cargarle un “Sketch” especial que viene en el IDE de
Arduino, dirigiéndonos hacia el menú “Archivo à Ejemplos à ArduinoISP”, como se muestra en la siguiente
imagen:
|
Ruta del programa “ArduinoISP” que incluye el IDE de Arduino
|
A continuación se nos abrirá el programa que
debemos de cargar en el Arduino UNO que vamos a utilizar como programador ICSP,
como si de cualquier programa se tratara, es decir, conectando el Arduino UNO
al PC a través del puerto USB, seleccionando la placa Arduino UNO y el puerto
COM en el que conectamos el Arduino UNO, y por último, presionando el icono
subir (Ctrl + U).
|
Programa “ArduinoISP” que incluye el
IDE de Arduino
|
Una vez cargado el programa correctamente en el
Arduino UNO que vamos a utilizar como programador ICSP, debemos de realizar la
conexión ICSP entre los dos Arduinos como se muestra en la siguiente tabla:
|
Conexiones para la programación ICSP entre los dos
Arduinos UNO
|
Una vez conectados los dos Arduinos mediante ICSP,
conectamos el Arduino UNO programador ICSP al USB de nuestro PC y abrimos el
IDE de Arduino para cargar el Bootloader o el programa que queramos al otro
Arduino a través de él. Para ello debemos de tener configurado el IDE de
Arduino como se muestra a continuación, teniendo muy presente que tenemos que
seleccionar el puerto COM en el que tengamos conectado nuestro Arduino
programador ICSP.
|
Configuración
del IDE de Arduino para programación con Arduino ICSP
|
Para finalizar debemos de
abrir el programa que deseamos cargar en nuestro Arduino y dirigirnos hacia el
menú ”Archivo à Subir Usando Programador” para poder subir el programa
correctamente a la placa. Si deseamos cargar el “Bootloader” en la placa,
simplemente pulsamos la opción “Quemar Bootloader” en el menú de Herramientas.
|
Menú ”Archivo” del IDE de Arduino
|
Lista de Materiales:
·
2
Arduino UNO Rev.3.
·
IDE
1.6.4 de Arduino (vale cualquier otra versión).
·
Cable
USB tipo A-B.
·
Cables
de conexiones.
2º MÉTODO ICSP: Programador ICSP “USBTinty”
Para
poder utilizar este método de programación ICSP vamos a necesitar un
programador ICSP denominado comercialmente como “USBTinty”.
|
Programador
ICSP “USBTiny”
|
Lo
primero que tendremos que hacer es conectarlo al puerto USB de nuestro PC y
posteriormente cargarle los driver como si de cualquier otro HARDWARE se tratase,
es decir, entrando en el administrador de dispositivos si estamos trabajando
con un sistema operativo Windows. En el siguiente enlace podéis obtener los
drivers actualizados.
Una vez que nuestro PC haya reconocido y configurado para su uso el
programador “USBTinty”, tendremos que
conectar el bus de 6 pines que trae el programador a nuestro Arduino como se
muestra a continuación y no de cualquier otra manera, aunque podemos realizar
la conexión ICSP entre el programador y el Arduino “pin a pin” siempre que
respetemos el orden de conexiones ICSP que el “USBTinty” trae serigrafiado en
su parte posterior.
|
Conexión entre el “USBTinty”
y nuestro Arduino UNO
|
A continuación tenemos que conectar el “USBTiny” al puerto USB de nuestro
PC y abrir el IDE de Arduino para configurarlo como se muestra en la siguiente
imagen.
|
Configuración del IDE de Arduino para
programación ICSP con “USBTiny”
|
Como podemos observar, tenemos que
seleccionar el puerto COM donde está conectado el USBTiny, el tipo de placa a
programar, que en nuestro caso es un Arduino UNO y además debemos de seleccionar el USBTinyISP
como programador. Para quemar el Bootloader, que es el Firmware de arranque de
la placa, simplemente presionaríamos la opción realizándose el proceso
automáticamente.
Por último, para cargar un programa a la placa a través del USBTiny,
presionaríamos la opción “Subir usando Programador” del menú “Archivo” del IDE
de la misma manera que lo hemos hecho para el primer método ICSP.
Lista de Materiales:
·
Arduino
UNO Rev.3.
·
Programador
ICSP “USBTinty”.
·
Drivers “USBTinty”.
·
IDE
1.6.4 de Arduino (vale cualquier otra versión).
·
Cable
USB tipo A-B.
·
Cables
de conexiones (Cable de 6 pines opcional)
3º MÉTODO ICSP: Programador ICSP “USBasp”
Para
poder trabajar con este último método de programación ICSP vamos a necesitar un
programador ICSP llamado “USBasp”.
|
Programador ICSP “USBasp”
|
Antes
de comenzar os tengo que avisar de que este método es el más tedioso y
complicado de configurar por lo que no os lo recomiendo si podemos utilizar
alguno de los dos anteriores, puesto que además de instalar los drivers
correspondientes es necesario actualizar el firmware del “USBasp” para que
pueda ser reconocido por el IDE de Arduino. Para ello vamos a seguir una serie
de pasos que a continuación os detallo.
Para comenzar vamos a
conectar el “USBasp” a nuestro PC a través del puerto USB para que lo reconozca
y podamos instalar los drivers correspondientes como si de cualquier otro
dispositivo “Hardware” se tratara. En este enlace os dejo los drivers actualizados
y funcionando correctamente.
Una
vez que tengamos los drivers instalados, vamos a pasar a actualizar el firmware
del “USBasp”, para ello, vamos a necesitar un Arduino UNO configurado como
programador ICSP, como os he explicado en el primer método de este POST, además
de tener instalado el software “AVRDUDESS 2.4” que podéis descargar desde aquí. Antes
de continuar con la conexión entre el “USBasp” y el Arduino UNO configurado
como programador ICSP, debemos de abrir el “USBasp” y puentear mediante un
Jumper o cablecito los dos orificios que trae en su parte posterior, para que
pueda ser programado (una vez programado hay que retirarlo para que “USBasp”
funcione correctamente).
|
Jumper de programación en el “USBasp”
|
Las conexiones a realizar entre el Arduino UNO configurado como
programador ICSP y el “USBasp” son las que se muestran en la siguiente tabla:
|
Tabla de conexiones entre el Arduino Uno configurado como programador
ICSP y el USBasp
|
|
Configuración de los pines en el
programador “USBasp”
|
Por
último, una vez realizadas las oportunas conexiones, vamos a descargar de aquí
el nuevo firmware para
poder cargárselo al “USBasp” a través del software “AVRDUDESS 2.4” que hemos
instalado anteriormente, para ello, una vez abierto el software tenemos que
realizar las siguientes operaciones:
A. Programador à Arduino.
B. Atmega8 MCU (suponiendo que el USBasp
tiene un atmega8).
C. Puerto COM à Elegimos el puerto donde está
conectado el Arduino Uno configurado como programador ICSP.
D. Velocidad en baudios de la
comunicación à19200.
E. Seleccionamos el archivo firmware que
hemos descargado anteriormente.
F. Presionar el botón “Program!”.
|
Configuración del software “AVRDUDESS
2.4” |
Una vez actualizado el
“USBasp” ya podrá ser reconocido por el IDE de Arduino para poder programar un Arduino
Uno a través de él. Para ello debemos de conectar los pines ICSP del Arduino a
programar a los pines del “USBasp”, respetando las conexiones “pin a pin”, para
posteriormente conectar el “USBasp” al puerto USB de nuestro PC, abrir el IDE de Arduino y configurarlo como a
continuación se muestra.
|
Configuración del IDE de Arduino para
programación ICSP con “USBasp”
|
Para ello abrimos el
programa que queremos cargar en el Arduino UNO, seleccionamos la placa Arduino
UNO y el puerto “COM” donde conectamos el “USBasp”, y por último, tenemos que seleccionar
el “USBasp” como programador. Si queremos “Quemar el Bootloader” simplemente
pulsaríamos en la opción y se realizaría automáticamente en pocos segundos.
Para cargar el programa nos tenemos que ir al menú “Archivo à Subir Usando Programador” como se ha
venido haciendo en los métodos ICSP anteriormente explicados.
Lista de Materiales:
·
Arduino
UNO Rev.3.
·
Programador
ICSP “USBasp”.
·
Drivers
“USBasp”.
·
IDE
1.6.4 de Arduino (vale cualquier otra versión).
·
Software
“AVRDUDESS 2.4”.
·
Firmware
“USBasp”.
·
Cable
USB tipo A-B.
·
Cables
de conexiones (Cable de 10 pines opcional).