Cómo integrar PlatformIO con Qt Creator para compilar código de Arduino

Autor: José Olin
Publicado: 2022-08-03

Si llegaste aquí es porque tu aventura con los microcontroladores va en serio y estás considerando una interfaz más completa que nuestro querido editor de Arduino.

Si has usando PlatformIO con Visual Studio Code y te preguntas si es el único IDE soportado, de hecho hay más opciones, nuestra favorita: Qt Creator.

Si además desarrollas en distintas familias de microcontroladores: AVR, ESP, ST, etc. y quieres programarlas todas en un mismo entorno de desarrollo, este es tu post.

Al final de este post podrás compilar el mundialmente famoso Blink usando QtCreator y PlatofomIO.

¿Qué es Qt Creator?

QtCreator es un editor de código y creación de interfaces gráficas con el que podemos hacer aplicaciones que corren tanto en GNU/Linux como Windows o Mac, prácticamente sin hacer modificaciones al código.

Entre las funciones más útiles y que más se echan de menos en el editor básico de Arduino, está el autocompletado, la navegación a variables y funciones con Ctrl+Clic, el renombrado en masa de variables y otros símbolos, entre otras.

QtCreator tiene una licencia dual, esto es, puede comprarse para proyectos comerciales o usar la versión gratuita para proyectos Open Source.

Desde 2013 es nuestra opción predilecta para desarrollo de programas en C++, especialmente si es necesaria una interfaz gráfica, por ejemplo el monitor serial del Sistema Isiukak.

Gif del monitor serial del Isiukak

Recomendamos usar PlatformIO con Qt Creator especialmente en la siguientes situaciones:

  • Trabajas en un equipo multiplataforma con usuarios de Linux y Windows.
  • Ya usas QtCreator para C++ y quieres usar el mismo editor para Arduino.
  • Vas a empezar un proyecto grande, con varios archivos de código fuente.
  • A tu máquina le pesa cargar VS Code. Lo hemos usado en computadoras con pocos recursos y QtCreator se siente más ligero.

Configurar Qt Creator para usar PlatformIO (PIO) como compilador de Arduino

1 Instalar QtCreator

Cómo instalar QtCreator en Ubuntu

Vale también para Linux Mint y otras distros basadas en Debian.

2 Instalar PlatformIO Core

El primer paso es instalar PlarformIO Core, que invocaremos desde QtCreator para compilar y grabar el código en la tarjeta.

La forma más sencilla es instalarlo con un script. - Descarga este script

 

# Cambia al directorio donde lo descargaste
cd /directorio/donde/descargaste/get-platformio.py

# Y ejecútalo
python get-platformio.py

Para confirmar que PlatformIO se instaló correctamente, abre una terminal o símbolo del sistema y ejecuta el comando

platformio --version

O bien:

pio --version

En cualquiera de los casos debe mostrarnos un mensaje semejante a

PlatformIO Core, version 6.1.1

3 Crear un proyecto con PlatformIO para Qt cretor

Una vez confirmado que PlatformIO Core está instalado y el sistema puede localizarlo correctamente, crearemos un proyecto para editarlo con Qt Creator

  • Crea un directorio nuevo y accede al mismo.
  • Abre una Terminal o Símbolo del sistema y Genera el proyecto con el siguiente comando

 

pio project init --ide qtcreator --board <ID>

# Por ejemplo, generar un proyecto para una Arduino UNO
pio project init --ide qtcreator --board uno

Esto generará la siguientes estructura de archivos

  • En la carpeta src irán nuestros archivos de código fuente (.c, .cpp, *.ino, etc.)

  • platformio.creator Es el archivo de un proyecto genérico en QtCreator

  • platformio.ini Es el archivo de configuración de PlatformIO.

4 Abrir el proyecto en Qt Creator

El siguiente paso es importar el proyecto en Qt Creator y agregar el código fuente.

Podemos abrir Qt Creator e importar el proyecto con File > Open File or Project y navegar al archivo platformio.creator

o sencillamente hacer Clic derecho en platformio.creator y Abrir con Qt Creator

En cualquier caso deberá aparecer la interfaz de Qt Creator.

En la carpeta del proyecto damos Clic derecho > Add new > C++ Source File.

En la ventana siguiente definimos el nombre del archivo y dónde queremos colocarlo

  • Name: main.cpp
  • Path: /ruta/al/directorio/proyectoPIO/src

El archivo cpp debe incluirse en el directorio src.

En la ventana Summary clic en Finish.

Y tenemos nuestro proyecto con un archivo vacío, en el que agregamos el siguiente código de prueba.

#include <Arduino.h>

int pinLED = 13;

void setup()
{
    pinMode(pinLED, OUTPUT);
}

void loop()
{
    digitalWrite(pinLED, HIGH);
    delay(1000);

    digitalWrite(pinLED, LOW);
    delay(1000);
}

NOTA: Es necesario incluir el archivo de encabezado Arduino.h en nuestros proyectos de PlatformIO, de otra forma al compilar nos mostrará errores del tipo: 'OUTPUT' no fue declarado en este ámbito.

5 Configurar Qt Creator para compilar usando PIO y grabar en la tarjeta

NOTA: Este paso sólo es necesario la primera vez que compilamos el proyecto.

Configurar para compilar

En la sección Projects de la barra lateral izquierda ir Build & Run > Build

  • En Build directory seleccionamos el directorio donde está nuestro archivo platformio.ini

El resto de los campos quedan igual, pues junto con el archivo platformio.ini hay un archivo Makefile que le indica a QtCreator cómo compilar con PlatformIO.

Si todo salió bien, al dar clic en Build (el martillo debajo de los símbolos de play), en la pestaña Compile Output nos mostrará los detalles de la compilación.

Configurar para grabar en la tarjeta

Ya tenemos nuestro código compilado, sólo falta grabarlo en el microcontrolador.

En la sección Projects de la barra lateral izquierda ir Build & Run > Run

Donde agregaremos un proceso de "Deploy" o subida a la tarjeta.

Add Deploy Step > Custom Process Step

  • Command: platformio
  • Arguments: run --target upload
  • Working directory: %{buildDir}

Adicionalmente podemos definir un ejecutable en la sección Run, por ejemplo, en esa sección podemos ejecutar el monitor serial de PlatformIO para revisar lo que esté enviando nuestra tarjeta por el puerto serial.

  • Executable: platformio
  • Command line Arguments: device monitor
  • Working directory: %{buildDir}
  • Run in terminal: Activado.

La sección Run debería lucir así:

Y ahora al dar clic en el botón Run

después de compilar, en la sección Compile output veremos detalles de la programación en la tarjeta o Deploy.

Y nuestro Arduino UNO comenzará a hacer su mundialmente conocido blink.

Adicionalmente se abrirá una terminal con el Monitor serial de PlatformIO, en la que podrás ver los mensajes enviados con Serial.print y println

Fin de la misión. Hemos configurado exitosamente Qt Creator para compilar nuestro código con PlatformIO.

PD: La configuración de Deploy y Run puede simplificarse si agregamos algunas reglas a nuestro Makefile, como veremos en un post futuro.

Referencias:

Doc PlatformIO. Qt Creator

Cómo programar Arduino con VS Code y PlatformIO,

Cómo usar PlatformIO + Visual Studio Code + Arduino/ESP32

VS Code + Platform IO, el IDE definitivo



.
Esta publicación es posible gracias a nuestros Patreons.