Allenamento alla maturità con Arduino

Esercitazioni progressive di laboratorio per studenti di quinta ITIS e professionale

Nota importante: questa pagina è in continuo aggiornamento. I link alle diverse esercitazioni saranno aggiunti progressivamente nell’indice, man mano che i contenuti verranno pubblicati.

La preparazione alla seconda prova dell’Esame di Stato passa anche attraverso l’attività pratica in laboratorio in modo che l’azione possa essere utile per focalizzare lo studio teorico e lo svolgimento delle tracce degli anni precedenti.

Per affrontare bene la maturità serve allenamento operativo, metodo e continuità.
Per questo motivo ho deciso di proporre una serie di esercitazioni pratiche con Arduino, pensate per studenti del quinto anno dell’ITIS – Elettronica e Automazione, utilizzabili sia a scuola in laboratorio con il supporto dei docenti sia a casa in autonomia come attività di ripasso e consolidamento.

Sono in realtà attività pratiche che possono essere svolte in circa 90 minuti di lavoro e che prendono in considerazione argomenti del triennio dell’ITIS che ritengo possano servire per lo svolgimento di problemi che potrebbero essere presenti nel tema d’esame di TPSEE.

Quindi questa raccolta nasce con un obiettivo molto preciso:

aiutare gli studenti a prendere confidenza con quelle strutture di programmazione che, molto spesso, risultano più difficili da capire e da usare in modo corretto, ad esempio:

  • temporizzazioni non bloccanti con millis()
  • multitasking cooperativo
  • array e matrici
  • interrupt
  • puntatori
  • macchine a stati
  • gestione ordinata degli eventi

Due percorsi distinti ma complementari

All’interno del lavoro di preparazione alla maturità sto sviluppando due percorsi paralleli.

Il primo è questa serie di esercitazioni trasversali di programmazione, focalizzate sulle strutture software più importanti e spesso più ostiche.

Il secondo, invece, è già in corso con un mia classe e nel breve pubblicherò le attività di laboratorio, si tratta di una reinterpretazione per il laboratorio di Sistemi elettronici e TPSEE della prova di maturità della sessione ordinaria 2018 di TPSEE, che richiede di affrontare un processo articolato con preallarme, attuatori ON/OFF, acquisizione di sensori, scelta dell’intervallo di campionamento, progettazione delle interfacce e descrizione dell’algoritmo di gestione.

Partiamo però dalle 20 attività.

Come sono costruite le esercitazioni

La struttura delle schede di lavoro rispecchia quelle che in genere consegno ai miei studenti.

Ogni attività sarà presentata con una struttura costante, così da aiutare anche gli studenti che hanno competenze di programmazione ancora deboli.

In ogni post troverete:

  • richiamo teorico iniziale delle istruzioni usate
  • analisi semplificata del problema
  • materiali necessari
  • schema logico di funzionamento
  • diagramma di flusso
  • codice Arduino completo e commentato nel dettaglio
  • spiegazione guidata del programma
  • errori tipici
  • possibili estensioni

Attività 0: prima di programmare, capire bene il testo

Prima ancora di partire con la costruzione del circuito e la programmazione iniziamo con l’Attività 0: la comprensione del testo tecnico, è un problema che si riscontra sempre, soprattutto nella comprensione del testo dell’esame di maturità.

Molto spesso gli studenti si bloccano non perché non sanno programmare, ma perché il testo della prova appare lungo, denso e complesso.
Per questo motivo, prima di scrivere codice, è fondamentale allenarsi a:

  • riconoscere ingressi, uscite, sensori e attuatori
  • distinguere dati misurati e condizioni logiche
  • individuare la sequenza del processo
  • separare la parte hardware dalla parte software
  • … e non ultimo progettare in modo ordinato

Pubblicazione delle soluzioni

Le attività saranno pubblicate progressivamente e in ogni attività lo studente troverà un esercizio aggiuntivo di complessità leggermente superiore rispetto a quello proposto.

Ogni esercizio sarà corredato da diagramma di flusso e codice Mermaid per replicare il diagramma di flusso.

Per favorire il ragionamento autonomo, la soluzione completa verrà resa disponibile dopo qualche giorno dalla pubblicazione dell’esercizio, così da lasciare agli studenti il tempo di provare davvero.

Nota importante

Questa serie di attività è attualmente in costruzione. Nel momento stesso in cui pubblico questo post sto ancora sviluppando e affinando le singole esercitazioni; per questo vi chiedo un po’ di pazienza e comprensione se dovessero essere presenti alcune imprecisioni o aspetti da migliorare. Ogni segnalazione, osservazione o suggerimento sarà quindi molto utile per rendere le schede di lavoro più chiare, efficaci e funzionali.

Naturalmente, quanto propongo non ha la pretesa di esaurire tutti i contenuti necessari per affrontare l’Esame di Stato. Si tratta di una mia selezione di attività, costruita a partire dagli argomenti ricorrenti nelle prove degli anni passati e pensata soprattutto per studenti con competenze di livello medio-base. Per questo motivo le esercitazioni possono essere integrate, adattate o modificate in base alle esigenze della classe, al livello di preparazione degli studenti e alle scelte didattiche del docente.

Di seguito trovate l’indice della serie, che al momento può essere considerato una versione beta, anche se con ogni probabilità resterà molto vicino alla struttura definitiva.
Questa pagina verrà aggiornata progressivamente, aggiungendo di volta in volta i link diretti alle singole esercitazioni.

Indice delle esercitazioni che verranno pubblicate

  • Esercitazione 1 – Pulsante singolo con antirimbalzo, doppio clic, pressione lunga e timeout
  • Esercitazione 2 – Tastiera 4×4 non bloccante con codice di accesso e feedback di errore
  • Esercitazione 3 – Scheduler cooperativo con tre task e supervisione dei tempi
  • Esercitazione 4 – Macchina a stati per un ciclo automatico con START, pausa, allarme e reset
  • Esercitazione 5 – Acquisizione analogica calibrata, filtrata e convertita in grandezza fisica
  • Esercitazione 6 – Controllo a finestra con isteresi, allarme latched e reset
  • Esercitazione 7 – Confronto tra filtro a media mobile e filtro esponenziale
  • Esercitazione 8 – Campionamento temporizzato con array di struct: tempo, valore e stato
  • Esercitazione 9 – Analisi statistica di una sequenza con rilevamento anomalie
  • Esercitazione 10 – Buffer circolare con trend, velocità di variazione e soglia dinamica
  • Esercitazione 11 – Matrice bidimensionale per organizzare campioni di più sensori nel tempo
  • Esercitazione 12 – Frame buffer per matrice LED: icone, animazioni e scorrimento testo
  • Esercitazione 13 – Conteggio impulsi con interrupt e validazione evento
  • Esercitazione 14 – Misura di periodo, frequenza, duty cycle e tempo alto di un segnale PWM
  • Esercitazione 15 – Encoder rotativo con menù parametrico semplificato
  • Esercitazione 16 – Funzioni con parametri passati per indirizzo e restituzione di più risultati
  • Esercitazione 17 – Ordinamento di misure e scambio di valori tramite puntatori
  • Esercitazione 18 – Macchina a stati per un menù su display LCD
  • Esercitazione 19 – Parser di comandi seriali con parametri e risposta strutturata
  • Esercitazione 20 – Mini progetto finale: stazione di monitoraggio completa

Quale sarà la periodicità delle attività? Probabilmente giornaliera, da domani o lunedì prossimo.

Siete pronti per ripassare? 🙂

Multitasking con Arduino – lezione 3/3

Nella scorsa lezione abbiamo visto come gestire un attuatore, un servomotore SG90, la cui rotazione non bloccava l’accensione di un LED controllata da un pulsante. Vediamo ora in questa breve lezione come gestire un sensore di temperatura e umidità DHT11. Nell’esempio che segue abbiamo 4 task che lavorano in multitasking nel seguente modo:

  • TASK 1: Lampeggio LED su D9
  • TASK 2: Pulsante su D2 (INPUT_PULLUP) + debounce -> commuta LED2 su D8
  • TASK 3: Lettura DHT11 su D3 ogni 2000 ms (no blocchi nel loop)
  • TASK 4: Stampa su Serial ogni 1000 ms dei valori letti (se validi)

Nota: il DHT11 è lento mi piace definirlo “capriccioso” 🙂 leggerlo troppo spesso può dare errori. Come già indicato in precedenti post, intervalli da 1–2 sec sono ideali.

Collegamenti

Ricordo che se usate il modulo DHT11 a 3 pin:

  • VCC > 5V
  • GND > GND
  • DATA > D3 (nel codice)

Se invece usate il DHT11 a 4 pin che non è su breakoutboard , serve una resistenza di pull-up (tipicamente 10 kΩ) tra Vcc e DATA.

Per gli esempi è necessario installare la libreria DHT sensor library (Adafruit).

Nello sketch che segue il trucco “da multitasking” è la cache: leggiamo il DHT11 solo ogni 2 s (task 3), ma possiamo stampare i dati ogni 1 s (task 4) senza impegnare troppo il sensore e senza bloccare il loop.

Schema di collegamento

I commenti spiegano il funzionamento del codice. Continua a leggere

Arduino VENTUNO Q: la nuova piattaforma per AI, robotica e attuazione

Arduino ha annunciato VENTUNO Q, una nuova piattaforma descritta come una single-board computer progettata per applicazioni di intelligenza artificiale, robotica e attuazione. Il lancio è avvenuto oggi 9 marzo 2026 sul blog ufficiale Arduino, che la presenta come una soluzione pensata per unire su una sola board capacità di percezione, decisione e controllo del mondo fisico.

Per chi segue l’evoluzione dell’ecosistema Arduino, si tratta di un passaggio interessante: non più solo microcontrollori per prototipazione rapida, ma una piattaforma che punta a coprire anche scenari più avanzati, vicini alla robotica intelligente, alla computer vision on-device e ai sistemi che richiedono AI locale e controllo real-time. Questa lettura è inferenziale, ma coerente con il posizionamento ufficiale dichiarato da Arduino.

Una piattaforma pensata per “percepire, decidere e agire”

Uno dei concetti chiave con cui Arduino presenta VENTUNO Q è l’idea di una piattaforma capace di gestire, nello stesso sistema, l’acquisizione dei dati, l’elaborazione AI e il pilotaggio di attuatori. Il messaggio è chiaro: non soltanto “eseguire modelli”, ma costruire dispositivi in grado di interagire fisicamente con l’ambiente.

Nelle specifiche tecniche Arduino parla infatti di un’architettura “dual-brain“: da una parte un processore Qualcomm Dragonwing IQ8, dall’altra un microcontrollore STM32H5, collegati tramite un bridge RPC. L’obiettivo è separare i compiti di elaborazione complessa da quelli che richiedono tempi di risposta deterministici.

Architettura dual-brain: AI da una parte, controllo real-time dall’altra

Secondo Arduino, il processore principale Dragonwing IQ8 è dedicato ai carichi di lavoro più pesanti, inclusa l’inferenza di reti neurali, mentre lo STM32H5 si occupa delle operazioni a bassa latenza e del controllo in tempo reale. Sul blog ufficiale viene inoltre indicata una capacità fino a 40 dense TOPS (Tera Operations Per Second) per l’accelerazione AI, insieme a 16 GB di RAM e 64 GB di memoria espandibile.

Linux embedded e Arduino Core su Zephyr

VENTUNO Q può eseguire Ubuntu o Debian sul lato applicativo, mentre il microcontrollore real-time usa Arduino Core su Zephyr OS. Questa combinazione è rilevante perché mette insieme un ambiente Linux, più adatto a strumenti evoluti, librerie e workflow AI, con una componente embedded deterministica più vicina alla filosofia del controllo industriale e della robotica.

In termini pratici, ciò potrebbe consentire di sviluppare applicazioni in cui una parte del sistema gestisce visione, audio, interfacce o modelli AI, mentre l’altra mantiene il controllo puntuale di attuatori, encoder, segnali PWM o logiche di sicurezza. La possibilità concreta dipenderà naturalmente da tool, documentazione e maturità dell’ecosistema, ma la direzione indicata da Arduino è questa.

App Lab, Python e integrazione con Edge Impulse

Ovviamente VENTUNO Q si collega ad Arduino App Lab, l’ambiente in grado di unificare sketch Arduino, script Python e flussi di lavoro AI. Sarà possibile anche l’integrazione con Edge Impulse Studio e il supporto a modelli provenienti da Qualcomm AI Hub ed Edge Impulse.

Esempi applicativi: LLM locali, VLM, riconoscimento vocale automatico (ASR), sintesi vocale (TTS), stima di pose e gesture, oltre a funzioni di object tracking offline. Per chi lavora nella didattica o nella prototipazione, questa è forse una delle promesse più interessanti: portare l’AI “vicino” al dispositivo, senza dipendere sempre dal cloud.

Compatibilità hardware: Arduino, Qwiic e Raspberry Pi HAT

Arduino indica una compatibilità piuttosto ampia con diversi ecosistemi hardware. Nello specifico, VENTUNO Q viene presentata come compatibile con shield e carrier Arduino UNO, con i moduli Modulino, con i sensori Qwiic e addirittura con Raspberry Pi HATs.

Questo aspetto è importante perché amplia subito le possibilità di utilizzo: non una board isolata, ma una piattaforma che cerca di inserirsi in ambienti già familiari a maker, scuole, laboratori e sviluppatori. In ambito formativo questo può fare molta differenza, perché riduce la soglia di ingresso per sperimentare.

Connettività e interfacce per robotica ed Edge AI

Fra le caratteristiche che vengono evidenziate compaiono Wi-Fi 6, Bluetooth 5.3, CAN-FD nativo, PWM, GPIO ad alta velocità, connettori per più telecamere MIPI-CSI, audio avanzato, supporto display ed Ethernet 2.5 Gb. Interessantissimo, almeno per me la notizia che VENTUNO Q è ROS 2-ready, elemento che la colloca chiaramente anche nel perimetro della robotica moderna.

Nel complesso, la dotazione sembra andare oltre il classico uso educational di base e si spinge verso applicazioni più articolate: robot di servizio, sistemi di visione, automazione intelligente, interfacce vocali embedded, ispezione visiva e prototipazione preindustriale.

Alcuni scenari d’uso suggeriti da Arduino

Casi d’uso: interfacce vocali offline, sistemi interattivi basati su gesture, robot pick-and-place guidati dalla visione, robot di servizio che seguono le persone, applicazioni con Visual SLAM, monitoraggio intelligente e controllo qualità tramite modelli di visione locale.

Sono esempi significativi perché chiariscono il posizionamento del prodotto: VENTUNO Q non nasce come semplice variante di una board tradizionale, ma come piattaforma per progetti in cui servono insieme sensori, modelli AI, connettività e azione fisica sul mondo reale.

Perché potrebbe essere interessante anche per la scuola

Dal punto di vista didattico, VENTUNO Q potrebbe risultare particolarmente utile nei percorsi che incrociano elettronica, informatica, automazione, robotica e intelligenza artificiale. La presenza di un ambiente Linux, l’apertura verso Python e i workflow AI, unita al controllo real-time, la rende potenzialmente adatta a laboratori interdisciplinari più evoluti rispetto a quelli costruiti con microcontrollori tradizionali.

Naturalmente, molto dipenderà dalla disponibilità effettiva della scheda, dalla documentazione, dai costi, dagli esempi pronti e dalla facilità con cui queste caratteristiche potranno essere tradotte in attività scolastiche. Ma il segnale lanciato da Arduino è netto: l’AI embedded e la robotica intelligente stanno entrando sempre più chiaramente anche nel loro ecosistema.

Disponibilità

Arduino indica che VENTUNO Q sarà disponibile prossimamente tramite Arduino Store e presso rivenditori ufficiali come DigiKey, Farnell, Macfos, Mouser e RS. Al momento del lancio il prodotto è quindi annunciato come in arrivo, non ancora come board immediatamente acquistabile dal catalogo standard con una pagina e-commerce completa.

… cosa dire di più
sono curiosissimo ed impaziente di poterlo utilizzare 🙂

Con VENTUNO Q, Arduino sembra voler spingere il proprio ecosistema verso una nuova fascia progettuale: quella in cui non basta più leggere sensori e accendere attuatori, ma serve una piattaforma capace di analizzare, decidere e agire in locale. È un passaggio che guarda con decisione alla convergenza tra AI on-device, robotica e controllo embedded.

Resta ora da vedere come questa piattaforma si comporterà nella pratica, quali strumenti saranno davvero disponibili fin da subito e quanto sarà accessibile a scuole, maker e laboratori. Ma come annuncio, VENTUNO Q è sicuramente uno dei segnali più interessanti arrivati da Arduino negli ultimi tempi.

Fonte ufficiale Arduino: annuncio del 9 marzo 2026 sul blog Arduino e pagina prodotto ufficiale.

Scheda didattica – Ponte autoportante di Leonardo: dal Codice Atlantico alla stampa 3D

In queste settimane alcune classi seconde del nostro istituto svolgeranno un progetto presso l’LTO che unisce storia dell’ingegneria, fisica e laboratorio. Per accompagnare l’attività ho progettato insieme alla mia collega di Fisica una serie di lezioni che permetteranno agli studenti di realizzare un modellino stampabile in 3D del celebre ponte autoportante di Leonardo: una struttura che si monta senza colla, senza chiodi e senza corde, sfruttando esclusivamente geometria, attrito e distribuzione dei carichi.

L’idea è semplice: fornire agli studenti un percorso guidato di modellazione e stampa 3D, in cui ciascuno possa costruirsi il proprio ponte e personalizzarlo (lunghezza e sezione dei moduli), e probabilmente, tempo permettendo, si tenterà di realizzare una prova pratica: posizionare il ponte tra due banchi e farvi transitare un piccolo robot (probabilmente un mBot2) per verificare stabilità e capacità di carico.
Poiché gli studenti non hanno mai modellato in 3D e non sanno usare la stampante 3D ho provveduto a realizzare un modellino del ponte in modo che durante la fase di progettazione abbiano idea di cosa dovranno realizzare.

Verranno realizzate due versioni, una in legno di dimensioni grandi ed una versione da far realizzare agli studenti stampata in 3D.

Leonardo da Vinci (1452–1519) studiò e disegnò numerose soluzioni di ponti “rapidi” e trasportabili, utili in contesti civili e militari. Tra questi, il più affascinante per essenzialità è proprio il ponte militare in legno autoportante, documentato nel Codice Atlantico (Codex Atlanticus), la grande raccolta di fogli con appunti e disegni conservata presso la Biblioteca Ambrosiana.

Nel foglio comunemente citato per questo progetto (ad esempio f. 71 recto) si riconosce una struttura costruita con travi incrociate, dove ogni elemento “regge e viene retto” dagli altri: un principio che oggi, in ambito strutturale, è vicino ai sistemi reciproci (reciprocal frames).

Nel mio caso ho ricostruito il modello basandomi sul disegno e su ricostruzioni simili sviluppate da altri maker e divulgatori online, ma ho scelto una semplificazione didattica molto utile: il ponte è realizzato soltanto con due moduli ripetitivi che sono stampati in sezione in modo da accelerare la stampa, le due falde dei rispettivi moduli saranno incollate insieme.

Per chi fosse interessato e desidera realizzare il ponte potete prelevare i sorgenti per la stampa 3D seguendo il link.

Di seguito la sintesi della progettazione didattica. Agli studenti verranno consegnate schede di lavoro specifiche.


Obbiettivi didattici

Fisica

  • equilibrio statico e condizioni di stabilità
  • attrito statico vs dinamico (quando “tiene”, quando “parte”)
  • forze interne: compressione, taglio, (cenni di) flessione
  • distribuzione dei carichi e percorsi di forza nella struttura
  • differenza tra struttura “che funziona per forma” e struttura “che funziona per fissaggi”

Tecnologia e making

  • progettare pensando alla stampa 3D
  • gestione errori: ritiro, tolleranze, orientamento, adesione al piatto
  • iterazione: prototipo > test > modifica > nuova stampa

Matematica e geometria applicata

  • proporzioni, scale, vincoli dimensionali
  • relazione tra sezione e rigidezza
  • ragionamento parametrico: una variabile cambia il comportamento del sistema

Competenze trasversali

  • lavoro in team (ruoli: modellatore, slicer, collaudatore, documentatore)
  • documentazione tecnica (foto, note, problemi riscontrati, versione del modello)
  • pensiero critico: “perché questa variante regge meglio?” con dati e osservazioni

Percorso laboratoriale dalla modellazione alla stampa: struttura della lezione

Ecco una traccia che gli studenti possono seguire (in modo guidato, ma con margine di personalizzazione):

  1. Lettura del problema (reverse engineering)
    • Che cosa deve fare il ponte?
    • Da quali elementi è composto?
    • Quale parte è ripetuta e quale “regola” l’incastro?
  2. Modellazione dei due moduli (CAD)
    • Disegno 2D di base > estrusione
    • Inserimento di incastri/sedi
    • Controllo quote critiche (tolleranze minime per montaggio)
  3. Parametri di personalizzazione
    • Lunghezza del modulo (ponte più o meno lungo)
    • Sezione (spessore/larghezza: rigidità vs consumo materiale)
    • Eventuali micro-varianti: smussi, arrotondamenti, texture
  4. Esportazione STL e slicing
    • orientamento consigliato
    • niente supporti (se progettato correttamente)
    • scelta infill/perimetri in funzione della rigidità richiesta
  5. Stampa e controllo qualità
    • verifica dimensionale rapida (soprattutto incastri)
    • prove: i pezzi scorrono? si incastrano troppo? sono laschi?
  6. Montaggio e collaudo
    1. montaggio su banco
    2. “ponte tra due banchi” (campata reale)
    3. test con carico progressivo

Perché il ponte riesce a stare in piedi

Questo ponte funziona perché combina tre idee chiave:

  1. Incastro geometrico (vincolo di forma)
    I pezzi sono progettati per “appoggiarsi” in modo coerente: la forma guida l’assemblaggio e impedisce che gli elementi scivolino via subito.
  2. Attrito tra le superfici
    Una volta in posizione, il peso dei pezzi aumenta la forza normale tra le parti e quindi l’attrito, che ostacola lo scorrimento.
  3. Percorso dei carichi (load path)
    Il carico applicato sul ponte non grava su un singolo elemento: viene “ridistribuito” lungo l’intreccio delle travi, generando una specie di arco/volta discreta. Questo rende la struttura sorprendentemente rigida rispetto al materiale impiegato.

Dal disegno storico al modello 3D: due moduli, infinite varianti

La scelta di lavorare con due soli moduli ripetitivi è perfetta per una lezione di modellazione:

  • riduce la complessità (due pezzi “master” invece di molti diversi);
  • rende immediata la logica della modularità (un concetto chiave dell’ingegneria);
  • abilita la progettazione parametrica: cambi una quota e ottieni un ponte diverso.

Perché sezionare i pezzi

Uno dei moduli ha una dimensione “lunga” che, su molte stampanti, può portare a:

  • distacco dal piatto (warping o scarsa adesione),
  • vibrazioni/infill poco uniforme su elementi sottili,
  • fallimenti verso fine stampa (quando ormai si è perso tempo).

Per questo ho adottato una soluzione semplice e molto didattica: sezionare trasversalmente il pezzo nella direzione più lunga. In pratica:

  • ottengo due parti più “compatte” e stabili in stampa;
  • riduco il rischio di sollevamento degli spigoli;
  • accelero la produzione di set completi per la classe.

È anche un ottimo pretesto per parlare di orientamento di stampa, adesione al piano, ritiro termico e scelte di progettazione “per la manifattura” (design for manufacturing).

Buon Making a tutti 🙂

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 🙂