Creazione di un progetto vuoto dalla “PIO Home”

Se hai seguito i suggerimenti per il pre e post installazione di Platform.IO, i passaggi per la creazione di un nuovo progetto per ESP32 (ed in generale per tantissimi altri microcontrollers supportati da Platform.IO), sono davvero semplici e li vediamo di seguito.

PIO Home è la schermata iniziale di Platform.IO. Se non hai tolto la spunta “Show at startup” dovresti vederla ad ogni avvio di VSCode.

Ad ogni modo, puoi aprire la PIO Home dal menu Quick Access (pulsante con il logo di Platform.IO sulla sinistra - > PIO Home -> Open) oppure, più semplicemente, cliccando sull’icona home nella status bar in basso a sinistra.

Della Status Bar vedremo più avanti anche le altre funzioni di Platform.IO che utilizzaremo durante lo sviluppo.

New Project

I passaggi da seguire per la creazione di un nuovo progetto.

Dalla PIO Home quindi diamo un nome al nostro progetto, e selezioniamo la board per la quale vogliamo sviluppare ed il framework Arduino.

Nel 99% dei casi è corretto selezionare Espressif ESP32 Dev Module e stiamo utilizzando un ESP32 Wroom, oppure Espressif ESP-WROVER-KIT se il nostro è un processore Wrover con memoria SPI aggiuntiva.

Altrimenti è possibile scegliere tra oltre 1000 controllers e varianti supportati da PlatForm.IO! La lista completa e sempre aggiornata è presente qui.

Una volta creato il progetto, ci troviamo difronte questa struttura dei file.

Tralasciando le altre directory che contengono placeholders oppure files di sistema, i files ai quali rivolgere la nostra attenzione sono due:

  1. platformio.ini (Il file di configurazione del progetto)
  2. src/main.cpp (il codice del nostro firmware).

platformio.ini

La prima cosa da fare appena creato un nuovo progetto è l’edit della configurazione. Il file è strutturato in sezioni contrassegnate con le parentesi quadre [] e da coppie di chiavi/valore.

Il mio platformio.ini di partenza si presenta almeno così:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200 
upload_speed  = 921600 
monitor_filters = esp32_exception_decoder

Le prime 4 righe sono quelle generate in automatico da Platform.IO, io aggiungo sempre le ultime 3: monitor_speed serve per attivare il monitor in console, upload_speed per aumentare la velocità di upload del firmware compilato sul controller, esp32_exception_decoder è un filtro utile alla decodifica dei messaggi di errore (stack trace) restituiti dall’ESP32 in caso di crash dell’applicazione.

scr/main.cpp

E’ giunto il momento di iniziare a programmare il nostro software! Il file src/main.cpp è quello che conterrà il codice sorgente, e di default si presenta così:

#include <Arduino.h>

void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
}

Ovviamente la scrittura del codice esula dallo scopo di questo articolo, quindi ipotizziamo di aver scritto il nostro software e vediamo di seguito come compilarlo ed effettuare l’upload sul controller.

Status bar: build, upload, monitor

In basso a sinistra di VS Code troviamo la status bar di Platform:IO:

Icona Pulsante Descrizione
Home Apre la PIO Home
Build Compila il sorgente e genera la build in .pio/build
Upload Compila ed effettua l’upload del firmware sul controller
Clean Elimina la build precedentemente generata
Serial monitor Apre il monitor seriale del controller
New terminal apre un nuovo terminale
Switch environment Effettua lo switch degli environments configurati su platformio.ini (*)

La tabella penso sia abbastanza chiara, nella status bar troviamo tutti gli strumenti fondamentali per compilare, fare l’upload sull’ESP32 e monitorarne l’esecuzione tramite monitor seriale.

(*) In progetti semplici come il file platformio.ini di questo esempio, abbiamo un solo environment. Affrontiamo il discorso multi-env in maniera più approfondita in questo articolo ed in molti progetti che puoi trovare nel laboratorio.