Quando Apple ha lanciato l'iPhone, quasi dieci anni fa, ha innescato una rivoluzione nel campo della progettazione delle interfacce utente per i sistemi embedded. Anche se i touch screen erano già in uso da alcuni decenni, ad esempio nei terminali CAD o nei sofisticati controlli industriali, l'integrazione dei gesti nelle interfacce uomo-macchina aprì la strada a molte nuove possibilità di interazione. Oltre al tocco, gli utenti hanno imparato gesti semplici come "pitch" e "zoom", pizzicare e allargare, e presto hanno iniziato a chiedere la presenza di maggiori funzionalità anche negli altri dispositivi utilizzati.
Introduzione
Per i costruttori di una vasta gamma di sistemi queste richieste hanno determinato la necessità di aggiornare le interfacce utente dei prodotti. La tradizionale combinazione di pulsanti e semplici display LCD a sette segmenti o indicatori a LED può penalizzare un prodotto sul mercato, se confrontato con altri che offrono grafica animata e sono in grado di fornire all'utente suggerimenti e altro testo esplicativo. Poiché i costi dei pannelli touch sono diminuiti in risposta alla domanda del mercato, l'interfaccia basata sull'LCD può offrire al produttore dei vantaggi economici. Semplici modifiche del firmware o impostazioni di registro permettono di localizzare completamente un prodotto, eliminando la necessità di utilizzare lingue diverse per i pannelli su cui si trovano manopole e pulsanti fisici. Il risparmio sulle scorte di magazzino può portare a significativi miglioramenti in termini di efficienza aziendale. La scelta di un'interfaccia touch rispetto a una tradizionale basata su comandi meccanici e display più semplici offre indubbiamente dei vantaggi, ma le modifiche progettuali necessarie potrebbero avere importanti ripercussioni sull'architettura del sistema centrale.
Embedded Video Engine
Il passaggio da un semplice display LCD a sette segmenti e una matrice a pulsanti a un touch screen grafico rappresenta un cambiamento significativo della potenza di elaborazione necessaria e, virtualmente, implica massicci e costosi cambiamenti al software. Se la grafica deve essere gestita da un unico processore, probabilmente sarà necessario un processore a 32 bit per la scrittura su un framebuffer ad alta risoluzione. Senza complicati sistemi di paging e schemi di segmentazione, un sistema implementato su un microcontroller a 8 o a 16 bit non sarà in grado di scrivere sull'intero intervallo di indirizzi del framebuffer, né avrà abbastanza spazio per la grafica sofisticata. Anche se il prezzo di mercato dei processori grafici a 32 bit è sceso negli ultimi anni, i tempi e i costi necessari per modificare l'applicazione e quindi riqualificarla e testarla potrebbero rivelarsi proibitivi. Esiste tuttavia un modo per aggiungere una sofisticata interfaccia touch screen a un'applicazione esistente che possa funzionare su un microcontroller relativamente semplice e dalle risorse limitate, senza che siano richieste modifiche estese.
L'Embedded Video Engine di FTDI Chip rappresenta una famiglia di circuiti integrati progettati per gestire le interazioni con i touch screen LCD per conto di un microcontroller host. La tecnologia EVE sfrutta lo schema di architettura software MVC (Model-View-Controller) sviluppato per le prime interfacce grafiche utente (GUI) presso il centro di ricerca Xerox di Palo Alto. Lo schema MVC divide l'applicazione in tre parti interconnesse e gestisce i dati e le regole dell'applicazione centrale. La parte relativa alla visualizzazione presenta all'utente le informazioni ricavate dagli aggiornamenti forniti dal componente "modello". La parte "controller" interpreta gli input dell'utente e li converte in comandi che il modello può applicare alla propria logica interna.
La separazione delle funzioni nell'MVC rende possibile l'utilizzo della stessa logica centrale per gestire diversi tipi di interfaccia utente. Un'interfaccia utente esistente basata su una tastiera e un display a sette segmenti potrebbe utilizzare una coppia di pulsanti per consentire all'utente di scorrere le varie pagine di testo e le opzioni di comando. Una versione basata su un touch screen capacitivo, per scorrere le pagine potrebbe utilizzare gesti di scorrimento familiari agli utenti di tablet e smartphone. Anche se l'interazione con l'utente è diversa, la logica di base che deve essere elaborata dalla parte "modello" dell'applicazione rimane la stessa – e risponde ai comandi di pagina avanti e pagina indietro. Utilizzando una semplice interfaccia seriale SPI o I2C, EVE può trasmettere i comandi necessari alla logica del modello in esecuzione all'interno del microcontroller host. Il risultato è che l'applicazione principale può sostanzialmente continuare a funzionare con la nuova interfaccia subendo modifiche minime. La maggior parte dei cambiamenti necessari per gestire la GUI e il comportamento touch è invece integrata nel controller EVE. La tecnologia EVE non si limita ai touch screen capacitivi. I dispositivi FT800 (figura 1) supportano i touch screen resistivi che vengono spesso utilizzati in ambienti difficili dove è importante che il sistema abbia un costo contenuto. L'FT800 fornisce un collegamento diretto per gli ingressi x e y dal controller del touch screen, convertendo l'input di tocco in comandi che il microcontroller host è in grado di comprendere.
I dispositivi FT801 supportano l'interfaccia verso un controller touch capacitivo esterno che è tipicamente integrato nel pannello LCD. Per garantire un'elevata compatibilità con il codice dell'interfaccia utente esistente, l'FT801 offre una modalità single-touch che imita la pressione dei pulsanti tradizionali. La modalità estesa supporta il funzionamento multitouch con un massimo di cinque punti di contatto, consentendo l'uso dei gesti pinch e zoom e di altri più complessi. Ad esempio, in un sistema che presenta le immagini all'utente, i gesti pitch e zoom possono essere utilizzati per guardare in dettaglio le diverse parti di una foto (figura 2 e 3).
Per definire e controllare la GUI, l'applicazione nel microcontroller host esegue alcune delle funzioni di visualizzazione dello schema progettuale MVC. In genere l'applicazione richiamerà gli oggetti caricati nella memoria EVE utilizzando elenchi di visualizzazione che consentono all'applicazione di richiamare diverse bitmap, e di riprodurle sullo schermo o disegnare grafici e altre immagini vettoriali utilizzando i comandi per tracciare linee e altre primitive.
La tecnica dell'elenco di visualizzazione riduce al minimo l'utilizzo della memoria del microcontroller host, in quanto ogni singolo comando di disegno ha una lunghezza di soli 4 byte. La grafica stessa è costruita con l'ausilio di un editor di schermo in ambiente Windows. Utilizzando tecniche di drag-and-drop, l'editor di schermo costruisce gli elenchi di visualizzazione che saranno manipolati in tempo reale dal microcontroller per creare la GUI. Una libreria di emulatori rende facile la dimostrazione della GUI e la mappatura della grafica da altri strumenti all'ambiente EVE. Un elemento coprocessore in EVE consente la manipolazione di elementi grafici più avanzati, come ad esempio i widget e i tag necessari per il funzionamento multitouch. I widget semplificano la combinazione di bitmap con grafica animata senza richiedere al microcontroller host di eseguire direttamente le operazioni grafiche. Ad esempio, un comando di clock incorporato sovrapporrà una mano in movimento a una bitmap di sfondo. Una funzione simile fornisce un indicatore di velocità facile da utilizzare o un widget per la lancetta del carburante. Prendendo in considerazione i problemi che i produttori affrontano quando passano da interfacce utente tradizionali a una soluzione touch, la famiglia di circuiti integrati EVE di FTDI Chip fornisce un percorso di migrazione molto più agevole rispetto all'approccio tradizionale che, nella maggior parte dei casi, richiederebbe un importante aggiornamento del microcontroller centrale del sistema. Sfruttando lo schema di progettazione MVC, i comandi e i dati inoltrati tramite una connessione seriale consentono anche ai microcontroller di fascia bassa di gestire le GUI caratterizzate da una grafica fluida e animata e di elaborare i gesti tattili.
A cura di Mark Patrick, Mouser Electronics
FT800 appare all’host MCU come una memoria mappata con bus I2C o SPI, attraverso questi due bus ovviamente l’host comunica con il dispositivo. Offre una combinazione di visualizzazione, touch e audio, parametri importanti per facilitare lo sviluppo di interfacce GUI che stanno acquisendo notevole rilevanza nel design di un prodotto. Dal data sheet si nota il basso consumo dell’ordine dei uA nella modalità sleep.