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.
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 Ordinazione | Flash Integrata | Temperatura Ambientale (°C) | Pacchetto (mm) | No. GPIO |
---|---|---|---|---|
ESP32-C3 | No | –40 ∼ 105 | QFN32 (5*5) | 22 |
ESP32-C3FN4 | 4 MB | –40 ∼ 85 | QFN32 (5*5) | 22 |
ESP32-C3FH4 | 4 MB | –40 ∼ 105 | QFN32 (5*5) | 22 |
ESP32-C3FH4AZ | 4 MB | –40 ∼ 105 | QFN32 (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
WiFi
- 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 e specifiche ad alta risoluzione
LuatOS CORE ESP32 C3: disposizione dei pin e specifiche ad alta risoluzione
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
“
Poi devi aggiungere una nuova scheda nel Gestore Schede
Le schede da selezionare sono esp32
Seleziona (se hai, come me, quel modello) 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
“
Ora puoi aggiungere il descrittore delle schede al tuo IDE.
Seleziona la scheda
Ora il tuo IDE supporta le schede esp32, quindi puoi trovare la scheda specificata.
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
- ESP32: piedinatura, specifiche e configurazione dell’Arduino IDE
- ESP32: fileSystem integrato SPIFFS
- ESP32: gestire più seriali e logging per il debug
- ESP32 risparmio energetico pratico
- ESP32 risparmio energetico pratico: gestire WiFi e CPU
- ESP32 risparmio energetico pratico: modem e light sleep
- ESP32 risparmio energetico pratico: deep sleep e ibernazione
- ESP32 risparmio energetico pratico: preservare dati al riavvio, sveglia a tempo e tramite tocco
- ESP32 risparmio energetico pratico: sveglia esterna e da ULP
- ESP32 risparmio energetico pratico: sveglia da UART e GPIO
- ESP32: filesystem integrato LittleFS
- ESP32: filesystem integrato FFat (Fat/exFAT)
- ESP32-wroom-32
- ESP32-CAM
- ESP32: ethernet w5500 con chiamate standard (HTTP) e SSL (HTTPS)
- ESP32: ethernet enc28j60 con chiamate standard (HTTP) e SSL (HTTPS)
- Come usare la scheda SD con l’esp32
- esp32 e esp8266: file system FAT su memoria SPI flash esterna
- Gestione aggiornamenti firmware e OTA
- Gestione del firmware
- Aggiornamento OTA con Arduino IDE
- Aggiornamento OTA con browser web
- Aggiornamenti automatici OTA da un server HTTP
- Aggiornamento del firmware non standard
- Integrare LAN8720 con ESP32 per la connettività Ethernet con plain (HTTP) e SSL (HTTPS)
- Collegare l’EByte E70 (CC1310) ai dispositivi ESP32 c3/s3 ed un semplice sketch di esempio
- ESP32-C3: piedinatura, specifiche e configurazione dell’IDE Arduino
- Integrazione del modulo W5500 su ESP32 con Core 3: supporto nativo ai protocolli Ethernet con SSL e altre funzionalità
- Integrazione del modulo LAN8720 su ESP32 con Core 3: supporto nativo del protocollo Ethernet con SSL e altre funzionalità.
- Dallas DS18B20
- Dallas DS18B20 con ESP32 ed ESP8266: introduzione e modalità parasita
- Dallas DS18B20 con ESP32 ed ESP8266: gate P-MOSFET pull-up e allarmi
- Dallas DS18B20 con ESP32 ed ESP8266: tutte le topologie OneWire, lunghe derivazioni e più dispositivi