Arduino DUE Tutorial: dentro la scheda che ha cambiato il mondo

Arduino Due tutorial

La scorsa volta abbiamo iniziato la presentazione della scheda Arduino DUE, candidata a continuare ciò che ha fatto la sua precedente versione ovvero dare vita, e nuovi stimoli, alla Maker’s Revolution. Oggi riprendiamo da dove avevamo lasciato per continuare questo lavoro e completare il quadro delle innovazioni (iniziato parlando proprio della sua MCU) con un’analisi più completa di che cosa è stato fatto, cosa c’è dentro la scheda, di alcuni miglioramenti e cambiamenti rispetto alla versione precedente e di cosa c’è di diverso nella GUI che tutti gli amanti di Arduino ben conoscono. Andremo a curiosare nello schema elettrico cercando collegamenti interessanti e sezioni circuitali che è utile conoscere dettagliatamente prima di iniziare a smanettare con la scheda. Siete pronti?

Bene, allora partiamo subito con l’analisi e vediamolo insieme nel dettaglio…

…lo schema elettrico

Era d’obbligo fare un passaggio, anche piuttosto approfondito, su questo per chiarirci le idee. Quindi, ora che è venuto il momento: entriamo nello specifico della scheda e facciamo un’analisi della sua struttura. Per farlo, utilizzeremo qualche immagine dello schematico, tratta dalla documentazione ufficiale.

Nella prima di questa sezione vi proponiamo i principali collegamenti al SAM3x, della sezione di alimentazione, all’accesso al pin di riferimento, ai vari connettori e all’interfacciamento tramite porta USB AB.

Nella seconda immagine, invece, quello che vi proponiamo è ciò che c’è appena a valle della seconda porta, proprio per differenziare le due e  capire, topologicamente, come sono state pensate. Come si vede, qui i collegamenti sono realizzati con  il 16U2, utile per tutto quello di cui vi abbiamo parlato in precedenza.

Proporre queste due immagini da sole è certamente assolutamente insoddisfacente ed ecco perchè ora vedremo più nel dettaglio alcune sezioni di nostro interesse. Cominciamo da questa immagine per vedere un dettaglio del collegamento con la porta USB (tipo B):

da qui risulta chiaro quale sia il collegamento tra l’ingresso USB tipo B verso la scheda. XVCC, proveniente dal pin P1, attraversa un MF-MSMF050-2 Multifuse SMD (una protezione) da non più  di mezzo Ampere. Altrettanto avviene per l’ingresso USB tipo AB che vediamo qui di seguito:

I componenti CG0603MLC-053 sono degli ESD-suppressor, ovvero dispositivi in grado di effettuare lo scarico di eventuali tensioni statiche parassite. In questo modo si provvede all’isolamento della scheda da eventuali sovratensioni causate da malfunzionamenti. Questi dispositivi sono stati collegati alle linee di segnale perchè sono proprio queste che vanno protette da eventuali componenti di questo tipo sia per preservare l’integrità della scheda sia per tutelare il segnale da componenti di rumore.

Nella figura che segue

vi mostriamo la sezione di alimentazione del circuito. La tensione di ingresso a 5V diventa input dell’integrato LM2734Y. Si tratta di un DC-DC regulator della Texas Instruments, in particolare è uno Step-Down. Il suo scopo, come il nome suggerisce, è quello di abbassare il livello di tensione in ingresso fino ad ottenere una Vin “accettabile” per la scheda. Come vi avevamo accennato, infatti, la scheda assolutamente non tollera tensioni pari a 5V ma il massimo che può sopportare come tensione operativa è 3.3V. Ecco, quindi, come fa’ ad abbassarla.

Questo integrato è molto utile per diverse ragioni che si possono intuire dando uno sguardo più approfondito alle sue cartteristiche:

  • package SOT-23-6 (che implica facilità di implementazione);
  • range di tensione in ingresso: da 3.0V a 20V (che è certamente più del necessario in questo caso);
  • range di tensione in uscita: da 0.8V a 18V (ed anche qui ci siamo abbondantemente);
  • corrente di uscita: 1A (che soddisfa certamente ogni condizione di carico di lavoro);
  • frequenza di switch: 550kHz;
  • corrente di shutdown: 30nA.

Queste ed altre features (che non è particolarmente utile o significativo riportare in questo caso), rendono l’integrato ideale per una serie di applicazioni tra cui: regolazione dei carichi, alimentazione di dispositivi a batteria, modem DSL, computer notebook e, ovviamente, molti altri ancora.

Altre due sezioni da commentare sono le seguenti: la prima è quella nella quale si controllano i LED presenti sulla scheda. Uno di questi, come vedremo tra un attimo, è pilotato utilizzando un amplificatore operazionale LMV358 e semplici resistori.

L’amplificatore operazione in questione lo troviamo, qui, utilizzato in configurazione buffer per realizzare un semplice inseguitore di tensione. Tuttavia questo integrato presenta diversi vantaggi e features interessanti. Esso fa’ parte di una famiglia composta da LMV321, 324 e 324S che sono amplificatori singoli, doppi e quadrupli tutti a bassa tensione  e che godono di swing rail-to-rail. Per questi dispositivi esistono, integrate funzioni di power-saving shutdown che permette la riduzione della corrente in uscita fino a 5 µA.

Si tratta di soluzioni di facile integrazione e di grande praticità quando si ha bisogno di operazionali versatili in quanto general purpose e con valori di slew rate fino a 1-V/µs e tensioni operative che possono variare da 5 a 30 V.

Immediatamente al di sotto troviamo i connettori TXL ed RXL con annessi LED di “controllo”.

La seconda, invece, è quella grazie alla quale si può effettuare il RESET della scheda; questa utilissima funzione viene riproposta, tramite apposito pulsante, anche in questa versione.

E parlando di cose che abbiamo già visto nella vecchia versione, ecco il pin AREF, riproposto su questa scheda con questo collegamento al microcontrollore.

In questa figura si vede molto chiaramente una cosa interessante: un filtro a “pi-greco”. Si tratta di una semplice architettura passiva costituita da un induttore e due condensatori (che nello schema sono C34, L3 e C19) che permette, al dispositivo completo di rispondere ai dettami della normativa in materia di compatibilità elettromagnetica. In particolare, con questa architettura si ovvia al problema delle emissioni condotte. Il filtro è un passa-basso collegato come ultimo stadio di interfaccia tra dispositivo e tensione di alimentazione. In questo modo, le componenti che ciascun dispositivo elettronico tenderebbe ad emettere, vengono attenuate. Le frequenze cui è più frequentemente riferito lo scopo dell’applicazione di questi filtri sono 150 kHz – 30 MHz.

In questa tipologia di filtri è possibile anche ottenere l’attenuazione del solo modo comune; questo è un fatto di grande importanza visto che la corrente di alimentazione, di solito, presenta componenti di solo modo differenziale (pertanto non viene attenuata).

Per quanto riguarda le interfacce, invece, qui di seguito riportiamo la sezione dello schematico in cui si evidenziano le interconnessioni per gestire le interfacce JTAG ed SPI verso i connettori.

Andiamo, ora, a vedere la sezione dei quarzi connessi al SAM3X.

Altra porzione dello schematico che ci interessa è quella dell’LDO, come mostrato di seguito:

LDO, come noto, è una sigla che sta’ per Low-DropOut regulator, ovvero regolatore a basso dropout. Si tratta di un regolatore lineare di tensione che può operare con una tensione differenziale in-out molto bassa. Il vantaggio nell’utilizzo di queste soluzioni è costituito dal fatto che si possono ottenere tensioni di lavoro molto più basse, valori d’efficienza più alti e minore dispersione del calore.

Questo regolatore, in particolare, annovera tra le sue caratteristiche:

  • Tensione di ingresso (max): 20 V;
  • Tensione di uscita: 3.3 V;
  • Tensione di dropout (max): 1.1 V @ 100 mA;
  • Corrente di uscita: 1 A;
  • Regolazione carico: 4.3 mV;
  • Tipo di uscita: fissa;
  • Temperatura di lavoro massima: 125  °C;
  • Stile di montaggio: SMD/SMT;
  • Package: SOT-223-4;
  • Corrente di bias di ingresso (max): 6 mA;

Passiamo ora alla condizione di ERASE, gestita come nello schema che segue:

Il pulsante evidenziato è a presidio del comando di “erase” cui è dedicata la porta 130 (PC0).

Qui vale la pena di fare un appunto funzionale al segnale UOTGVBOE. Qui è possibile portare al valore 0 l’alimentazione dell’USB (porta) quando si trova in modaltà HOST (ovvero quando viene alimentata dall’esterno). VBUSPO sta’ per VBus Polarity Off e prevede che “0” implichi che il segnale di uscita sia quello della modalità di default (attivo alto) mentre “1” corrisponda alla modalità invertita, ovvero attivo basso.

A questo punto, per completezza, vi segnaliamo i riferimenti dove potrete trovare la documentazione del progetto: gli EAGLE files sono disponibili qui: arduino-Due-reference-design.zip, lo schematico è scaricabile a questo indirizzo arduino-Due-schematic.pdf mentre il pin mapping è riportato qui: SAM3X Pin Mapping page

L’Interface Development Environement

Sotto questo punto di vista le cose non sono, in realtà, cambiate in maniera altrettanto notevole; l’IDE, nella sua versione 0023, aveva questo aspetto:

mentre l’attuale versione, la 1.0.3, ha quest’altro:

e, al di là di qualche accorgimento grafico la verità è che non è cambiato molto.

La funzionalità è sempre quella, con i soliti limiti e le caratteristiche che abbiamo tutti imparato a conoscere. Il piccolo restyling ha portato lo spostamento di qualche pulsante e l’utilizzo di una paletta cromatica leggermente diversa. Anche lo splash screen è stato modificato ma queste sono tutte innovazioni piuttosto marginali.

Questo è davvero un peccato perchè sarebbe molto utile che l’IDE di questo tool dimostrasse di potersi completare con strumenti di debug più sofisticati che permettessero al programmatore di capire come e perchè certe problematiche insorgono. Io stesso, in alcuni esperimenti fatti, ho notato che il compilatore pasticcia un po’ quando deve gestire variabili globali e nulla pare poter dissipare i miei dubbi sul fatto che la struttura “bloccata” costituita da setup() e loop() non causi errori di interpretazione e compilazione e, pertanto, di esecuzione. Recentemente uno dei nostri utenti ha fatto un esperimento interessante ragionando su come poter utilizzare Eclipse per superare proprio queste difficoltà. Per chi se lo fosse perso, ecco che cosa ha fatto.

Una delle novità più interessanti riguarda, però, la localizzazione: come tutti i progetti Open Source, anche questo prevede un grosso e sostanziale apporto della comunità che, in questo caso particolare, si sta occupando di provvedere alla localizzazione della GUI per la programmazione nelle varie lingue. Da non molto tempo è disponibile una versione localizzata ad opera di Sara Gallo e Simone Majocchi. Qualcuno dice “when ther’s a will there’s a way”; personalmente ritengo che se tutto questo è riferito a ciò che succede nell’alveo dell’Open Source, allora è vero.

Dal punto di vista della programmazione, come avevamo già accennato in precedenza e riprendiamo qui, sarà certamente necessario rivedere alcune delle librerie poiché la programmazione su un microcontrollore a 32-bit non può essere fatta nello stesso identico modo rispetto come la si faceva sugli 8.
Non solo, nella nuova versione, ovviamente, sono supportate una serie di schede che prima non potevano essere utilizzate. D’altronde tutto questo è abbastanza fisiologico, visto che nel tempo il supporto deve essere garantito per ogni singola versione rilasciata.
Anche il menù “programmatore”, presente tra gli strumenti, in cui son presenti diverse possibilità, risulta più popoloso del precedente, in modo da dare all’utente maggiore “spazio” rispetto a quello che aveva in precedenza.
Insomma, si tratta del “solito” strumento un po’ potenziato per essere molto più utile a tutti gli utenti.

Poco o niente, quindi, è stato fatto rispetto alla sua più grande pecca, ovvero l’assenza pressochè totale di strumenti di debug più professionali e completi.
L’IDE di Arduino potrebbe diventare un laboratorio di grande pregio se solo alcuni strumenti fossero inseriti. In particolare, come molti utenti avranno avuto modo di sperimentare durante l’uso, non esiste una gestione degli errori, un feedback completo ed esaustivo che descriva l’errore in maniera particolareggiata. Cose che chi conosce ambienti come il Visual Studio è ben abituato ad utilizzare, e talvolta, diciamocelo, anche a dare per scontate.

In conclusione

Vi è venuta un’idea che vorreste davvero riuscire a mettere in pratica? Avete deciso di potenziare il vostro smartphone con un apparato GPS portatile che possa tenere anche traccia della posizione tramite un supporto di memoria?

Volete costruirvi un antifurto intelligente ed automatizzato per la casa e che comunichi grazie ad Android?

Oppure volete collegare il lettore Mp3 alla videocamera per aggiungere degli effetti speciali ai vostri filmati?

Insomma, tutte queste cose e molte altre ancora, compresa qualunque idea che abbiate avuto e che non siete riusciti a mettere in pratica su Arduino UNO per via delle sue comunque limitate potenzialità, possono finalmente diventare realtà grazie alle prestazioni ed alla potenza di calcolo ed alla velocità di risposta della nuova incarnazione del progetto Arduino. Ancora un esempio di come in una dimensione di poco più grande di una carta di credito si possa raggiungere un’enorme potenza di calcolo ed una versatilità di poco inferiori rispetto a quelle di un computer completo.

Arduino DUE si candida a pieno titolo a continuare il lavoro iniziato dal suo predecessore strizzando l’occhio al mondo del fai-da-te ma soprattutto a quello della didattica. Un’eccellenza del Made in Italy come il mondo può soltanto sognare. L’esempio più fulgido di che cosa gli italiani, anche nel campo dell’elettronica, sono capaci di fare e di quanto abbiano da insegnare.

L’unica cosa che c’è da sperare è che il gruppo al lavoro su Arduino decida di iniziare lo sviluppo di un ambiente di programmazione che includa strumenti più adatti al debugging ed all’analisi di ciò che succede durante la compilazione e la successiva esecuzione del programma, in modo da rendere questa e le altre schede della famiglia controllabili in toto.

Prima di lasciarci, un breve annuncio finale sulla questione della disponibilità. La situazione, quando avete letto lo scorso articolo, era di esaurimento delle scorte disponibili praticamente su tutti i canali di distribuzione. Mentre leggete queste ultime righe dell’articolo, è avvenuto il nuovo rifornimento e pertanto la scheda viene nuovamente distribuita, non ultimo grazie allo Store di Arduino. Il “blackout” nella disponibilità, insomma, è durato solo alcune settimane per cui…cosa aspettate?

 

Quello che hai appena letto è un Articolo Premium reso disponibile affinché potessi valutare la qualità dei nostri contenuti!

Gli Articoli Tecnici Premium sono infatti riservati agli abbonati e vengono raccolti mensilmente nella nostra rivista digitale EOS-Book in PDF, ePub e mobi.

volantino eos-book1

Vorresti accedere a tutti gli altri Articoli Premium e fare il download degli EOS-Book?
Allora valuta la possibilità di sottoscrivere un abbonamento a partire da € 2,95!

Scopri di più

16 Comments

  1. vyborg84 17 febbraio 2013
  2. Luigi Francesco Cerfeda 6 giugno 2013
  3. Luigi Francesco Cerfeda 15 aprile 2013
  4. Piero Boccadoro Piero Boccadoro 16 aprile 2013
  5. Luigi Francesco Cerfeda 12 giugno 2013
  6. Piero Boccadoro Piero Boccadoro 16 giugno 2013
  7. Boris L. 12 febbraio 2013
  8. Giorgio B. Giorgio B. 12 febbraio 2013
  9. Piero Boccadoro Piero Boccadoro 12 febbraio 2013
  10. Piero Boccadoro Piero Boccadoro 12 febbraio 2013
  11. Emanuele Emanuele 12 febbraio 2013
  12. Giorgio B. Giorgio B. 13 febbraio 2013
  13. Giorgio B. Giorgio B. 13 febbraio 2013
  14. Piero Boccadoro Piero Boccadoro 14 febbraio 2013
  15. Luigi Francesco Cerfeda 14 febbraio 2013
  16. Emanuele Emanuele 14 febbraio 2013

Leave a Reply