COS'É ARDUINO?
Immagine non trovata

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. Il nome della scheda deriva da quello del bar di Ivrea frequentato dai fondatori del progetto, nome che richiama a sua volta quello di Arduino d'Ivrea, Re d'Italia nel 1002.
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.
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 USB che 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.
La piattaforma hardware Arduino è spesso distribuita agli hobbisti in versione pre-assemblata, acquistabile in internet o in negozi specializzati.
Molte informazioni sull'hardware sono disponibili per chiunque, ma si tratta comunque di hardware closed source in quanto la distinta base e gli schemi circuitali funzionanti non vengono mai rilasciati direttamente dallo staff di Arduino. La community di utenti è comunque riuscita a reperire queste informazioni.
Solo grazie a questo sforzo da parte della community di Arduino e alla benevolenza dello staff di Arduino nei confronti di eventuali repliche o plagi, chi lo desidera può legalmente auto-costruirsi un clone di Arduino o derivarne una versione modificata, scaricando gratuitamente lo schema elettrico e l'elenco dei componenti elettronici necessari.

VERSIONI
Immagine non trovata

Una scheda Arduino tipica consiste in un microcontrollore a 8-bit AVR prodotto dalla Atmel, con l'aggiunta di componenti complementari per facilitarne l'incorporazione in altri circuiti. Nelle schede vengono usati i chip della serie megaAVR - nello specifico i modelli ATmega8, ATmega168, ATmega328, ATmega1280 e ATmega2560.
Esistono varie versioni dell' hardware Arduino (in totale sono 16):
1) Serial Arduino, programmata con una porta seriale DB9. Fa uso del microcontroller ATmega8;
2) Arduino Extreme, con interfaccia di programmazione USB, 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 ancor più piccola della Mini, utilizzante lo stesso controller ATmega168 SMD e alimentata tramite USB;
5) 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;
6) Arduino NG, con un'interfaccia USB per programmare e usare un ATmega8;
7) Arduino NG plus, con 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 USB e con un ATmega168 in un package DIL28;
10) 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;
11) Arduino Mega, che fa uso di un ATmega1280 a montaggio superficiale per I/O e memoria addizionale;
12) Arduino Uno, evoluzione della Duemilanove con un differente chip, programmabile e più economico, dedicato alla conversione USB-seriale;
13) Arduino Mega2560, che fa uso di un ATmega2560 (anch'esso a montaggio superficiale) ed è un'evoluzione dell'Arduino Mega;
14) Arduino Due, che fa uso di un Atmel SAM3X8E ARM Cortex-M3 CPU;
15) Arduino Zero Pro, dotata di un microcontrollore Atmel SAMD21 basato su core ARM Cortex M0+ a 32 bit.
16) Arduino Yún, che fa uso di un ATmega32u4 e del processore Atheros AR9331, quest'ultimo compatibile con una distribuzione Linux basata su OpenWrt e chiamata Linino OS.

SOFTWARE
Immagine non trovata

L'ambiente di sviluppo integrato (IDE) di Arduino è un'applicazione multipiattaforma in Java, ed è derivata dall'IDE creato per il linguaggio di programmazione Processing e per il progetto Wiring. È stata creata da Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, e David Mellis, per iniziare alla programmazione i neofiti, che siano a digiuno di pratica nello sviluppo di software.
Per permettere la stesura del codice sorgente, l'IDE include un editore di testo dotato inoltre di alcune particolarità, come il syntax highlighting, il controllo delle parentesi e l'indentazione automatica. L'editor è inoltre in grado di compilare e caricare sulla scheda Arduino il programma eseguibile in una sola passata e con un solo 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): la disponibilità della libreria rende molto più semplice implementare via software le comuni operazioni di input/output. I programmi di Arduino sono scritti in linguaggio derivato dal C/C++, ma all'utilizzatore, per poter creare un file eseguibile, si richiede solo di definire due funzioni:
void setup ()
– funzione invocata una sola volta all'inizio di un programma, da utilizzare per i settaggi iniziali che rimarranno invariati durante l'esecuzioni;
void loop ()
– funzione invocata ripetutamente, la cui esecuzione si interrompe solo quando si toglie l'alimentazione alla scheda.
Insieme all'IDE vengono 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. 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.
Nell'immagine di questa sezione possiamo osservare un semplice codice nel quale il led del pin 13 (unico Pin con led integrato) viene fatto accendere e spegnere fin quando non manca l'alimentazione ad Arduino.