Progettare con la MCU ESP32

La maggior parte dei nuovi progetti digitali necessita della presenza di connettività wireless per poter dar vita a dispositivi interconnessi e capaci di scambiare informazioni sia su brevi che su lunghe distanze. La filosofia dell’IoT (Internet of Things) è la rivoluzione del decennio che sta interessando qualsiasi ambiente o prodotto: consumer, industriale, retail, automotive, wearable e domotica. Con i chip della famiglia ESP32, Espressif ha dato una risposta efficace ed economica alle esigenze dei progettisti di qualsiasi settore, offrendo le potenzialità della connettività Wi-Fi e Bluetooth ad un costo contenuto senza trascurare aspetti come la potenza di calcolo, il consumo energetico e l’espandibilità delle funzionalità.

Introduzione

Sin dagli albori dell’avvento di Arduino, la fabbrica di semiconduttori Espressif si è distinta nel fornire chip e moduli per l’estensione delle funzionalità Wi-Fi all’interno della community open source dei makers Arduino. Ovviamente, parliamo del mitico ESP8266 che ognuno di noi ha usato almeno una volta (e se non lo avete fatto vi consiglio caldamente di leggere l’articolo "Primi test con ESP8266 la nuova Wi-Fi Low-Cost dell’Internet delle Cose"). Con il passare del tempo e la crescita esponenziale delle esigenze dei makers interessati sempre di più al mondo IoT, Espressif si è impegnata per realizzare l'evoluzione dell'ESP8266 in grado di rispondere alle esigenze dei makers: è così nata la famiglia ESP32.

Questi processori sono stati concepiti e progettati per essere versatili e robusti in modo da adattarsi anche ai contesti industriali e automotive. Particolare attenzione è stata posta al consumo energetico per poter garantire la massima flessibilità in applicazioni IoT alimentate a batteria. Questo obiettivo è stato raggiunto grazie anche ad algoritmi software di gestione dinamica della potenza di calcolo. La società Espressif ha risposto alle esigenze dei progettisti e dei makers con il rilascio di moduli specifici capaci di adattarsi alle specifiche esigenze grazie all’integrazione a bordo di circuiti come antenne per le comunicazioni, amplificatori di potenza e di ricezione a basso rumore, moduli di gestione dell’alimentazione, etc. Infine, punto di forza, le dimensioni molto ridotte sia dei chip che dei moduli.

Le famiglie tra cui scegliere

Quando si parla genericamente dei chip ESP32 in realtà si sta menzionando non un prodotto in particolare, ma una famiglia di microcontrollori (MCU) con architettura a 32bit, connettività Wi-Fi (2,4 GHz) e Bluetooth/BLE. Il contenuto tecnologico di questi chip può variare notevolmente a seconda del modello esatto, e di seguito andremo a vedere le principali caratteristiche della famiglia.
Il chip base ESP32 (Figura 1) è dotato di 48 pin e presenta le seguenti caratteristiche:

  • MCU principale single-core o dual-core Xtensa® LX6
    • 520 kB SRAM
    • 448 kB ROM
    • 16 kB RTC SRAM
  • Diverse modalità di risparmio energetico con modalità Sleep current inferiore a 5uA
  • Periferiche di comunicazione high-speed SPI, UART, I2S e I2C
  • GPIO con funzionalità touch e PWM
  • Canali analogici di ingresso e di uscita
  • Sensore di temperatura interno
  • Completamente certificato con antenna integrata e stack software

Figura 1: Scheda di sviluppo con ESP32 a bordo

La famiglia si arricchisce di chip più veloci (frequenze di clock fino a 240MHz) e un numero superiore di GPIO con i chip ESP32-S2 (single-core) e ESP32-S3 (dual core). All’interno di questi chip, anziché il processore Xtensa® LX6, troviamo il modello Xtensa® LX7. I processori delle famiglie S2 ed S3 presentano inoltre funzionalità di sicurezza aggiuntive quali: eFuse, crittografia flash, avvio sicuro, verifica della firma, algoritmi AES, SHA e RSA integrati. Infine, la serie ESP32-C3 raggruppa chip dotati di un processore 32bit single-core con architettura RISC-V e frequenze di funzionamento fino a 160 MHz. Con questa famiglia vengono garantite prestazioni elevate dei circuiti a RF.

Il giusto ruolo nell’architettura

La ricca disponibilità di interfacce di comunicazione rende gli oggetti ESP32 (sia se consideriamo i chip che i moduli) altamente flessibili in funzione dell’applicazione che intendiamo sviluppare, anche dal punto di vista del ruolo ricoperto all’interno dell’architettura del sistema. Infatti, è possibile utilizzarli sia come sistemi stand-alone completamente autonomi (hanno potenza di calcolo a sufficienza per la maggior parte delle applicazioni) sia come dispositivi slave per l’implementazione delle sole funzionalità di comunicazione. In questo secondo caso il vantaggio risiede nell’alleggerire l’unità principale di elaborazione dalla complessità di calcolo degli stack di comunicazione Wi-Fi o Bluetooth che sono sempre avari di risorse.

Le funzionalità extra

L’architettura interna dei chip ESP32, di qualsiasi sotto-famiglia, presenta al proprio interno un coprocessore ULP (Ultra Low Power) che rimane sempre acceso, anche nelle modalità di sonno profondo (deep-sleep) mentre solo nella modalità ibernazione viene disattivato. Questo elemento è molto utile quando si desidera progettare applicazioni a basso consumo, in cui la CPU principale sia spenta e venga accesa solo quando si verificano determinati eventi. Inoltre, gli eventi di accensione possono essere gestiti tra RTC, interrupt esterni, ingressi capacitivi e tanto altro. Per il corretto funzionamento, soprattutto nelle diverse modalità sleep, il coprocessore ULP è dotato di un RTC da 8MHz e di una memoria (da 8kB) che può essere utilizzata sia per memorizzare le istruzioni da eseguire sia per condividere dei dati con la CPU principale. Inoltre, attraverso il bus, il coprocessore può acquisire i dati dalle periferiche del processore principale (ADC, sensore effetto Hall, input capacitivi, etc.) ed eseguire funzioni quali: operazioni aritmetiche, memorizzazione di dati, gestione dell’esecuzione dell’applicativo, comunicazioni, acquisizione di segnali analogici e digitali. I moduli ESP32 forniscono 10 pin per la funzionalità di touchpads: ossia, pin sensibili alle variazioni di capacità che possono essere utilizzati per realizzare (attraverso le pads sul PCB) degli interruttori/pulsanti di tipo touch.

Questa è una tecnologia che oggigiorno troviamo largamente nell’elettronica di consumo in quanto facile da implementare e molto economica data l’assenza di componenti meccanici. L’acquisizione dei sensori tattili avviene direttamente da una periferica dedicata degli ESP32, che può essere interrogata dal software (andando a leggere i relativi registri) oppure può generare degli interrupt, molto utile quando si utilizza la CPU nelle diverse modalità di risparmio energetico. Nell’ultimo caso sarà il coprocessore ULP (Ultra Low Power processor) a gestire il rilevamento del tocco e la riattivazione del core principale. All’interno del chip degli ESP32 è presente anche un sensore ad effetto Hall, ossia un elemento realizzato nel silicio che genera un segnale in tensione quando è sottoposto ad un campo magnetico nella direzione perpendicolare a quella del flusso di corrente. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2013 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

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend