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.
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:
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:
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:
A continuación, nos aseguraremos de que la placa Arduino está correctamente configurada en el programa:
Y por último pulsamos el botón para compilar y subir el programa a nuestro Arduino:
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:
Y por último pulsaremos la opción del mismo menú llamada 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:
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.
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.
Una vez hecho, ya sólo tendremos que pulsar el botón de subir Sketch, manteniendo la tecla mayúsculas pulsada.
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.
Luego configuraremos el programa como si fuésemos a programar un Arduino Uno.
Y por último pulsamos el botón para subir el Sketch (sin pulsar shift).
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):
- 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:
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:
Y por último pulsaremos el botón de programación:
Espero que te sirva ;). ¡Un saludo!