Arduino è una piattaforma hardware low-cost programmabile, con cui è possibile creare circuiti “quasi” di ogni tipo per molte applicazioni, soprattutto in ambito di robotica ed automazione.
Si basa su un Microcontrollore della ATMEL, l’ATMega168/328: per esempio l’Arduino Uno monta un ATMega328. Nasce a Ivrea, nel 2005, da un’idea di un professore universitario, un Ingegnere Elettronico, Massimo Banzi, che decise di creare una piattaforma per i propri studenti, così da facilitarli nello studio dell’Interaction Design. Fu un completo successo, a tal punto da spingere l’ingegnere a rendere questa piattaforma, Open Source (in realtà è Open Hardware) cioè è possibile trovare sul sito ufficiale www.arduino.cc, i circuiti, i componenti e addirittura le istruzioni per realizzarla da soli. Ciò che dovrebbe interessare in realtà sono gli schemi circuitali: essendo Open, e quindi visionabili da tutti, possono essere continuamente migliorati dalla comunità e grazie ad essi sono state sviluppate un numero incredibile di librerie software che rendono davvero semplice l’interfaccia con periferiche di qualsiasi tipo.
Fu un gruppo di studenti della facoltà di Ingegneria Informatica a scrivergli la libreria, l’IDE (libreria portabile su ogni sistema operativo) e le prime API; grazie a questi pre-ingegneri, Arduino tutt’oggi programma in modo fluido, semplice e molto intuitivo. In Internet, addirittura, si possono trovare librerie già scritte in base al nostro bisogno. Per esempio se vogliamo fare qualche applicazione e ci serve qualche funzione in particolare o qualche supporto per sensori possiamo ricorrere, appunto, alla navigazione in Internet.
C’è da aggiungere un particolare molto importante, ogni programma che si scrive su Arduino sarà naturalmente avviato a loop() finché non si toglie l’alimentazione dal dispositivo. Quando lo colleghiamo ad una fonte di alimentazione (ad esempio la USB del PC o anche una comunissima Batteria da 9V) si accende e avvia il programma caricato dall’IDE a loop infinito. Questo continua fino a quando non lo si uccide a meno che non togliamo la batteria o stacchiamo il cavo.
Questo framework è studiato per artisti, designers, hobbiesti e chiunque sia interessato a creare oggetti interattivi. La scheda Arduino è in grado di interagire con l’ambiente in cui si trova ricevendo informazioni da una grande varietà di sensori. Ma non si parla solo di sensori, Arduino può comandare luci, LED, motori e altri attuatori. Il linguaggio di programmazione è basato su Wiring (un ambiente di programmazione Open-Source pensato per una facile applicazione per semplificare la programmazione in C e C++) e sull’interfaccia Processing. I progetti basati su arduino possono essere indipendenti oppure essere interfacciati con altri software come Processing, MaxMSP, Flash e altri. Il design (EAGLE) e la schematica (CAD), sono liberi, scaricabili e possono essere modificati a piacimento.
Il Team Arduino è composto da Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino e David Mellis.
Spiegazione dei Pin:
I Pin sono connettori femmina, che hanno molteplici utilizzi, che vanno rispettate per evitare il rischio di un corto circuito che puo’ arrivare anche al rischio di incendio e/o danneggiamento del computer a cui è collegato Arduino.
• AREF – Questo pin regola il voltaggio di massima risoluzione degli input analogici
• GND – massa
• PWM – I pin a disposizione con questa funzionalità sono 6. Il PWM, o pulse width modulation permette di creare un’onda di corrente regolabile. Questa è molto utile per comandare svariati sistemi elettronici. L’esempio piu’ stupido è comandare i servomotori da modellismo.
• TX – RX – porta seriale
• RESET – Questo è un PIN digitale. Se la lettura di questo PIN=HIGH il controller si resetta
• PIN uscita corrente a 3.3V
• PIN uscita corrente a 5V
• Vin – PIN input corrente per alimentazione controller
• Analog in – PIN input analogici. Possono percepire molto precisamente una corrente DC tra 0 e 5V, resistuendo un valore da 0 a 1023.
• Digital – PIN digitali programmabili per essere input o output, percepiscono se è presente o no corrente restituendo LOW se non c’è corrente e HIGH se c’è corrente, oppure possono essere programmati per generare corrente in output di massimo 40mA.
Spiegazione dell’Atmega328:
Atmega328 è la sigla di questo microcontrollore. All’interno di questo componente viene salvato il programma scritto dall’utente e tutta la configurazione di base che permette ad Arduino un funzionamento corretto. Quando acquisterete arduino riceverete uno di questi microcontrollori con solamente il Bootloader all’interno dell’ATMega. Questo “file” è una configurazione di base che permette l’utilizzo del software dedicato.
Questo setting puo’ essere modificato per utilizzare un software differente e per modificare la posizione e configurazione dei PIN.
Caratteristiche della scheda Arduino Duemilanove
• Clock Speed 16 MHz
• EEPROM 512 bytes (ATmega168) o 1 KB (ATmega328)
• SRAM 1 KB (ATmega168) o 2 KB (ATmega328)
• Memoria flash 16 KB (ATmega168) o 32 KB (ATmega328) di cui 2kb usati dal bootloader
• Corrente DC per il PIN 3.3v 50 mA
• Corrente DC I/O per PIN 40 mA
• PIN input analogici 6
• PIN I/O digitali 14 (di cui 6 PWM output)
• Limiti voltaggio alimentazione 6-20V
• Voltaggio alimentazione 7-12V
• Voltaggio operativo 5V
bootloader: è un pezzo di codice scritto sul chip della scheda Arduino. Permette di verificare se viene inviato un codice, lo sketch, tramite la porta seriale. Quindi se c’è un codice, lo legge e lo scrive nella memoria.