Arduino (hardware)
Arduino è una piattaforma hardware per il physical computing. Creata in Italia nel 2005, Arduino è basata su una semplicissima scheda di I/O e su un ambiente di sviluppo che usa una libreria Wiring per semplificare la scrittura di programmi in C e C++ da far girare sulla scheda.

Arduino può essere utilizzato per lo sviluppo di oggetti interattivi stand-alone ma può anche interagire, tramite collegamento, con software residenti su computer, come Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider).
La piattaforma hardware Arduino è distribuita agli hobbisti solo attraverso la rete internet e viene spedita ai richiedenti in versione pre-assemblata, ma le informazioni sul progetto hardware sono rese disponibili a tutti, in modo che, chiunque lo desideri, può costruirsi un clone di Arduino con le proprie mani.
Il team di Arduino è composto da Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, e David Mellis.
Il progetto ha preso avvio in Italia ad Ivrea, nel 2005, con lo scopo di rendere disponibile, a progetti di Interaction design realizzati da studenti, un device per il controllo che fosse più economico rispetto ad altri sistemi di prototipazione disponibili all'epoca.
I progettisti sono riusciti nell'intento di creare una piattaforma di semplice utilizzo ma che, al tempo stesso, permettesse una significativa riduzione dei costi rispetto a molti prodotti disponibili sul mercato. A ottobre 2008 erano già stati venduti più di 50.000 esemplari di Arduino in tutto il mondo.
Piattaforma
Hardware
Una scheda Arduino consiste di un microcontroller a 8-bit AVR prodotto dalla Atmel, con l'aggiunta di componenti complementari che ne facilitino l'incorporazione in altri circuiti. Le Arduino ufficiali hanno usato chip della serie megaAVR - nello specifico i modelli ATmega8, ATmega168, ATmega328, e ATmega1280 - ma i suo cloni si sono servito di una manciata di altri processori. Molte schede includono un regolatore lineare di tensione a 5-volt e un oscillatore a cristallo a 16MHz (o un risonatore ceramico in alcune varianti), sebbene alcune implementazioni, come ad esempio LilyPad, girino a 8Mhz e facciano a meno dello stabilizzatore di voltaggio a causa delle specifiche restrizioni al fattore di forma.
Inoltre, il controller Arduino è pre-programmato con un bootloader che semplifica il caricamento dei programmi nella memoria flash incorporata nel chip, rispetto ad altri device che richiedono, solitamente, un programmer esterno.
A livello concettuale, tutte le schede sono programmate attraverso un porta seriale RS-232, ma il modo in cui questa funzionalità è implementata nell'hardware varia da versione a versione. Le schede seriali Arduino contengono un semplice circuito inverter che permette la conversione tra il livello della RS-232 e il livello dei segnali TTL.
Le recenti versioni di Arduino (Diecimila e Duemilanove) vengono gestite via USB, grazie a un'implementazione che usa dei chip adattatori USB-seriale come gli FT232 della FTDI. Alcune varianti, come la Arduino Mini e la versione non ufficiale Boarduino, usano una scheda o un cavo adattatore USB-to-serial staccabile.
La Arduino esibisce molti dei connettori di Input/Output per microcontroller usati da altri circuiti. La Diecimila, ad esempio, ora soppiantata dalla Duemilanove, offre 14 connettori per l'I/O digitale, 6 dei quali possono produrre segnali PWM, mentre 6 sono dedicati a ingressi di segnali analogici. Questi pin sono disponibili sulla parte superiore della scheda, mediante connettori femmina da 0.1 pollici. Inoltre, sono disponibili commercialmente molte schede applicative plug-in, note come "shields".
Le schede Barebones e Boarduino, due cloni compatibili con la Arduino, sono dotate di connettori maschio sul lato inferiore del circuito in modo da poter essere connesse a una breadboard senza necessità di effettuare saldature.
Software
Lo IDE di Arduino è un'applicazione multipiattaforma scritta in Java, ed è derivata dallo IDE creato per il linguaggio di programmazione Processing e per il progetto Wiring. È concepita per introdurre alla programmazione artisti e altri neofiti, a digiuno di pratica nello sviluppo di software. Per permettere la stesura del codice sorgente. la scheda include inoltre un editore di testo dotato di alcune particolarità, come il syntax highlighting, il controllo delle parentesi, e l'indentazione automatica. L'editor è inoltre in grado di compilare e lanciare il programma eseguibile in una sola passata e con un singolo click. In genere non vi è bisogno di creare dei Makefile o far girare programmi dalla riga di comando.
L'ambiente di sviluppo integrato di Arduino è fornito di una libreria software C/C++ chiamata "Wiring" (dall'omonimo progetto Wiring), che rende molto più semplice implementare via software le comuni operazioni input/output. I programmi di Arduino sono scritti in C/C++, ma, per poter creare un file eseguibile, all'utilizzatore non è chiesto altro se non definire due funzioni:
- setup() – una funzione invocata una sola volta all'inizio di un programma che può essere utilizzata per i settaggi iniziali
- loop() – una funzione chiamata ripetutamente fino a che la scheda non viene spenta.
Un tipico esempio di programma per iniziare la pratica con un microcontroller è quello che permette, semplicemente, l'accensione ripetuta di un LED. Nell'ambiente di sviluppo di Arduino, l'utilizzatore potrebbe farlo con un programmino come il seguente[1] :
#define LED_PIN 13
void setup () {
pinMode (LED_PIN, OUTPUT); // abilita il pin 13 per l'output digitale
}
void loop () {
digitalWrite (LED_PIN, HIGH); // accende il LED
delay (1000); // aspetta 1 secondo (1000 millisecondi)
digitalWrite (LED_PIN, LOW); // spegne il LED
delay (1000); // aspetta un secondo
}
Così come scritto, questo codice non verrebbe riconosciuto dal compilatore come un programma valido; per questo, quando l'utilizzatore clicca sul bottone di comando "Upload to I/O board" presente nell'IDE, una copia del codice viene trascritta in un file temporaneo con un extra include header all'inizio e una semplicissima funzione main() in basso:
#include "WProgram.h"
#define LED_PIN 13
void setup () {
pinMode (LED_PIN, OUTPUT); // abilita il pin 13 per l'output digitale
}
void loop () {
digitalWrite (LED_PIN, HIGH); // accende il LED
delay (1000); // aspetta 1 secondo (1000 milliseconds)
digitalWrite (LED_PIN, LOW); // spegne il LED
delay (1000); // aspetta 1 secondo
}
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}
"WProgram.h" è lo header file principale per la libreria Wiring, e la funzione main() effettua solo tre distinte chiamate: init(), definita nella stessa libreria, e le funzioni setup() e loop(), definite dall'utente. Quest'ultima, come richiesto, è nidificata automaticamente in un loop
Lo IDE di Arduino usa la GNU toolchain e la AVR Libc per compilare i programmi, mentre usa avrdude per caricarli sulla scheda.
Hardware originale
L'hardware originale Arduino è realizzato dalla italiana Smart Projects. Alcune schede a marchio Arduino sono state progettate dalla statunitense SparkFun Electronics.
Fino a oggi sono state commercializzate undici versioni dell'hardware Arduino. [2]
- Serial Arduino, programmata con una porta seriale DB9, e facente uso del microcontroller ATmega8
- Arduino Extreme, con interfaccia di programmazione USB, e facente uso del chip ATmega8
- Arduino Mini, una versione in miniatura facente uso di un ATmega168 a montaggio superficiale
- Arduino Nano, una versione ancora più piccola della Mini, utilizzante lo stesso controller ATmega168 SMD e alimentata tramite USB
- LilyPad Arduino, un progetto minimalista per applicazioni indossabili con lo stesso ATmega168 SMD
- Arduino NG, with a USB interface for programming and using an ATmega8
- Arduino NG plus, with interfaccia di programmazione USB, con un ATmega168
- Arduino BT, con interfaccia di programmazione Bluetooth e con un ATmega168
- Arduino Diecimila, con interfaccia di programmazione Bluetooth e con un ATmega168 in un package DIL28
- Arduino Duemilanove, facente uso del chip Atmega168 (o Atmega328 nelle versioni più recenti) ed alimentata in corrente continua tramite USB, con switching automatico
- Arduino Mega, che fa uso di un ATmega1280 a montaggio superficiale per I/O e memoria addizionale.
Open hardware e open source
Gli schemi hardware di Arduino sono distribuiti in modo da poter essere utilizzati nei termini legali di una licenza Creative Commons Attribution Share-Alike 2.5, e sono disponibile sul sito ufficiale Arduino. Per alcune versioni della scheda sono disponibili anche il layout e i file di produzione. Il codice sorgente per l'Ambiente di sviluppo integrato e la libreria residente sono disponibili, e concessi in uso, secondo i termini legali contenuti nella licenza GPLv2.
Accessori hardware
Sia la scheda originale che i suoi cloni fanno uso di shields, ovvero di espansioni alla Arduino base, realizzate con schede a circuito stampato che possono essere collocate al di sopra della Arduino, inserendosi nei connettori normalmente forniti. Esistono espansioni dedicate a varie funzioni, dal controllo motorio, al breadboarding (prototipizzazione).
Cloni
Benché i progetti hardware e software siano resi disponibili con licenze copyleft, gli sviluppatori hanno espresso il desiderio che il nome "Arduino" (o suoi derivati) venga riferito solo al prodotto originale e non sia usato per indicare opere derivate senza il permesso. Il documento che esprime la policy ufficiale sull'uso del nome "Arduino" mette l'accento su come il progetto sia aperto ad incorporare lavori altrui nel prodotto ufficiale. [3]
Quale conseguenza di queste convenzioni sulla protezione del nome, un gruppo di utilizzatori ha effettuato un "fork" (nel senso esteso del termine) della "the Arduino Diecimila", distribuendo una scheda equivalente chiamata "Freeduino". Il nome "Freeduino" non è però inteso come un marchio commerciale ma è liberamente utilizzabile da chiunque lo desideri.
Bibliografia
- (EN) Joshua Noble, Programming Interactivity: A Designer's Guide to Processing, Arduino, and openFramework, in O'Reilly Media, prima edizione, 15 luglio 2005, p. 768.
- (EN) Massimo Banzi, Getting Started with Arduino, in Make Books, prima edizione, 24 marzo 2009, p. 128.
Altri progetti
- Wikimedia Commons contiene immagini o altri file su Arduino
Collegamenti esterni
- Arduino: sito ufficiale
- Arduino wiki, aka Playground
- (EN) Un completo Arduino Tutorial
- Make Articolo su Arduino
- "Wiring" software project:
- di Arduino su Flickr
- Arduino tutorial – diviso in molte lezioni con fotografie e suggerimenti e per strumenti appropriati per principianti
- Introduction to the Arduino - Weekend Project Podcast
- Sheepdog Software's Introduction to Arduino: Pagine "per iniziare" e tutorial sulla programmazione con aiuto sull'hardware
- Arduino ed Actionscript Tutorial: Video, immagini e sorgenti per realizzare progetti con Arduino alcuni dei quali con integrazione Flash e Flex
- (PT) Tutorial di Arduino – in portoghese, ma con video e codici sorgente
- Esempi estremamente documentati per l'implementazione di componenti elettronici (Fritzing - sviluppato dai partecipanti all'"Interaction Design Lab" della Università di scienze applicate di Potsdam, (Germania)