Arduino

 ESCAPE='HTML'

Cos'è ?

Arduino è una piattaforma hardware composta da una serie di schede elettroniche dotate di un microcontrollore. È stata ideata e sviluppata da alcuni membri dell'Interaction Design Institute di Ivrea come strumento per la prototipazione rapida e per scopi hobbistici, didattici e professionali.

Con Arduino si possono realizzare in maniera relativamente rapida e semplice piccoli dispositivi come controllori di luci, di velocità per motori, sensori di luce, autolavaggi, temperatura e umidità e molti altri progetti che utilizzano sensori, attuatori e comunicazione con altri dispositivi. È abbinato ad un semplice ambiente di sviluppo integrato per la programmazione del microcontrollore. Tutto il software a corredo è libero, e gli schemi circuitali sono distribuiti come hardware libero.

 

L'architettura

La piattaforma fisica si basa su un circuito stampato che integra un microcontrollore con dei pin connessi alle porte I/O, un regolatore di tensione e, quando necessario, un'interfaccia USBche permette la comunicazione con il computer utilizzato per programmare. A questo hardware viene affiancato un ambiente di sviluppo integrato (IDE) multipiattaforma (disponibile per Linux,Apple Macintosh e Windows). Questo software permette anche ai novizi di lavorare con Arduino, in quanto i programmi sono scritti in un linguaggio di programmazione semplice e intuitivo, chiamato Wiring, derivato dal C e dal C++, liberamente scaricabile e modificabile. I programmi in Arduino vengono chiamati sketch.

Arduino può essere utilizzato per lo sviluppo di oggetti interattivi stand-alone e può anche interagire, tramite un collegamento e un opportuno codice, con software residenti su computer, come Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider, Vvvv.

L'Hardware 

L'hardware originale Arduino è interamente realizzato in Italia dalla Smart Projects, mentre cloni della scheda possono essere realizzati da chiunque in qualsiasi parte del mondo.

Molte schede Arduino includono un regolatore lineare di tensione a 5 volt e un oscillatore a cristallo a 16 MHz. Tuttavia alcune implementazioni, come ad esempio la piccola LilyPad[5], hanno un clock di 8 MHz e non sono dotate del regolatore di tensione.

Versioni 

Fino a oggi, sono state commercializzate 16 versioni dell'hardware Arduino:

-Serial Arduino, programmata con una porta seriale DB9. Fa uso del microcontroller ATmega8;
-Arduino Extreme, con interfaccia di programmazione USB, facente uso del chip ATmega8;
-Arduino Mini, una versione in miniatura facente uso di un ATmega168 a montaggio superficiale;
-Arduino Nano, una versione ancor più piccola della Mini, utilizzante lo stesso controller ATmega168 SMD e alimentata tramite USB;
-LilyPad Arduino, un progetto minimalista (scheda circolare dal diametro di 50 mm, per circa 0.8 mm di spessore), per applicazione su indumenti, con lo stesso ATmega168 in versione SMD;
-Arduino NG, con un'interfaccia USB per programmare e usare un ATmega8;
-Arduino NG plus, con interfaccia di programmazione USB, con un ATmega168;
-Arduino BT, con interfaccia di programmazione Bluetooth e con un ATmega168;
-Arduino Diecimila, con interfaccia di programmazione USB e con un ATmega168 in un package -DIL28;
-Arduino Duemilanove, facente uso del chip Atmega168 (o Atmega328 nelle versioni più recenti) e alimentata in corrente continua tramite USB, con commutazione automatica tra le sorgenti di alimentazione;
-Arduino Mega, che fa uso di un ATmega1280 a montaggio superficiale per I/O e memoria addizionale;
-Arduino Uno, evoluzione della Duemilanove con un differente chip, programmabile e più economico, dedicato alla conversione USB-seriale;
-Arduino Mega2560, che fa uso di un ATmega2560 (anch'esso a montaggio superficiale) ed è un'evoluzione dell'Arduino Mega;
-Arduino Due, che fa uso di un Atmel SAM3X8E ARM Cortex-M3 CPU;
-Arduino Zero Pro, dotata di un microcontrollore Atmel SAMD21 basato su core ARM Cortex M0+ a 32 bit.
-Arduino Yún, che fa uso di un ATmega32u4 e del processore Atheros AR9331, quest'ultimo compatibile con una distribuzione Linux basata suOpenWrt e chiamata Linino OS.

La programmazzione del microcontroller 

In alcuni casi il microcontrollore della scheda è pre-programmato con un bootloader che semplifica il caricamento dei programmi sulla memoria flashincorporata nella scheda.

Le versioni attuali di Arduino sono gestite via USB: la versione Uno utilizza un microcontrollore Atmega8U2 programmato come convertitore USB-seriale, mentre le precedenti versioni Diecimila e Duemilanove utilizzano chip adattatori USB-seriale, come gli FT232 di FTDI. Alcune varianti, come la Arduino Mini e la versione non ufficiale Boarduino, usano una scheda o un cavo adattatore USB-seriale staccabile.

Funzionalità di input output 

Per implementare il comportamento interattivo, Arduino è fornita di funzionalità di input/output (I/O). Tramite le funzionalità di input, la scheda riceve segnali raccolti da sensori esterni. Il comportamento della scheda è gestito dal microcontroller in base ai valori provenienti dai sensori e alle operazioni determinate dal programma in esecuzione in quel momento sulla scheda. L'interazione con l'esterno avviene attraverso attuatori pilotati dal programma, che fornisce le istruzioni per mezzo dei canali di output in dotazione.

Connettori I/O 

A tale scopo, Arduino è dotata di molti dei connettori di input/output per microcontroller in uso su altri circuiti. Tutti i pin di I/O sono collocati sulla parte superiore della scheda mediante connettori femmina da 0,1". Sono inoltre 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.

I/O Digitale

 

La Arduino Uno, ad esempio, che ha soppiantato la Duemilanove, offre 14 connettori per l'I/O digitale (numerati da 0 a 13). La direzione di funzionamento dei connettori utilizzati, input o output, deve essere stabilita mediante apposite istruzioni da inserire nello sketch programmato sull'IDE.

Sei dei quattordici canali I/O possono produrre anche segnali Pulse-width modulation (PWM). Attraverso i segnali PWM è possibile, ad esempio, regolare l'intensità di luminosità di un LED o la velocità di rotazione di un motorino elettrico. L'hardware di tre dei pin di I/O (9, 10 e 11) implementa la possibilità di gestirli direttamente attraverso la funzione analogWrite(), che permette di controllare la PWM del segnale analogico in uscita in maniera efficiente, senza dover eseguire linee di codice appositamente predisposte. Tale funzione deve ricevere in ingresso due parametri, il primo dei quali è il numero del pin pilotato, mentre il secondo rappresenta l'intensità della modulazione (espressa in una scala da 0 a 255): ad esempio, analogWrite(9, 128) attiverà un led collegato al pin 9 al 50% della sua luminositàì.

I/O Analogico

Sempre sulla Uno sono presenti altri 6 connettori specificamente dedicati a ingressi di segnali analogici (collegati quindi ad una ADC), che ricevono valori di tensione letti da sensori esterni, fino a un massimo di 5 Volt, che sono convertiti in 1024 livelli discreti (da 0 a 1023). Questi 6 connettori possono essere riprogrammati (sempre dal codice dello sketch sull'IDE) per funzionare come normali entrate/uscite digitali, aumentando quindi il numero di uscite digitali (mentre i connettori digitali non possono essere usati come analogici).

Software

 

L'ambiente di sviluppo integrato (IDE) di Arduino è un'applicazione multipiattaforma scritta in Java, ed è derivata dall'IDE creato per il linguaggio di programmazione Processing e per il progetto Wiring. È concepita per iniziare alla programmazione neofiti a digiuno dello sviluppo di software. Per permettere la stesura del codice sorgente, l'IDE include 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 caricare il programma funzionante ed eseguibile sulla scheda con un solo click. In genere non vi è bisogno di creare dei Makefile o far girare programmi dalla riga di comando.

Insieme all'IDE sono scaricati vari sketch di esempio, per introdurre l'utente alla programmazione della macchina; i temi sono molto basici: come gestire gli ingressi analogici e digitali, far accendere un LED in modo pulsante e variabile; si possono però anche affrontare problemi più complessi, come la gestione di un display LCD o di una scheda telefonica GSM[10]. Oltre alle librerie già incorporate (più di una decina), l'utente può aggiungerne con uno strumento di importazione compreso nell'IDE. Per vedere i risultati di uno sketch è attivabile dall'IDE una finestra seriale di monitoring, sulla quale far comparire l'output di istruzioni Serial.print(parametro) incorporate nello sketch stesso.