Schede di sviluppo e microcontrollori
Come innovare più rapidamente
Wolfgang Lex, Responsabile Progetti Tecnologici e Realizzativi, Conrad Technology Center, Conrad Electronic SE
Spesso, quando si scorrono i commenti sui forum o le notizie sulla tecnologia, prima o poi si incontra qualcuno che pone la domanda "perché la caratteristica X manca?" È assolutamente chiaro che ciò non è dovuto alla mancanza di innovazione nell'industria dei semiconduttori. Le aziende del settore stanno costantemente miniaturizzando i dispositivi, migliorandone l’integrazione e introducendo più funzioni. È più probabile che gli ingegneri responsabili dei progetti semplicemente si siano trovati sotto pressione con i tempi di consegna, e non abbiano avuto modo di valutare soluzioni alternative in grado di differenziare la propria soluzione. Certo, quasi tutti i fornitori di semiconduttori offrono alcuni tipi di schede di valutazione insieme a ogni nuovo lancio di dispositivo, ma queste non sono sempre adatte per una rapida valutazione dei prodotti, a causa della mancanza di funzionalità, di opzioni di connettività o di fattori di forma.
I microcontrollori (MCU), con le loro interfacce seriali, gli ingressi e le uscite digitali e le periferiche del convertitore analogico, paiono essere la scelta ideale per la messa a punto di un prototipo rapido. Tuttavia, con l'aumento della complessità dei microcontrollori, anche i relativi strumenti di sviluppo, le librerie software e le schede di sviluppo sono diventati più complessi. Nonostante i migliori sforzi dei fornitori, le schede di sviluppo con funzione generica dotate di moduli MCU plug-in non risultano mai abbastanza flessibili per le interfacce di nuova generazione, come USB ed Ethernet, né per la gamma sempre più ampia di applicazioni in cui vengono utilizzate le MCU.
Il più delle volte, le MCU presentano anche difficoltà di inizializzazione verso uno stato utilizzabile. La funzionalità dell'intero dispositivo è spesso strettamente accoppiata alla frequenza dell'oscillatore. Anche con frammenti di codice provenienti da progetti precedenti e con una funzione di configurazione, una modifica della frequenza di clock avrà ripercussioni su ogni periferica, dai timer alle interfacce seriali, e ciò ben prima che la MCU esegua qualsiasi cosa che si avvicini a una sezione utile di codice dell'applicazione.
Fino a poco tempo fa, i computer su scheda singola (SBC) sembravano pressoché destinati agli annali della storia del computer, con MCU altamente integrate che offrivano tutto ciò di cui lo sviluppatore aveva bisogno all'interno di un unico package nero. Ma poi qualcosa è cambiato.
L'introduzione di Arduino è stata una mossa eccezionalmente innovativa, anche se la comunità degli ingegneri l’ha inizialmente etichettata come un giocattolo per hobbisti. Standardizzando le interfacce fisiche disponibili e fornendo un ambiente semplificato di sviluppo e di programmazione, corredato da librerie ben concepite che hanno seguito la regola 80:20 per quanto riguarda il supporto delle funzionalità, è diventato possibile creare rapidamente un sistema di prototipi. Gli sviluppatori potrebbero iniziare con un core AVR a 8 bit e, se le prestazioni o la memoria si rivelano essere troppo limitate, è sufficiente ricompilare l'applicazione per una scheda con core ARM a 32 bit. Non è necessario modificare il codice o tenere conto delle modifiche nell'architettura del processore o nella frequenza di clock.
Figura 1: Arduino Uno e Raspberry Pi sono probabilmente i due SBC più conosciuti del XXI secolo.
[191789 e 1668026 ]
Ora, se il più recente sensore MEMS offrisse funzionalità potenzialmente interessanti per un'applicazione, sarebbe possibile collegare la sua interfaccia seriale a un SBC e, entro mezz'ora, sarebbe possibile effettuare una valutazione iniziale.
L'ecosistema Arduino fornisce anche un tool di debug, tanto richiesto dagli sviluppatori embedded, e un'interfaccia seriale facile da usare. Esso è già collegato a un convertitore seriale-USB, che consente di connettere facilmente la scheda a un terminale su un PC di sviluppo. In ultima analisi, è possibile restituire una stringa "ciao, mondo" su una MCU con un codice che è simile agli esempi che si trovano all'interno dei libri di Kernighan e Ritchie. Con un piccolo ulteriore sforzo, è anche possibile visualizzare graficamente i dati seriali con altri software open source come Processing.
Un'ampia varietà di sensori e di moduli di interfaccia consente inoltre ai principianti di aggiungere rapidamente le funzionalità desiderate. Questi sensori digitali o moduli periferici sono di solito dotati di un'interfaccia I2C o SPI. Le librerie dei produttori semplificano notevolmente l'integrazione di questi moduli. L'IDE di Arduino agevola la gestione delle librerie in modo semplice ed estremamente efficiente, con la possibilità di ricercare la libreria più adatta su github.com, un geniale forum per sviluppatori e servizi online.
Qualora non fosse disponibile alcuna libreria, come avviene in presenza di hardware nuovo o molto particolare, gli sviluppatori possono anche crearne una propria. Pertanto, anziché scrivere valori esadecimali su registri indirizzati, la funzionalità può essere convertita in chiamate di funzioni significative, ad esempio 'configOutput' o 'readTemperature'. Per coloro che cercano di sviluppare librerie di questo tipo, un ottimo punto di partenza è il tutorial "Scrivere una libreria per Arduino" (https://www.arduino.cc/en/Hacking/LibraryTutorial).
I produttori di chip più lungimiranti e i fornitori di tool di terze parti forniscono soluzioni hardware e software complete per ambienti di sviluppo Arduino. Il software è fornito sotto forma di librerie, mentre l'hardware si trova in un formato "incapsulato" che si adatta alle schede con fattore di forma Arduino standardizzato. Un esempio è costituito dalla scheda Motor Shield. Essa comprende il robusto driver duale full bridge L298P per motori, insieme a due amplificatori operazionali per la misura della corrente. La libreria si avvale della tecnica di modulazione di larghezza di impulso, di librerie I/O digitali e di librerie di ingressi analogici per offrire il controllo della velocità e della direzione del motore e la misurazione della corrente.
Figura 2: La scheda Arduino Motor Shield semplifica la prototipazione dei sistemi di controllo dei motori DC e passo-passo
[1969887]
Con la diffusione di smartphone e app, molti sviluppatori sono alla ricerca di modi per sperimentare facilmente con le applicazioni per l’Internet delle Cose (IoT). Per tali applicazioni, Raspberry Pi costituisce una valida opzion. Il modello 3 B+ è essenzialmente un PC in formato carta di credito, con uscita video e audio, dotato di interfacce USB, Ethernet e LAN wireless. Esso utilizza il sistema operativo basato su Debian (OS) Raspbian e il sistema desktop leggero LXDE. Sono disponibili anche sistemi operativi alternativi, come Ubuntu MATE. Con la presenza di tutti i pacchetti Unix e Linux più comuni, è relativamente facile creare semplici applicazioni che comunicano tramite interfaccia TCP o UDP in quasi tutte le lingue più note. È anche presente una vasta comunità di sviluppatori disposti ad aiutare e a fornire esempi. Alcuni pacchetti, come Node-RED inclusi in Raspbian, consentono una semplice programmazione drag-and-drop delle applicazioni IoT, quasi senza ricorrere alla scrittura di codice.
Le funzionalità elettroniche del modulo Raspberry Pi possono anche essere facilmente estese. In primo luogo, la scheda stessa offre un'interfaccia standardizzata con due file di I/O analogici e digitali, oltre alle interfacce seriali SPI e I2C. Nella distribuzione del sistema operativo sono state incluse delle librerie per consentire l’interazione con i linguaggi di programmazione, come ad esempio Python. In secondo luogo, proprio come gli incapsulamenti per Arduino, i fornitori terzi possono sviluppare delle soluzioni HAT (Hardware Attached on Top) per semplificare l'integrazione dei dispositivi su silicio che devono essere controllati dal modulo Raspberry Pi. Un esempio è costituito dal modulo Sense Hat, il quale integra una gamma di sensori tra cui un giroscopio MEMS, un accelerometro, un magnetometro e un barometro, insieme a un sensore di temperatura e di umidità. Esso include anche una matrice 8 x 8 di LED per la rappresentazione di immagini semplici o di icone per situazioni in cui un display HDMI non è indicato.
Figura 3: Rasperry Pi Sense Hat incorpora un'ampia gamma di sensori, un joystick e una matrice di LED 8 x 8
[1396504 ]
Quando occorre valutare rapidamente i dispositivi su silicio, vale la pena dare un'occhiata alla gamma di schede di sviluppo 'Click' di MikroElektronika. Inizialmente concepita come un modo per estendere le funzionalità delle schede di sviluppo per i microcontrollori MikroE dell’azienda, l'interfaccia standardizzata è stata adottata da una serie di produttori di microcontrollori come Microchip Technology, NXP Semiconductor e Quectel.
L'interfaccia e il fattore di forma delle schede sono documentati nello standard mikroBUS. Quest’ultimo definisce pin specifici per l’alimentazione, le interfacce seriali, un segnale analogico e un segnale di interrupt digitale. Le schede Click Board coprono quasi tutte le esigenze applicative con soluzioni per qualsiasi esigenza, dalla codifica e decodifica MP3 ai sensori touch capacitivi e ai potenziometri digitali. È inoltre fornita l'integrazione con altri sistemi di prototipazione, con i moduli Click Shield per Arduino e Click Hat per Raspberry Pi. Se utilizzati in combinazione con i tool hardware e software di MikroElektronika, gli utenti hanno accesso alla vasta gamma di librerie software LIBSTOCK che semplificano l'avvio di nuovi progetti.
Figura 4: La scheda Click Board di MikroE semplifica la valutazione di sensori, come accelerometri o magnetometri, e le tecnologie wireless come il GPS.
[1221289 ]
Entrambi i moduli SBC qui menzionati vengono forniti come una scheda non protetta, con un rischio potenziale di danni per cortocircuito sul tipico banco di lavoro degli sviluppatori. Naturalmente, è disponibile una serie di alloggiamenti che proteggono l'hardware da tali eventi, oltre a fornire l’accesso ai connettori della scheda. Tuttavia, sono disponibili altre piattaforme che sono dotate di alloggi protettivi.
Il modulo M5Stack di Maker Factory è basato sul processore ESP32. La soluzione non solo include una custodia, ma integra anche un display TFT a colori da 320 x 240 pixel e un piccolo altoparlante per l'uscita audio. Il suo formato modulare offre estensioni che includono una batteria, una base di ricarica, un blocco GPS e un’area di prototipazione. Il modulo M5Stack può essere programmato utilizzando lo stesso software di sviluppo utilizzato dall'ecosistema Arduino, UIFlow, un ambiente di sviluppo visivo, oppure MicroPython. È inoltre dotato di un'interfaccia che consente una semplice connessione alla vasta gamma di moduli Grove, sviluppati da Seeed, che forniscono un’ampia varietà di moduli di ingresso e di uscita. Questi includono semplici interruttori e sensori, fino a display complessi, sensori di movimento e soluzioni wireless.