Nell'articolo di oggi, vogliamo presentarvi un microcontrollore dalle potenzialità quasi infinite, basti pensare che supera di gran lunga il famosissimo ESP8266! Andremo a scoprire quali periferiche monta a bordo, i tipi di linguaggi supportati e quali IDE si potranno utilizzare per poterlo programmare, oltre che illustrare le demoboard disponibili. Di cosa stiamo parlando? Ma del famosissimo chip ESP32 della ESPRESSIF, un microcontrollore dual core, degno successore dell'ESP8266. Un chip dal costo davvero contenuto, in commercio è possibile trovarlo dai 3 dollari in su; grande come un francobollo, porta le sue potenzialità al servizio degli appassionati del mondo IOT e Arduino.
Come illustrato nella seguente Tabella 1 è possibile notare le caratteristiche del chip ESP32 messe a confronto con il suo "antenato" ESP8266; le righe evidenziate in verde mostrano le periferiche che sono state aggiunte nel nuovo chip ESP32.
ESP8266 | ESP32 | |
CPU | Xtensa Single-core 32-bit L106 | Xtensa Dual-Core 32-bit LX6 with 600 DMIPS |
802.11 b/g/n Wi-Fi
|
HT20
|
HT40
|
Bluetooth
|
NO |
Bluetooth 4.2 and BLE
|
Frequenza tipica
|
80 MHz
|
160 MHz
|
SRAM
|
160 Kbyte |
512 Kbyte
|
Flash (esterna)
|
SPI Flash fino a 16 Mbyte
|
SPI Flash fino a 16 Mbyte
|
GPIO
|
17
|
34
|
Hardware /Software PWM
|
No/8 canali
|
No/16 canali
|
SPI
|
2
|
4
|
I2C |
1
|
2
|
I2S |
2
|
2
|
UART |
2
|
2
|
ADC (risoluzione)
|
10-bit
|
12-bit
|
CAN
|
No
|
SI
|
Interfaccia Ethernet MAC
|
No
|
SI
|
Touch Sensor
|
No
|
SI
|
Sensore di temperatura interno
|
No
|
SI
|
Hall effect sensor
|
No
|
SI
|
Temperatura di lavoro
|
-40 ºC to 125 ºC
|
-40 ºC to 125 ºC
|
Tabella 1: Caratteristiche a confronto dei chip ESP8266 ed ESP32
Risulta evidente un passaggio di livello in prestazioni e velocità tra i due chip. Come possiamo notare, l'ESP32 è un sistema Dual-core a 32 bit, funzionalità utili nel caso si voglia utilizzare un sistema real time operating system dal nome ESP-IDF freeRTOS (la documentazione ufficiale può essere trovata qui) in cui sia possibile attivare dei task su ogni core, come ad esempio gestire un task che permette di eseguire il "blink" del led di status su un core, mentre lo stampa a video attraverso la printf sull'altro core.
Risulta possibile fare una valutazione di prestazione/velocità tra Single-core e Dual-core semplicemente dicendo che:
- i processori multi-core sono utili quando ci sono più di 2 processi da eseguire contemporaneamente;
- dato che il lavoro è distribuito tra diversi core, la velocità aumenta e più processi possono essere completati contemporaneamente;
- il consumo di energia può essere ridotto, dato che nel momento in cui un core è in modalità inattiva, può essere utilizzato per spegnere le periferiche che non sono in uso in quel momento;
- i processori dual-core devono passare da un thread all'altro meno spesso rispetto ai processori single-core perché possono gestirne due contemporaneamente invece di uno alla volta.
Completano poi il quadro generale, il modulo Bluetooh, l'interfaccia CAN, l'interfaccia Ethernet oltre Wi-fi in modo da aver a disposizione praticamente tutto ciò che può servire per interfacciare il modulo ESP32 con il mondo esterno, sia tramite wi-fi che con linea fisica (seriale per intendere). Il chip risulta versatile per moltissime applicazioni. L'aggiornamento del firmware può essere eseguito tramite un connettore USB-seriale (come solitamente si è abituati a fare con le board "Arduino") oppure tramite "OTA", acronimo di Over The Air, che permette appunto di poter aggiornare il firmware senza la necessità di collegare la scheda al pc tramite cavo USB ma bensì in modalità wireless. Un ottimo articolo, già trattato sul blog, che illustra il funzionamento della modalità OTA per le schede ESPertino, è reperibile qui. In commercio esistono diverse tipologie di ESP32, disponibili sia come chip da saldare che già pronte all'uso su demoboard. La Figura 2 mostra il pinout di una scheda ESP32-DevKitC, una scheda dalle dimensioni compatte e utilizzata a larga scala.
Nell'immagine seguente (Figura 3) è possibile visualizzare lo schema a blocchi funzionale del chip ESP32 che illustra come sono composti i moduli (ad esempio la parte radio, la crittografia e il modulo rtc condiviso con la gestione del low-power) oltre che le periferiche fisiche a disposizione.
Molto importante ricordare che con questa tipologia di demoboard, è possibile avere a disposizione già il bootloader, il che permette appunto di poter programmare la scheda direttamente dall'usb. Ad esempio per chi ha familiarità con Arduino IDE è possibile (previo aggiunta nel menu prefence/“Additional Board Manager URLs” il link ) poter gestire le tipologie di board ESP32 programmandole come si è abituati a fare con le schede Arduino in C/C++. Solitamente queste demoboard montano un LED collegato alla GPIO2. Un semplice esempio che permette di poter eseguire un "blink" del led attraverso l'IDE di Arduino: [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1658 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Buongiorno, io attualmente sto lavorando su ESP32 ma nell’attuale documentazione:
– Version 3.5 2021;
che descrive le seguenti versioni:
– ESP32-D0WD-V3;
– ESP32-D0WDQ6-V3;
– ESP32-D0WD;
– ESP32-D0WDQ6;
– ESP32-D2WD;
– ESP32-S0WD;
– ESP32-U4WDH;
non fanno alcun cenno alla presenza del modulo CAN integrato nel SoC, esiste una nuova versione o un nuovo documento?
Cordiali saluti,
Stefano Salsi.
Credo che non riesci a trovarlo perchè la Espressif lo chiama TWAI (Two-Wire Automotive Interface).
Allego link per info della doc ufficiale:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/twai.html
Presenta sia il formato extended a 29 bit che quello classico standard a 11.
L’ultima versione dovrebbe essere la 4.3
Giusto per info ricorda che a bordo presenta il controller ma per funzionare in can ti serve anche il transceiver.
Spero di esserti stato utile
Una buona giornata Gianluca Cavallaro
Otitmo, grazie dell’info!