Basi · 6 min di lettura

Cos'è l'ESP32? Caratteristiche, installazione nell'Arduino IDE e primo progetto Wi-Fi

Cos'è l'ESP32 e in cosa si differenzia da Arduino? Wi-Fi e Bluetooth, pin sicuri, installazione nell'Arduino IDE, primo Blink, connessione al Wi-Fi, controllo di un LED dal telefono, varianti dell'ESP32 ed errori comuni.

L'ESP32 è un microcontrollore dual core molto economico prodotto da Espressif, con Wi-Fi e Bluetooth integrati. Da solo fa molte cose che un Arduino Uno non può fare: si collega alla rete di casa, offre una pagina web da aprire sul telefono, scarica ora e meteo da Internet e comunica con il telefono via Bluetooth. In più si programma nell'Arduino IDE con i comandi Arduino che già conosci. Oggi è la scheda più popolare per iniziare con i progetti di Internet delle cose (IoT).

Scheda di sviluppo ESP32 DevKit
Scheda di sviluppo ESP32: processore, Wi-Fi e Bluetooth si trovano nel modulo con il coperchio metallico; sulla scheda ci sono anche un chip USB-seriale, un regolatore e i pulsanti EN e BOOT.

Cos'è l'ESP32 e a cosa serve?

A rigore, "ESP32" è il nome del chip sotto il coperchio metallico. La scheda che hai in mano è una scheda di sviluppo che porta quel chip (come l'ESP32 DevKit o la NodeMCU-32S): ha un convertitore USB-seriale per parlare con il computer, un regolatore che abbassa i 5 V a 3,3 V e i pulsanti di riavvio (EN) e di programmazione (BOOT). Ecco alcune cose che puoi fare con un ESP32:

  • Stazione meteo Wi-Fi: mostrare temperatura e umidità su una pagina che apri sul telefono.
  • Controllo dal telefono: comandare una lampada, una presa o una porta con un pulsante su una pagina web.
  • Dati da Internet: mostrare su un display l'ora esatta (NTP), il meteo o i tassi di cambio.
  • Inviare notifiche: avvisarti via Telegram o email quando viene rilevato un movimento.
  • Dispositivi Bluetooth: creare un telecomando che si abbina al telefono o un dispositivo che il computer vede come tastiera.
  • Sensori che durano mesi a batteria: uscire dal deep sleep solo per misurare.

ESP32 e Arduino Uno a confronto

CaratteristicaArduino Uno R3ESP32 (WROOM-32)
ProcessoreATmega328P, 8 bit, 16 MHzXtensa LX6, dual core, 32 bit, 240 MHz
RAM2 KB520 KB
Memoria di programma (flash)32 KBDi solito 4 MB
WirelessAssenteWi-Fi + Bluetooth (Classic e BLE)
Tensione di lavoro5 V3,3 V
GPIO utilizzabili20Circa 34 (alcuni solo ingresso)
Ingressi analogici (ADC)6 canali, 10 bit18 canali, 12 bit
Uscite analogiche (DAC)Assenti2 canali, 8 bit

Guardando questa tabella l'ESP32 sembra migliore in tutto, ma anche l'Uno ha i suoi vantaggi: lavorando a 5 V è compatibile direttamente con la maggior parte dei sensori e moduli più vecchi, i suoi pin sono più robusti e riserva meno sorprese a chi inizia. Se non ti serve il wireless, l'Uno resta un ottimo punto di partenza; per decidere quale scegliere dai un'occhiata a Quale Arduino comprare?

I pin dell'ESP32: quali si possono usare in sicurezza?

I pin dell'ESP32 non sono tutti "uguali" come su Arduino. Alcuni sono collegati alla memoria flash, altri funzionano solo come ingressi, e il livello di altri influisce sull'avvio della scheda. Puoi vedere la piedinatura completa della tua scheda nello strumento Pinout; ecco un riepilogo:

PinStatoNota
GPIO 6–11Non usareCollegati alla flash interna; usarli fa bloccare la scheda
GPIO 34–39Solo ingressoNon possono fare da uscita e non hanno pull-up interno
GPIO 0, 2, 12, 15Usare con cautelaIl loro livello all'avvio è importante
GPIO 1 e 3Usare con cautelaTX e RX della seriale USB
Pin ADC2 (0, 2, 4, 12–15, 25–27)Nessuna lettura analogica con il Wi-Fi attivoPer le letture analogiche usa l'ADC1 (GPIO 32–39)
GPIO 4, 5, 13, 14, 16–19, 21–23, 25–27, 32, 33SicuriIngressi e uscite di uso generale
I pin dell'ESP32 lavorano a 3,3 V e non tollerano i 5 V. Non collegare direttamente un sensore con uscita a 5 V (come il pin ECHO dell'HC-SR04); metti in mezzo un Partitore di tensione o un convertitore di livello. Prelevare fino a circa 20 mA da un pin è sicuro.

Installare l'ESP32 nell'Arduino IDE

  1. Nell'Arduino IDE apri File > Impostazioni e aggiungi https://espressif.github.io/arduino-esp32/package_esp32_index.json nel campo "URL aggiuntive per il Gestore schede".
  2. Nel Gestore schede cerca esp32 e installa il pacchetto di Espressif Systems.
  3. Scegli ESP32 Dev Module da Strumenti > Scheda.
  4. Collega l'ESP32 con un cavo USB e seleziona la porta giusta in Strumenti > Porta. Se non compare nessuna porta, installa il driver del chip USB-seriale della tua scheda (CP2102 o CH340).
  5. Se durante il caricamento la scritta "Connecting..." resta a lungo, tieni premuto il pulsante BOOT della scheda e rilascialo quando il caricamento inizia.

Primo programma: far lampeggiare il LED integrato

La maggior parte delle schede ESP32 DevKit ha un LED blu collegato al GPIO 2. Il codice qui sotto lo fa lampeggiare ogni mezzo secondo; come vedi, i comandi sono esattamente quelli di Arduino:

Arduino (C++)
1const int LED_PIN = 2;   // çoğu DevKit'te dahili mavi LED / onboard blue LED on most DevKits
2
3void setup() {
4  pinMode(LED_PIN, OUTPUT);
5}
6
7void loop() {
8  digitalWrite(LED_PIN, HIGH);
9  delay(500);
10  digitalWrite(LED_PIN, LOW);
11  delay(500);
12}

Collegarsi al Wi-Fi

Il vero punto di forza dell'ESP32 è il Wi-Fi. Il codice qui sotto si collega alla rete di casa e scrive nel Monitor seriale l'indirizzo IP che il router assegna all'ESP32. Sostituisci nome della rete e password con i tuoi e apri il Monitor seriale a 115200 baud:

Arduino (C++)
1#include <WiFi.h>
2
3const char* ssid = "AgAdi";        // Wi-Fi adın / your Wi-Fi name
4const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
5
6void setup() {
7  Serial.begin(115200);
8  WiFi.begin(ssid, password);
9  Serial.print("Bağlanıyor / connecting");
10  while (WiFi.status() != WL_CONNECTED) {
11    delay(500);
12    Serial.print(".");
13  }
14  Serial.println();
15  Serial.print("IP adresi / IP address: ");
16  Serial.println(WiFi.localIP());
17}
18
19void loop() {
20}
L'ESP32 può collegarsi solo a reti Wi-Fi a 2,4 GHz; le reti a 5 GHz non le vede. Se il tuo router trasmette le due bande con lo stesso nome e hai problemi di connessione, dare un nome a parte alla banda a 2,4 GHz aiuta.

Controllare un LED dal telefono: un semplice web server

Ora trasformiamo l'ESP32 in un piccolo web server. Dopo il caricamento, apri l'indirizzo IP mostrato nel Monitor seriale nel browser di un telefono collegato allo stesso Wi-Fi: i due pulsanti della pagina accendono e spengono il LED della scheda. Collegando un relè al posto del LED comandi allo stesso modo una lampada vera; vedi Cos'è un modulo relè?

Arduino (C++)
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi";
5const char* password = "Sifre123";
6const int LED_PIN = 2;
7
8WebServer server(80);
9
10void handleRoot() {
11  server.send(200, "text/html",
12    "<meta name='viewport' content='width=device-width'>"
13    "<h1>ESP32</h1>"
14    "<a href='/on'><button>LED AÇ / ON</button></a> "
15    "<a href='/off'><button>LED KAPAT / OFF</button></a>");
16}
17
18void setup() {
19  pinMode(LED_PIN, OUTPUT);
20  Serial.begin(115200);
21  WiFi.begin(ssid, password);
22  while (WiFi.status() != WL_CONNECTED) delay(500);
23  Serial.println(WiFi.localIP());   // bu adresi telefonda aç / open this address on your phone
24
25  server.on("/", handleRoot);
26  server.on("/on",  []() { digitalWrite(LED_PIN, HIGH); handleRoot(); });
27  server.on("/off", []() { digitalWrite(LED_PIN, LOW);  handleRoot(); });
28  server.begin();
29}
30
31void loop() {
32  server.handleClient();
33}

Le varianti dell'ESP32: quale comprare?

ModelloCaratteristica principaleQuando sceglierlo
ESP32 (WROOM-32 DevKit)Wi-Fi, Bluetooth Classic e BLE, dual corePrima scheda per tutti gli usi
ESP32-S3USB nativo, più RAM, istruzioni per l'IAProgetti con fotocamera, audio, tastiera e mouse USB
ESP32-C3Un core RISC-V, Wi-Fi e BLE, piccolo ed economicoSensori IoT semplici
ESP32-CAMFotocamera e slot microSDTrasmissione di immagini, videocamera di sorveglianza
ESP8266 (NodeMCU, Wemos D1)Più vecchio, un core, solo Wi-FiProgetti Wi-Fi molto semplici

Alimentazione e uso a batteria

Quando attiva il Wi-Fi, l'ESP32 può assorbire per un attimo fino a 250 mA. Se una porta USB debole o un cavo sottile non reggono questo picco, la scheda si riavvia con il messaggio "Brownout detector was triggered". Usa un buon cavo e un alimentatore da 5 V di almeno 1 A; se serve, aggiungi un condensatore da 100–470 µF tra 3V3 e GND. Nei progetti a batteria il deep sleep dell'ESP32 riduce il consumo del chip a pochi microampere; però il regolatore e il LED delle schede di sviluppo continuano a consumare qualche mA, quindi per una lunga autonomia si preferisce un modulo nudo o una scheda a basso consumo.

L'ESP32 con MicroPython

L'ESP32 non si programma solo nel linguaggio di Arduino, ma anche con MicroPython. Dopo aver caricato MicroPython sulla scheda con Thonny, bastano poche righe per collegarsi al Wi-Fi:

MicroPython
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT)
5wlan = network.WLAN(network.STA_IF)
6wlan.active(True)
7wlan.connect("AgAdi", "Sifre123")     # Wi-Fi adı ve şifresi / Wi-Fi name and password
8
9while not wlan.isconnected():
10    time.sleep(0.5)
11print("IP:", wlan.ifconfig()[0])
12
13while True:
14    led.value(not led.value())        # LED'i yakıp söndür / toggle the LED
15    time.sleep(0.5)

Idee di progetti con l'ESP32

  • Stazione meteo Wi-Fi: segui dal telefono temperatura e umidità misurate da un DHT11.
  • Presa intelligente: accendi una lampada con un relè da una pagina web o da un assistente vocale.
  • Allarme di movimento: invia una notifica Telegram quando un sensore PIR rileva qualcuno.
  • Orologio via Internet: prendi l'ora da un server NTP e mostrala su un LCD o su un display a 7 segmenti.
  • Telecomando Bluetooth: guida un'auto robot con un'app sul telefono.
  • Sensore a basso consumo: un dispositivo che si sveglia ogni 10 minuti, invia una misura e torna a dormire.

Errori comuni e come risolverli

  • Non compare la porta: il cavo potrebbe essere solo di ricarica o manca il driver USB-seriale; usa un cavo dati e installa il driver CP2102 o CH340.
  • "Failed to connect... Timed out waiting for packet header": tieni premuto BOOT all'inizio del caricamento.
  • La scheda si riavvia di continuo: alimentazione insufficiente (brownout); usa un cavo, un alimentatore e un condensatore migliori.
  • Non si collega al Wi-Fi: la rete potrebbe essere a 5 GHz, o c'è un errore di maiuscole e minuscole nel nome o nella password.
  • Usare i GPIO 6–11: questi pin sono collegati alla flash; usarli fa bloccare la scheda.
  • I valori analogici impazziscono quando parte il Wi-Fi: il sensore è su un pin ADC2; spostalo su un pin ADC1 tra GPIO 32 e 39.

L'ESP32 è il modo più semplice per portare su Internet ciò che hai imparato con Arduino. Per ripassare le basi di Arduino leggi Cos'è Arduino?; nell'app BlueGrays trovi decine di progetti con ESP32 – LED, web server, WebSocket, orologio NTP, meteo e allarme Telegram – con schemi e codice.

Domande frequenti

L'ESP32 è un Arduino?

No. L'ESP32 è un microcontrollore diverso prodotto da Espressif, mentre Arduino è il nome di un ecosistema di schede e software. Grazie al pacchetto fornito da Espressif, però, l'ESP32 si programma nell'Arduino IDE con i comandi Arduino, quindi la maggior parte del codice Arduino funziona sull'ESP32 con piccole modifiche.

L'ESP32 funziona a 5 V?

La scheda di sviluppo si può alimentare a 5 V tramite USB o dal pin VIN; il regolatore sulla scheda li abbassa a 3,3 V. I pin GPIO però lavorano a 3,3 V e non tollerano i 5 V, quindi non devi collegarci direttamente segnali a 5 V.

Meglio un ESP32 o un Arduino Uno?

Per progetti che richiedono Wi-Fi, Bluetooth o Internet scegli un ESP32. Se sei alle prime armi con l'elettronica e vuoi lavorare senza problemi con sensori e moduli a 5 V seguendo i tutorial alla lettera, l'Arduino Uno ti riserverà meno sorprese.

L'ESP32 si collega al Wi-Fi a 5 GHz?

L'ESP32 classico, l'ESP32-S3 e l'ESP32-C3 supportano solo il Wi-Fi a 2,4 GHz e non vedono le reti a 5 GHz. Assicurati che la banda a 2,4 GHz del router sia attiva.

Che differenza c'è tra ESP32 ed ESP8266?

L'ESP8266 è un chip più vecchio, single core, che supporta solo il Wi-Fi e ha un unico ingresso analogico. L'ESP32 è dual core, più veloce, supporta anche il Bluetooth e offre molti più pin, canali ADC e memoria. Per i nuovi progetti si preferisce l'ESP32.

Si può usare l'ESP32 senza Internet?

Sì. L'ESP32 può creare una propria rete Wi-Fi (modalità access point), più ESP32 possono comunicare tra loro senza router con ESP-NOW e può collegarsi a un telefono via Bluetooth. Puoi anche usarlo come un Arduino potente senza nessuna delle sue funzioni wireless.

Vedi tutti i progetti
LED Lampeggiante con ESP32
#103Principiante

LED Lampeggiante con ESP32

Insegna l'uso di base delle uscite GPIO con l'ESP32. Otteniamo un effetto lampeggiante accendendo e spegnendo un LED dal pin digitale. Versione ESP32 del classico progetto blink su Arduino UNO; la mappa dei pin e la sintassi rimangono le stesse, la differenza è solo nei numeri dei pin.

4.7(36)
92
Connessione Wi-Fi STA con ESP32 (con display LCD)
#127Avanzato
Premium

Connessione Wi-Fi STA con ESP32 (con display LCD)

In questo progetto colleghiamo l'ESP32 alla rete Wi-Fi domestica in modalità Station (STA) in modo sicuro e tollerante agli errori. Separiamo SSID e password in un file `secrets.h` per impedire fughe su Git, impostiamo un meccanismo di riconnessione automatica e visualizziamo il livello del segnale RSSI e l'indirizzo IP su un display LCD I2C. Il LED interno funge da indicatore di stato.

4.4(21)
33
Server web asincrono ESP32 (con indicazione dell'IP sul display LCD)
#129Avanzato
Premium

Server web asincrono ESP32 (con indicazione dell'IP sul display LCD)

In questo progetto trasformiamo l'ESP32 in un **server web asincrono** che potrete controllare dal vostro telefono o computer collegato alla stessa rete Wi-Fi. Grazie alla libreria ESPAsyncWebServer, il server è in grado di elaborare più richieste contemporaneamente (a differenza del classico `WebServer.h`, che si blocca su una singola richiesta). Collegandovi dall'interfaccia web all'indirizzo IP dell'ESP32 con `/control` e premendo i pulsanti, potrete accendere e spegnere il LED collegato al G

4.8(16)
26
Contatore WebSocket ESP32 (2 pulsanti + LCD + Web in tempo reale)
#130Avanzato
Premium

Contatore WebSocket ESP32 (2 pulsanti + LCD + Web in tempo reale)

In questo progetto, l'ESP32 invia in tempo reale a tutti i browser collegati i valori di temperatura e umidità rilevati dal sensore DHT11, utilizzando il supporto WebSocket di ESPAsyncWebServer. Invece del polling HTTP standard, la comunicazione bidirezionale avviene tramite un'unica connessione TCP permanente, riducendo così la latenza a pochi millisecondi. Sul lato browser, viene tracciato un grafico a linee in tempo reale utilizzando Chart.js con JavaScript puro; il formato dei dati viene tra

4.5(14)
23
ESP32 HTTPClient + API meteo (con schermo LCD)
#133Avanzato
Premium

ESP32 HTTPClient + API meteo (con schermo LCD)

In questo progetto, utilizzando l'ESP32, effettuiamo una chiamata REST all'API meteo (wttr.in) tramite Internet utilizzando `HTTPClient.h`. Analizziamo la risposta JSON restituita tramite ArduinoJson v7 e visualizziamo le informazioni relative a città, temperatura, umidità, condizioni meteorologiche e vento sul display LCD I2C sia in turco che in inglese. wttr.in è gratuito e non richiede una chiave API: basta digitare il nome di una città qualsiasi per ottenere le condizioni meteorologiche in t

4.7(13)
20
ESP32: ora reale da Internet tramite NTP
#128Avanzato
Premium

ESP32: ora reale da Internet tramite NTP

L'ESP32 si connette al Wi-Fi e recupera l'ora reale con precisione al millisecondo dai server NTP (Network Time Protocol). Grazie a `configTzTime()`, il fuso orario della Turchia (TRT, UTC+3) viene applicato automaticamente e il passaggio all'ora legale è gestito tramite la stringa POSIX TZ. L'ora viene mostrata sul Serial Monitor e su un display LCD I2C opzionale. Sincronizzata una volta all'avvio, poi l'RTC interno continua a contare.

4.5(13)
21
Illuminazione automatica con sensore di movimento PIR ESP32
#121Intermedio
Premium

Illuminazione automatica con sensore di movimento PIR ESP32

In questo progetto, utilizzeremo il sensore di movimento PIR HC-SR501 per rilevare la presenza di una persona che entra nella stanza e accendere automaticamente il LED. Quando viene rilevato un movimento, il LED rimarrà acceso per un determinato periodo di tempo e gestiremo il tempo tramite la funzione `millis()` e un contatore, senza ricorrere alla funzione `delay()`. In questo modo otterremo un sistema di illuminazione con sensore di movimento che non blocca l'ESP32, consentendogli di svolgere

4.4(24)
38
Sistema di Allarme Movimento ESP32 (PIR + Buzzer + LED + Telegram)
#145Avanzato
Premium

Sistema di Allarme Movimento ESP32 (PIR + Buzzer + LED + Telegram)

Un sistema di allarme di sicurezza intelligente che attiva buzzer e LED quando il sensore PIR rileva movimento, inviando contemporaneamente una notifica istantanea al proprietario tramite Telegram. Dispone di un cooldown di 30 secondi per evitare falsi allarmi. Adatto a sicurezza domestica, monitoraggio di garage, magazzini o studi. Con l'ESP32-CAM è possibile aggiungere notifiche con foto; con il classico ESP32 DevKit V1 vengono inviate notifiche di testo.

0.0(0)
8

Scopri in cosa l'ESP32 è diverso da Arduino, quali pin si possono usare in sicurezza, come installarlo nell'Arduino IDE e realizzare il tuo primo progetto Wi-Fi che accende un LED dal telefono.

Cos'è l'ESP32? Caratteristiche, installazione nell'Arduino IDE e primo progetto Wi-Fi | BlueGrays