
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.
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.
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
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
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].
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).
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))); }
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).
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
>>>Leggi anche: Pilotare ESP32 con i Comandi AT
Links Web
- [1] www.espressif.com/en/products/hardware/development-boards
- [2] www.elektormagazine.com/180341-01
- [3] https://esp-idf.readthedocs.io/en/latest/
- [4] www.arduino.cc/en/Main/Software
- [5] https://github.com/espressif/arduino-esp32
- [6] www.elektormagazine.com/160454
- [7] www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
- [8] https://github.com/erikbartmann/ElektorESP32/
- [9] http://ai2.appinventor.mit.edu/
- [10] http://appinventor.mit.edu/extensions/
- [11] http://iot.appinventor.mit.edu/#/bluetoothle/bluetoothleintro
- [13] www.elektor.com/the-official-esp32-book
- [14] www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
- ESP32 Pico-Board www.elektor.com/esp32-pico-kit-v4
- The Official ESP32 Book https://www.elektor.com/the-official-esp32-book

Buongiorno a tutti ,
farete vedere in futuro un esempio di comunicazione di questa scheda utilizzando Wi-Fi e Bluetooth Low_energy con Arduino ?
Non ho capito bene se c’e’ la possibilita’ di accedere agli articoli di Elektor e come effettuare il login , ho provato ma non sono riuscito.
Grazie e buona giornata
Salve Maurizio, questo articolo è visibile interamente. Se invece ti riferisci all’accesso gratuito alle riviste Elektor riservato agli abbonati di EOS, trovi tutti i dettagli in questo articolo: https://it.emcelettronica.com/elektor-green-membership-card-in-regalo-per-i-nostri-abbonati
Salve.
La scheda, come ha visto, monta l’ESP32, lo stesso che prevede il nostro ESpertino.
Pertanto può visionare gli esempi riportati negli articoli riguardanti ESpertino o fare “un giro” sui repository dell’ESP32 (specialmente quelli di GitHub).
Saluti e grazie.
Buongiorno, per quanto concerne la funzionalità BLE di ESP32, le consiglio la libreria di nkolban (https://github.com/nkolban/ESP32_BLE_Arduino) utilizzabile con l’IDE Arduino (deve utilizzare Arduino Core for ESP32 di Espressif Systems perchè è costantemente aggiornato con fix e miglioramenti). Nel Corso Embedded di EOS Academy ho trattato l’uso del Bluetooth con esempi applicativi basati su questa libreria.
Mi sembra che i vantaggi siano tanti anche rispetto al suo fratello minore ESP8266 ma a quale segmento di persone si rivolge visto anche le funzionalità?
Sicuramente a tutti gli sviluppatori. Avere a disposizione una scheda di test e controllo è indubbiamente utile. Disporre di pulsanti e led, un LCD, un potenziometro, un display a 7 segmenti e una breadboard toglie allo sviluppatore l’incombenza dei cablaggi ad altri dispositivi di test. L’utilità è reale!!!
Il kit di sviluppo è molto intuitivo e flessibile. Incuriosisce il numero elevato di applicazioni a cui questa scheda si presta.
Board di sviluppo molto interessante, hai il vantaggio di mettere a disposizione dello sviluppatore numerose risorse hardware, mantenendo il tutto ordinato e compatto (niente più cavetti jumper tra pin header della board e breadboard esterna).
buongiorno, quanto cosa la scheda ESP32 Pico Discovery e dove si compra ? Grazie