Hoy vamos a ver el que, probablemente, actualmente sea el mejor entorno de programación para procesadores como Arduino (o similares) empleando Visual Studio Code junto a PlatformIO.
No cabe duda que al hablar de entornos de programación para Arduino, lógicamente, el propio IDE de Arduino es la opción más extendida. Si bien el entorno de Arduino es apropiado para iniciación, también sabemos que tiene importantes limitaciones.
Aunque esto ha mejorado en la versión 2.0, sigue careciendo de funcionalidades habituales en cualquier IDE moderno. De forma que resulta difícil imaginar emplear el IDE de Arduino en avanzados o profesionales.
Así, en el blog hemos visto varias alternativas de entornos de programación para Arduino, destacando Visual Studio + Visual Micro que vimos en esta entrada. Pese a haber pasado 6 años, sigue siendo una de las mejores opciones pero ha incrementado su precio considerablemente.
Afortunadamente, hace ya unos años que tenemos un nuevo entorno consistente en la combinación de Visual Studio Code + PlatformIO. En resumen, técnicamente es más o menos un empate con Visual Micro, con la ventaja de que esta segunda es totalmente gratuita.
Por si alguno aún no lo conoce, Visual Studio Code es un IDE “ligero” multiplataforma desarrollado por Microsoft que se ha impuesto como uno de los IDEs más empleados, especialmente en desarrollo web.
Por su parte, PlatformIO es una extensión gratuita para Visual Studio Code que añade la funcionalidad para programar dispositivos embebidos. Entre estos se incluyen tanto Arduino como muchos otros procesadores como el ESP8266 o el ESP32.
Esta nueva opción está cogiendo gran popularidad y no sin razón, ya que la diferencia en funcionalidades frente al IDE de Arduino es abismal. Por ejemplo, tiene autocompletado, marcado de errores, integración con Git, o desarrollo remoto y colaborativo.
Por otro lado, otra de las ventajas es que sigue siendo muy sencillo de usar. Evidentemente, tiene más opciones y configuraciones. Pero las ventajas que aporta hacen que, en global, sea incluso más sencillo (lo que sí es complicado es programar sin autocompletado ni subrayado de errores).
Instalar PlatformIO
En primer lugar asumamos que tenemos instalado Visual Studio Code. Si no lo has hecho, tienes una guía en su página. Pero el proceso es sencillo. Descargar instalador y “siguiente, siguiente, siguiente”, sin más misterio.
Ahora, dentro de Visual Studio Code, nos dirigimos a la paleta de “Extensiones”, buscamos “PlatformIO” y la instalamos. ¡Así de sencillo! Ya tenemos platformio instalado.
Usar PlatformIO
Una vez instalada la extensión, podemos mostrar la paleta de comandos de VS Code pulsando Control + Shift + P. Aquí escribimos “Platform” (con las primeras letras es suficiente) para ver todos los comandos disponibles. Por ejemplo, “platformio Home” nos llevará a la pantalla principal de la extensión.
Alternativamente, e incluso más sencillo, también se nos habrá añadido un botón a la barra lateral de acciones. Al pulsar se nos abre un menú y desde ahí podemos acceder a las funcionalidades de PlatformIO.
Crear un nuevo proyecto
Para crear un nuevo proyecto, simplemente, desde la pantalla Home de la extensión elegimos nuevo proyecto.
Se nos abrirá un asistente para configurar el proyecto, donde debemos elegir el nombre y el dispositivo que vamos a emplear. (¡Ya hay más de 1000 tipos de dispositivos disponibles!). Opcionalmente, podemos elegir la ubicación del proyecto.
Con esto se nos creará un proyecto con la siguiente estructura.
project_dir
├── lib
│ └── README
├── platformio.ini
└── src
└── main.cpp
Aquí hay que destacar que el fichero principal es “src/main.cpp”. Es decir, se acabaron los ficheros ‘.ino’ del IDE de Arduino.
El fichero platform.ini
En la carpeta base de cualquier proyecto de platformio existe un fichero llamado ‘platform.ini’. De hecho, es la existencia de este fichero lo que permite a la extensión reconocer un proyecto.
[env:m5stack-atom]
platform = espressif32
board = m5stack-atom
framework = arduino
Aquí hay un montón de opciones que pueden añadirse. El listado completo es muy extenso, así que os dejamos el enlace a la documentación oficial. No obstante, prácticamente todas las opciones pueden gestionarse desde la ventana de configuración del proyecto de forma mucho más cómoda.
Gestión de librerías
platformio hace una gestión de librerías diferente a la del IDE de Arduino, que puede resultar algo chocante para usuarios noveles. Pero, en realidad, es una mejor respecto a este.
En el IDE de Arduino se dispone de un directorio de librerías, donde se instalan todas ellas de forma global. Esto se hizo así para que fuera muy sencillo gestionar las librerías.
Sin embargo, esto es un gran problema a largo plazo, debido a las actualizaciones. Así te puede pasar que al actualizar “mi librería cualquiera” de la versión 2.0 a la 2.4 muchos de tus proyectos anteriores pueden dejar de funcionar por incompatibilidades con la nueva versión.
En su lugar, en platformio las librerías se añaden de forma individual por proyecto. De esta forma, el proyecto A puede usar “mi librería cualquiera” v2.0, y el proyecto B la versión 2.4, sin generar un conflicto entre ellas.
Es decir, lo que viene siendo un gestor de paquetes de toda la vida, como nuget, chocolatey, npm, pip. En el caso de platformio, este gestor de paquetes se llama PIO, y también está disponible a través de CLI.
Compilar y subir el proyecto a la placa
Por supuesto, también podemos verificar, compilar o subir el código a la placa. Para ello podemos usar la paleta de comandos (Control + Shift + P) o emplear los botones que platformio añade a la parte inferior de Visual Studio Code.
También se incluye un monitor de Serial Port aunque, en mi opinión, es bastante flojito. Personalmente, yo uso el mío, que para eso lo tengo Arduino Live Serial.
Hasta aquí esta entrada. Si aún no habéis usado Visual Studio Code y Platform, en serio, darle una oportunidad. Es un gran entorno de desarrollo, cómodo, práctico, y con todas las ventajas en cuanto a edición que aporta Visual Studio Code.
Por supuesto, hay más opciones que las que hemos visto en esta entrada de introducción. Os remitimos a la página de oficial de PlatformIO por si queréis ampliar la información.