Arduino (hardware)

piattaforma di sviluppo hardware open-source

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

Arduino può essere utilizzato per sviluppare oggetti interattivi stand-alone o può interagire, tramite collegamento, con un software residente su un computer, come Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider).

La piattaforma hardware Arduino è distribuita agli hobbisti solo attraverso la rete e viene spedita in versione pre-assemblata, ma le informazioni sul progetto hardware sono disponibili per chiunque volesse costruirsi un 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, nel 2005, con lo scopo di rendere disponibile agli appassionati di robotica fai da te un device per controllare robot auto-costruiti, in maniera più economica rispetto ad altri sistemi di prototipazione disponibili all'epoca. I progettisti riuscirono nell'intento di creare una piattaforma di semplice utilizzo e che, al contempo, permettesse un significativo taglio di costi rispetto a molti prodotti concorrenti.

Fino al mese di ottobre 2008, erano state ordinate più di 50.000 schede Arduino in tutto il mondo.

Piattaforma

Hardware

Una scheda Arduino consiste in di un microcontroller a 8-bit AVR prodotto dalla Atmel, con dei componenti complementari per facilitarne l'incorporazione in altri circuiti. Gli 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 mnaciata di altri processori. Molte schede includono un regolatore lineare di tensione a 5-volt e un a 16MHz oscillatore a cristallo (o un risonatore ceramico in alcune varianti), sebbene alcune implementazioni, come LilyPad, girino a 8Mhz e fanno 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 questo è implementato 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 attuali schede Arduino sono programmate tramite 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 mostra molti dei connettori di Input/Output per microcontroller usati da altri circuiti. La Diecimila, ora soppiantata dalla Duemilanove, per esempio, offre 14 connettori per l'I/O digitale, 6 dei quali possono produrre segnali PWM, e 6 dedicati a input di segnali analogici. Questi pin sono disponibili sulla parte superiore della scheda, mediante connettori femmina di 0.1 pollici. Inoltre, sono disponibili commercialmente molte schede applicative plug-in, note come "shields".

Le Barebones e Boarduino, compatibili con la Arduino, sono fornite di connettori maschio sul lato inferiore del circuito in modo da poter essere connessi a una breadboard senza saldature.

Software

Lo IDE di Arduino è una 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 principianti non pratici di sviluppo del software. Include un editore per il codice dotato di particolarità come il syntax highlighting, il controllo delle parentesi, e l'indentazione automatica, ed è 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 e può essere utilizzata per i settaggi iniziali
  • loop() – una funzione chiamata ripetutamente fino a che la scheda non viene spenta.

"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.

Lo IDE di Arduino usa la GNU toolchain e la AVR Libc per compilare i programmi, mentre usa avrdude per caricarli sulla scheda.