Alla scoperta dell’ESP32

immagine in evidenza

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.

Figura 1

Figura 1: Immagine del chip ESP32 in versione classica, nella vista fronte retro sono mostrate le GPIO disponibili

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.

Figura 2

Figura 2: Come si può vedere nell'immagine sopra, un esempio della famosa NodeMCU ESP32 chiamata anche ESP32-DevkitC, demoboard collegabile direttamente tramite cavo USB al pc. Permette di avere a disposizione tutti i pin, inoltre monta il pulsante di reset, un pulsante e il led sulla GPIO2

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.

Figura 3

Figura 3: Schema a blocchi funzionale del chip ESP32

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.

Scarica subito una copia gratis

3 Commenti

  1. Avatar photo Stefano_Salsi 10 Marzo 2021

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend