Valutazione di diverse schede di sviluppo e prototipazione per applicazioni indossabili

Di Clive "Max" Maxfield

Contributo di Editori nordamericani di DigiKey

Il concetto open-source di Arduino si è rivelato un grande successo nell'ambiente di hobbisti e maker. È stato anche abbracciato da progettisti professionisti per lo sviluppo iniziale e la prototipazione e, più recentemente, per i progetti veri e propri. Con l'emergere di applicazioni come i dispositivi indossabili e il monitoraggio della salute, queste tipologie di utenti richiedono prestazioni più elevate e maggiore funzionalità in fattori di forma sempre più piccoli.

Questo articolo illustra brevemente come si sono evolute le schede Arduino per soddisfare le esigenze dei produttori e dei professionisti in termini di alte prestazioni e funzionalità in applicazioni a bassa potenza e con vincoli di spazio. Presenta poi e spiega come usare una recente aggiunta alla famiglia Arduino, Seeeduino XIAO di Seeed Technology Co..

Come si è evoluto Arduino per soddisfare le esigenze di progettazione indossabile

Molti hobbisti e progettisti sono interessati a sviluppare prodotti fisicamente piccoli per l'impiego in ambienti con limitazioni di spazio, compresi i prodotti indossabili. Si tratta di sistemi elettronici tipicamente intelligenti che spesso si basano su un microcontroller combinato ad altri dispositivi di rilevamento e/o visualizzazione. In alcuni casi, quando sono indossati sembrano gioielli e monili ad alta tecnologia. In altri casi, li si porta vicino e/o sulla superficie cutanea, dove possono rilevare, analizzare e trasmettere dati corporei come la temperatura, la frequenza cardiaca e l'ossigenazione del sangue, oltre ai dati ambientali. A volte, forniscono un immediato riscontro biologico a chi li indossa.

Per tali progetti, molti hobbisti e produttori utilizzano schede di sviluppo per microcomputer Arduino. Altrettanto fa anche un numero crescente di ingegneri professionisti che si serve di queste schede di sviluppo come piattaforme di valutazione e prototipazione per accelerare e ridurre i costi associati alla valutazione di CI, sensori e periferiche.

Questi utenti tipicamente iniziano con A000073 Arduino Uno Rev3, denominato "la scheda da cui iniziano tutti" (Figura 1). Questa scheda si basa sul microcontroller ATMEGA328P-AUR di Atmel (ora Microchip Technology). Il processore a 5 V offre 14 ingressi/uscite digitali (I/O), sei dei quali possono fornire la modulazione della larghezza di impulso (PWM), insieme a sei pin di ingresso analogici, che all'occorrenza possono essere usati anche come I/O digitali. Supporta anche due interrupt esterni sui pin I/O digitali 2 e 3, insieme a un'interfaccia UART, SPI e I2C.

Immagine della scheda di sviluppo Arduino Uno Rev3Figura 1: La scheda di sviluppo Arduino Uno Rev3 è basata sul microcontroller ATmega328P a 8 bit da 16 MHz. L'ingombro delle basette, con 14 pin di I/O digitali, 6 pin di ingresso analogico e vari pin di alimentazione, terra e riferimento, è alla base di un enorme ecosistema di schede figlie chiamate shield. (Immagine per gentile concessione di Arduino.cc)

Oltre alla limitazione di un percorso dati a 8 bit e di un clock a 16 MHz, oltre al fatto che Arduino Uno offre solo 32 kB di memoria flash e 2 kB di SRAM, questa scheda di sviluppo è troppo grande per molte applicazioni, dato che misura 68,6 x 53,4 mm (36,63 cm2).

Un modo per ridurre l'ingombro fisico della scheda di sviluppo del microprocessore consiste nella migrazione a una scheda ABX00028 Arduino Nano Every, che si basa sul microcontroller ATMEGA4809-MUR di Atmel (Figura 2). Questa ha il 50% di memoria di programma in più rispetto ad Arduino Uno (48 kB) e 3 volte la quantità di SRAM (6 kB). Come Arduino Uno, Arduino Nano Every si basa su un processore a 5 V che offre 14 I/O digitali insieme a sei pin di ingresso analogici, che all'occorrenza possono essere usati anche come I/O digitali. Inoltre, come Uno, Nano Every offre un'interfaccia UART, SPI e I2C. Tuttavia, a differenza di Uno che supporta solo due interrupt esterni, tutti i pin digitali di Nano Every possono essere utilizzati come interrupt esterni.

Immagine di Arduino Nano EveryFigura 2: Arduino Nano Every è un'evoluzione della tradizionale scheda Arduino Nano ma è dotata di un processore molto più potente, ATMEGA4809, con il 50% di memoria di programma in più rispetto ad Arduino Uno e molto più spazio per le variabili in quanto a 6 kB, la SRAM è 3 volte più grande. (Immagine per gentile concessione di Arduino.cc)

Sebbene Arduino Nano Every sia sempre limitata da un bus dati a 8 bit, ha un clock più veloce (20 MHz) e più memoria (48 kB di Flash e 6 kB di SRAM). Ancora più importante per progetti di dimensioni limitate, Arduino Nano Every è di soli 45 x 18 mm (8,1 cm2).

Un'altra alternativa diffusa che può essere programmata utilizzando l'ambiente di sviluppo integrato (IDE) di Arduino è DEV-13736 Teensy 3.2 di SparkFun Electronics (Figura 3). Quando si tratta di I/O, questa scheda di sviluppo a 3,3 V alza davvero la posta in gioco, con 34 pin digitali, 12 dei quali supportano il PWM, insieme a 21 ingressi analogici ad alta risoluzione.

Immagine di Teensy 3.2Figura 3: Teensy 3.2 è una piccola scheda di sviluppo compatibile con basetta sperimentale progettata da Paul Stoffregen su PRJC.com. Questa scheda di sviluppo di facile utilizzo offre una piattaforma Arm® Cortex®-M4 a 32 bit a basso costo ideale per hobbisti, studenti e ingegneri professionisti. (Immagine per gentile concessione di PRJC.com)

Teensy 3.2 è alimentata da un microcontroller MK20DX256VMC7R Kinetis K20 di NXP. L'MCU K20 è dotato di un core del processore Arm Cortex-M4 a 32 bit funzionante a 72 MHz con 256 kB di memoria flash e 64 kB di SRAM. Di particolare interesse per i progetti di dimensioni ridotte è il fatto che, con una dimensione di 35 x 18 mm (6,3 cm2), Teensy 3.2 è pari a circa tre quarti una scheda Arduino Nano Every.

Ed ecco Seeeduino XIAO

Anche se Teensy 3.2 è di soli 6,3 cm2, è sempre troppo grande per molte applicazioni. La soluzione per chi cerca piattaforme ancora più piccole e potenti si trova all'interno del vasto ecosistema di Arduino. Un'opzione relativamente nuova è Seeeduino XIAO di Seeed Technology (Figura 4), di soli 23,5 x 17,5 mm (4,11 cm2) pari alle dimensioni di un normale francobollo. Anche i progettisti di Seeeduino XIAO si sono concentrati sul contenimento dei costi.

Immagine di Seeeduino XIAO, compatibile con basetta sperimentale Figura 4: Attualmente la più piccola scheda di sviluppo per microcontroller compatibili Arduino della famiglia Seeeduino, Seeeduino XIAO è compatibile con basetta sperimentale e offre un potente processore Arm Cortex-M0+ a 32 bit da 48 MHz. (Immagine per gentile concessione di Seeed Studio)

XIAO è alimentata da un microcontroller ATSAMD21G18A-MUT SAMD21G18 di Atmel. Questo microcontroller è dotato di un core di processore Arm Cortex-M0+ a 32 bit funzionante a 48 MHz e supportato da 256 kB di memoria flash e 64 kB di SRAM.

Sebbene XIAO fornisca solo 11 pin di dati, ognuno dei pin può essere usato come I/O digitale o come ingresso analogico (Figura 5). Dieci dei pin supportano PWM e uno è dotato di un convertitore digitale/analogico (DAC) per una vera capacità di uscita analogica. Inoltre, XIAO supporta un'interfaccia UART, SPI e I2C.

Schema con undici pin di dati che fungono da I/O digitale (da D0 a D10) o ingressi analogici (da A0 a A10)Figura 5: Tutti gli undici pin dati possono fungere da I/O digitali (da D0 a D10) o ingressi analogici (da A0 a A10). Inoltre, A0 può fungere da vera e propria uscita analogica, D4 e D5 da interfaccia I2C, D6 e D7 da interfaccia UART, e D8, D9 e D10 da interfaccia SPI. (Immagine per gentile concessione di Seeed Studio)

Distribuzione e utilizzo di Seeeduino XIAO

In generale, lavorare con Seeeduino XIAO è altrettanto facile come con qualsiasi altra scheda di sviluppo Arduino o compatibile con Arduino, ma ci sono alcuni consigli che vale la pena notare.

Un buon punto di partenza è assicurarsi di lavorare con la versione più recente dell'IDE Arduino. Visitare la pagina Wiki Seeeduino XIAO per le istruzioni su come potenziare l'IDE Arduino con l'apposito manager.

Molti progetti Seeeduino XIAO - indossabili e non - comporteranno l'uso di NeoPixel tricolore basati su WS2818 di Adafruit, come la striscia 2970 con 144 NeoPixel al metro (Figura 6).

Immagine di Seeeduino XIAO usata per controllare individualmente centinaia di NeoPixel tricoloreFigura 6: Un singolo pin su Seeeduino XIAO può essere usato per controllare individualmente centinaia di NeoPixel tricolore, come quelli che si trovano sulla striscia nera di 144 NeoPixel al metro di Adafruit. (Immagine per gentile concessione di Adafruit.com)

Un potenziale problema è che, mentre le tradizionali schede di sviluppo Arduino possono comunque funzionare con le vecchie versioni della libreria Adafruit NeoPixel, Seeeduino XIAO richiede la versione più recente.

Se viene installata una vecchia libreria NeoPixel, possono apparire messaggi di errore strani e fuorvianti. La soluzione è rimuovere dal sistema tutte le vecchie versioni della libreria e seguire le istruzioni di Adafruit NeoPixel Überguide per installare la versione più recente.

Un possibile problema è che i NeoPixel sono sensibili alla sovraelongazione e alla sottoelongazione dei pin di dati, per via della velocità dei segnali provenienti dai moderni microcontroller. La soluzione è di aggiungere un resistore in serie il più vicino possibile al primo elemento della catena di NeoPixel (Figura 7). Un esempio adatto sarebbe un resistore con tolleranza del 5%, 1/4 W, 390 Ω, come il resistore a pellicola di carbonio CF14JT390R di Stackpole Electronics Inc..

Schema del resistore in serie posizionato il più vicino possibile al primo NeoPixelFigura 7: Un resistore in serie posizionato il più vicino possibile al primo NeoPixel della catena elimina la sovraelongazione e la sottoelongazione ai margini del flusso di dati dell'MCU. (Immagine per gentile concessione di Max Maxfield)

Un altro problema legato ai NeoPixel è che le uscite digitali a 3,3 V di Seeeduino XIAO potrebbero non essere sufficienti per pilotare gli ingressi dati a 5 V di NeoPixel. Una soluzione sarebbe quella di utilizzare una scheda di breakout BOB-12009 con convertitore di livello logico di SparkFun (Figura 8).

Immagine del convertitore di livello logico BOB-12009 di SparkFunFigura 8: Il convertitore di livello logico BOB-12009 di SparkFun fornisce quattro canali bidirezionali utilizzabili per convertire i segnali tra i domini a 3,3 e 5 V. (Immagine per gentile concessione di Adafruit.com)

Tutto l'occorrente per un'applicazione NeoPixel è un singolo canale unidirezionale. Il problema di BOB-12009 è che fornisce quattro canali bidirezionali, ed è pertanto una soluzione relativamente grande per un progetto con vincoli di spazio e una soluzione relativamente costosa per un progetto sensibile ai costi. Una semplice alternativa è quella di utilizzare un singolo diodo 1N4001 di Comchip Technology (Figura 9).

Schema di un NeoPixel "sacrificale" può essere costretto a fungere da convertitore del livello di tensioneFigura 9: Utilizzando un diodo 1N4001 per fornire una caduta di tensione di 0,7 V, un NeoPixel "sacrificale" può essere costretto a fungere da convertitore del livello di tensione. (Immagine per gentile concessione di Max Maxfield)

I NeoPixel considerano un 1 logico come qualunque cosa sopra 0,7 * VCC. In questo caso, il NeoPixel considererà un 1 logico come 0,7 * 5 = 3,5 V.

L'alimentazione di un pixel "sacrificale" tramite un diodo IN4001, con una caduta di tensione diretta di 0,7 V, risulta in un'alimentazione da VCC di 5 - 0,7 = 4,3 V. In questo senso, un 1 logico sarà considerato come 0,7 * 4,3 = 3,01 V. A sua volta, questo significa che un segnale a 3,3 V da Seeeduino XIAO è tranquillamente capace di pilotare il pixel sacrificale. Nel frattempo, l'uscita a 4,3 V del pixel sacrificale è più che sufficiente per pilotare l'ingresso dati al successivo NeoPixel nella catena.

Conclusione

Le prime schede di sviluppo Arduino, come Arduino Uno a 8 bit e 16 MHz, erano fisicamente grandi e limitate in termini di capacità e prestazioni. Oggi, l'ecosistema Arduino comprende un'enorme varietà di schede in una vasta gamma di forme, dimensioni e capacità.

Per progetti di dimensioni ridotte, come quelli indossabili, Seeeduino XIAO offre un core di processore Arm Cortex-M0+ a 32 bit funzionante a 48 MHz con 256 kB di memoria flash e 64 kB di SRAM. Il tutto è presentato su una piccola piattaforma compatibile con basetta sperimentale di soli 4,11 cm2 con ampio supporto per l'intero ecosistema.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield ha conseguito la laurea in ingegneria di controllo nel 1980 presso l'Università di Sheffield Hallam, Inghilterra, e ha iniziato la carriera lavorativa come progettista delle unità di elaborazione centrale (CPU) per computer mainframe. Nel corso degli anni, Max ha progettato di tutto, dai chip di silicio alle schede a circuito stampato, dagli amplificatori per onde cerebrali ai motori di prognosticazione steampunk (davvero!). È stato anche a capo della Electronic Design Automation (EDA) per oltre 30 anni.

Max è autore e/o coautore di diversi libri, tra cui i titoli: Designus Maximus Unleashed (vietato in Alabama), Bebop to the Boolean Boogie (An Unconventional Guide to Electronics), EDA: Where Electronics Begins, FPGAs: Instant Access e How Computers Do Math. Visita il suo blog "Max's Cool Beans".

Informazioni su questo editore

Editori nordamericani di DigiKey