Arduino (hardware)

piattaforma di sviluppo hardware open-source
Versione del 4 giu 2009 alle 17:05 di Snowdog (discussione | contributi) (tolta la sezione acquisti)

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.

A ottobre 2008, erano state venduti più di 50.000 esemplari di 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 neofiti, privi di pratica nello sviluppo di software. Include inoltre un editore di testo 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.

Un tipico programma per iniziare la pratica con un microcontroller è quello che permette semplicemente di far accendere ripetutamente un LED. Nell'ambiente di sviluppo di Arduino, l'utilizzatore potrebbe farlo con un programmino come il seguente:

#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
}

Il codice precedente non sarebbe visto dal compilatore come un programma valido, così che quando l'utilizzatore clicca sul bottone di comando "Upload to I/O board" nello IDE, una copia del codice viene scritta 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.

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.

  1. Serial Arduino, programmata con una porta seriale DB9, e facente uso del microcontroller ATmega8
  2. Arduino Extreme, con interfaccia di programmazione USB, e facente uso del chip ATmega8
  3. Arduino Mini, una versione in miniatura facente uso di un ATmega168 a montaggio superficiale
  4. Arduino Nano, una versione ancora più piccola della Mini, utilizzante lo stesso controller ATmega168 SMD e alimentata tramite USB
  5. LilyPad Arduino, un progetto minimalista per applicazioni indossabili con lo stesso ATmega168 SMD
  6. Arduino NG, with a USB interface for programming and using an ATmega8
  7. Arduino NG plus, with interfaccia di programmazione USB, con un ATmega168
  8. Arduino BT, con interfaccia di programmazione Bluetooth e con un ATmega168
  9. Arduino Diecimila, con interfaccia di programmazione Bluetooth e con un ATmega168 in un package DIL28
  10. Arduino Duemilanove, facente uso del chip Atmega168 (o Atmega328 nelle versioni più recenti) ed alimentata in corrente continua tramite USB, con switching automatico
  11. Arduino Mega, che fa uso di un ATmega1280 a montaggio superficiale per I/O e memoria addizionale.