Come programmare una scheda ESP 32 con PlatformIO e Visual Studio Code

Aggiornamento del 30 giugno 2023: grazie alla segnalazione di Francesco nei commenti aggiunta nota sul nome del progetto che non può più contenere spazi.

Aggiornamento del 15 maggio 2024: nelle versioni più recenti il nome del progetto può di nuovo contenere spazi.

PlatformIO è un ambiente di sviluppo per microcontrollori disponibile già da diversi anni e che quindi ha già raggiunto una certa stabilità. Rispetto all’IDE di Arduino offre il vantaggio di poter isolare le librerie di ciascun progetto evitando così il rischio che l’aggiornamento di una di esse possa creare errori nei progetti più vecchi che la usavano.

È una estensione di Visual Studio Code, quindi il primo passo è installare Microsoft Visual Studio Code, se non lo usate già (è un ambiente di sviluppo open-source ottimo anche per gli altri linguaggi).

Il passo successivo è cercare tra le estensioni PlatformIO e installarla (siate pazienti richiederà qualche istante).

Quindi cliccate prima sull’icona della formica e poi su “Projects & Configuration”:

Creazione di un progetto

poi su “Create New Project”:

Secondo passo della creazione di un progetto

infine impostiamo i parametri del progetto:

Wizard per impostare i parametri del progetto

Scegliamo il nome del progetto, il tipo di scheda e il framework. La location è la cartella in cui verrà creata la cartella del progetto. Passando il mouse sull’icona con il punto interrogativo ci verrà mostrata quella di default. Potremo accettare quella proposta oppure se preferiamo ne potremo indicare una diversa. La cartella del progetto avrà lo stesso nome del progetto stesso.

Nota del 30 giungo 2023: in seguito all’aggiornamento dell’ambiente di sviluppo di Espressif (ESP-IDF) il nome del progetto non può più contenere spazi.

Nota del 15 maggio 2024: nelle versioni più recenti dell’ambiente di sviluppo di Espressif (ESP-IDF) il nome del progetto può di nuovo contenere spazi.

Lanciata la creazione ciò che otterremo è questo:

Progetto

All’interno del progetto ci sono alcune cartelle e alcuni file. Il file “platformio.ini” aperto è quello di configurazione con le proprietà inserite prima. Io aggiungo sempre anche:

monitor_speed = 9600

per impostare la velocità della porta seriale. È l’impostazione predefinita ma io per sicurezza la metto comunque.

Non importa impostare la porta seriale. PlatformIO è in grado di individuarla da solo. Questo è un innegabile vantaggio rispetto all’IDE di Arduino. 🙂

Se la porta seriale non viene riconosciuta, però, potreste dover installare il driver per il convertitore UART-USB. Quasi sicuramente si tratterà del CP2102 della Silicon Labs ma per sicurezza controllate la corretta versione in questa pagina.

Un parametro importante che può essere impostato in questo file è “lib_deps” che indica l’elenco delle librerie che servono al nostro progetto con le corrispondenti versioni.

Tra le cartelle possiamo citare “lib” e “include” che conterranno le librerie private del progetto e gli include file (cioè quelli con estensione .h).

La “.pio” è una cartella usata da PlatformIO che conterrà tutte le librerie che indicheremo come dipendenze nel file platform.io e tutti prodotti della compilazione.

La cartella “src” è quella che contiene i programmi. Tra questi ci deve essere “main.cpp” che è il principale e deve sempre esserci.

Ora proviamo a scrivere il primo programma di prova e apriamo il file main.cpp. Avendo scelto di utilizzare il framework Arduino la struttura è molto simile a quella di un file .ino. La differenza è che bisogna includere esplicitamente “Arduino.h“.

Utilizziamo lo stesso esempio usato in Come programmare una scheda ESP32 con l’IDE di Arduino e scriviamolo in main.cpp:

#include <Arduino.h>

uint64_t chipid;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  chipid=ESP.getEfuseMac(); // We use Chip ID as MAC address.
  Serial.printf("ESP32 Chip ID = %04X",(uint16_t)(chipid>>32)); // High 2 bytes
  Serial.printf("%08X\n",(uint32_t)chipid);                     // Low 4 bytes.

  delay(3000);
}

Poi possiamo compilare il codice (1), fare l’upload (2) e aprire il monitor seriale per leggere l’output del programma (3) che verrà mostrato in una finestra sotto il codice. Possiamo eseguire direttamente l’upload, la compilazione verrà eseguita se necessario:

Compilazione ed esecuzione del programma

Nella finestra del monitor seriale vedremo qualcosa di simile:

ESP32 Chip ID = XXXXXXXXXXXX
ESP32 Chip ID = XXXXXXXXXXXX
ESP32 Chip ID = XXXXXXXXXXXX
...

8 commenti su “Come programmare una scheda ESP 32 con PlatformIO e Visual Studio Code”

  1. Una nota riguardo ai nomi dei progetti: a partire dalla versione 4.0 di ESP-IDF non vengono gestiti progetti che contengano spazi nel loro nome o più in generale che contengano spazi nel path relativo al progetto.
    Come conseguenza di questa limitazione, tentando di creare un progetto con uno spazio nel path viene segnalato un errore e la creazione non va a buon fine.

  2. Buonasera , devo programmare uno schermo tft sunton da 7 pollici, come posso aggiungere questa scheda a Platformio ?
    in alcuni esempi si vede come “sunton esp32” . Grazie

  3. Salve Paolo, mi sembra che il display monti già un ESP32. Quindi potresti provare a caricare il tuo programma direttamente su quello. Ti servirà anche la libreria specifica per il display che hai tu.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *