Arduino: Circuito básico, Bootloader y programación

En este tutorial os voy a enseñar cómo crear un circuito de Arduino básico, quemar el Bootloader y realizar la programación directamente en la breadboard. Esto es útil cuando queramos crear circuitos usando ATMega328p independientes, o simplemente queramos reducir el consumo eliminado componentes extra.

Entre las ventajas de este circuito están el precio, ya que consta de menos componentes que una placa Arduino. Esto ayuda si tenemos que crear varios circuitos iguales y no necesitamos estar programándolos. Además tal y como comento arriba, al constar de menos componentes (entre ellos el regulador), reduce el consumo.

Por supuesto no todo es bueno, y este circuito tiene ciertas desventajas. Entre ellas está la carencia del regulador, lo cual es una ventaja porque baja el consumo pero nos limitará el voltaje de entrada. Otra desventaja es la carencia de circuito para programarlo, por lo que tendremos que usar uno externo.

Material necesario

Para crear este circuito básico necesitaremos de estos materiales.

  • Protoboard
  • Jumpers o cables de conexión
  • Un chip ATMega328p
  • Un cristal de cuarzo de 16Mhz
  • Dos condensadores cerámicos de 22pf
  • Un pulsador
  • Una resistencia de 1k

Pinout

Lo primero que debemos conocer de nuestro ATMega328p es su pinout, con motivo de saber cómo conectarlo de forma correcta.

Pinout del ATMega328

Una vez que conozcamos cómo conectar el chip, ya podemos proceder a crear el circuito básico.

Circuito básico

Una vez hecha la introducción, es necesario que nos pongamos manos a la obra y comencemos con el circuito básico.

Para saber cómo conectarlo, podemos utilizar el siguiente esquema:

Circuito básico funcional con ATMega328
ATMega328p en Protoboard

Para crear este circuito me he basado en el incluido en la web de prometec, pero he quitado la parte del regulador, la cual no nos interesa para el propósito de ahorrar energía.

Aquí os dejo el datasheet por si queréis ver más información acerca de este microcontrolador.

Quemando el Bootloader

Una vez tengamos nuestro circuito básico montado, tendremos que quemar el Bootloader para poder comenzar a usar nuestro Arduino, ya que en caso contrario no podremos programarlo. Para ello necesitamos disponer de un Arduino funcional, el cual nos permitirá cargar el código para la quema del Bootloader.

He buscado de formas de hacerlo sin otro Arduino pero no he encontrado ninguna que sea efectiva, o al menos no tanto como usando un Arduino, por lo que utilizaremos el siguiente esquema para hacerlo:

Esquema de montaje de un Arduino para quemar el bootloader de un ATMega328p
Esquema para quemar el Bootloader

Una vez que tengamos montado el esquema de arriba, tendremos que conectar la placa Arduino por USB al PC y cargaremos el programa ISP. Para ello abriremos la aplicación Arduino y cargaremos el código de ejemplo:

Archivo > Ejemplos > 11. Arduino ISP > Arduino ISP

A continuación, nos aseguraremos de que la placa Arduino está correctamente configurada en el programa:

Herramientas > Puerto COM > Puerto de la placa
Programador > ArduinoISP

Y por último pulsamos el botón para compilar y subir el programa a nuestro Arduino:

Shift + subir sketch

Una vez subido el programa correctamente, ya tendremos nuestro Arduino listo para quemar el Bootloader. A continuación, sólo tendremos que cambiar el programador de ArduinoISP a Arduino as ISP:

Programador > Arduino as ISP

Y por último pulsaremos la opción del mismo menú llamada Quemar Bootloader:

Herramientas > Quemar bootloader

Una vez que hayamos pulsado dicho botón, veremos el proceso de quemado del Bootloader en la parte inferior del programa, y nos dirá que el Bootloader ha sido quemado correctamente.

Si recibiéramos algún tipo de error, revisaremos la conexión de los componentes para verificar que todo está correctamente conectado, y si seguimos recibiendo el mismo error, es posible que sea necesario poner un condensador de 10uf entre el pin reset del Arduino y el pin GND. Esto no es necesario en las últimas versiones del programa de Arduino, pero por si acaso os dejo el esquema:

Esquema de conexión del Arduino UNO como programador, y el ATMega328p

Programación del ATMega328p

Una vez quemado el Bootloader, ya sólo nos quedará realizar la programación del chip ATMega328p. Esto puede ser realizado por un Arduino, o un programador USB a UART del tipo FTDI o CH340G (este último puede requerir la instalación de drivers).

Usando la placa Arduino

La programación del chip ATMega328p se puede realizar con los siguientes dos métodos:

  • Usando el método descrito arriba para conectarlo y usar el Arduino como ISP
  • Conectándolo directamente al programador de nuestra placa Arduino y programarlo de forma corriente

Usando el esquema usado para quemar el Bootloader

Si quemaste el Bootloader, quizá el método descrito arriba te viene al pelo porque ya tienes el circuito montado, por lo que empezaremos por este método. Para ello, conectaremos el ATMega328p de la misma forma que cuando quemamos el Bootloader.

Esquema de conexión del Arduino UNO como programador, y el ATMega328p

Una vez conectado cargaremos nuestro Sketch, que en mi caso será el ejemplo Blink, y nos aseguraremos de que el programador siga en Arduino as ISP.

Herramientas > Programador > Arduino as ISP

Una vez hecho, ya sólo tendremos que pulsar el botón de subir Sketch, manteniendo la tecla mayúsculas pulsada.

Al pulsar Mayúsculas el mensaje de subida del sketch cambiará a Subir usando Programador

Es muy importante que mantengamos la tecla mayúsculas mientras pulsamos el botón, ya que sino será nuestro Arduino el que sea programado. Si os fijáis bien, se puede ver que el texto cambia a Subir Usando Programador

Conexiones TX y RX

Este método es más fácil porque conectamos la placa de Arduino directamente al ATMega328p para programarlo, pero a la vez más tedioso porque tendremos que quitar el chip de dicha placa, sino no será posible programarlo.

En la siguiente imagen podemos ver el esquema de conexión, que es básicamente conectar los pines Reset, RX y TX de nuestra placa Arduino a los del ATMega328p.

Conexión Uno y ATMega328p: RX, TX y Reset del UNO con el mismo del ATMega328p

Luego configuraremos el programa como si fuésemos a programar un Arduino Uno.

Configurar programación como programarías el UNO

Y por último pulsamos el botón para subir el Sketch (sin pulsar shift).

Pulsar el botón de programar sin pulsar nada más, tal y como programarías el UNO.

Con esto ya habremos subido el código a nuestro chip ATMega328p y estará listo para funcionar.

De todas formas, teniendo en cuenta que hemos retirado el chip de nuestra placa Arduino, quizá una forma más fácil sea directamente poner el chip que queremos programar en la placa. Por supuesto, tendremos que tener cuidado cada vez que lo quitemos para no dañar las patillas y por supuesto, no sirve si ya tenemos el chip soldado en una placa.

Usando un programador FTDI o CH340G

La otra forma de programar nuestro Arduino es usando un programador serial como el FTDI (por ejemplo FT232RL), o CH340G.

Para ello, conectaremos el programador a nuestro ATMega328p de la siguiente forma (el led es opcional, pero nos sirve para verificarlo):

Conexión del FTDI o CH340G al ATMega328p
  • DTR o RTS: se conectará al pin1 del Arduino (reset) a través de un condensador de 100nf
  • RXD: se conectará al pin3 del Arduino (TXD).
  • TXD: se conectará al pin2 del Arduino (RXD)
  • Por último se conectarán los pines de corriente VCC y GND a nuestro Arduino para alimentarlo.

Y una vez conectado programaremos el chip como si de un Arduino se tratase. Nos aseguramos de que está bien configurado en el menú de Herramientas:

Configurar programador como lo harías para programar el UNO.

Una vez hecho cargamos nuestro sketch, como por ejemplo el Led Blink, el cual podremos usar para verificar el funcionamiento, siempre y cuando hubiésemos puesto el led:

Abre el sketch que quieras programar, por ejemplo el Blink

Y por último pulsaremos el botón de programación:

Pulsa el botón de programar como lo harías para un UNO.

Espero que te sirva ;). ¡Un saludo!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.