ESP32: guida al setup ambiente e primo progetto con GPIO (Blink)
Se hai appena messo le mani su una scheda ESP32 per la prima volta, questa guida ti porta dal disimballaggio al primo LED che lampeggia sotto il tuo controllo. È il punto di partenza del nostro percorso IoT con ESP32-S3, ESP32-C6 e varianti: da qui in poi ogni progetto aggiungerà un tassello (sensori, connettività, AI edge, protocolli industriali).

Cosa ti serve
- Una dev board ESP32 (qualsiasi variante va bene per iniziare: ESP32-DevKitC, ESP32-S3-DevKitC, ESP32-C6-DevKitC)
- Cavo USB adatto alla tua board (micro-USB o USB-C a seconda del modello)
- Breadboard
- 1 LED, in alternativa si può usare il LED integrato nel modulo seed studio
- 1 resistenza da 220 Ω
- 2 cavetti jumper maschio-maschio

Scegliere l’ambiente di sviluppo
Ci sono tre strade principali per programmare un ESP32. Non sono equivalenti: la scelta influenza tutto il resto del percorso.
| Ambiente | Pro | Contro | Consigliato per |
|---|---|---|---|
| Arduino IDE | Semplicissimo da installare, community enorme, tantissime librerie pronte | Gestione progetti/dipendenze poco strutturata su progetti grandi | Primi esperimenti, chi arriva dal mondo Arduino |
| PlatformIO (in VS Code) | Gestione dipendenze seria, multi-progetto, debug integrato, funziona con framework Arduino o ESP-IDF | Curva di apprendimento leggermente più alta | Chi vuole crescere verso progetti seri (quello che useremo in questo percorso) |
| ESP-IDF nativo | Accesso completo a tutte le funzionalità del chip (FreeRTOS, basso livello) | Più verboso, richiede più conoscenza del hardware | Progetti avanzati (Livello 4-5 del nostro percorso) |
In questo percorso useremo PlatformIO come ambiente principale: è il miglior compromesso tra semplicità iniziale e capacità di crescere verso progetti complessi, e ci permetterà in futuro di passare da framework Arduino a ESP-IDF senza cambiare editor.
Installazione di PlatformIO
- Installa Visual Studio Code
- Apri VS Code → Extensions (icona quadrati a sinistra) → cerca “PlatformIO IDE” → Install
- Attendi il completamento dell’installazione (PlatformIO scarica i suoi strumenti, ci vuole qualche minuto la prima volta)
- Riavvia VS Code quando richiesto
Creazione del primo progetto
- Nella home di PlatformIO clicca su New Project
- Nome progetto:
01-blink-gpio - Board: seleziona la tua scheda esatta (es. “Espressif ESP32 Dev Module”, “Espressif ESP32-S3-DevKitC-1” o “Espressif ESP32-C6-DevKitC-1”)
- Framework: Arduino
- Clicca Finish
PlatformIO crea una struttura di cartelle standard. Il file che ci interessa è src/main.cpp.
Collegamento del LED
Collega il LED sulla breadboard: anodo (gamba lunga) verso la resistenza da 220 Ω, che va al pin GPIO2 (disponibile sulla maggior parte delle dev board come LED indicator, ma qui lo colleghiamo esternamente per esercizio); catodo (gamba corta) verso GND.
Il codice
#define LED_PIN 2
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
Serial.println("Blink avviato");
}
void loop() {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED ON");
delay(500);
digitalWrite(LED_PIN, LOW);
Serial.println("LED OFF");
delay(500);
}
Come funziona
-
pinMode(LED_PIN, OUTPUT)configura il GPIO come uscita digitale -
digitalWrite(LED_PIN, HIGH/LOW)alza o abbassa il livello logico del pin (3.3V / 0V) -
Serial.begin(115200)attiva la comunicazione seriale verso il PC, utile per il debug: apri il Serial Monitor di PlatformIO per vedere i messaggi in tempo reale -
delay(500)è bloccante: va benissimo per un primo esempio, ma nei prossimi tutorial vedremo perché nei progetti reali (specialmente quelli con Wi-Fi o sensori multipli) va sostituito con tecniche non bloccanti (millis(), task FreeRTOS)
Caricamento sulla scheda
Collega la scheda via USB, poi in PlatformIO clicca sull’icona a forma di freccia (Upload) nella barra in basso. Al termine il LED dovrebbe lampeggiare ogni 500ms.
Va oltre
Ora che hai l’ambiente pronto e sai caricare codice sulla scheda, il prossimo passo è leggere un sensore reale via I2C (sensore ambientale BME280) e mostrare i dati su un piccolo display OLED — il prossimo tutorial del percorso.
Codice del progetto
Il codice completo di questo progetto sarà disponibile nel repository GitHub del sito (link in arrivo a breve).
