ESP32-C3: piedinatura, specifiche e configurazione dell’IDE Arduino


L’ESP32-C3 è una recente aggiunta alla serie di microcontrollori ESP32, che include il popolare ESP32 e il più potente ESP32-S3. Sebbene questi microcontrollori condividano alcune somiglianze, l’ESP32-C3 offre alcuni vantaggi chiave che lo rendono una scelta attraente per determinate applicazioni.

Uno dei principali vantaggi dell’ESP32-C3 è il suo basso consumo energetico. Il microcontrollore è progettato per operare a livelli di potenza estremamente bassi, rendendolo una scelta ideale per dispositivi alimentati a batteria o altre applicazioni dove l’efficienza energetica è critica. Inoltre, l’ESP32-C3 è dotato di un convertitore DC-DC integrato che gli permette di operare con un’ampia gamma di tensioni di ingresso, ampliando ulteriormente la sua versatilità.

Un altro vantaggio dell’ESP32-C3 è la sua dimensione compatta. Misurando solo 5mm x 5mm, il microcontrollore è significativamente più piccolo dell’ESP32 e dell’ESP32-S3. Questo lo rende un’ottima scelta per applicazioni dove lo spazio è limitato, come i dispositivi indossabili o i sensori IoT.

Nonostante le sue dimensioni ridotte e il minor consumo energetico, l’ESP32-C3 offre comunque prestazioni impressionanti. Il microcontrollore è basato sull’architettura RISC-V e dispone di una CPU a 32-bit single-core che può funzionare fino a 160 MHz. Include anche una varietà di periferiche, tra cui interfacce UART, I2C, SPI e I2S, oltre al supporto per la connettività Wi-Fi e Bluetooth.

In generale, l’ESP32-C3 è un microcontrollore versatile e potente che offre diversi vantaggi rispetto ai suoi predecessori, in particolare in termini di consumo energetico e dimensioni. Mentre l’ESP32 e l’ESP32-S3 possono essere più adatti per certe applicazioni, l’ESP32-C3 è un’eccellente scelta per chiunque voglia costruire un dispositivo compatto a basso consumo con robusta connettività wireless.

Ecco la mia selezione di dispositivi LuatOS esp32c3 Core - ESP32-C3-DevKitC-02 - ESP32-C3-MINI-1 - WeMos LOLIN C3 PICO - WeMos LOLIN C3 Mini v2.1 - WeMos LOLIN C3 Mini v1.0 - ESP32 S3 Purlple AI-S3

Specifiche

Ricorda che esistono molte varianti di questo dispositivo, alcune delle quali hanno una funzione killer specifica, quindi questa è una descrizione generica delle specifiche.

diagramma a blocchi della struttura esp32c3
diagramma a blocchi della struttura esp32c3

CPU e Memoria

  • Processore single-core RISC-V a 32-bit, fino a 160MHz
  • Punteggio CoreMark®:
    • 1 core a 160 MHz: 407.22 CoreMark; 2.55CoreMark/MHz
  • 384 KB ROM
  • 400 KB SRAM (16 KB per la cache)
  • 8 KB SRAM in RTC
  • Flash integrata (vedi dettagli nel Capitolo 1 Confronto della Serie ESP32-C3)
  • Interfacce SPI, Dual SPI, Quad SPI e QPI che permettono la connessione a più flash esterni
  • Accesso alla flash accelerato dalla cache
  • Supporta la programmazione in-Circuit della flash (ICP)
Codice di OrdinazioneFlash IntegrataTemperatura Ambientale (°C)Pacchetto (mm)No. GPIO
ESP32-C3No–40 ∼ 105QFN32 (5*5)22
ESP32-C3FN44 MB–40 ∼ 85QFN32 (5*5)22
ESP32-C3FH44 MB–40 ∼ 105QFN32 (5*5)22
ESP32-C3FH4AZ4 MB–40 ∼ 105QFN32 (5*5)16

Interfacce Periferiche Avanzate

  • 22 o 16 GPIO programmabili
  • Interfacce digitali:
    • 3 × SPI
    • 2 × UART
    • 1 × I2C
    • 1 × I2S
    • Periferica di controllo remoto, con 2 canali di trasmissione e 2 di ricezione
    • Controllore PWM per LED, con fino a 6 canali
    • Controllore seriale/USB JTAG a piena velocità
    • Controllore DMA generale (GDMA), con 3 canali di trasmissione e 3 di ricezione
    • 1 × controllore TWAI® compatibile con ISO 11898-1 (Specifica CAN 2.0)
  • Interfacce analogiche:
    • 2 × ADC SAR a 12 bit, fino a 6 canali
    • 1 × sensore di temperatura
  • Timer:
    • 2 × timer generici a 54 bit
    • 3 × timer di guardia digitali
    • 1 × timer di guardia analogico
    • 1 × timer di sistema a 52 bit

Wi­Fi

  • Conforme IEEE 802.11 b/g/n
  • Supporta larghezze di banda di 20 MHz, 40 MHz nella banda 2.4 GHz
  • Modalità 1T1R con velocità dati fino a 150 Mbps
  • 4 × interfacce Wi-Fi virtuali
  • 802.11mc FTM

Bluetooth

  • Bluetooth LE: Bluetooth 5, mesh Bluetooth
  • Modalità alta potenza (21 dBm)
  • Velocità: 125 Kbps, 500 Kbps, 1 Mbps, 2 Mbps
  • Estensioni pubblicitarie
  • Più set pubblicitari
  • Algoritmo di selezione del canale n. 2
  • Mecanismo di coesistenza interna tra Wi-Fi e Bluetooth per condividere la stessa antenna

Sicurezza

  • Secure boot
  • Crittografia della flash
  • OTP a 4096 bit, fino a 1792 bit utilizzabili
  • Accelerazione hardware crittografica:
    • AES-128/256 (FIPS PUB 197)
  • Controllo dei permessi
  • Acceleratore SHA (FIPS PUB 180-4)
  • Acceleratore RSA
  • Generatore di numeri casuali (RNG)
  • HMAC
  • Firma digitale

Gestione del basso consumo

  • Unità di gestione dell’alimentazione con quattro modalità di potenza

Disposizione dei pin

La disposizione dei pin dell’ESP32-C3 è organizzata in diversi gruppi, ognuno con le proprie funzioni specifiche.

Il primo gruppo di pin è quello dell’alimentazione, che include VDD e GND. VDD è il pin di ingresso dell’alimentazione, che può accettare tensioni tra 1.8V e 3.6V. Il pin GND è il riferimento di terra per il microcontrollore.

Il secondo gruppo di pin è quello dei pin GPIO (General Purpose Input/Output). Questi pin possono essere utilizzati per una vasta gamma di applicazioni, come controllare LED, leggere interruttori e interfacciarsi con sensori. Ci sono in totale 19 pin GPIO sull’ESP32-C3, ognuno dei quali può essere configurato come ingresso o uscita.

Il terzo gruppo di pin è quello dei pin di ingresso analogico. Questi pin possono essere utilizzati per leggere segnali analogici, come quelli provenienti da sensori o potenziometri. Ci sono in totale 4 pin di ingresso analogico sull’ESP32-C3.

Oltre a questi gruppi, l’ESP32-C3 include anche diversi altri pin per funzioni specifiche. Questi includono i pin UART, che possono essere utilizzati per la comunicazione seriale con altri dispositivi, i pin SPI, che possono essere utilizzati per la comunicazione ad alta velocità con altri dispositivi, e i pin I2C, che possono essere utilizzati per comunicare con sensori e altri dispositivi che utilizzano il protocollo I2C.

ESP32-C3 DevKitC 02

ESP32-C3 DevKitC 02 disposizione dei pin

ESP32-C3-DevKitC-02: disposizione dei pin e specifiche ad alta risoluzione

LuatOS CORE ESP32-C3 disposizione dei pin
LuatOS CORE ESP32-C3 disposizione dei pin

LuatOS CORE ESP32 C3: disposizione dei pin e specifiche ad alta risoluzione

ESP32C3-MINI-DK (ESP32-C3-MINI-1) disposizione dei pin
ESP32C3-MINI-DK (ESP32-C3-MINI-1) disposizione dei pin

Come fare

Devi scaricare i driver per i chip USB, probabilmente hai una versione dell’esp32 con il chip cp2102, ma esiste una variante con il chip ch340.

Poi devi configurare il tuo Arduino IDE

Aggiungi le schede all’Arduino IDE 1.x

Prima, devi aggiungere il descrittore URL dell’esp32 al tuo IDE
https://dl.espressif.com/dl/package_esp32_index.json
Vai a File --> Preferenze e aggiungi l'URL in “Additional Boards Manager URLs

Arduino IDE esp32 gestione aggiuntiva delle schede
Arduino IDE esp32 gestione aggiuntiva delle schede

Poi devi aggiungere una nuova scheda nel Gestore Schede

Seleziona il gestore schede

Le schede da selezionare sono esp32

Arduino IDE 1.x: seleziona le schede esp32
Arduino IDE 1.x: seleziona le schede esp32

Seleziona (se hai, come me, quel modello) il modulo ESP32c3 Dev

Arduino IDE 1: seleziona il modulo ESP32c3 Dev
Arduino IDE 1: seleziona il modulo ESP32c3 Dev

Ora puoi caricare il tuo sketch.

Aggiungi le schede all’Arduino IDE 2.x

Prima, devi aggiungere il descrittore URL dell’esp32 al tuo IDE
https://dl.espressif.com/dl/package_esp32_index.json
Vai a File --> Preferenze e aggiungi l'URL in “URL aggiuntivi del gestore schede

Arduino IDE 2.x: aggiungi descrittore schede esp32
Arduino IDE 2.x: aggiungi descrittore schede esp32

Ora puoi aggiungere il descrittore delle schede al tuo IDE.

Arduino IDE 2: installa schede esp32
Arduino IDE 2: installa schede esp32

Seleziona la scheda

Ora il tuo IDE supporta le schede esp32, quindi puoi trovare la scheda specificata.

Arduino IDE 2.x: seleziona il modulo ESP32c3 Dev
Arduino IDE 2.x: seleziona il modulo ESP32c3 Dev

Esempi

Qui esploreremo una serie di esempi pratici che ti aiuteranno a familiarizzare con le capacità dell’ESP32-C3.

Esempi di lampeggiamento

Non tutti i dispositivi illustrati nella sezione precedente possono eseguire lo sketch di lampeggiamento. Ad esempio, l’ESP32-C3-DevKitC-02 può eseguire lo sketch di lampeggiamento usando il pin 30.

int led = LED_BUILTIN;

void setup() {
	pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
	digitalWrite(LED_BUILTIN, HIGH); // accendi il LED (HIGH è il livello di tensione)
	delay(500); // attendi mezzo secondo
	digitalWrite(LED_BUILTIN, LOW); // spegni il LED portando la tensione a LOW
	delay(500); // attendi mezzo secondo
}

In questo caso, LED_BUILTIN punta al pin 30, ma per utilizzare il LED RGB, devi andare direttamente al pin 8.

Per LuatOS CORE-ESP32 puoi provare questo sketch che fa lampeggiare i 2 LED sulla scheda.

Fai attenzione; devi utilizzare la modalità Flash DIO altrimenti, non funziona nulla.

Con LuatOS devi utilizzare la modalità Flash: DIO

int LED_BUILTIN_D4 = 12;
int LED_BUILTIN_D5 = 13;

void setup() {
// Alcune schede funzionano meglio se stabiliamo anche una connessione seriale
	Serial.begin(115200);

	// imposta il LED come pin di output
	pinMode(LED_BUILTIN_D4, OUTPUT);
	pinMode(LED_BUILTIN_D5, OUTPUT);
}

void loop() {
	digitalWrite(LED_BUILTIN_D4, HIGH); // accendi il LED (HIGH è il livello di tensione)
	digitalWrite(LED_BUILTIN_D5, LOW); // accendi il LED (HIGH è il livello di tensione)
	delay(100); // attendi mezzo secondo

	digitalWrite(LED_BUILTIN_D4, LOW); // spegni il LED portando la tensione a LOW
	digitalWrite(LED_BUILTIN_D5, HIGH); // spegni il LED portando la tensione a HIGH
	delay(100); // attendi mezzo secondo
}

Grazie

  1. ESP32: piedinatura, specifiche e configurazione dell’Arduino IDE
  2. ESP32: fileSystem integrato SPIFFS
  3. ESP32: gestire più seriali e logging per il debug
  4. ESP32 risparmio energetico pratico
    1. ESP32 risparmio energetico pratico: gestire WiFi e CPU
    2. ESP32 risparmio energetico pratico: modem e light sleep
    3. ESP32 risparmio energetico pratico: deep sleep e ibernazione
    4. ESP32 risparmio energetico pratico: preservare dati al riavvio, sveglia a tempo e tramite tocco
    5. ESP32 risparmio energetico pratico: sveglia esterna e da ULP
    6. ESP32 risparmio energetico pratico: sveglia da UART e GPIO
  5. ESP32: filesystem integrato LittleFS
  6. ESP32: filesystem integrato FFat (Fat/exFAT)
  7. ESP32-wroom-32
    1. ESP32-wroom-32: flash, piedinatura, specifiche e configurazione dell’Arduino IDE
  8. ESP32-CAM
    1. ESP32-CAM: piedinatura, specifiche e configurazione dell’Arduino IDE
    2. ESP32-CAM: upgrade CamerWebServer con gestione della luce flash
  9. ESP32: ethernet w5500 con chiamate standard (HTTP) e SSL (HTTPS)
  10. ESP32: ethernet enc28j60 con chiamate standard (HTTP) e SSL (HTTPS)
  11. Come usare la scheda SD con l’esp32
  12. esp32 e esp8266: file system FAT su memoria SPI flash esterna
  13. Gestione aggiornamenti firmware e OTA
    1. Gestione del firmware
      1. ESP32: flash del firmware binario compilato (.bin)
      2. ESP32: flash del firmware e filesystem (.bin) con strumenti grafici
    2. Aggiornamento OTA con Arduino IDE
      1. Aggiornamenti OTA su ESP32 con Arduino IDE: filesystem, firmware e password
    3. Aggiornamento OTA con browser web
      1. Aggiornamenti OTA su ESP32 tramite browser web: firmware, filesystem e autenticazione
      2. Aggiornamenti OTA su ESP32 tramite browser web: caricamento in HTTPS (SSL/TLS) con certificato autofirmato
      3. Aggiornamenti OTA su ESP32 tramite browser web: interfaccia web personalizzata
    4. Aggiornamenti automatici OTA da un server HTTP
      1. Aggiornamento automatico Firmware OTA dell’ESP32 dal server
      2. Aggiornamento automatico Firmware OTA dell’ESP32 dal server con controllo della versione
      3. Aggiornamento automatico Firmware OTA dell’ESP32 in HTTPS (SSL/TLS) con certificato autofirmato affidabile
    5. Aggiornamento del firmware non standard
      1. Aggiornamento firmware e filesystem ESP32 dalla scheda SD
      2. Aggiornamento firmware e filesystem ESP32 con client FTP
  14. Integrare LAN8720 con ESP32 per la connettività Ethernet con plain (HTTP) e SSL (HTTPS)
  15. Collegare l’EByte E70 (CC1310) ai dispositivi ESP32 c3/s3 ed un semplice sketch di esempio
  16. ESP32-C3: piedinatura, specifiche e configurazione dell’IDE Arduino
  17. Integrazione del modulo W5500 su ESP32 con Core 3: supporto nativo ai protocolli Ethernet con SSL e altre funzionalità
  18. Integrazione del modulo LAN8720 su ESP32 con Core 3: supporto nativo del protocollo Ethernet con SSL e altre funzionalità.
  19. Dallas DS18B20

Lascia un commento

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