Scheda di valutazione MAKERFACTORY ESP32
A cura di : Christian Troesch, Head of Product Development, Conrad Technology Center, Conrad Electronic SE
L'analisi iniziale di un nuovo progetto di sviluppo di un sistema elettronico embedded basato sull’utilizzo di microcontrollori può essere un’attività decisamente complessa. È spesso necessario prendere in considerazione numerosi aspetti tra loro correlati e mediare tra obiettivi di progetto divergenti. Probabilmente, uno degli aspetti più importanti da considerare in un qualsiasi progetto che prevede l’alimentazione a batteria sarà quello di limitare il consumo energetico, per prolungare la durata operativa della batteria stessa. In genere, un microcontrollore consuma la maggior parte dell'energia quando lavora utilizzando un elevato livello di risorse. Quindi, se si riescono a ridurre al minimo i periodi di tempi nei quali sono richieste elevate risorse di calcolo, allora la durata della batteria può essere allungata. Lo sviluppatore può quindi trovarsi a considerare l'utilizzo di un microcontrollore molto veloce, ad esempio un dispositivo a 32 bit, anche se le necessità di calcolo effettivamente richieste potrebbero essere facilmente gestite da un dispositivo a 8 bit. Il bilanciamento tra i requisiti generali dell'applicazione rispetto alle specifiche di marketing deve essere esaminato attentamente. Altre considerazioni includono lo spazio disponibile nell'involucro dove andrà inserito il sistema elettronico, se è richiesta oppure no una qualche forma di comunicazione wireless e se vi è la necessità di utilizzare interfacce periferiche per collegare sensori e display. Ognuno di questi fattori ha il proprio insieme di requisiti da rispettare, che richiedono un'attenzione particolare durante il progetto. Ad esempio, la comunicazione senza fili, un requisito essenziale per la maggior parte dei prodotti di oggi, è soggetta al rispetto di regolamentazioni dettagliate e richiede competenze specializzate, che spesso portano gli sviluppatori embedded ad adottare un approccio modulare.
I produttori di circuiti integrati sono stati rapidi nel rispondere alle pressioni che gli sviluppatori embedded devono affrontare. Molti progetti embedded utilizzano gli stessi blocchi funzionali di base, tra cui un microcontrollore, una radio a 2,4 GHz, un orologio in tempo reale, un convertitore analogico/digitale e digitale/analogico, oltre a una o più interfacce seriali. Il raggruppamento della maggior quantità di blocchi funzionali hardware all’interno di un unico circuito integrato SoC (System-on-Chip) consente di ottenere un dispositivo elettronico estremamente compatto. L'aggiunta di un ricetrasmettitore wireless, di un'antenna e dei relativi componenti ausiliari permette di creare un modulo SoC estremamente ottimizzato che si adatta a una gamma di applicazioni estremamente ampia.
Figura 1 - Modulo SoC Espressif ESP-WROOM-32 (fonte Conrad)
Il dispositivo Espressif ESP-WROOM-32 – vedi Figura 1 – è un buon esempio di un potente modulo SoC basato sui processori della famiglia ESP32. In un formato compatto di dimensioni di appena 25,5 mm x 18 mm, il modulo contiene un singolo circuito integrato SoC ESP32, che ospita al suo interno un microcontrollore a con due core, la memoria Flash, un’antenna su circuito stampato e una radio a standard Bluetooth LE (BLE), Bluetooth e WiFi omologata per l’utilizzo in tutto il mondo. I nuclei di elaborazione della CPU possono essere controllati singolarmente regolando la loro frequenza di clock da 80 MHz a 240 MHz a seconda delle particolari esigenze applicative. È possibile utilizzare un coprocessore a basso consumo per monitorare le linee di I/O e altri livelli di soglia dei segnali provenienti dalle periferiche, per generare interruzioni mentre i due nuclei di elaborazione principali del microprocessore Xtensa a 32-bit LX6 rimangono in modalità sleep a basso consumo. Il modulo ESP32 contiene una notevole gamma di periferiche, tra cui sensori Hall, ingressi touch capacitivi, un’interfaccia per schede SD e unità seriali che supportano i più disparati protocolli di comunicazione, tra cui I2C, SPI, I2S, UART, Ethernet e CAN (Figura 2). Altra caratteristica degna di nota è la presenza del sistema operativo precaricato FreeRTOS, che aiuta a gestire facilmente il modulo nel suo complesso e le applicazioni a cui è destinato.
Figura 2 – Blocchi funzionali del modulo ESP32 (fonte Espressif)
L'interfaccia wireless supporta velocità di trasmissione dati fino a 150 Mbps e il trasmettitore è in grado di fornire un'uscita di 20 dBm, rendendo il modulo adatto all'uso in una miriade di applicazioni diverse. È inclusa anche una funzione di aggiornamento sicuro del firmware via radio. Inoltre, la modalità a bassissimo consumo (deep sleep) prevista nel modulo ESP32 riduce l’assorbimento di corrente fino a soli 5 µA, dando la possibilità di affrontare con successo anche tutta la vasta gamma di applicazioni che prevedono l’alimentazione batteria in ambito Internet of Things (IoT) e per la creazione di dispositivi indossabili.
Non sorprende, quindi, che il modulo ESP-WROOM-32 sia stato così spesso stato scelto sia da progettisti e professionisti dell’elettronica, sia da molti maker e appassionati. Naturalmente, anche se il modulo offre una piattaforma eccellente per risparmiare tempo nello sviluppo di un soluzione ad elevata efficienza energetica, non rappresenta la soluzione finale. La connessione di sensori, display e di ogni altra periferica da collegare rappresenta il passo successivo del processo di sviluppo. È per questo motivo che la maggior parte dei progettisti adotterà in genere un approccio basato sul breadboarding durante lo sviluppo di un prototipo, utilizzando una o più schede di breakout, con fili di collegamento che semplificano la connessione ai dispositivi esterni necessari. Tuttavia, l’intento iniziale di realizzare connessioni ordinate si trasforma spesso in un risultato finale composto da un labirinto di collegamenti ingarbugliati, di cui la figura 3 è una realistica rappresentazione. L'utilizzo di schede breadboard per la prototipazione rapida è in realtà una strada molto comoda da percorrere. Permette di accedere facilmente ai circuiti per controllare le connessioni e di inserire sonde di misura per multimetri e oscilloscopi. Però, man mano che il numero di componenti collegati cresce, le difficoltà aumentano. Le connessioni elettriche non sono particolarmente stabili ed ogni minimo movimento può introdurre disturbi sulle linee di I/O, che possono influenzare il funzionamento dei circuiti o dar luogo a comportamenti aleatori nel sistema. I collegamenti delle interfacce seriali sono particolarmente soggetti a questo fenomeno e possono causare il blocco del microcontrollore. Molte interfacce ad alta velocità, inoltre, semplicemente non sono adatte alla prototipazione con queste modalità, in quanto i fili di collegamento introducono tipicamente forti disadattamenti di impedenza che facilitano l’insorgere di interferenze elettromagnetiche nei circuiti.
Figura 3 – L’utilizzo di una breadboard per il collegamento di sensori e periferiche si trasforma spesso in un labirinto di fili ingarbugliati (fonte Conrad)
Una scheda di valutazione open-source che è stata presentata recentemente promette di rendere tali difficoltà di prototipazione un ricordo del passato. La scheda di valutazione MakerFactory ESP32 integra un modulo ESP-WROOM-32 e diversi tipi di sensori, controlli e LED in un'unica scheda. La scelta delle linee di I/O e dei sensori attivi è controllata da una combinazione di interruttori DIP montati sulla scheda, che creano connessioni certe e affidabili da e verso il microcontrollore.
Figura 4 - La scheda di valutazione MakerFactory ESP32 di Conrad (fonte Conrad)
Oltre ai moduli ESP32, la scheda ospita un accelerometro, giroscopio e magnetometro MEMS MPU9250 di InvenSense, un sensore di temperatura con interfaccia a singolo filo DS1820 Maxim (Dallas Semiconductor), un amplificatore audio Maxim MAX98357 e un microfono digitale a basso rumore InvenSense 43432. Due potenziometri, cinque interruttori a pulsante disposti a diamante, uno spazio libero per due display - uno OLED e l'altro TFT LCD - e otto connettori per moduli aggiuntivi Grove completano la scheda di valutazione, che non richiede l’utilizzo di cablaggi aggiuntivi. La scheda può essere programmata tramite il celeberrimo ambiente Arduino IDE, per il quale sono disponibili pacchetti completi di supporto della scheda e una ricca serie di informazioni creata dalla comunità open-source ESP32. La scheda ha un proprio spazio Wiki (https://docs.makerfactory.io/) contenente tutto ciò che serve per iniziare rapidamente ad utilizzare la scheda, oltre a numerosi esempi di codice che permettono di sperimentare le funzionalità offerte da ogni dispositivo presente nella scheda di valutazione.
Figura 5 - Il sensore MEMS MPU9250 di InvenSense (fonte Conrad)
Ogni componente discreto dispone di una propria area sulla scheda, rendendo semplice la configurazione e la prototipazione. La Figura 5 mostra il sensore MEMS combinato MPU9250 con funzioni di accelerometro, giroscopio e magnetometro e la circuiteria associata. Il sensore comunica tramite il bus I2C con il modulo ESP32. Nella Wiki è presente un'applicazione dimostrativa, le cui routine di configurazione iniziale sono visibili nella figura 6, insieme alla conferma del caricamento sulla scheda visibile nella porzione inferiore della schermata. L’applicazione dimostrativa invia i dati letti dal sensore al monitor seriale dell'IDE (Figura 7).
Figura 6 - L'IDE di Arduino mostra il caricamento sulla scheda MakerFactory
Con un minimo sforzo si è ottenuto lo streaming dei dati dal sensore MEMS, senza neppure un cavo di collegamento a vista! Mentre l'applicazione dimostrativa fornisce solo i dati grezzi del valore di campo magnetico misurato dal sensore, introducendo alcune semplici modifiche al codice è facile creare, ad esempio, un'applicazione completa con la funzionalità di una bussola digitale. Poiché il sensore MPU9250 espone i risultati di misura direttamente in microTesla, è possibile applicare una semplice formula basata sull’arcotangente per convertire i dati di campo magnetico relativi ai due assi ortogonali in una misura angolare che simula quella rilevabile da una bussola.
Figura 7 – L’applicazione dimostrativa in esecuzione visualizza i dati misurati dal sensore MEMS
La zona sulla scheda destinata al display OLED può essere equipaggiata con un display OLED da 0,96 pollici con risoluzione di 128x64 pixel basato sul circuito integrato di pilotaggio SSD1306, oppure con un display con interfaccia SPI. Tutte le informazioni su come installare i driver sono pubblicate sulla MakerFactory Wiki.
La presenza di tutti i componenti fondamentali di un progetto elettronico embedded in un'unica scheda, accessibile e facilmente configurabile, semplifica notevolmente il processo di prototipazione e debug. Una volta che un progetto è stato convalidato sulla scheda MakerFactory, lo schema elettrico definitivo del prototipo può essere preparato rapidamente e trasformato in un circuito stampato personalizzato. Utilizzando questo approccio, gli errori e gli imprevisti legati l’utilizzo di una scheda breadboard possono essere ridotti al minimo, aiutando lo sviluppatore ad affinare il progetto e completare tutto lo sviluppo e il debug del software entro i tempi previsti.