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 molti GPIO diversi.

Detto questo, con Arduino IDE (selezionando una board ESP32-C3 dal menu Boards) vengono spesso assunti questi pin come “default”:

  • 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)

Programmare l’ESP32-C3 Super Mini con l’IDE di Arduino

Assumo che abbiate già prelevato ed installato l’ultima versione dell’IDE Arduino sul vostro computer, è necessario procedere con installare le schede ESP32 nell’IDE di Arduino.

Aprite il Boards Manager: Tools > Board > Boards Manager… oppure cliccate l’icona del Boards Manager nella colonna laterale sinistra.

Cercate ESP32 e installa esp32 by Espressif Systems versione 3.X.

Mettere l’ESP32-C3 Super Mini in modalità Bootloader e caricare lo sketch di esempio

Lo sketch allegato permetterà di far lampeggiare il LED connesso al D8.

Nota importante: su questa scheda il LED onboard lavora con logica invertita (active LOW)

/*
  Prof. Maffucci Michele
  24.02.26
  
  Esp32-C3 Super Mini - LED integrato su GPIO 8

  Nota importante: su questa scheda il LED onboard lavora con logica invertita (active LOW):
  - scrivendo LOW il LED si accende
  - scrivendo HIGH il LED si spegne
*/

// Pin a cui è collegato il LED integrato (onboard)
const int pinLed = 8;

void setup() {
  // Avvia la comunicazione seriale per inviare messaggi al Serial Monitor
  // 115200 è una velocità comune e stabile per ESP32
  Serial.begin(115200);

  // Imposta il pin del LED come uscita digitale
  pinMode(pinLed, OUTPUT);

  // Stato iniziale: spegniamo il LED (HIGH perché la logica è invertita)
  digitalWrite(pinLed, HIGH);
  Serial.println("Avvio: LED spento (logica invertita, HIGH = OFF)");
}

void loop() {
  // --- 1) Spegnimento del LED ---
  // HIGH = LED spento (active LOW)
  digitalWrite(pinLed, HIGH);
  Serial.println("LED SPENTO");
  delay(1000); // attesa di 1 secondo

  // --- 2) Accensione del LED ---
  // LOW = LED acceso (active LOW)
  digitalWrite(pinLed, LOW);
  Serial.println("LED ACCESO");
  delay(1000); // attesa di 1 secondo
}

Collegate la scheda al PC in modalità bootloader (necessaria per l’upload via USB). Spesso serve la prima volta; alcuni utenti riferiscono di doverlo ripetere anche per upload successivi.

Procedura:

  • tenete premuto BOOT;
  • premete e rilascia RESET (continuando a tenere premuto BOOT);
  • rilasciate BOOT;
  • selezionate la scheda: ESP32 Family Device.

Selezionare la board corretta: ESP32 Family Device > esp32 > ESP32C3 Dev Module

Abilitare quindi: Tools > USB CDC on Boot.

Infine premete Upload per caricare lo sketch.

Al termine, premete RST per avviare l’esecuzione del codice appena caricato: il LED onboard lampeggerà ogni secondo.

Aprite anche la Serial Monitor impostando 115200 baud: dovreste vedere stampato lo stato del LED.

Verifichiamo il funzionamento del WiFi, realizziamo un Web Server

Per verificare rapidamente la parte Wi-Fi, usiamo un piccolo web server che controlla il LED integrato, copiate ed incollate il codice che trovate nel link indicato, per comprenderne il funzionamento leggete i commenti nel codice.

Lo sketch permette di:

  • collegarsi a una rete Wi-Fi (modalità Station);
  • avviare un server HTTP sulla porta 80;
  • capire la struttura base di una richiesta HTTP (GET) e della risposta (header + body);
  • pilotare un’uscita digitale in base all’URL richiesto dal client (browser).

Nel codice dovrete inserire nelle parte indicata le credenziali WiFi della vostra rete:

// === Credenziali Wi-Fi (modifica qui) ===
const char* nomeReteWiFi = "SOSTITUISCI_CON_IL_TUO_SSID";
const char* passwordWiFi = "SOSTITUISCI_CON_LA_TUA_PASSWORD";

Per prelevare lo sketch fai clic sul link (file zip sketch .ino)

Messaggio all’avvio sulla Serial Monitor:

Pagina Web:

Continuerò con altre lezioni nei prossimi giorni.

Buon Making a tutti 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.