Pagine

giovedì 5 marzo 2009

Arduino

Cosa è...

Arduino è una scheda elettronica sulla quale è stato montato un microcontrollore AVR. La scheda può comunicare con il computer tramite un cavo USB che emula la connessione di tipo seriale (da una velocità di 9600 a 11560).
Tale connessione, oltre allo scambio di dati con il PC permette la programmazione del microcontrollore. Sulla scheda, inoltre, sono montati diversi "piedini" che possono essere utilizzati come OUTPUT o come INPUT a seconda di cosa preferisce l'utente e di cosa si vuole interfacciare alla scheda. A questi piedini possono essere collegati, tramite fili elettrici, molteplici sensori (se configurati come INPUT) o display, lampade, LED (se configurati come OUTPUT).

Il linguaggio che permette di controllare l'AVR è decisamente semplice e molto simile, come sintassi al C. Lavorando ad una frequenza di 16Mhz, assorbe da 6V-12V (quindi può essere alimentata anche con la presa dell'accendino in auto) e 300mA di corrente.

Shields

Come se tutto questo non bastasse, la scheda Arduino può essere "espansa" tramite moduli aggiuntivi che si "montano" sui piedini e che vengono chiamati "shield".
Esistono decine di shield diversi; alcuni sono opera di smanettoni, altri semplici prototipi senza finalità, altri ancora sono ufficiali e rilasciati dalla medesima azienda che produce la scheda, Tinker! altri ancora forniti da aziende in giro per il mondo come LiquidWare .
Molti riguardano metodi alternativi per la comunicazione con il computer. Ad esempio si può montare uno shield che permette ad Arduino di comunicare con il mondo esterno via bluethoot o tramite ZigBee e addirittura via Ethernet. Altri permettono di memorizzare informazioni su EEPROM esterne oppure di controllare Motori o gruppi di lampade. Altri ancora sono più "esotici" ed hanno funzioni "strane" come quello in figura, il tank shield della LiquidWare che permette di portare in giro Arduino ...









Linguaggio di programmazione

Come scritto prima, il linguaggio di programmazione è estremamente semplice e molto simile al C. Il listato si divide in tre parti fondamentali.
  1. La definizione delle variabili o delle costanti che serviranno durante tutto il programma
  2. La definizione della funzione setup che inizializza la comunicazione con il PC, definisce quali piedini sono in ingresso e quali in uscita ed altre particolarità all'uopo
  3. La definizione della funzione loop in cui si definiscono le azioni che Arduino deve effettuare ciclicamente 16 milioni di volte al secondo.
Queste tre fasi possono essere più o meno lunghe a seconda del programma. Segue un semplice esempio, una sorta di HelloWorld che permette di fare lampeggiare un LED ciclicamente direttamte compiato dal sito Arduino/Tutorial.

int ledPin = 13; // LED connected to digital pin 13
void setup(){
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}

void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}

Conclusioni

Arduino permette di espandere le funzionalità di un computer a ciò che lo circonda; permette di fargli prendere coscienza del mondo esterno e di interagire con esso. Le possibilità di utilizzo ed i campi di applicazioni sono veramente enormi.
Personalmente sto costruendo due prototipi, uno per verificare la temperatura e la umidità in casa e di registrare le informazioni ogni ora su un file di testo e un altro che mi permette di simulare un telecomando.
In giro però ho visto progetti per aiutare i disabili nell'utilizzo dei computer, applicazioni per ospedali, musei e scuole.
La cosa più bella di questo strumento è che non è necessario essere esperti informatici o ingegneri elettronici. Certo la cosa aiuterebbe senza dubbio ma non è indispensabile. Chiunque abbia acceso un PC in vita propria e sia spinto da grande curiosità può cimentarsi con questa scheda estremamente semplice.
Di seguito riporterò altre informazioni su questa piattaforma.

2 commenti:

  1. E' semplicemente magnifico.
    Ho cercato su riviste sensori o stazioni meteo , ma fra prezzi e problemi di interfacciamento mi stavo stufando.
    Forse con Arduino riesco a realizzare questo mio progettino. Posso chiederti delle info.

    fabio.demarco@acantho.com

    RispondiElimina
  2. Ciao Fabio, certamente che puoi.
    Chiedi e se riuscirò a darti delle risposte ben volentieri.

    RispondiElimina