En este blog nos dedicamos a hacer tutoriales para Arduino , ESP32 y Raspberry Pi. Sin embargo, esta publicación está hecha principalmente para las personas que son nuevas en el uso de Arduino.
Si eres un principiante te invito a seguir leyendo para que tengas una introducción al uso de esta herramienta. En cambio, si ya conoces algo de este entorno puedes leer igualmente y puede que descubras algo nuevo.
Al terminar de leer esta publicación podrás seguir el ritmo de los demás tutoriales de Arduino.
¿Qué es Arduino?
Arduino es una plataforma de desarrollo abierto de hardware y software. Esto quiere decir que tienes los archivos editables a tu disposición para modificarlos. Pero también puedes adquirir hardware ya hecho.
Una placa Arduino también puede ocupar el lugar de un sistema embebido, ya que puede tener diversos componentes en una sola placa para cumplir una o varias funciones específicas.
Tal vez te preguntes que otra cosa hace que Arduino sea tan especial. Arduino amplió la posibilidad de que cualquier persona pueda empezar a hacer sus propios proyectos de electrónica y programación. Estos es debido a la facilidad que da una placa Arduino para programar un microcontrolador y la de funcionar con otros componentes.
Ya seas un principiante o alguien con experiencia, Arduino te permite desarrollar prototipos y proyectos finales con más rapidez y facilidad.
Partes principales de un Arduino
Las placas de Arduino tienen una estructura común en cuanto a las funciones de ciertas partes.
Puerto USB
El tipo de este puerto puede variar en cada modelo de Arduino. Sin embargo, su funcionamiento es el mismo. Alimentar de energía al Arduino, transmitir datos y programar de la placa. Mediante este puerto estas suministrando 5 voltios.
Puerto de alimentación externa
Este es un puerto adicional para alimentar al Arduino, pero no transmite datos. Suele admitir de 7 a 12 voltios. Igualmente te recomendamos ver primero las especificaciones del modelo del que dispongas en la página de documentación de Arduino.
Pines digitales
Un GPIO (General Purpose Input/Output, Entrada/Salida de Propósito General) es un pin que puedes programar para ser de entrada o salida. Pueden ser de señales digitales o analógicas.
Al ser de entrada puedes recibir señales del exterior y un pin de salida las enviará hacia afuera. Por ejemplo, puedes recibir datos de un sensor en un pin de entrada y enviar instrucciones para un motor desde un pin de salida.
Al ser un pin digital se trabaja con 1 y 0 que corresponden a los estados de activo e inactivo. En Arduino se utilizan los términos HIGH y LOW, respectivamente.
Estos pines de Arduino también tienen otras funciones. Cada modelo tiene estos pines seleccionados para que también se puedan usar con protocolos de comunicación. En Arduino podemos usar SPI, I2C y UART.
Pines analógicos
Estos pines leen valores de energía de 0 hasta el nivel de operación de la tarjeta, que puede ser de 3.3 o 5 voltios. El voltaje que esté ingresando se expresará en unidades. Cuando la resolución de la lectura sea de 10 bits (2^10) leerás desde el 0 al 1023, ósea 1024 unidades. En caso de ser de 12 bits (2^12) la lectura irá desde el 0 al 4095.
La mayoría de placas Arduino leen con una resolución de 10 bits, y las que son capaces de hacerlo a 12 bits utilizan 10 por defecto. Por eso existe un comando para configurar la resolución que usarás.
analogReadResolution(resolución);
Expandamos un poco el tema ya que a veces es confuso al inicio. ¿A cuánta energía equivale cada unidad leída en un pin analógico?
Por ejemplo, si están entrando 5 voltios y se leen a una resolución de 10 bits tendremos que dividir el voltaje entre las unidades que disponemos para su lectura. Ósea 5/1024. Con lo que obtenemos, redondeando, 0.0049 voltios o 49 milivoltios (mV) por unidad.
ICSP
Los puertos ICSP son usados para reprogramar el firmware o bootloader del microcontrolador. En la imagen de muestra hay 2 puertos ICSP. Uno es para el microcontrolador principal, en donde guardamos los programas que creamos. El otro puerto ICSP es para el microcontrolador que sirve de intermediario entre el puerto USB y el microcontrolador principal.
También es posible cargar los programas que realizamos en Arduino IDE mediante ICSP, pero es algo que no cubriremos en esta publicación.
Microcontrolador
Un microcontrolador, de forma sencilla, es una computadora muy pequeña. Dentro de ese encapsulado está la unidad de proceso, memoria RAM, almacenamiento para subir nuestro programa, GPIO y otros componentes eléctricos.
Existen diversos microcontroladores con los que se puede trabajar en un proyecto electrónico, entre los que tenemos a los PIC y AVR. Arduino utiliza los AVR. Concretamente utiliza el ATmega328P para el Arduino UNO, uno de sus modelos más populares.
En otras situaciones se requiere de un grabador y demás equipos para subir un programa a un microcontrolador. Además de los recursos y configuración de software. Ahora también agregamos que hay que ser muy detallado en leer sus características para poder elegir lo más conveniente para el proyecto y también considerar esas características al programar.
Con Arduino la tarea de escoger una plataforma se hizo más sencilla para los entusiastas y algunos profesionales. El equipo de grabación del programa están en la misma tarjeta. La documentación y ayuda de la comunidad brinda información sobre las aplicaciones comunes para cada modelo.
Botón de reinicio
Este botón nos sirve para reiniciar la placa y por lo tanto el programa que esté contenido en ella se ejecutará otra vez.
¿Cuántos modelos de Arduino hay?
Existen diversos modelos para distintas aplicaciones. Pueden variar en el modelo del microcontrolador, cantidad de pines, tamaño de placa, entre otros. Hagamos un repaso por los modelos más conocidos.
Arduino UNO
Uno de los modelos más utilizados. Tiene 14 pines digitales 6 entradas analógicas. Utiliza el ATega328P.
Arduino Mega
Esta versión te proporciona más pines, 54 digitales y 16 entradas analógicas. Esto también implica que usa más espacio. El microcontrolador que utiliza es el ATmega2560.
Arduino Leonardo
El Arduino Leonardo tiene un aspecto similar al Arduino UNO. Pero aparte del nombre impreso en la placa es distintivo el tipo de encapsulado de su microcontrolador que en este caso es un ATmega32U4. Cuenta con 20 pines digitales y 12 entradas analógicas.
Arduino Nano
Utiliza el ATmega328, cuenta con 14 pines digitales y 8 entradas analógicas. Características similares a las del Arduino UNO con la diferencia del tamaño que ocupa.
Arduino Mini
Cuenta con un ATmega168, 14 pines digitales y 8 entradas analógicas. Por su tamaño es ideal para proyectos que requieran usar poco espacio.
Arduino Micro
Esta versión tiene 20 pines digitales y 12 entradas analógicas junto a un ATmega32U4. Características similares a las del Arduino Leonardo a excepción de su tamaño ideal para proyectos más pequeños.
¿Cómo adquiero un Arduino?
Puedes adquirir un Arduino desde su tienda oficial. Esta es una buena opción por el acabado final de los equipos y que además puedes adquirir kits con manuales didácticos.
Una ventaja de que Arduino sea un proyecto abierto es que hay otros fabricantes que crean sus versiones o imitan los modelos a partir de los archivos editables que publica Arduino. Se les conoce como versiones genéricas. Estas versiones son mucho más baratas y las puedes adquirir en tiendas como AliExpress o en tiendas locales que importan esas versiones.
¿Cómo empiezo a programar un Arduino?
Una vez que tengas un Arduino debes descargar Arduino IDE desde su página web. Este editor es compatible con todos los modelos de placas, incluyendo las genéricas. Además dispones de herramientas como el administrador de bibliotecas, monitor serial, configuración al subir el programa, entre otros. También cuentas con la capacidad de añadir nuevas placas como las que tienen el ESP32.
Entra aquí para usar el ESP32 en Arduino IDE.
Lenguaje de programación de Arduino
Al programar un Arduino lo estamos haciendo en C++. Pero de una forma más sencilla porque se utiliza el framework Wiring. Este framework, o marco de trabajo, facilita la tarea de programar un microcontrolador usando C y C++. Además es compatible con diversos modelos de AVR.
Estructura de un programa de Arduino
Un programa de Arduino se compone principalmente de dos funciones, setup y loop.
En setup se declaran variables, llamas a otras funciones o haces todo aquello que se ejecutará apenas el microcontrolador empiece a funcionar, esta parte solo se ejecuta una vez.
void setup() {
}
Lo que pongas en la sección de loop se repetirá hasta que el Arduino se apague. En esta sección se suelen poner los procesos que debe actualizarse como la lectura de los pines de entrada, escritura en los pines de salida, imprimir datos en el monitor serial y demás.
void loop() {
}
Puedes crear variables, declarar funciones y añadir librerías fuera de las secciones setup y loop.
Librerías de Arduino
Las librerías de Arduino son archivos de código que puedes vincular a tu proyecto para aumentar las funciones de tu código. Existen librerías para usar sensores, actuadores, protocolos de comunicación, entre otros. Ahorrarás tiempo porque no debes hacer todas esa configuraciones desde cero, solo disponer de los datos necesario para que la librería ejecute los procesos.
Añadir librerías con Arduino IDE es sencillo. Puedes usar el administrador de bibliotecas, buscar, descargar y/o actualizar la librería que quieras.
También puedes añadir una librería en formato zip. Esto es cuando no la encuentras desde el mismo Arduino IDE y la descargas de otro repositorio.
Un ejemplo trabajando con una librería está en esta publicación del MFRC522.
Simuladores de Arduino
Si prefieres probar un Arduino sin adquirir uno físicamente puedes optar por herramientas de simulación. Uno que recomendamos es Tinkercad porque es fácil de utilizar y no necesitas instalarlo, todo se ejecuta en el navegador.
Tinkercad te brinda los dispositivos y otros equipos como sensores ya actuadores para empezar a programar.
Ejercicio práctico
Empezaremos por uno de los ejercicios más sencillos al usar un Arduino UNO. Encenderemos el led que viene incorporado en la placa e imprimiremos su estado en el monitor serial. También puedes hacerlo en Tinkercad.
Conecta el Arduino a tu PC con el cable USB.
Abre el editor de Arduino e inserta el siguiente código.
/*
* Encender LED soldado en Arduino UNO
* Henry Mera - TodoMaker
* https://todomaker.com
*/
int led = 13; //Variable para el pin del led
void setup() {
Serial.begin(9600); //Activar comunicación serial
pinMode(led,OUTPUT); //El pin del led será de salida
}
void loop() {
Serial.println("Led encendido");
digitalWrite(led,HIGH); //Activa el pin del led
delay(3000); //Espera 3 segundos
Serial.println("Led apagado");
digitalWrite(led,LOW); //Desactiva el pin del led
delay(3000);
}
Explicación del código
Crea una variable de tipo entero, ósea un número sin decimales. Le damos el número del pin que tiene conectado el led de la tarjeta.
int led = 13;
Dentro de setup daremos la instrucción de activar la comunicación serial a una velocidad de 9600 baudios.
Después usamos la función pinMode. Esta función necesita dos parámetros, el pin al que hará efecto y el tipo que será. En este caso ponemos la variable que creamos para indicarle el valor y OUTPUT para que lo configure como un pin de salida. Para un pin de entrada debes usar INPUT.
void setup() {
Serial.begin(9600);
pinMode(led,OUTPUT);
}
Dentro de loop tenemos las siguientes líneas. Primero se imprimirá en el monitor serial la frase “Led encendido”. El ln del final es para indicar que lo siguiente que se escriba irá en una nueva línea.
Después en digitalWrite indicamos el pin al que queremos darle un estado. Puede ser HIGH o LOW.
Al final, la función delay pausará la ejecución del programa durante el tiempo que le indiquemos. Ese tiempo debe ser dado en milisegundos.
Las demás líneas son lo mismo, pero para indicar del estado de apagado del led.
Serial.println("Led encendido");
digitalWrite(led,HIGH);
delay(3000);
Asegúrate de que tienes seleccionada la placa que estás usando.
También verifica si estás usando el puerto correcto para subir el programa.
Ahora sí podemos subir el programa desde el botón de “Subir” en el editor o con la combinación de teclas Ctrl+U.
Cuando el código esté subido en el Arduino abre el monitor serial para ver lo que se está imprimiendo.
Conclusiones
Arduino es una plataforma de desarrollo abierto de hardware y software que trajo ventajas con su popularización. Las tareas de escoger componentes y diseñar proyectos se hizo más rápida para los entusiastas y algunos expertos.
Tenemos partes identificables en la mayoría de modelos de Arduino, tales como el puerto USB, puerto de alimentación externa, puertos ICSP, GPIO y un microcontrolador.
La programación también se vuelve más sencilla. El hecho de contar con una comunidad activa pone a nuestra disposición recursos para el desarrollo de proyectos, como las librerías.
Si te ha gustado esta publicación compártela con tus amigos interesados en aprender sobre Arduino y revisa nuestros proyectos relacionados.
Te invitamos a tomar el curso de Introducción al ESP32: Introducción al ESP32 | TodoMaker’s School