ESP32-C6: il tuttofare con Wi-Fi 6, Bluetooth LE e Thread
Se dovessimo scegliere un solo chip per riassumere i progetti di questo sito, sarebbe lui: l’ESP32-C6 di Espressif. Sta nella stazione meteo, nel nodo delle elettrovalvole dell’irrigazione, nel dispositivo del padel che stiamo progettando, nelle app Flutter che fanno dire CIAO a Cheap. Costa pochi euro, parla Wi-Fi 6, Bluetooth LE e Thread/Zigbee, e quando dorme consuma meno di un orologio al quarzo. In questo articolo lo apriamo, figuratamente, e vediamo cosa c’è dentro e perché lo usiamo così spesso.
In breve
| Caratteristica | ESP32-C6 |
|---|---|
| Processore principale | RISC-V a 32 bit, fino a 160 MHz, pipeline a 4 stadi |
| Processore a basso consumo | RISC-V a 32 bit, fino a 20 MHz |
| Memoria | 512 KB di SRAM, 16 KB di SRAM a basso consumo, 320 KB di ROM, cache da 32 KB |
| Flash | esterna, oppure 4 o 8 MB dentro il package (ESP32-C6FH4 e ESP32-C6FH8) |
| Wi-Fi | Wi-Fi 6 (802.11ax) a 2,4 GHz, compatibile 802.11b/g/n |
| Bluetooth | Bluetooth LE 5.3, fino a 2 Mbps, long range a 125 kbps |
| 802.15.4 | Thread 1.3 e Zigbee 3.0 |
| GPIO | 30 (package QFN40) o 22 (QFN32) |
| Alimentazione | da 3,0 a 3,6 V (tipica 3,3 V) |
| Temperatura | da -40 a +105 °C |
| Deep-sleep | circa 7 µA |
Tutti i valori di questo articolo vengono dal datasheet ufficiale di Espressif, versione 1.5.
Dentro il chip
Un microcontrollore moderno somiglia più a un piccolo quartiere che a un singolo edificio: ci sono zone che lavorano sempre, zone che si accendono solo quando servono e strade che le collegano. Lo schema a blocchi qui sotto è una versione semplificata di quella del datasheet.

Due processori RISC-V
Il cuore è un processore RISC-V a 32 bit che arriva a 160 MHz. RISC-V è un’architettura aperta: chiunque può realizzare un processore che ne esegue le istruzioni senza pagare licenze, e questo è uno dei motivi per cui Espressif l’ha adottata in tutti i chip più recenti al posto della vecchia architettura Xtensa dell’ESP32 classico e dell’ESP32-S3. Per dare un ordine di grandezza, il datasheet indica circa 497 punti CoreMark: non è una bestia da calcolo, ma per leggere sensori, gestire una rete e far girare FreeRTOS è più che sufficiente.
Accanto c’è un secondo processore, molto più piccolo: il core LP (low power), sempre RISC-V, fino a 20 MHz. Resta acceso anche quando tutto il resto dorme e può leggere un sensore, controllare una soglia e svegliare il processore principale solo quando serve. È la stessa idea del “coprocessore ULP” dei chip precedenti, ma programmabile in C come il resto del firmware.
La memoria
Il chip ha 512 KB di SRAM per programmi e dati, 16 KB di SRAM a basso consumo che sopravvivono al deep-sleep, 320 KB di ROM con il bootloader di fabbrica e 32 KB di cache. Il programma vero e proprio però non sta nel chip: sta in una memoria flash collegata via SPI, che il processore legge attraverso la cache come se fosse memoria interna. Nelle versioni ESP32-C6FH4 e ESP32-C6FH8 la flash da 4 o 8 MB è chiusa nello stesso package; nell’ESP32-C6 “liscio” è un chip separato, ed è quello che fanno i moduli come l’ESP32-C6-WROOM-1.
Tre radio in una
La caratteristica che rende il C6 speciale è la radio. Un solo circuito a 2,4 GHz, con amplificatore, ricevitore e commutatori d’antenna già integrati, parla tre “lingue” diverse.

- Wi-Fi 6 (802.11ax). Per un sensore la velocità conta poco: contano due funzioni pensate proprio per l’IoT. Il Target Wake Time (TWT) permette al dispositivo di accordarsi con il router su quando svegliarsi, invece di ascoltare continuamente, e l’OFDMA consente al router di parlare con molti dispositivi nello stesso istante dividendo il canale in sotto-canali. In modalità 802.11ax il C6 usa solo canali da 20 MHz (in 802.11n anche 40 MHz), e la velocità massima dichiarata è 150 Mbps. Perché il TWT faccia risparmiare davvero, anche il router deve essere Wi-Fi 6.
- Bluetooth LE 5.3. È la radio che usiamo per parlare con il telefono, per esempio nelle app Flutter della sezione App Mobile. Oltre alla velocità standard di 1 Mbps supporta i 2 Mbps e la modalità long range (Coded PHY) a 125 o 500 kbps: a 125 kbps il ricevitore arriva a una sensibilità di -106 dBm, il che si traduce in una portata molto più lunga a scapito della velocità.
- IEEE 802.15.4. È la radio delle reti a maglia a basso consumo: Thread (la base di Matter, lo standard comune della domotica) e Zigbee. Va a soli 250 kbps, ma i nodi si passano i messaggi tra loro e una rete può coprire tutta la casa con dispositivi a batteria.
Le tre radio non trasmettono contemporaneamente: un meccanismo di coesistenza le alterna, dando la precedenza a chi ne ha più bisogno. Si possono usare insieme nello stesso firmware, per esempio Wi-Fi per MQTT e Bluetooth LE per la configurazione dal telefono, a patto di accettare che ognuna abbia un po’ meno tempo d’antenna.
Le periferiche
Le periferiche sono i “sensi” e le “mani” del microcontrollore. Nel C6 quasi tutte passano per una matrice GPIO: un commutatore interno che permette di portare un segnale UART, I2C o PWM su quasi qualunque piedino. È comodissimo quando si disegna un circuito stampato, perché i pin si scelgono in base al percorso delle piste e non il contrario. Le più importanti:
- Comunicazione: due UART più una a basso consumo, un SPI generico, un I2C più uno a basso consumo, un I2S per l’audio, un controller SDIO slave e due controller TWAI, cioè CAN 2.0 (ISO 11898-1): con un transceiver esterno il C6 può parlare su un bus CAN, come quelli delle auto e delle batterie.
- Tempo e impulsi: 6 canali LED PWM, un PWM per motori (MCPWM), un contatore di impulsi (PCNT) per encoder e flussimetri, e la periferica RMT, che genera e legge treni di impulsi con tempi precisi: telecomandi a infrarossi e LED indirizzabili WS2812.
- Analogico: un convertitore analogico-digitale (ADC) a 12 bit con 7 canali e un sensore di temperatura interno.
- USB Serial/JTAG: il C6 si collega al PC con un semplice cavo USB e appare come porta seriale e come interfaccia di debug, senza chip convertitori. Non è però una USB completa: non può fare da tastiera, da memoria o da host per altri dispositivi. Per quello serve l’ESP32-S3.
Quanto consuma
Il consumo di un chip radio non è un numero, ma una scala che va dai microampere ai centinaia di milliampere. Il grafico usa una scala logaritmica, perché altrimenti le barre del sonno sarebbero invisibili.

Due conseguenze pratiche:
- L’alimentazione deve reggere i picchi. In trasmissione Wi-Fi il chip assorbe fino a 354 mA per pochi millisecondi. Un regolatore da 3,3 V troppo piccolo, o un cavo USB lungo e sottile, fanno calare la tensione proprio in quell’istante e il chip si riavvia (“brownout”). Per questo conviene un regolatore da almeno 500 mA e un buon condensatore vicino al modulo.
- La batteria dura se il chip dorme. In deep-sleep, con solo il timer RTC e la memoria a basso consumo accesi, il consumo scende a circa 7 µA. Un sensore che si sveglia ogni cinque minuti, misura, trasmette per un secondo e torna a dormire può durare mesi con una piccola batteria al litio. È esattamente lo schema della nostra stazione meteo.
Sicurezza
Un dispositivo connesso deve proteggere il proprio firmware e le proprie chiavi. Il C6 ha acceleratori hardware per AES, SHA, RSA ed ECC, il secure boot (il chip esegue solo firmware firmato da noi), la cifratura della flash con AES-XTS (chi legge la memoria con un programmatore trova solo dati cifrati), una periferica per la firma digitale che usa chiavi mai visibili al software e un ambiente di esecuzione protetto (TEE). Non servono per un tutorial, ma diventano fondamentali quando un progetto esce dal laboratorio.
Chip, moduli e schede
Raramente si usa il chip nudo. Di solito si sceglie uno di questi tre livelli:
| Livello | Esempio | Quando |
|---|---|---|
| Chip | ESP32-C6, ESP32-C6FH4, ESP32-C6FH8 | Produzioni in serie con circuito d’antenna progettato e certificato da noi |
| Modulo | ESP32-C6-WROOM-1, ESP32-C6-MINI-1 | Circuiti stampati nostri: il modulo ha già flash, quarzo, antenna e certificazioni radio |
| Scheda di sviluppo | ESP32-C6-DevKitC-1, Seeed Studio XIAO ESP32-C6 | Prototipi e tutorial: basta un cavo USB |
Per il nodo delle elettrovalvole dell’irrigazione, ancora in progettazione, abbiamo scelto il modulo ESP32-C6-WROOM-1; per il dispositivo del padel, dove lo spazio è poco, è previsto un modulo della classe ESP32-C6-MINI-1, più piccolo. Per i tutorial la scheda di riferimento è la ESP32-C6-DevKitC-1, che ha un LED RGB indirizzabile sul GPIO8 e il pulsante BOOT sul GPIO9. Nella stazione meteo abbiamo scelto la minuscola XIAO ESP32-C6 di Seeed Studio.
Il C6 e i suoi fratelli
Espressif ha una famiglia ampia, e capita spesso di chiedersi quale scegliere. Un orientamento rapido:
| Chip | Processore | Radio | Quando sceglierlo |
|---|---|---|---|
| ESP32-C6 | RISC-V a 160 MHz + core LP | Wi-Fi 6, Bluetooth LE, 802.15.4 | Sensori e attuatori connessi, domotica, Matter, basso consumo |
| ESP32-S3 | Due core Xtensa LX7 a 240 MHz | Wi-Fi 4, Bluetooth LE | Più calcolo, USB completa, telecamere, display, audio |
| ESP32-H2 | RISC-V a 96 MHz | Bluetooth LE, 802.15.4 (niente Wi-Fi) | Nodi Thread o Zigbee a batteria, coprocessore radio |
| ESP32-P4 | Due core RISC-V a 400 MHz + core LP | nessuna (si abbina a un C6) | Interfacce video, display grandi, elaborazione locale |
A ognuno di loro è dedicato un articolo di questa serie (pubblicazione in arrivo).
Dove lo usiamo
- Stazione meteo: la XIAO ESP32-C6 legge il BME280, dorme e trasmette via Wi-Fi; è anche il termine di paragone del porting su Nordic.
- Serie ESP32-C6 e ESP32-P4: 20 tutorial su sensori, motori, display e radio.
- Irrigazione: il nodo delle elettrovalvole in progettazione, con flussimetri, sonde del terreno e livello del serbatoio.
- Padel: il dispositivo con IMU in progettazione.
- App Mobile: le app Flutter che parlano con il C6 via Bluetooth LE.
- Supervisori ESP32-P4: il P4 non ha radio e usa un C6 come scheda di rete.
Tutti i progetti sono raccolti nelle sezioni ESP32 e Domotica.
Per approfondire
- Pagina ufficiale dell’ESP32-C6 (Espressif)
- ESP32-C6 Series Datasheet (fonte dei valori di questo articolo, versione 1.5)
- Guida di programmazione ESP-IDF per l’ESP32-C6
