¿Has escrito algún informe en el bloc de notas en nano o vim? Imagino que no pero puedes adivinar el sufrimiento que tiene que ser hacer listas, tablas o tabulaciones.
Porque estos editores son básicos y se utilizan para editar archivos sencillos. Pero no le pidas más. Es lo que hay.
Para hacer informes sin sufrir una avería mental importante es mejor utilizar el Office o el Libre Office. Donde va a parar.
Lo mismo sucede con el PlatformIO y el IDE de Arduino.
A ver, no digo que el IDE de Arduino sea para hacer el chorra, lo que digo es que si quieres programar como un profesional tarde o temprano tendrás que pasar a un IDE que también lo sea. Me refiero a profesional.
Y PlatformIO es uno de los entornos de desarrollo más populares en el desarrollo con Arduino y ESP8266.
Es compatible con todas las placas de Arduino (Arduino UNO, Arduino MEGA, Arduino Nano, …) y con todas las placas basadas en el ESP8266 (NodeMCU, Wemos, …).
Y en este tutorial vas a poder empezar a desarrollar proyectos profesionales que te ayudarán a programar mejor y ser más eficiente.
Indice de contenidos
- 1 PlatformIO y sus beneficios
- 2 Visual Studio Code un entorno de código abierto
- 3 Conceptos básicos de PlatformIO
- 4 PlatformIO como crear tu primer proyecto
- 5 Cómo compilar y cargar código con PlatformIO
- 6 Uso de librerías con PlatformIO
- 7 Cómo usar el gestor de librerías de PlatformIO
- 8 Como crear un proyecto de forma manual en PlatformIO
- 9 Conclusión sobre Platform IO la alternativa a Arduino IDE
Requisitos para usar Platformio
- Ordenador con Windows 10 (también funciona en Linux y MAC).
- Instalar Visual Studio Code.
- Instalar la versión 3.5 o superior de Python.
- La placa que prefieras en tus proyectos Arduino.
PlatformIO y sus beneficios
No cabe la menor duda, que la curva de aprendizaje del entorno de desarrollo oficial de Arduino es la mejor opción si te estás iniciando. Por ejemplo, ten en cuenta las funcionalidades que ofrece:
- Una interfaz gráfica amigable.
- Editor de código sencillo.
- Gestor de proyectos.
- Gestor de librerías
- Opciones de preferencia de usuario.
- Opciones Multiplataforma.
- Monitor Serie.
- Administrador de placas: originales y de terceros.
- Compilador.
Arduino proporciona este conjunto de herramientas en un mismo lugar, pero, y si te digo que hay otra herramienta que puede ayudarte un poquito más.
Hablo de PlatformIO IDE, un editor profesional y de código abierto, que permite el desarrollo de código para microcontroladores de forma profesional.
Lo interesante de esta herramienta es que se puede integrar como complemento o extensión adicional en otros entornos de desarrollo integrados.
Por su parte PlatformIO presenta características adicionales que te harán la vida más fácil.
- Depurador: ideal para examinar elementos particulares de tu código, cuando las cosas salen mal.
- Detección de puerto automático.
- Gestor de librerías privadas: permite añadir librerías a tus proyectos de forma particular, en lugar de global como sucede en Arduino IDE. También puedes controlar qué versión usarás de cada librería.
- Integración con un repositorio de código: como GitHub o GitLab
- Permite desarrollo remoto.
- Asistencia inteligente de escritura: funciones como el autocompletado y la comprobación de sintaxis en tiempo real, ayudan a cualquiera a escribir código de forma profesional con menos errores.
- Referencias integradas: permiten una mejor comprensión del código. Gracias a esto, puede que aprendas algo nuevo a medida que escribes tus líneas.
- Archivo platformio.ini: contiene la configuración de tu proyecto y permite que lo muevas fácilmente de una computadora a otra.
- Y tambien trae un poco de personalización extra.
Más información en la página oficial de PlatformIO.
Por otro lado, algunas de las características del Arduino IDE 1.8, se mejoran en la nueva versión el Arduino IDE 2.0.
Visual Studio Code un entorno de código abierto
Para que la extensión de PlatformIO proporcione sus características, es necesario incluirlo dentro de un entorno de desarrollo integrado como:
- Netbeans
- Sublime Text
- Codeblocks
- Atom
- Eclipse
- Visual Studio Code (VS Code)
En este caso, se optó por Visual Studio Code para la instalación de PlatformIO. Es un editor de código fuente, creado por Microsoft.
Aunque parezca extraño, se trata de un software de código abierto, multiplataforma, que tiene la capacidad de añadir extensiones como nuestro preciado PlatformIO.
Instalar Visual Studio Code en Windows 10
Para comenzar con la instalación, debes ingresar a la página oficial de Visual Studio Code.
En el botón “Download for Windows” puedes descargar la versión estable y actualizada del software.
Una vez descargado, haz clic en el ejecutable con el siguiente diseño, para iniciar el asistente de instalación.
Acepta los términos y haz clic en siguiente.
Elige la ruta donde deseas guardar el programa. Una vez terminado, haz clic en siguiente.
Aquí puedes seleccionar la ubicación del acceso directo del programa. Por defecto, creará el acceso directo en el menú de inicio.
Algo muy importante, es dejar marcada la casilla «Agregar a PATH» en el cuadro de diálogo. También tienes otras opciones.
El resto de opciones las puedes elegir a tú gusto. Una vez terminado haz clic en siguiente.
Ten en cuenta que la instalación puede tardar un tiempo.
Una vez finalizado el proceso, puedes verificar si el editor inicia correctamente dando clic en finalizar. Aunque aún faltan detalles.
El siguiente paso es instalar Python, para ello puede ingresar a su página oficial.
En la columna de descargas (“Downloads”), puedes encontrar un botón con las versiones de Python para Windows.
Al momento de realizar este artículo la última versión de Python estable es: Python 3.9.5
En el próximo paso, debes presionar en “Download Windows installer (64-bit)” para obtener el ejecutable.
Es posible que el archivo no funcione correctamente en tu procesador. En este caso debes elegir la versión de 32 bits, Incluso si tu ordenador está ejecutando Windows de 64 bits.
En el próximo paso, debes ejecutar el asistente de instalación y presionar “Install Now” para iniciar. Pero antes, selecciona la casilla “Add Python x.x to PATH”. Es esencial para que PlatformIO funcione correctamente.
Espera un momento, hasta que termine el proceso.
Luego de finalizado, puedes cerrar la ventana.
Ahora si, todo está listo para agregar la extensión de PlatformIO a Visual Studio Code.
Instalar la extensión PlatformIO en Visual Studio Code
Al iniciar Visual Studio Code, verás la siguiente pantalla.
El próximo paso, es seleccionar el icono de extensiones (lateral izquierdo con forma de cubos). En el debes escribir “PlatformIO” y seleccionar la primera opción.
Luego, presiona “Install” y espera un momento.
Es probable que notes un problema como el de la siguiente imagen. No te preocupes hay solución.
Presiona, “Check available solutions”.
Luego, presiona “Open”.
El botón enlaza a una página con varias opciones para solucionar tu problema.
En el artículo solo se efectúa la primera solución, si no te funciona, puedes probar las demás.
Ve al icono de Windows. Después elige “Aplicaciones y características”.
Escoge la opción: “Alias de ejecución de aplicaciones”.
Desactiva el instalador de aplicaciones: python.exe y python3.exe.
Luego de solucionar el error, el proceso de instalación continúa automáticamente. Una vez terminado, debes reiniciar Visual Studio Code.
Conceptos básicos de PlatformIO
Para empezar a entender las herramientas de PlatformIO y como está organizado, se da un repaso a la pantalla de bienvenida de la extensión PlatformIO.
Sección pestaña de bienvenida PlatfotmIO IDE
En el inicio del complemento puedes:
- Verificar la versión instalada.
- Crear, importar y abrir proyectos.
- También puedes ver ejemplos.
Proyectos en PlatformIO
En la grilla izquierda, también se encuentra una lista con todos los proyectos creados donde puedes editar cada uno y agregar descripciones.
Sección inspeccionar en PlatformIO
Aquí puedes inspeccionar tus proyectos en busca de estadísticas de uso de memoria.
Sección librerías en PlatformIO
Aquí verás el gestor de librerías, este nos ayuda a incluir librerías de forma global o privada.
Placas en PlatformIO
Por aquí se puede buscar e instalar el driver para la placa que utilices.
Sección plataformas en PlatformIO
Aquí se enumeran las plataformas usadas hasta el momento como, ArduinoAVR, Espressif ESP32, Espressif 8266 y otras.
Dispositivos en PlatformIO
Aquí puedes ver una lista de las placas conectadas actualmente a tu ordenador. Se crea automáticamente, y gracias a esto, no es necesario seleccionar el puerto, a diferencia del IDE de Arduino.
PlatformIO como crear tu primer proyecto
En un inicio, se utilizará el asistente (wizard) para crear un proyecto rápido y fácil.
Para ello, te diriges a la pestaña de bienvenida de la extensión PlatformIO definida como: “PIO HOME”, luego haz clic en crear proyecto.
Si no la encuentras, haz clic en el icono de la barra de tareas inferior con forma de «casa».
Debes elegir un nombre para tu proyecto en PlatformIO.
Luego, elegir la placa “Board” (entre más de 1000 disponibles). Solo ingresa las primeras letras para que el listado se reduzca hasta encontrar la adecuada.
En la última parte, la opción “framework” se indica automáticamente cuando eliges tu placa, aunque puedes elegir el que prefieras.
El Framework Arduino es un entorno de trabajo que representa:
- El criterio.
- los conceptos.
- Las buenas prácticas de programación.
Que se establecen como normas para que sea más fácil el desarrollo.
Un SDK (kit de desarrollo de software) es similar a un framework, pero se orienta al desarrollo con un hardware exclusivo.
Para dar un ejemplo, el NODE MCU ESP8266 puede ser programado con el framework Arduino o con el SDK de Espressif.
Por otro lado, si se verifica la casilla “location”, entonces PlatformIO considera guardar el proyecto en una ubicación por defecto, aunque puedes elegir la que tu quieras.
Una vez que presiones “finish” el entorno comienza a buscar los archivos de soporte necesario, por ello tendrás que esperar un momento.
Directorio de proyectos Platformio
Una de las diferencias más grandes con el IDE Arduino o el IDE Arduino 2.0 son los archivos que se crean con cada nuevo proyecto y la manera como se organizan.
En el lateral izquierdo debes elegir el icono “Explorer”. En él, vas a encontrar el proyecto ordenado en carpetas desplegables que creó el asistente de PlatformIO.
Cada carpeta y archivo, lógicamente cumple una tarea. Puede ser un tanto abrumador, aunque lo cierto, es que no es necesario entender cada uno al detalle, por ello, a continuación, verás los más importantes.
- Espacio de trabajo: en «Open Editors» vas a encontrar los archivos que están abiertos, mientras que «workspace» contiene el proyecto en el que estés trabajando actualmente, puedes agregar más de uno y eliminarlos sin problemas.
- Directorio del proyecto: es la carpeta principal que contiene los archivos y subcarpetas que PlatformIO crea automáticamente. Puede haber más de uno según la cantidad de proyectos que se estén gestionando.
- Librerías: en esta carpeta el gestor de librerías de PlatformIO incluye las librerías privadas de cada proyecto.
- Código principal: la carpeta SCR (simboliza la abreviatura de “Source”, fuente en inglés) aquí se incluye el código principal o código fuente de nuestro proyecto.
Por otro lado, PlatformIO crea un fichero con el nombre “main.cpp”. Este es el equivalente al archivo compilado por el IDE Arduino llamado: “codigo.ino”. - platformio.ini: es un archivo de configuración que dota de funcionalidades extras al entorno. Es capaz de agilizar el trabajo cuando se trata de grandes proyectos.
Cómo compilar y cargar código con PlatformIO
A continuación, verás como prototipar con una placa Arduino UNO, un Node MCU ESP8266 y un Arduino MEGA usando PlatformIO.
Ejemplo básico en Arduino Uno con PlatformIO
Codificar una placa Arduino UNO con un sencillo ejemplo, es posible usando el asistente de PlatformIO.
En primer lugar, recurre a la página de bienvenida, luego haz clic en crear proyecto. Debes dar un nombre al proyecto y elegir la placa. Por lo general, se usa el framework Arduino pero tu elige el que desees.
Para programar un proyecto debes editar el código fuente “main.cpp”
Aquí tienes el código que se utiliza.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <Arduino.h> #define pinLED 13 void setup() { pinMode(pinLED, OUTPUT); } void loop() { digitalWrite(pinLED, HIGH); // enciende el LED. delay(500); // retardo en milisegundos digitalWrite(pinLED, LOW); // apaga el LED. delay(500); } |
Puedes ver que estas simples líneas realizan el parpadeo de un LED. En síntesis, pinLED indica cual es el pin que se va a encender y apagar con un tiempo de espera “delay” de medio segundo.
Para compilar y verificar si el código no tiene errores presiona el botón inferior con forma de tilde. Luego de un momento, verás el avance del proceso hasta que indique su finalización.
Para subir el código a la placa presiona el siguiente botón. Si no hay ningún problema, deberías ver la señal que indica que tu microcontrolador ya no es un pisapapeles. Puedes notar que no se indicó el puerto a utilizar, gracias a que, PlatformIO lo encuentra automáticamente.
Después de compilar y cargar el código notarás como parpadea el LED incluido en el Arduino UNO.
PlatformIO adjunta automáticamente la línea #include <Arduino.h>. Esta sentencia es la encargada de poner a disposición del usuario las funciones principales del entorno Arduino, pero recuerda incluirla si creas el proyecto de forma manual.
Ejemplo básico en ESP8266 con PlatformIO
Ahora se realiza el ejemplo usando un ESP8266 para parpadear un LED y mostrar un pequeño mensaje en el monitor serial.
Puedes crear un nuevo proyecto usando el asistente de PlatformIO. Recurre a la página de bienvenida, haz clic en crear proyecto. Pon un nombre nuevo al proyecto, elige la placa, en este caso se usa el Node MCU 1.0 (ESP-12E) “nodemcuv2”. Luego elige el framework a usar, por lo general Arduino.
El código utilizado es el siguiente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include <Arduino.h> /* Utilizado para la demostración de PlatformIO con ESP8266 Programar Fácil https://programarfacil.com/ */ // Se declara la variable LED_PROPIO como una constante en el pin 5 #define LED 5 void setup() { // Se inicializa el pin como salida pinMode(LED, OUTPUT); Serial.begin(19200); } void loop() { // Enciende el LED digitalWrite(LED, HIGH); Serial.println("Encendido"); // Retardo de un segundo delay(1000); // Apaga el LED digitalWrite(LED, LOW); Serial.println("Apagado"); // retardo de un segundo delay(1000); } |
Para empezar, se declara la variable “LED” como constante.
En la parte de configuración “void setup()” se indica el pin 5 como salida digital y se inicializa el puerto serie en 9600 baudios.
Después, se enciende y apaga el LED con un retardo de 1 segundo.
También se envía el mensaje «Encendido» y “apagado” por el puerto serie con el mismo retardo.
El conexionado del circuito es el siguiente.
Recuerda que la serigrafía de la placa de desarrollo no concuerda con los pines el módulo ESP8266.
El pin «D1» de la placa de desarrollo, coincide con el pin “GPIO 05” del chip interno.
Después de verificar, compilar y cargar el código, notarás el típico parpadeo del LED configurado.
Monitor serie con PlatformIO y ESP8266
Para abrir el monitor serie debes presionar el siguiente botón.
Puede que la velocidad en baudios del monitor serial no coincida con la velocidad que el ESP8266 envía los datos por el puerto serie.
Para solucionar el inconveniente debes modificar la velocidad en el archivo “platformio.ini” en la sentencia “monitor_speed”.
También puede suceder que tengas conectados varios dispositivos al puerto serie. Por ello, procede con las siguientes instrucciones.
- Elige el puerto correcto según corresponda, en mi caso el 3.
- En esta parte, verás la información enviada por el ESP8266.
- Esta línea indica cómo interactuar con la terminal de PlatformIO.
Por ejemplo:
- Ctrl+C sale de la terminal.
- Ctrl+T permite enviar valores por el monitor serie.
- Ctrl+I te da información extra de la comunicación.
Uso de librerías con PlatformIO
El uso de librerías en PlatformIO es imprescindible para sacar el máximo provecho al entorno Arduino. La administración de las librerías difiere entre Arduino IDE y PlatformIO. A continuación, verás los detalles.
Gestión de librerías en Arduino IDE
Dentro de Arduino IDE puedes encontrar el gestor de librerías con infinidad de librerías. Desde allí se puede instalar la que necesites.
Cada librería instalada en Arduino IDE está disponible para todos los proyectos (sketch) que desarrolles.
Por ejemplo, si instalas la versión 2.0 de una pantalla LCD, entonces todos los proyectos tendrán acceso a esa versión.
De modo que si se cambia la versión, lo hará en todos los proyectos.
Esta manera de gestionar librerías, facilita enormemente el uso del IDE Arduino para principiantes, pero cuando se trata de proyectos más elaborados, se vuelve un tanto engorroso.
- Si trabajas con librerías que compartan un mismo nombre no se puede usar a menos que elimines la original.
- Un cambio de la versión de una librería puede ocasionar errores en uno de los proyectos.
- La portabilidad de tu código, se limita. Debes recordar llevar una copia de seguridad de tus librerías.
Para solventar este problema, puedes recurrir al gestor de librerías de PlatformIO.
Gestión de librerías en PlatformIO
La gran diferencia con Arduino IDE es que Platformio te permite instalar las librerías por cada proyecto.
Por ejemplo, aquí tienes 3 proyectos, el “A” y el “C” usan la versión 1 de una librería genérica, mientras que el “B” no la necesita.
En el segundo caso ficticio, se agregaron algunas funcionalidades en el proyecto “B”, por lo tanto, hizo falta añadirle la versión 1 de la librería.
Por otro lado, actualizamos la librería a su versión 2 para el proyecto “A” y para evitar errores en el proyecto “B” y “C” se decidió no actualizar la librería.
Como puedes ver PlatformIO proporciona una gran ventaja. Ahora verás un ejemplo real.
Cómo usar el gestor de librerías de PlatformIO
Aquí verás cómo instalar una típica librería para un servomotor con Arduino uno.
Para empezar debes crear un proyecto, como se explicó anteriormente.
El conexionado del circuito a implementar es el siguiente.
Una vez tengas el circuito listo, ve a la página de bienvenida de PlatformIO.
En la sección librerías ingresa la palabra servo, verás que arroja bastantes resultados. Te puedes guiar por la cantidad de descargas para elegir la adecuada.
Haz clic en alguna y encontrarás estos apartados:
- El ejemplo básico que puedes utilizar.
- Aquí puedes encontrar las dependencias que debes indicar en “platformio.ini” (aunque no es necesario con el gestor de librerías de PlatformIO). Por otro lado, las dependencias señalan cuál es la librería y la versión que se necesita instalar.
- Headers, es la forma que debes declarar la librería en tu código principal.
- Changelog, cuenta las novedades de la librería.
- Ahora toca agregar la librería a tu proyecto.
Luego elige tu proyecto y haz clic en agregar. Verás como se descarga, instala y configura automáticamente, gracias al administrador de PlatformIO.
Ahora debes agregar el siguiente código en el archivo main.cpp de tu proyecto.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* Creado: Luis del Valle (ldelvalleh@programarfacil.com) https://programarfacil.com */ #include <Arduino.h> // librería que controla el servo #include <Servo.h> // Declaramos la variable para controlar el servo Servo servoMotor; void setup() { // Iniciamos el monitor serie para mostrar el resultado Serial.begin(9600); // Iniciamos el servo para que empiece a trabajar con el pin 9 servoMotor.attach(9); } |
Aquí tienes los detalles del proyecto sobre servomotor con Arduino en el blog.
Por último, queda compilar y cargar el código a tu Arduino UNO. Y listo :)
Como crear un proyecto de forma manual en PlatformIO
Por último, verás cómo crear un proyecto desde cero manualmente. El proyecto consiste en un Arduino Mega parpadeando su LED integrado.
Comienza creando un directorio en algún sitio.
Luego debes:
- Crear una carpeta que se llame src (se refiere a “source”=fuente).
- Crear dentro de la carpeta scr un archivo con la extensión .ino (PlatformIO lo detectará automáticamente).
- Crear fuera en el directorio principal un archivo llamado “platformio.ini”
Ahora debes completar manualmente los siguientes valores en el archivo platformio.ini.
1 2 3 4 |
[env:megaatmega2560] platform = atmelavr board = megaatmega2560 framework = arduino |
Si te interesa entender la estructura de este archivo puedes ingresar aquí.
Por otro lado, si quieres agregar librerías de forma manual desde el archivo.ini puedes ingresar al repositorio de librerías de platformIO.
Luego, copia el siguiente código en el archivo con extensión .ino. En mi caso “proyecto.ino”.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <arduino.h> #define pinLED 13 void setup() { pinMode(pinLED, OUTPUT); } void loop() { digitalWrite(pinLED, HIGH); // enciende el LED. delay(500); // retardo en milisegundos digitalWrite(pinLED, LOW); // apaga el LED. delay(500); } |
Para que PlatformIO realice la configuración final, debes cerrar la carpeta y luego volver a abrir el proyecto.
Por último, queda compilar y subir el código a tu placa. Verás el característico LED parpadeando gracias a PlatformIO.
Conclusión sobre Platform IO la alternativa a Arduino IDE
A medida que un proyecto crece, también aumenta su complejidad. Modificar una cantidad de archivos desperdigados en todo el directorio y mantenerlos actualizados puede ser una ardua tarea si trabajas con Arduino IDE.
Por ello, te invito a que le des una oportunidad a PlatformIO.
Se trata de una herramienta para trabajar con infinidad de microcontroladores. Además, incluye una componente extra de personalización.
Su configuración permite agregar este complemento a un entorno de desarrollo profesional como Visual Studio Code.
Espero disfrutes de los beneficios que puede darte instalar la extensión de PlatformIO en VS Code.
Gracias a Shutterstock por la cesión de las imágenes.