EOS

La scheda di sviluppo ESP32 Pico Discovery

In questo articolo vedremo come la sperimentazione elettronica sarà resa molto semplice. Il chip ESP32 è il fratello maggiore di ESP8266: dispone di più memoria SRAM, è caratterizzato da una maggiore velocità della CPU, prevede la comunicazione Bluetooth e offre un grande numero di pin per interfacciamenti esterni. E queste sono solo alcune delle sue caratteristiche. Le schede di sviluppo, come la ESP32 Pico Kit, facilitano la progettazione poiché sono già dotate di tutti gli elementi fondamentali come, ad esempio, l'antenna, il regolatore di tensione e un'interfaccia USB. L'uso di connettori consente di collegarlo facilmente a una breadboard in modo da creare un circuito funzionante e completamente operativo. Solitamente, alcuni componenti di uso comune, come pulsanti, LED e display non sono sempre a portata di mano. La scheda di sviluppo sopperisce proprio a queste mancanze.

Introduzione

Tra gli strumenti hardware per lo sviluppo di nuove applicazioni e funzioni IoT fanno ancora da padroni le piattaforme basate su Arduino e Raspberry Pi. Sul mercato si affacciano nuove soluzioni ma è molto difficile che esse diano reale fastidio alle citate colonne. Espressif Systems, una società con sede a Shanghai (in Cina) sta, comunque, ottenendo ottimi risultati proprio in questo mercato. L'azienda progetta microchip con il supporto integrato per protocolli di comunicazione, come il Wi-Fi e il Bluetooth, che li rendono ideali per la realizzazione di dispositivi IoT. Per un certo periodo l'azienda ha avuto un grosso successo con l'ESP8266, che permette una semplice implementazione delle funzionalità Wi-Fi. Anche le schede di sviluppo di vari produttori apparvero presto sul mercato, agevolando la diffusione del chip. La prima scheda, appena più grande di un francobollo, era l'ESP-01 che era dotata di un'antenna integrata e accesso alle porte di I/O tramite connettori. Questa scheda è ancora molto popolare. Dopo il grande successo dell' ESP8266, la Espressif introdusse il chip ESP32, con il Bluetooth, più SRAM, un clock più veloce, più porte di I/O, sensori tattili, convertitori A/D e D/A e altro. Per tale chip lavorano, adesso, molte aziende [1], che producono schede con servizi aggiuntivi come, ad esempio, l'USB-to-UART, il regolatore di tensione, il LED indicatore di alimentazione e dei mini pulsanti per il reset e varie opzioni di avvio. La figura 1 mostra la popolare scheda di sviluppo ESP32 Pico Board.

Figura 1: la Board ESP32 Pico V4

Figura 1: la Board ESP32 Pico V4

L'ESP32

Altre caratteristiche del chip ESP32 e informazioni più dettagliate sono disponibili nel riferimento tecnico [13].

  • CPU: dual-core a 32 bit con due core Xtensa LX6 con Architettura Harvard;
  • Clock: fino a 600 DMIPS;
  • Memoria interna ed esterna;
  • Wi-fi: 2,4 GHz HT40;
  • Bluetooth: BLE 4.2 (Bluetooth a bassa energia);
  • Periferiche: SPI, I2C, I2S, UART, CAN 2.0 e interfaccia Ethernet;
  • ADC: 12 bit (convertitore analogico/digitale);
  • Sensori: al tocco, di Hall e temperatura;
  • PWM: 1 canale hardware e 16 canali software;
  • IO: pin GPIO (ingressi e uscita generici).

Per soddisfare tutte le esigenze

Molti produttori di circuiti usano la prototipazione di grandi dimensioni per collegare le schede e connettere i componenti senza la necessità di effettuare saldature. La maggior parte delle schede di sviluppo sono dotate di connettori che semplificano i cablaggi. Per il principiante potrebbe essere complicato collegare tutte le periferiche e componenti per realizzare un sistema completo. Per molti progetti è probabile che si debbano utilizzare componenti discreti, come resistori, display a 7 segmenti, potenziometri e pulsanti. Questi sono probabilmente reperibili nel proprio laboratorio. L'idea di base è di costruire una scheda di sviluppo universale e semplice, contenente una scheda Pico ESP32 assieme ad altri componenti, in modo da coprire tutte le esigenze di base e che il montaggio sia molto semplice e veloce, utilizzando cavetti e ponticelli ed essere operativi in pochissimo tempo. La scheda di sviluppo universale si chiama ESP32 Pico Discovery ed è mostrata in figura 2.

Figura 2: la scheda ESP32 Pico Discovery

Figura 2: la scheda ESP32 Pico Discovery

La scheda include i seguenti componenti su un unico PCB:

  • uno zoccolo per Pico-Board ESP32;
  • due linee di connettori da PCB che consentono di accedere facilmente ai pin della scheda Pico ESP32;
  • 10 LED (a barra) con relativi resistori in serie e prese di connessione;
  • 5 micro pulsanti con resistenze pull-down e prese di connessione;
  • un potenziometro;
  • un display a LED a 7 segmenti con resistori in serie e prese di connessione;
  • un display LC con interfaccia I2C e pin di connessione;
  • linee di alimentazione a 3,3 V e GND;
  • una piccola breadboard, utile per aggiungere componenti e creare circuiti aggiuntivi.

Lo schema elettrico della scheda è mostrato in figura 3. Le connessioni tra il controller e le periferiche, a differenza della maggior parte delle altre schede di sviluppo, non sono cablate. L'utente effettua i collegamenti con i cavi di collegamento di varie lunghezze e tale grado di flessibilità dà possibilità di sviluppo illimitate. Naturalmente è possibile costruire da zero tale scheda, utilizzando una breadboard, ma il risultato finale sarebbe tutt'altro che pulito e semplice.

Figura 3: schema elettrico della scheda di sviluppo. I pin della scheda Pico ESP32 e delle periferiche come LED, pulsanti e display sono collegati a connettori femmina. Essi possono essere cablati liberamente

Figura 3: schema elettrico della scheda di sviluppo. I pin della scheda Pico ESP32 e delle periferiche come LED, pulsanti e display sono collegati a connettori femmina. Essi possono essere cablati liberamente

Hardware

Il fine principale della scheda è quello di risultare semplice e pulita. Il kit contiene il PCB e tutti i componenti necessari, inclusa una scheda Pico ESP32. Il layout è facile da usare e molta attenzione è stata prestata anche ai piccoli dettagli, come i bordi arrotondati sul pannello per rendere più sicuro l'utilizzo. La saldatura dei componenti risulta semplicissima e non dovrebbe rappresentare alcun problema nemmeno per il principiante. Il kit include un display LCD di 2x16 caratteri e dispone di un adattatore incorporato che consente di comunicare tramite l'interfaccia I2C anziché il più consueto metodo di trasferimento dati parallelo. L'adattatore si collega alla scheda Discovery utilizzando un connettore a 4 pin ad angolo retto (vedi figura 4). Il kit include anche alcuni distanziatori per il montaggio del display e, a causa delle tolleranze di produzione, questi potrebbero aver bisogno di un accorciamento per assicurare un allineamento corretto.

Figura 4: il display I2C (a sinistra) è costituito dall'unità di visualizzazione vera e propria e da una scheda di conversione I2C, che è collegata alla scheda Discovery tramite un connettore SIL a 4-pin

Figura 4: il display I2C (a sinistra) è costituito dall'unità di visualizzazione vera e propria e da una scheda di conversione I2C, che è collegata alla scheda Discovery tramite un connettore SIL a 4-pin

Un'applicazione di prova

Adesso si vedrà quanto sia facile usare la Discovery Board per creare una semplice applicazione. In figura 5 è mostrato un gioco per provare i tempi di reazione. Utilizza il display LCD, tre LED con i relativi resistori in serie e un micro pulsante con resistenza di pull-down. Sebbene ci siano 10 LED con resistori in serie già disponibili sulla scheda, si è deciso di aggiungere alcuni LED colorati sulla piccola breadboard. Questi contribuiscono a proporre una sequenza semaforica più realistica. L'applicazione consente di misurare i livelli di attenzione, fornendo una lettura diretta dei tempi di reazione sul display. Quest'ultimo necessita solo di due fili per trasferire i dati (SDA e SCL), riducendo il numero di cavi per le connessioni. I resistori di pull-up necessari per le due linee del bus I2C sono già inclusi nell'ESP32, quindi non sono necessari resistori aggiuntivi quando sul bus è utilizzato un solo slave. Il software per la programmazione dell'ESP32 si può scaricare dalla pagina web di Elektor del presente articolo [2].

Figura 5: l'applicazione del prova riflessi

Figura 5: l'applicazione del prova riflessi

Programmazione dell'ESP32 Pico board

Per programmare il Pico ESP32, sono disponibili numerosi ambienti alternativi e linguaggi di programmazione. Il framework di sviluppo ESP-IDF [3] (ESP-IDF) è l'ambiente di sviluppo ufficiale di Espressif. È uno strumento potente ed è alquanto complesso. I programmatori C++ non dovrebbero riscontrare, tuttavia, alcuna difficoltà. Per iniziare più velocemente è possibile scegliere un ambiente di sviluppo più comune. Se si ha familiarità con l'ambiente di sviluppo di Arduino [4] e piace il linguaggio C++, esiste un core Arduino ESP32 [5] per ESP32. Il processo di integrazione si effettua abbastanza rapidamente, in circa 15-20 minuti [5] [6]. Sebbene non tutte le funzioni di ESP32 siano ancora implementate, la maggior parte degli sketches sono scritti per ESP8266. Ecco alcuni esempi di funzioni che possono essere programmate, usando i comandi di Arduino:

  • la configurazione dei pin con pinMode;
  • l'accesso ai pin digitali con digitalRead e digitalWrite;
  • la gestione degli interrupt con attachInterrupt;
  • l'interfaccia seriale;
  • il bus I2C e SPI;
  • la comunicazione wireless tramite Wi-Fi e Bluetooth (quest'ultimo è ancora limitato).

In futuro saranno aggiunte ulteriori funzionalità. Dopo aver completato con successo l'integrazione ESP32 e Arduino core si deve accedere alla menù Strumenti -> Scheda per mostrare l'elenco delle piattaforme disponibili. In fondo all'elenco sono aggiunte alcune schede ESP32 e anche la scheda Pico ESP32 (vedi figura 6).

Figura 6: la scheda ESP32 Pico Kit appare nell'elenco

Figura 6: la scheda ESP32 Pico Kit appare nell'elenco

Normalmente, i sistemi operativi, come Windows 7 e successivi o Linux, non presentano problemi di driver e la scheda ESP32 viene riconosciuta correttamente. Questo dipende anche dal tipo di modulo USB-to-UART utilizzato. In ogni caso, la scheda Pico viene rilevata automaticamente quando il driver Silicon Lab CP210x da USB a UART Bridge [7] è installato.

Un esempio di sketch

In questo piccolo esempio è mostrato come uno dei convertitori digitale/analogico, in ESP32, può essere configurato per generare un segnale sinusoidale. Entrambi i DAC (DAC1-GPIO25, DAC2-GPIO26) hanno una risoluzione di 8 bit, che consente d'impostare la tensione di uscita su uno dei 256 livelli (da 0 a 255). L'intervallo di tensione è compreso tra 0 V e 3,3 V, fornendo quindi una risoluzione di 13 mV circa. Lo sketch del programma è mostrato nel listato 1. Nella riga 7 della funzione di configurazione, il pin 25 GPIO è configurato come uscita DAC, grazie alla parola chiave ANALOG. Ciò significa che la funzione dacWrite, nella riga 12 della funzione loop, userà questo come pin di output. Il ciclo for() utilizza l'intervallo di valori specificato e la funzione sin() per fornire i valori al DAC1. Il tutto viene poi trasmesso al pin GPIO. La forma d'onda risultante è mostrata in figura 7. Lo sketch viene automaticamente caricato sul modulo ESP32 quando si clicca sul pulsante di caricamento nell'IDE. Non è necessario premere alcun pulsante sulla scheda per avviare il caricamento del firmware. Lo sketch è disponibile su Github [8], dove sarà anche possibile scaricare l'ultima versione del software.

 

// Listato 1. Generazione di onda sinusoidale
#define DAC1 25
#define Steps 1
#define Offset 128
#define Amplitude 100
void setup() {
    pinMode(DAC1, ANALOG);
}
void loop() {
    for(int i = 0; i < 360; i = i + Steps)
        dacWrite(DAC1, int(Offset + Amplitude * sin(i * PI/180)));
}

 

Figura 7: l'onda sinusoidale prodotta dalla porta GPIO25

Figura 7: l'onda sinusoidale prodotta dalla porta GPIO25

Bluetooth? Nessun problema

ESP32 supporta i protocolli di comunicazione sia per Wi-Fi che per Bluetooth. Questa funzionalità gli consente di funzionare come dispositivo autonomo o come slave. Il modulo dispone sia del Bluetooth 4.2 Low Energy (BLE) che del Bluetooth classico. Tale possibilità è prevista dal core di Arduino ESP32 in modo che le applicazioni possano implementare la connettività Bluetooth. Le possibilità diventano ancora più interessanti con l'ausilio di ambienti di sviluppo come App Inventor [9] che permette di creare velocemente app Android senza molti sforzi. Il processo di trasferimento dati tra un dispositivo Android ed ESP32, tramite Bluetooth, è davvero molto semplice. Inventor richiederà, inizialmente, d'installare l'estensione BLE [10]. Ci sono anche molte applicazioni di esempi del BLE [11], che vale la pena studiare.

Per ottenere di più

E' disponibile il libro ufficiale sull'ESP32 [13]. E' un'introduzione al processore ESP32 e descrive l'hardware principale e le funzionalità software del chip. Il suo obiettivo principale è quello d'insegnare al lettore come utilizzare l'hardware e il software ESP32 grazie a progetti pratici, usando la popolare scheda di sviluppo dell'ESP32. Gli esempi riportati sono semplici e intermedi e i progetti si basano sul DevKitC di ESP32, utilizzando l'IDE di Arduino e il linguaggio di programmazione MicroPython (vedi figura 8).

Figura 8: il libro ufficiale dell'ESP32

Figura 8: il libro ufficiale dell'ESP32

Elenco componenti

Il seguente elenco mostra i componenti elettronici per il progetto. In figura 9 è riportata la silkscreen del PCB.

  • Resistenze
    • R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R16, R17, R18,  R19, R20,R21,R22,R23 = 330 ohm
    • R11, R12, R13, R14, R15 = 10 kohm
    • P1 = 10kohm potenziometro lineare
  • Semiconduttori
    • SA39-11SYKWA display sette segmenti
    • DC-10GWA barra grafica a LED
    • LCD alfanumerico, 2x16 caratteri con interfaccia I2C
  • Varie
    • K6, K7, K8, K9, K10, K14, K15, K16, K17 = connettori a 2 posti passo 0.1"
    • K12, K13 = connettori a 4 posti passo 0.1"
    • K11 = connettore a 8 posti passo 0.1"
    • K5 = connettore a 10 posti passo 0.1"
    • K1, K2, K3, K4 = connettori a 17 posti SIL, passo 0.1"
    • K18 = connettore a 8 posti (2x4) angolato a passo 0.1"
    • K19, K23 = connettori a 5 posti passo 0.1"
    • K21, K22 = connettori 10 posti SIL passo 0.1" oppure zoccolo a 20 posti per IC
    • S1, S2, S3, S4, S5 = pulsanti tattili 24V, 50mA, 6x6 mm
    • Breadboard 47x35 mm, 170 contacts
    • Supporto per LCD
Figura 9: la silkscreen del progetto

Figura 9: la silkscreen del progetto

>>>Leggi anche: Pilotare ESP32 con i Comandi AT

Links Web

 

Elektor Post

8 Commenti

  1. maurizio.mussino 26 febbraio 2019
  2. Roberta Fiorucci Roberta Fiorucci 26 febbraio 2019
    • Giovanni Di Maria Giovanni Di Maria 26 febbraio 2019
  3. Giordana Francesca Brescia Giordana Francesca Brescia 26 febbraio 2019
  4. Stefano Lovati Stefano Lovati 26 febbraio 2019

Scrivi un commento

EOS