ESP32-C3 Super Mini vs ESP32-S3 Super Mini: differenze e quale scegliere

In riferimento al post pubblicato la scorsa settimana, mi è arrivato un messaggio da parte di un lettore: cercando la stessa schedina in rete ha notato che, oltre alla versione ESP32-C3 Super Mini, viene proposta anche la ESP32-S3 Super Mini e mi ha chiesto, che cosa cambia tra le due schede.

La domanda è più che legittima, perché a colpo d’occhio le due board sembrano quasi identiche: stesso formato compatto, stesso uso tipico in progetti IoT e didattici. In realtà le due schede si differenziano in molte cose: architettura della CPU, prestazioni, numero di GPIO disponibili, gestione USB, e (in molti modelli S3) perfino dettagli pratici come la presenza dei pad per collegare direttamente una batteria Li-Po con ricarica via USB.

In questo articolo metto quindi a confronto ESP32-C3 Super Mini e ESP32-S3 Super Mini, prima indico le differenze elettroniche (quelle che dipendono dal chip), poi evidenzio le differenze che dipendono dalla specifica schedina e dal produttore, così da capire subito quale scegliere in base al progetto e agli obiettivi didattici.

Premessa importante: “Super Mini” non è uno standard

“Super Mini” descrive un form factor molto diffuso, ma non è un nome “ufficiale” che garantisce caratteristiche identiche tra produttori.

Quindi:

  • le differenze C3 vs S3 (CPU, USB, risorse) sono reali e dipendono dal chip;
  • dettagli come LED onboard, pin esposti, flash/PSRAM, pad batteria possono variare a seconda del lotto e del venditore.

In questo post separo volutamente:

  • differenze elettroniche del chip;
  • differenze dipendenti dal produttore.

Confronto tra le due schede

Nella tabella che segue vengono indicate le differenze tra le due schede:

Aspetto ESP32-C3 Super Mini ESP32-S3 Super Mini
CPU RISC-V single-core (tipicamente fino a 160 MHz) Xtensa LX7 dual-core (tipicamente fino a 240 MHz)
Potenza percepita ottima per IoT “snello” migliore su web UI ricche, log, parsing, multitasking
GPIO disponibili in genere meno margine in genere molti più GPIO “utili”
USB molto comoda per programmazione/debug USB OTG (progetti USB “creativi”) + programmazione
Progetti tipici sensori/attuatori, MQTT/HTTP, BLE semplice progetti più “ricchi”, USB, più periferiche insieme
Batteria (su molte board) spesso richiede gestione esterna spesso include pad batteria + ricarica USB (dipende dal modello)

Pinout ESP32 S3 Super mini

Differenze elettroniche

CPU: single-core vs dual-core

Questa è la differenza più importante:

  • ESP32-C3: single-core > perfetto per progetti ripetibili, sensori e automazioni;
  • ESP32-S3: dual-core > più margine quando ad esempio uniamo web server + gestione rete + periferiche + log + UI; quindi con S3 possiamo gestire programmi di dimensioni più grandi e più complessi.

Utilizzo esteso dell’USB

  • Con C3 la USB è “comoda” perché semplifica upload e debug (senza chip USB-serial esterno);
  • con S3 poiché è supportato il mondo USB OTG: potete progettare dispositivi che si presentano al PC come periferiche USB (a seconda delle librerie e della configurazione).

GPIO e periferiche

S3 offre in genere:

  • più GPIO disponibili (più alternative di cablaggio);
  • più margine quando usate più bus/linee insieme (SPI, I2C, UART multiple, ecc.).

Differenze dipendenti dal produttore

LED onboard

Su molte ESP32-C3 Super Mini il LED onboard:

  • è su un pin specifico (spesso GPIO8),
  • può essere in logica invertita (active-LOW: LOW = acceso, HIGH = spento).

Per evitare confusione (e rendere gli esempi robusti tra lotti), io consiglio di dichiarare due costanti:

const int PIN_LED = 8;     // esempio tipico: verificate sul vostro modello
const int LED_ON  = LOW;   // se il LED è active-LOW
const int LED_OFF = HIGH;

void setup() {
  pinMode(PIN_LED, OUTPUT);
  digitalWrite(PIN_LED, LED_OFF);
}

void loop() {
  digitalWrite(PIN_LED, LED_ON);
  delay(300);
  digitalWrite(PIN_LED, LED_OFF);
  delay(300);
}

Se sulla vostra scheda il LED non è invertito, basta scambiare LED_ON/LED_OFF e il resto del codice rimane identico.

S3: LED RGB

Molte schede ESP32-S3 Super Mini (in generale vale per tutte quelle che ho usato ed acquistate su diversi store) includono un LED RGB (tipo WS2812) molto utile per “stati” e debug (Wi-Fi ok, errore, modalità AP, ecc.).
Attenzione: pin e presenza dipendono dalla board. Prima di copiare uno sketch per la gestione del led RGB, verificate sullo schema/pinout del vostro modello.

Batteria e ricarica

Modello ESP32-S3 Super Mini (nel mio caso acquistato su Amazon)

Su questa scheda, nello schema sono indicati i pin/pad a cui saldare la batteria. In altre parole: su questa versione è previsto il collegamento diretto di una Li-Po 1S (3,7 V nominali) tramite piazzole dedicate.
Nella maggior parte delle Super Mini S3 che supportano batteria trovate (di solito sul retro) due pad del tipo:

B+ > positivo batteria
B- > negativo batteria (GND)

In molte varianti, come quella acquistata da me, insieme ai pad batteria, è presente anche un circuito di ricarica via USB-C e un LED di stato legato alla carica (gestito dal circuito di power/charge, non via GPIO). Lo schema del venditore è sempre il riferimento migliore per capire cosa è effettivamente presente sulla tua board.

Avvertenze pratiche molto importanti

  • Usate solo batterie 1S (Li-Po/Li-Ion 3,7 V nominali; 4,2 V a fine carica).
    Controllate la polarità prima di saldare: inversione o corto su una Li-Po può danneggiare scheda e batteria;
  • consiglio di non saldare direttamente la batteria al PCB, potete saldare ai pad un cavetto con connettore (es. JST) così la batteria diventa removibile e riducete stress meccanici sulle piazzole.

Buon Making a tutti 🙂

Organizzatore modulare per cavetti Dupont anche su barra DIN


Chi lavora con breadboard, Arduino/ESP32 e sensori lo sa: i cavetti dupont sono comodissimi finché non diventano un groviglio. Li appoggi “un attimo” sul banco, si intrecciano, spariscono sotto i fogli, si piegano, si rovinano, e quando serve davvero perdi minuti solo per trovare la lunghezza giusta.

Nelle ultime settimane, come immagino abbiate notato, sto elencando una serie di micro-soluzioni stampabili in 3D che migliorano l’ordine, riducono gli intoppi e rendono più fluida la didattica laboratoriale soprattutto quando ci sono studenti, gruppi e postazioni da ripristinare a fine lezione.

In rete si trovano diversi organizer molto efficaci, già in passato ne avevo realizzato un modulare che permette di gestire cavetti di lunghezze diverse con scanalature dedicate e si stampa senza supporti.

La variante che vi propongo riduce la quantità di viti necessarie per l’asseblaggio, i pettini vanno inseriti ad incastro su binari predisposti.

Come per la versione precedente l’organizzatore non è un pezzo unico è composto da moduli replicabili, così posso adattare la capacità in base alla postazione, al corso o al tipo di attività.
Poiché utilizzo un apposita workstation costituite da una serie di barre DIN (barre omega) su cui predispongo l’elettronica necessaria per impostare le esercitazioni scolastiche, ho pensato di aggiungere alla postazione l’organizzatore di cavetti che viene vincolato con un gancio che si avvita all’organizzatore.

Ogni anno amplio e aggiorno la mia workstation di lavoro e, in parallelo, sto progettando una versione completa anche per gli studenti. L’idea è organizzare su apposite barre DIN tutti i componenti necessari per svolgere le esercitazioni di sistemi elettronici.

L’utilizzo di una struttura di prototipazione personalizzabile e modulare è una soluzione che adotto da tempo: è nata in modo sistematico con la gestione delle esercitazioni di automazione con PLC e si è poi estesa, naturalmente, alle attività con microcontrollori.

Vi lascio il link diretto per prelevare i file per stampare l’organizzatore modulare per cavetti Dupont.

Buon making a tutti 🙂

ESP32 su breadboard: come recuperare spazio di prototipazione

Chi lavora con ESP32 su breadboard conosce bene il problema: molte dev board (DevKit, NodeMCU, ecc.) sono abbastanza larghe da occupare la fessura centrale e “mangiarsi” proprio i fori che servirebbero per collegare jumper, moduli e sensori. Risultato: cablaggi scomodi, contatti instabili e poco spazio operativo.
In questo post raccolgo due soluzioni pratiche, a partire da due modelli stampabili in 3D. On-line trovate altre soluzioni che uniscono insieme più breadboard, sono ovviamente altrettanto valide, vi mostrerò in successivi post come procedere, per ora sto utilizzando una soluzione che considero più elegante.

Soluzione 1: “ESP-32 Breadboards” stampabile in 3D

La soluzione che sto utilizzando in questo periodo e che nasce proprio con l’obiettivo di porre l’ESP32 in posizione corretta e garantire più spazio aggiuntivo per moduli e collegamenti. Il progetto può essere reperito su MakerWorld ed è descritto dall’autore come “Perfect Fit, Extra Module Spaces” e posso confermarlo.

Motivi per cui ho scelto questo progetto:

  • crea una base dedicata: evitiamo ESP32 “appesi” alla breadboard;
  • recupero spazio attorno alla scheda per jumper e piccoli moduli;
  • è pensata per essere una soluzione ordinata, comodo in contesto didattico.

Seguite il link per prelevare i file per la stampa 3D.

Di seguito le fasi di costruzione.

Le lamelle/contatti metallici possono essere recuparate da una breadboard standard come potete notare dalle immagini che seguono, qindi l’operazione richiede un po’ di lavoro iniziale.

Soluzione 2: “Dual Breadboard Case”

La seconda soluzione è un contenitore che vi permette di accoppiare due breadboard creando un’area di prototipazione più ampia, lasciando la scheda (ESP32/Arduino ecc.) in posizione comoda.

Certamente è una soluzione più semplice da realizzare, non richiede di smontare le lamelle di una precedente breadboard, inoltre disponete di maggior spazio di lavoro.

Seguite il link per prelevare i file per la stampa 3D.

Mentre scrivo questo breve post sto stampando questo contenitore in modo da valutarne l’utilizzo a scuola.

Buon Making a tutti 🙂

5 minuti da Maker – contenitore per spugna di ottone per pulizia saldatore

Quando si salda spesso, la qualità del lavoro dipende anche da un dettaglio “banale”: una punta del saldatore pulita. Per questo in laboratorio uso quasi sempre la spugna di ottone (brass wool) al posto della classica spugnetta umida: rimuove residui di stagno, ossidazioni e flussante in modo efficace, senza rovinare il rivestimento protettivo della punta. E soprattutto non richiede acqua, quindi evita gli shock termici che, nel tempo, possono accorciare la vita della punta del saldatore.

La spugna di ottone è anche poco abrasiva: aiuta a mantenere la punta più lucida, migliorando la conducibilità termica e facilitando l’adesione dello stagno durante le saldature.

Per mettere ordine sul banco (e avere sempre tutto al posto giusto) ho progettato un contenitore stampabile in 3D e poiché amo le abat jour degli anni ’70 ho realizzato una forma semplice costituita da due sfere:

  • una sfera cava che ospita la spugna di ottone;
  • una semisfera piena che funge da piedistallo stabile.

Come per gli altri mini-progetti, l’obiettivo è duplice: organizzazione del laboratorio e attività didattica concreta. Questo oggetto, infatti, è perfetto anche per strutturare micro-esercitazioni di modellazione e stampa 3D con gli studenti di prima e seconda superiore, perché è rapido da stampare, intuitivo da montare e subito utile.

File per la stampa 3D

Buon Making a tutti 🙂

Esp32-C3 Super Mini – lezione 1

Sto sviluppando da qualche giorno un progetto didattico un po’ “speciale” che vorrei portare in un evento scolastico tra qualche mese (spero di potervene parlare presto). In sintesi, si tratta di un controllo per micromotori, quelli tipici dei piccoli droni e, proprio per il vincolo di peso/ingombro a cui devo sottostare, mi sono orientato su componenti compatti: ESP32-C3 Super Mini e driver motore DRV8833.
Come sempre, mi interessa che il lavoro sia replicabile anche in altri contesti didattici: per questo ho deciso di trasformare le mie prove in una guida. In questa prima lezione facciamo un’introduzione completa alla scheda (pin, IDE, primi test), vediamo come controllare il led onboard e come controllare l’accensione del led sulla scheda attraverso una pagina web. Nelle lezioni successive aggiungerò ulteriori sperimentazioni legate all’uso di sensoristica specifica e al controllo di motori.

Guida introduttiva

L’ESP32-C3 Super Mini è una scheda di sviluppo molto compatta basata sul chip Espressif ESP32-C3, appartenente alla famiglia ESP32. Rispetto a molte altre board ESP32, si distingue soprattutto per dimensioni ridotte e consumi molto contenuti in modalità deep sleep.
In questo tutorial vedremo cos’è l’ESP32-C3 Super Mini, quali sono le sue caratteristiche principali e il suo pinout, come si programma con Arduino IDE e come eseguire alcuni esempi rapidi per verificare che tutto funzioni correttamente.

L’ESP32-C3 Super Mini integra il chip ESP32-C3 con Wi-Fi e Bluetooth a bordo. A differenza di altri modelli della famiglia, qui parliamo di un chip single-core. Il formato è molto ridotto ed è pensato per lavorare bene anche in scenari a basso consumo: secondo datasheet, in deep sleep può arrivare a circa 43 µA.
La board dispone di 16 pin, di cui 11 GPIO programmabili; questi GPIO supportano funzioni come ADC, PWM, UART, I2C e SPI.

Sono presenti due pulsanti: RST (reset) e BOOT. Il pulsante BOOT serve per entrare in modalità bootloader (utile quando dovete caricare il firmware), mentre RST riavvia la scheda, comodo per far ripartire subito lo sketch appena caricato.

È disponibile anche una porta USB-C, utilizzabile per alimentazione, upload del codice e comunicazione seriale. In alternativa, potete alimentare la scheda con un 5 V esterno usando i pin 5V e GND; in questo caso, è importante non usare contemporaneamente anche la USB-C.
Come su molte schede ESP32, è presente un LED onboard. Qui però è collegato a GPIO 8 (non a GPIO 2, come succede spesso su altre board).

Specifiche tecniche

  • Processore: CPU RISC-V 32 bit fino a 160 MHz
  • Wi-Fi IEEE 802.11 b/g/n e Bluetooth 5 (LE)
  • 400 KB SRAM, 384 KB ROM, 4 MB flash integrata
  • Antenna SMD compatta
  • 11 GPIO con supporto a:
    • DC (4 pin)
    • PWM
    • UART
    • I2C
    • SPI
  • LED integrato su GPIO 8
  • Pulsanti Reset e Boot
  • Consumo molto basso: fino a 43 µA in deep sleep
  • Form factor ridotto

Tabella riassuntiva delle specifiche

Voce Dettagli
Microcontrollore (processore) Espressif ESP32-C3 (RISC-V 32-bit single-core, fino a 160 MHz)
Memoria Flash 4 MB (flash SPI integrata)
SRAM 400 KB
ROM 384 KB
Wi-Fi 802.11 b/g/n, 2.4 GHz, fino a 150 Mbps
Bluetooth Bluetooth 5.0 LE
Pin GPIO 11 GPIO accessibili
Ingressi analogici (ADC) 2 × ADC SAR a 12 bit, fino a 6 canali
Canali PWM 6 canali
SPI 3 × interfacce SPI (SPI0, SPI1 riservate)
I2C 1 × interfaccia I2C
UART 2 × interfacce UART
I2S 1 × interfaccia I2S
Interfaccia USB USB-C, supporta USB CDC
Alimentazione 5V via USB-C oppure 3.3V–6V via pin VIN (5V); regolatore 3,3V integrato (fino a 500 mA)
Tensione di funzionamento 3,3V (livello logico per i GPIO)
Modalità Deep Sleep 43uA
Pulsanti 1 × pulsante Reset, 1 × pulsante Boot (GPIO9)
LED 1 × LED integrato (su GPIO8, attivo basso)
Programmazione Arduino IDE, ESP-IDF, MicroPython, PlatformIO/pioarduino

Strapping pin

Alcuni GPIO hanno un ruolo speciale durante avvio/reset (boot strap). In particolare:

  • GPIO 2: usato come strapping per entrare in bootloader – meglio evitarlo per uso generico.
  • GPIO 8: collegato al LED blu integrato (logica invertita / attivo LOW) ed è anche strapping.
  • GPIO 9: collegato al pulsante BOOT – da evitare per uso “tranquillo” nei progetti.

È possibile usare comunque questi pin, ma va considerato che, durante reset o ingresso in bootloader, il loro stato può cambiare temporaneamente e questo può interferire con circuiti collegati.

Pin di alimentazione

Per l’alimentazione disponete:

  • 5V
  • 3V3
  • GND

Il pin 3V3 può fornire 3,3 V dal regolatore onboard oppure ricevere 3,3 V da un’alimentazione esterna. Il pin 5V può essere usato come ingresso per alimentare la scheda, oppure come uscita dei 5 V provenienti dalla USB.

Pin analogici (ADC)

I GPIO 0, 1, 2, 3, 4 e 5 supportano lettura analogica:

  • GPIO 0: ADC1_CH0
  • GPIO 1: ADC1_CH1
  • GPIO 2: ADC1_CH2
  • GPIO 3: ADC1_CH3
  • GPIO 4: ADC1_CH4
  • GPIO 5: ADC1_CH5

PWM

Tutti i GPIO “general purpose” possono generare segnali PWM.

UART, I2C e SPI

Grazie al multiplexing dell’ESP32, le periferiche UART, SPI e I2C possono essere mappate su diversi GPIO.

Detto questo, in Arduino IDE i pin “di default” non sono universali: dipendono dalla board/variant selezionata (i file variant/pins_arduino.h del core Arduino-ESP32).
Per ESP32-C3 SuperMini (e, in generale, per il profilo ESP32C3 del core Arduino-ESP32) i default sono:

  • UART: GPIO 20 (RX) e GPIO 21 (TX)
  • SPI: GPIO 6 (MISO), GPIO 7 (MOSI), GPIO 10 (SCK) e GPIO 5 (SS)
  • I2C: GPIO 8 (SDA) e GPIO 9 (SCL)

Nota: su SuperMini GPIO 8 è anche il pin del LED integrato e GPIO 9 è legato al tasto BOOT; se usi I2C su 8/9 e noti comportamenti strani, conviene rimappare I2C su altri pin.

Remapping (rimappare i pin)

L’ESP32 (anche C3) supporta il remapping: in pratica SPI può essere spostata su altri GPIO.
Questo però non cambia automaticamente i “default”: quelli restano quelli definiti dalla variant della board selezionata nell’IDE.
Per evitare ambiguità (e prevenire librerie che assumono pin diversi), potete inizializzare SPI indicando esplicitamente i pin:

#include 
// firma: begin(sck, miso, mosi, ss)
SPI.begin(4, 5, 6, 7);

Aggiornamento: in una versione precedente di questa pagina era riportata un’indicazione errata sui pin SPI “di default”. Grazie a chi l’ha segnalato (nei commenti a questo post): per ESP32-C3 SuperMini i default del core Arduino-ESP32 sono SCK=GPIO4, MISO=GPIO5, MOSI=GPIO6, SS=GPIO7.
Continua a leggere