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
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:
- platformio.ini (Il file di configurazione del progetto)
- 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.