
Le principali caratteristiche tecniche
L'ESP32 è un System on Chip (SoC) sviluppato da Espressif Systems. È un chip a basso costo e ad alte prestazioni che offre una varietà di funzionalità, tra cui:
- Processore dual core Tensilica Xtensa LX6 a 32 bit con clock fino a 240 MHz
- Wi-Fi 802.11 b/g/n (2.4 GHz, velocità teorica fino a 150 Mbps)
- Bluetooth 4.2 + Bluetooth Low Energy (BLE)
- Fino a 34 piedini GPIO (il numero effettivamente disponibili dipende dal modulo utilizzato)
- Supporto per sensori e periferiche digitali e analogiche
Per quanto riguarda gli utilizzi possibili, l'ESP32 è una piattaforma che può essere impiegata in numerose applicazioni, tra cui:
- Internet delle cose (IoT)
- Dispositivi indossabili
- Giochi e intrattenimento
- Sistemi di automazione domestica
Sentinel Node V3.5
Il Notaio Digitale che rende obsoleta la SD-Card
Zero latenza, scritture infinite. Il dato è blindato anche se salta la corrente.
Ripristino fisico esterno. Se il firmware si pianta, il sistema reagisce.
Time-stamping deterministico. Indipendente dai server NTP esterni.
Diodi P6KE15A e Schottky. Sopravvive ai picchi industriali (14.89V testati).
La storia dell'ESP32
L'ESP32 ha conquistato rapidamente una larga fetta del mercato IoT. Nel 2024, grazie alle sue spiccate doti di connettività Wi-Fi e Bluetooth, è diventato un punto fermo della comunità dei maker. Diamo uno sguardo alla sua breve storia.
La casa madre: Espressif
L'ESP32 è prodotto da Espressif Systems, azienda di microelettronica con sede in Cina fondata nel 2008. Il suo primo prodotto, un SoC Wi-Fi a 2,4 GHz, è stato introdotto nel 2013 con il nome ESP8089, destinato a tablet e set-top box.
Nel 2014 viene rilasciato ESP8266, che porta la connettività Wi-Fi a basso costo nel mondo maker e industriale, aprendo la strada all’ESP32 (presentato nel 2016).
La missione di Espressif si concentra sulle soluzioni per l’Internet of Things (IoT) e l’AIoT (Artificial Intelligence of Things), combinando potenza di calcolo e connettività wireless a basso consumo.
I "motori" della Espressif
L'ESP8266 era basato su un processore RISC Tensilica Xtensa L106 a 32 bit, architettura sviluppata da Cadence (San Jose, California). Questa architettura è stata progettata per offrire buone prestazioni per watt, caratteristica fondamentale nei dispositivi alimentati a batteria.
I primi successi commerciali
Nel 2014 Hackaday annunciò l’introduzione di un modulo Wi-Fi da $5 venduto tramite Seeed Studio: l’ESP-01, prodotto da Ai-Thinker.
L’ESP-01 era basato su ESP8266 (non su ESP32) ed era limitato a soli otto pin, due dei quali utilizzati per la UART. Nonostante ciò, risultò immediatamente interessante grazie al supporto della piattaforma Arduino e alla possibilità di connettersi a Internet senza hardware aggiuntivo.
Il costo dell'ESP32
I moduli basati su ESP8266 e successivamente ESP32 richiedono un numero minimo di componenti esterni: alimentazione a 3,3 V stabilizzata, pochi condensatori di bypass, antenna e memoria flash esterna (SPI/QSPI).
All'accensione, il firmware viene caricato dalla memoria flash esterna nella SRAM interna per l’esecuzione.
Questa semplicità progettuale ha permesso la nascita di microcontrollori "stile Arduino" con connettività Wi-Fi integrata a costi estremamente contenuti.
Nel 2015 Espressif ha rilasciato l’SDK ufficiale, disponibile in versione bare-metal e con supporto FreeRTOS, offrendo agli sviluppatori pieno controllo dello stack Wi-Fi.
Gli sviluppi recenti
I dispositivi della serie ESP32 integrano un microprocessore dual-core Tensilica Xtensa LX6 a 32 bit fino a 240 MHz, 520 kB di SRAM interna e Wi-Fi 2.4 GHz 802.11 b/g/n.
La connettività Bluetooth nella versione ESP32 classica è 4.2 + BLE.
Un coprocessore Ultra Low Power (ULP) consente di monitorare alcune periferiche durante la modalità deep sleep, riducendo drasticamente i consumi nei sistemi alimentati a batteria.
Sentinel Node V3.5
Il Notaio Digitale che rende obsoleta la SD-Card
Zero latenza, scritture infinite. Il dato è blindato anche se salta la corrente.
Ripristino fisico esterno. Se il firmware si pianta, il sistema reagisce.
Time-stamping deterministico. Indipendente dai server NTP esterni.
Diodi P6KE15A e Schottky. Sopravvive ai picchi industriali (14.89V testati).

Schema a blocchi del Tensilica Xtensa 32-bit LX6
Le serie successive includono:
- ESP32-S2: single-core Xtensa LX7 fino a 240 MHz, Wi-Fi (nessun Bluetooth)
- ESP32-S3: dual-core Xtensa LX7, Wi-Fi + Bluetooth 5 (BLE)
Le versioni più recenti includono periferiche aggiuntive come l’interfaccia TWAI (compatibile con ISO 11898-1, noto come CAN bus) e acceleratori hardware per crittografia (Flash Encryption, HMAC, AES, SHA).
Il software della piattaforma ESP32
Nel 2024 è disponibile un ecosistema software estremamente maturo per ESP32. Gli sviluppatori possono scegliere tra l’ambiente ufficiale ESP-IDF (basato su FreeRTOS) oppure il framework Arduino-ESP32.
Per chi utilizza Arduino, è possibile integrare il supporto ESP32 aggiungendo l’URL del pacchetto "Arduino-ESP32" nelle Preferenze dell’IDE e selezionando la scheda desiderata dal Board Manager. Una volta installato il pacchetto, saranno disponibili esempi e librerie dedicate.
.ino e seguono la classica struttura setup() e loop().Parliamo del modulo Wi-Fi
L'ESP32 integra un modulo Wi-Fi compatibile con 802.11 b/g/n nella banda 2.4 GHz. La velocità teorica massima è 150 Mbps (802.11n 1x1, 40 MHz), mentre il throughput reale tipico è compreso tra 30 e 70 Mbps, a seconda delle condizioni di rete.
Non supporta reti a 5 GHz.
Bluetooth
L'ESP32 (versione classica con core Xtensa LX6) integra Bluetooth 4.2 + Bluetooth Low Energy (BLE).
Le versioni successive includono:
- ESP32-S2: Wi-Fi, nessun Bluetooth
- ESP32-S3: Wi-Fi + Bluetooth 5 (BLE)
- ESP32-C3: Wi-Fi + BLE 5 (architettura RISC-V)
Il Bluetooth Low Energy è ideale per applicazioni a basso consumo come sensori wireless, beacon e dispositivi indossabili.
L'utilizzo dell'ESP32
L'ESP32 dispone di fino a 34 GPIO (alcuni solo input, come GPIO 34–39). Il numero effettivamente disponibile dipende dal modulo utilizzato (es. WROOM, PICO, ecc.).
Supporta un'ampia gamma di periferiche hardware:
- ADC a 12 bit
- PWM
- SPI, I2C, UART
- I2S
- TWAI (compatibile CAN)
Grazie alla doppia CPU e alla connettività integrata, è adatto a:
- Gateway IoT
- Automazione industriale leggera
- Dispositivi wearable
- Sistemi embedded con connettività cloud
La differenza tra ESP32 e ESP8266
- ESP32 è dual-core (ESP8266 è single-core)
- Maggiore potenza di calcolo (fino a 240 MHz vs 80/160 MHz)
- Più GPIO e periferiche hardware
- Supporto Bluetooth (assente su ESP8266)
- Miglior gestione del multitasking grazie a FreeRTOS
Lo schema interno dell'ESP32
Di seguito è riportato lo schema a blocchi del SoC ESP32.

Diagramma a blocchi dell'ESP32
Connettività wireless
L’ESP32 supporta Wi-Fi 802.11 b/g/n a 2.4 GHz e Bluetooth 4.2 + BLE (nella versione classica). Le comunicazioni radio sono gestite da un sottosistema dedicato integrato nel SoC.
Core
Il processore principale è un Tensilica Xtensa LX6 dual-core a 32 bit con frequenza configurabile fino a 240 MHz.
- PRO_CPU: gestisce principalmente lo stack di sistema (Wi-Fi, Bluetooth, RTOS)
- APP_CPU: esegue il codice applicativo
Entrambi i core condividono l’accesso alla memoria interna, ai registri e alle periferiche mappate nello spazio di indirizzamento a 32 bit.

Schema a blocchi del chip Tensilica Xtensa LX6
L’architettura è di tipo RISC a 32 bit. Tutte le periferiche, ROM, SRAM interna, cache e memoria flash esterna sono mappate nello spazio di indirizzamento del processore.

Mappatura delle unità di memoria
L’ESP32 integra inoltre un coprocessore ULP (Ultra Low Power) che può operare in modalità deep sleep per monitorare ingressi analogici o digitali con consumi estremamente ridotti.
Un breve confronto con Arduino UNO
- Frequenza fino a 240 MHz (Arduino UNO: 16 MHz)
- Architettura 32 bit vs 8 bit
- Maggiore capacità di calcolo in virgola mobile
- Connettività Wi-Fi e Bluetooth integrata
Questo si traduce in maggiore potenza elaborativa e possibilità di eseguire stack di rete complessi direttamente sul microcontrollore.
La memoria dell'ESP32
A differenza delle classiche schede Arduino, l’ESP32 utilizza un’architettura con memoria interna ed esterna.
Memorie interne:
- ROM (~448 KiB): memoria di sola lettura contenente bootloader e funzioni di sistema
- SRAM interna (520 KiB)
- RTC SRAM (16 KiB) per modalità deep sleep
- eFuse (1 Kb) per configurazioni permanenti (chiavi, MAC address, ecc.)
La memoria flash per il firmware è generalmente esterna (SPI/QSPI), tipicamente da 4 MB nei moduli WROOM.
Alcuni modelli integrano flash embedded (es. ESP32-PICO-D4).
Espansione di memoria
Acceleratori hardware di crittografia
Uno dei fattori più importanti in qualsiasi sistema connesso è la sicurezza. Per questo l’ESP32 integra acceleratori hardware dedicati ad alcune funzioni crittografiche, utili per aumentare prestazioni e ridurre il carico sulla CPU:
- AES (crittografia simmetrica)
- SHA (funzioni hash)
- RSA (crittografia asimmetrica)
- ECC (crittografia a curva ellittica)
Questi moduli hardware rendono più rapide e affidabili operazioni come cifratura, verifica di integrità e autenticazione (es. TLS, firmware signing, secure boot), migliorando la robustezza complessiva del sistema contro attacchi e manomissioni.
La scheda di sviluppo DevKitC
L’ESP32 è un SoC molto adottato anche in ambito industriale, ma per essere usato facilmente da hobbisti e sviluppatori si utilizza spesso una scheda di sviluppo (es. DevKitC) che integra alimentazione, conversione USB-seriale e pin header.

Su molte DevKitC l’alimentazione a 3,3V è ottenuta tramite un regolatore lineare (spesso un AMS1117 o equivalente). Nota: il regolatore può scaldare se alimenti carichi elevati; per applicazioni stabili è consigliabile una sorgente 5V/USB di qualità o un convertitore step-down dedicato.
La piedinatura del modulo ESP32-WROOM

Piedinatura del modulo ESP32-WROOM
Come si vede nel diagramma, i pin sono raggruppati per funzione. Molti GPIO sono multiplexati: lo stesso pin può svolgere più ruoli (GPIO, periferiche seriali, PWM, ADC, ecc.). Verifica sempre datasheet e pinout del modulo specifico prima di collegare periferiche.
I pin digitali
L’ESP32 dispone di fino a 34 GPIO sul chip, ma non tutti sono sempre disponibili sul modulo e alcuni (GPIO 34–39) sono solo input. Il numero effettivo di pin utilizzabili dipende dalla scheda/modulo (es. ESP32-WROOM-32) e dall’uso di flash/PSRAM e funzioni di boot.
La maggior parte dei GPIO supporta pull-up e pull-down interni configurabili via software. Questo semplifica il collegamento di pulsanti, tastiere a matrice e segnali digitali, riducendo componenti esterni (dove appropriato).
Corrente sui GPIO: per un uso affidabile è consigliabile restare su correnti basse (tipicamente ~12 mA). Valori più alti sono possibili, ma 40 mA è un limite assoluto e non un valore operativo “consigliato”. Per pilotare carichi (relay, strisce LED, motori) usa driver, MOSFET o moduli dedicati.
Come settare i pin digitali in "OUTPUT"
È possibile utilizzare i GPIO in OUTPUT per controllare dispositivi a basso assorbimento (es. LED) o pilotare carichi più grandi tramite componenti esterni (relay, MOSFET, driver). Nell’esempio classico di un LED, usa una resistenza in serie (ad es. 220–330 Ω):
pinMode(GPIO_pin, OUTPUT);
Puoi impostare il pin a HIGH o LOW per cambiarne lo stato. HIGH e 1 sono equivalenti; LOW e 0 sono equivalenti:
digitalWrite(GPIO_pin, HIGH); // Accendi il LED
digitalWrite(GPIO_pin, LOW); // Spegni il LED
Come settare i pin digitali in "INPUT"
I pin dell’ESP32 possono essere usati in INPUT per leggere segnali digitali esterni (pulsanti, sensori digitali, finecorsa, ecc.).
pinMode(GPIO_pin, INPUT);
BTN_State = digitalRead(GPIO_pin);
Dal punto di vista elettrico, un ingresso non deve restare “fluttuante”: è necessario definire lo stato logico con una resistenza di pull-up o pull-down.
Lasciare un ingresso digitale fluttuante è una pratica scorretta: l’ESP32 può leggere rumore elettrico e alternare 0/1 in modo casuale. La soluzione tipica è usare una resistenza di pull-up verso 3,3V (es. 10 kΩ) o attivare il pull-up interno tramite software.
Esempio con pull-up interno (consigliato per pulsanti semplici):
pinMode(GPIO_pin, INPUT_PULLUP);
Pull-up interni: nota importante
Su ESP32, i pull-up/pull-down sono in genere configurabili via software su molti GPIO (eccetto alcuni pin speciali e alcuni input-only). Per progetti robusti, verifica sempre eventuali restrizioni del pin scelto (boot strap, funzioni di flash, input-only).
I pin analogici
Alcuni pin possono essere usati come ingressi analogici tramite ADC. L’ESP32 dispone di ADC a 12 bit: i valori letti vanno da 0 a 4095.
Questi i pin di ingresso analogico:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
Il successo commerciale dell'ESP32
Con una tale combinazione di connettività e potenza di calcolo, è facile capire perché l’ESP32 abbia scalato rapidamente il mercato IoT, diventando uno standard de facto per prototipazione e molti prodotti embedded.
Pur essendo percepito spesso come alternativa ad Arduino, l’ESP32 beneficia dell’intero ecosistema di tool, librerie e community, riducendo drasticamente la curva di apprendimento.
Gli appassionati e i professionisti possono ottenere prestazioni superiori e connettività integrata senza dover cambiare radicalmente strumenti e workflow di sviluppo.
Ultimi arrivi della famiglia ESP32
Il microcontroller ESP32-P4 promette di migliorare ulteriormente le prestazioni. Integra una CPU RISC-V dual-core fino a 400 MHz e 768 KB di SRAM on-chip e punta a semplificare l’interfacciamento con fotocamere ad alta risoluzione via MIPI-CSI.
Nota: l’ESP32-P4 è orientato ad applicazioni ad alte prestazioni e, a seconda della variante, può richiedere chip companion per la connettività wireless (Wi-Fi/Bluetooth).
Sentinel Node V3.5
Il Notaio Digitale che rende obsoleta la SD-Card
Zero latenza, scritture infinite. Il dato è blindato anche se salta la corrente.
Ripristino fisico esterno. Se il firmware si pianta, il sistema reagisce.
Time-stamping deterministico. Indipendente dai server NTP esterni.
Diodi P6KE15A e Schottky. Sopravvive ai picchi industriali (14.89V testati).