En este post, voy a explicar cómo programar un Arduino UNO utilizando el método de programación en circuito llamado ICSP. El Arduino UNO es una placa de desarrollo electrónica utilizada en proyectos de electrónica y robótica. Este método utiliza un conector de 6 pines (MOSI, MISO, SCK, RESET, VCC y GND) presente en la placa Arduino para acceder a la memoria de programa (Flash) del microcontrolador AVR (Atmega328).
Con esto, podemos cargar el Bootloader, necesario para la comunicación correcta del Arduino con el IDE, o cargar cualquier programa (Sketch) deseado, sin necesidad de utilizar el puerto USB del Arduino.
El Bootloader es un programa interno que se encuentra en la memoria del microcontrolador de una placa de desarrollo como el Arduino UNO. Su función es facilitar la carga de nuevos programas (conocidos como Sketchs) en la placa de manera sencilla, sin necesidad de utilizar dispositivos externos como programadores.
El Bootloader se ejecuta cada vez que se enciende la placa y, si detecta que se ha conectado un nuevo Sketch, lo carga en la memoria del microcontrolador y lo ejecuta. De esta manera, el Bootloader permite que el usuario pueda programar y probar de manera rápida y sencilla sus proyectos utilizando el entorno de desarrollo (IDE) del Arduino.
Para poder utilizar el método de programación ICSP descrito anteriormente, es necesario contar con un hardware adicional conocido como programador. En este caso, se utilizará un Arduino UNO como programador ICSP, junto con un USBTinty y un USBasp. Sin embargo, existen otras opciones de programadores alternativos disponibles.
Primer Método ICSP: Arduino UNO como programador ICSP
Para este método de programación ICSP vamos a necesitar 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:
Para cargar el programa en el Arduino UNO que se utilizará como programador ICSP, siga los siguientes pasos:
-
- Conecte el Arduino UNO al PC a través del puerto USB.
- Seleccione la placa Arduino UNO y el puerto COM correspondiente en el entorno de desarrollo (IDE).
- Presione el icono de «subir» (Ctrl + U) para cargar el programa en la placa. Estos pasos se realizan de la misma manera que se cargaría cualquier otro programa en un Arduino UNO.
Una vez cargado el programa 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:
Una vez que los dos Arduinos están conectados mediante ICSP, podemos utilizar el Arduino UNO programador ICSP para cargar el Bootloader o cualquier otro programa (Sketch) en el otro Arduino. Para ello, siga los siguientes pasos:
-
- Conecte el Arduino UNO programador ICSP al PC a través del puerto USB.
- Abra el entorno de desarrollo (IDE) de Arduino y configúrelo de acuerdo a los siguientes parámetros: seleccione la placa Arduino UNO y el puerto COM correspondiente al Arduino UNO programador ICSP.
- Cargue el Bootloader o el Sketch deseado en el Arduino utilizando el icono de «subir» (Ctrl + U).
Es importante tener en cuenta que debemos seleccionar el puerto COM correspondiente al Arduino UNO programador ICSP para que la carga del Bootloader o Sketch se realice correctamente.
Para finalizar el proceso de carga del Bootloader o de un programa en el Arduino, debemos abrir el programa deseado en el entorno de desarrollo (IDE) y dirigirnos al menú «Archivo» y seleccionar «Subir Usando Programador». Esto nos permitirá cargar correctamente el programa en la placa. Si deseamos cargar el Bootloader, simplemente seleccionamos la opción «Quemar Bootloader» en el menú «Herramientas».
De esta manera, podremos finalizar el proceso de programación del Arduino utilizando el método ICSP.
Lista de Materiales utilizados en esta etapa
-
- 2 Arduino UNO Rev.3
- IDE 1.6.4 de Arduino (vale cualquier otra versión)
- Cable USB tipo A-B
- Cables de conexiones
Segundo método ICSP: Programador ICSP “USBTinty”
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 se pueden obtener los drivers actualizados.
Una vez que el PC ha reconocido y configurado el programador USBTinty para su uso, es necesario conectar el bus de 6 pines del programador al Arduino siguiendo el orden de conexiones ICSP especificado en la parte posterior del programador. También es posible realizar la conexión ICSP entre el programador y el Arduino «pin a pin» siempre que se respete el orden de conexiones ICSP.
Es importante seguir las instrucciones de conexión correctamente para asegurar que la conexión se realiza de manera adecuada.
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.
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.
-
- 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)
Tercer 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 esta etapa tengo que avisar de que este método es el más tedioso y
complicado de configurar, por lo que no lo recomiendo si podemos utilizar alguno de los dos anteriores. 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 detallaré a continuación.
Para la actualización debemos conectarel 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.
Para actualizar el firmware del USBasp, necesitarás un Arduino UNO configurado como programador ICSP y el software AVRDUDESS 2.4, que puedes descargar desde internet. Primero, debes abrir el USBasp y conectar un jumper o cable entre los dos orificios que se encuentran en la parte posterior. Luego, debes conectarlo al Arduino UNO configurado como programador ICSP siguiendo el orden de conexiones ICSP.
Una vez que hayas terminado de programar el USBasp, debes retirar el Jumper para que el dispositivo funcione correctamente. Con estos pasos podrás actualizar el firmware del USBasp de manera sencilla.
Las conexiones a realizar entre el Arduino UNO configurado como programador ICSP y el “USBasp” son las que se muestran en la siguiente tabla:
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:
-
- Programador / Arduino
- Atmega8 MCU (suponiendo que el USBasp tiene un atmega8)
- Puerto COM / Elegimos el puerto donde está conectado el Arduino Uno configurado como programador ICSP
- Velocidad en baudios de la comunicación en 19200
- Seleccionamos el archivo firmware que hemos descargado anteriormente
- Presionar el botón «Program!»
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.
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.
-
- Arduino UNO Rev.3
- Programador ICSP USBasp
- Drivers USBasp
- Arduino IDE (vale cualquier otra versión)
- Software AVRDUDESS 2.4
- Firmware USBasp
- Cable USB tipo A-B
- Cables de conexiones (Cable de 10 pines opcional)
En resumen, en este post se ha proporcionado información sobre cómo programar una placa Arduino UNO mediante el método de programación en circuito ICSP. Se han presentado tres métodos diferentes para realizar esta tarea: el primero utilizando el Arduino UNO como programador ICSP, el segundo utilizando un programador externo llamado USBTiny y el tercero utilizando otro programador externo llamado USBasp. Para cada uno de estos métodos, se han brindado instrucciones detalladas sobre cómo conectar el programador al Arduino y cargar el Bootloader o un programa en la placa.
Espero que hayas encontrado este post útil y que hayas aprendido algo nuevo. Si tienes alguna pregunta o comentario, no dudes en dejarlos en la caja de comentarios a continuación.