Dopo una lunga attesa, è disponibile Arduino DUE a 39 euro più IVA (http://goo.gl/gJfBJ): un prezzo aggressivo per maker ambiziosi.

La facilità con cui anche un neofita può iniziare a far qualcosa con Arduino UNO ha portato un numero impressionante di utenti a creare progetti, modificare prodotti esistenti e risolvere problemi tecnici o funzionali. Tutto questo grazie alla semplicità e all’immediatezza che da anni caratterizza il progetto Arduino. Dall’IDE alle schede Arduino, agli shield fino ai sensori e alle derivazioni hardware specializzate (robotica e stampa 3D), in poco tempo è possibile arrivare al risultato desiderato.

La curva di apprendimento è ideale in quanto parte molto dolcemente e consente di arrivare ad un livello accettabile di produttività nel giro di poco tempo: se l’idea non è troppo complessa, il risultato arriva nel giro di qualche prova.

Grazie a questo, in molti si sono ritrovati ad avere una buona dimestichezza con la piattaforma e i progetti si sono fatti via via più complessi e articolati. Il numero di porte disponibili, la velocità di elaborazione e la memoria di programma limitata hanno però portato diversi utenti a trovare i limiti computazionali e hardware come ostacolo al progresso del loro progetto.

Verso un nuovo standard
I limiti definiti dal team Arduino per la piattaforma sono stati per diversi anni uno dei pregi che ne hanno permesso la grande diffusione, ma con il crescere dell’esperienza, sia il Team, sia gli utenti hanno capito che si poteva dar vita alla piattaforma “DUE”, ovvero una soluzione che partendo dalla prima architettura a 8 bit ne mantiene alcuni elemento fondamentali e li trasporta in un ambiente a 32 bit.

Non si tratta di un passaggio facile, soprattutto perché i due mondi sono separati da un gap tecnologico significativo. Cambiare semplicemente il microcontrollore da 8 a 32 bit senza intervenire anche sulle architetture software e hardware non avrebbe avuto senso e – praticamente – non sarebbe neppure stato possibile e per questo molto tempo è stato dedicato a ridurre le distanze fra le due piattaforme senza rinunciare al ricco bagaglio innovativo dei microcontrollori a 32 bit.

Il risultato è – almeno per chi scrive – ancora tutto da scoprire in quanto sulla carta si hanno delle informazioni, mentre sarà con l’utilizzo pratico che le caratteristiche e le funzionalità potranno essere comprese e valutate nella loro reale portata.

Mai come questa vola le specifiche e le prime indicazioni di utilizzo sembrano un po’ più complesse di quanto ci si potrebbe aspettare da un Arduino, ma pensiamo che sia necessario valutare il prodotto rapportandolo al mercato per cui è stato pensato, ovvero quello degli utenti che avendo raggiunto il limite della piattaforma UNO desiderano maggiore potenza e flessibilità, prima di dire che è complesso.

Per il momento abbiamo comunque scelto di dare un quadro delle caratteristiche di Arduino DUE senza esprimere giudizi e commenti in quanto al momento in cui scriviamo non abbiamo potuto ancora effettuare delle prove (il prodotto è diventato disponibile da pochi giorni) sufficienti a formare un giudizio.

Quello che invece pensiamo di poter affermare già ora è che con circa un milione di Arduino in funzione nel mondo, questa piattaforma ha ottime possibilità di diventare un nuovo standard per i maker di tutto il mondo.

Le caratteristiche
Arduino DUE è basato sul microcontrollore Atmel ARM Cortex-M3 SAM3X8E. Il microcontrollore è a 32 bit e funziona con un clock a 84 MHz. Dispone di 54 pin digitali utilizzabili come ingressi e uscite e di questi ben 12 possono essere utilizzati come uscite PWM. Per la parte analogica la scheda dispone di 12 ingressi analogici e due uscite realmente analogiche, gestite da DAC a 12 bit (Digital to Analog Converter con 4096 livelli ). La medesima risoluzione di 12 bit è supportata dagli ingressi analogici, ma per compatibilità con il codice scritto per Arduino UNO, di default gli ingressi sono impostati a 10 soli bit di risoluzione.

Questo particolare ci permette di sottolineare come sia stata dedicata molta attenzione alla compatibilità con il codice esistente, ma da una prima analisi possiamo già intuire che il caricamento di un o sketch per Arduino UNO su un DUE richieda comunque una rilettura del codice per assicurarsi che non ci siano situazioni specifiche per uno o l’altro.

La preoccupazione maggiore nasce dalle librerie che per le due versioni sono diverse, ma senza effettuare prove, non possiamo essere più precisi.

Le librerie per gli Arduino basate su ARM.


Le librerie per gli Arduino basate su AVR.
Particolare attenzione va quindi agli sketch che necessitano delle librerie core.

Sul fronte della comunicazione, Arduino DUE ha ben quattro porte seriali hardware che, proprio perché hardware, rendono possibile l’utilizzo simultaneo, mentre la soluzione software utilizzata su UNO richiedeva l’attivazione in lettura di una sola porta seriale alla volta. In attesa delle librerie adatte, la scheda dispone anche di una porta CAN, con la quale sarà possibile gestire l’inserimento di Arduino DUE nel mondo auto motive, mentre le due porte TWI sono ideali per la comunicazione con dispositivi con il bus di comunicazione Two Wire o I2C. Una porta JTAG è attestata sulla scheda per l’accesso alle modalità di programmazione e debug del microcontrollore.

Due è meglio che uno
E questo vale anche per le porte USB che, appunto, sono ora due e con caratteristiche molto interessanti. Una parte è ancora connessa a un ATmega16U2 che fa da convertitore USB-to-serial e si collega a una porta UART del SAM3X su TX0 e RX0, mentre la seconda porta USB è diretta verso SAM3X. La prima è definita come “programmino Port” e assomiglia alla porta che si trova su UNO, implementando la porta di comunicazione tramite la quale Arduino comunica con il computer e permettendo anche il ciclo di programmazione attraverso una sequenza di eventi software. La seconda è invece una piccola rivoluzione in quanto può anche essere configurata come USB Host alla quale collegare delle periferiche. Inizialmente si parla di mouse e tastiera, ma memorie di massa o chiavette attive (WiFi, GSM ecc) potrebbero rapidamente aggiungersi all’elenco tramite apposite librerie.  Come Leonardo, anche DUE è in grado di prendere il ruolo di USB Client e simulare un mouse o una tastiera.

Le procedure di programmazione sono possibili su entrambe le porte con modalità diverse e in generale il Team Arduino ha cercato da una parte di mantenere la semplicità del “one click programming”, senza però escludere possibilità di crash e problemi dai quali un sistema di programmazione più “radicale” permette sempre di uscire.

L’alimentazione
Questo è il punto probabilmente più delicato di questa nuova architettura: il mondo va verso il “low power”, ovvero l’elettronica che funziona a 3,3V e anche il DUE non si è sottratto a questo trend. Già da qualche tempo è stata fatta circolare la specifica di UNO che vede nel pin IOREF un elemento sostanziale nella progettazione degli shield e oggi si capisce bene il motivo di questa insistenza. Il pin IOREF presenta infatti la tensione di riferimento per il microcontrollore e nel caso di un UNO il valore è 5V, mentre per un DUE il valore è 3,3V. Gli shield DEVONO prendere questa tensione come l’indicazione tassativa del voltaggio di funzionamento e di comunicazione con il microcontrollore della scheda Arduino a cui si collegano. Non considerare IOREF porterebbe a probabili disastri che vanno dal mancato funzionamento dello shield al danneggiamento permanente del microcontrollore.

SAM3X funziona infatti a 3,3V e si aspetta di trovare sulle proprie porte questa tensione come livello logico “1” e da 0 a 3,3V come intervallo sulle porte analogiche. Allo stesso modo le porte DAC vanno da 0 a 3,3V mentre quelle seriali e i pin di I/O forniscono 3,3V come livello logico alto.

Le porte digitali in uscita non sono poi tutte uguali e a seconda del tipo possono fornire 3 mA o 15 mA o ricevere (sink) una corrente di 6 mA o 9 mA, a seconda del pin. La documentazione indica nel dettaglio le caratteristiche di ciascun PIN.
Tornando al tema dell’alimentazione in generale, questa può essere fornita tramite varie modalità alla scheda.

La scheda Arduino DUE offre numerosi nuovi pin di collegamento e un cuore a 32 bit per applicazioni sempre più articolate, ma a un prezzo ancora molto aggressivo.

Si può fornire un’alimentazione tramite la presa tonda classica presente dal lato opposto del pulsante di reset, partendo dai 7 fino ad arrivare a 12 V. La tensione di alimentazione applicata si ritrova sul pin Vin posizionato nella strip in basso prima degli ingressi analog. Se non si usa la presa, si può usare il pin Vin come ingresso del tutto equivalente. Dato che la tensione fornita passa dal regolatore di tensione, se si scende sotto i 7V, questo fornisce una tensione inferiore a 5V e la scheda potrebbe diventare instabile. Superare i 12V invece fa dissipare al regolatore molta più potenza e questo si traduce in calore che, se eccessivo, porta a dei problemi di funzionamento.

Un secondo sistema di alimentazione è tramite USB, dove i 5V forniti in ingresso sulla porta vengono utilizzati direttamente per alimentare la scheda ed un convertitore provvede a portare i 5V ai 3,3V richiesti dal microcontrollore.

I pin indicati sulla strip come 5V e 3,3V sono le uscite dei regolatori di tensione e quindi il collegamento di 5V direttamente al pin da 5V, va fatto solo se la sorgente è stabilizzata e regolata, altrimenti saltando il regolatore si potrebbero avere disturbi dannosi.

Lo stesso discorso vale per il pin 3,3V che è un’uscita quando si fornisce alimentazione dalla presa 7/12V o USB, ma può diventare un input se si ha una sorgente regolata e stabilizzata. L’uso di questi due pin per alimentare la scheda non è comunque consigliata.

Quando si alimenta la scheda tramite presa tonda o Vin, la corrente disponibile sulle due uscite regolate è di massimo 800 mA ciascuna. Se usate l’alimentazione via USB fate attenzione alla corrente che l’alimentatore o il device che fornisce i 5V (ad esempio il computer) può fornire prima che intervenga la protezione.

Anche Arduino DUE è dotato di protezione dalle sovracorrenti sulla porta USB “nativa” utilizzata come Host e lo fa tramite un fusibile elettronico, in grado di ripristinarsi quando il sovraccarico viene rimosso.

In questo esempio il Team mostra come collegare una tastiera USB da cui vengono ricevuti dei caratteri. Quanto ricevuto viene passato alla porta seriale per essere visualizzato tramite consolle.

Un nuovo IDE
Con l’arrivo di Arduino DUE è anche stato rilasciato l’IDE 1.5.0 che contiene tutta la parte relativa alla compilazione del codice per ARM. Il Team al proposito ha dovuto effettuare un lavoro molto impegnativo, sempre in bilico fra semplicità, compatibilità e apertura al nuovo. Il risultato è, per quanto abbiamo potuto vedere nel pochissimo tempo a disposizione prima della chiusura del numero, ancora nello stile originale, con la medesima immediatezza e operatività delle versioni precedenti. La novità è ovviamente nella presenza delle schede della famiglia ARM che, se selezionate, modificano alcuni dei contenuti e delle librerie in modo contestuale.

Caratteristiche tecniche:

  • Microcontroller:  AT91SAM3X8E
  • Tensione di funzionamento: 3.3V
  • Tensione di ingresso (consigliato): 7-12V
  • Tensione di ingresso (limiti): 6-20V
  • Pin I/O digitali: 54 (di cui 12 utilizzati come uscite PWM)
  • Pin di ingresso analogico: 12
  • Uscite analogiche: 2 (DAC a 12 bit)
  • Corrente complessiva sule linee I/O:130 mA
  • Corrente massima su Pin 3.3V: 800 mA
  • Corrente massima su Pin : 5V/800 mA
  • Memoria Flash: 512 KB, tutti disponibili per le applicazioni utente
  • SRAM: 96 KB (due banchi: 64 KB e 32 KB)
  • Velocità di clock: 84 MHz

http://arduino.cc