Arduino (hardware)
Arduino è un framework open source che permette la prototipazione rapida e l'apprendimento veloce dei principi fondamentali dell'elettronica e della programmazione. È composto da una piattaforma hardware per il physical computing sviluppata presso l'Interaction Design Institute, un istituto di formazione post-dottorale con sede a Ivrea, fondato da Olivetti e Telecom Italia[1]. Il nome della scheda deriva da quello di un bar di Ivrea (che richiama a sua volta il nome di Arduino d'Ivrea, Re d'Italia nel 1002) frequentato da alcuni dei fondatori del progetto[2].
Questa si basa su un circuito stampato che integra un microcontrollore con pin connessi alle porte I/O, un regolatore di tensione e quando necessario un'interfaccia USB che permette la comunicazione con il computer. A questo hardware viene affiancato un ambiente di sviluppo integrato (IDE) multipiattaforma (per Linux, Apple Macintosh e Windows). Questo software permette anche ai novizi di scrivere programmi con un linguaggio semplice e intuitivo derivato da C e C++ chiamato Wiring, liberamente scaricabile e modificabile.
Arduino può essere utilizzato per lo sviluppo di oggetti interattivi stand-alone ma può anche interagire, tramite collegamento, 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. La particolarità del progetto è che le informazioni sull'hardware e soprattutto i progetti sono disponibili per chiunque: si tratta quindi di un hardware open source, distribuito nei termini della licenza Creative Commons Attribution-ShareAlike 2.5[3]. In questo modo, chi lo desideri 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[3]. Questa possibilità ha consentito lo sviluppo di prodotti Arduino compatibili da parte di piccole e medie aziende in tutto il mondo, e infatti oggi è possibile scegliere tra un'enorme quantità di schede Arduino compatibili. Ciò che accomuna questi prodotti inerenti elettronica sperimentale e sviluppo è il codice sorgente per l'ambiente di sviluppo integrato e la libreria residente che sono resi disponibili, e concessi in uso, secondo i termini legali di una licenza libera, GPLv2.
Grazie alla base software comune, ideata dai creatori del progetto, per la comunità Arduino è stato possibile sviluppare programmi per connettere a questo hardware più o meno qualsiasi oggetto elettronico, computer, sensori, display o attuatori. Dopo anni di sperimentazione è oggi possibile fruire di un database di informazioni vastissimo.
Il team di Arduino è composto da Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, e David Mellis. Il progetto prese avvio in Italia a Ivrea nel 2005, con lo scopo di rendere disponibile, a progetti di Interaction design realizzati da studenti, un dispositivo per il controllo che fosse più economico rispetto ai sistemi di prototipazione allora disponibili. I progettisti riuscirono a creare una piattaforma di semplice utilizzo ma che, al tempo stesso, permetteva una significativa riduzione dei costi rispetto ad altri prodotti disponibili sul mercato. A ottobre 2008 in tutto il mondo erano già stati venduti più di 50.000 esemplari di Arduino.
Indice |
Schede Arduino [modifica]
Hardware [modifica]
L'hardware originale Arduino è interamente realizzato in Italia dalla Smart Projects, mentre i cloni della scheda possono essere realizzati da chiunque in qualsiasi parte del mondo.
Una scheda Arduino tipica consiste in un microcontroller a 8-bit AVR prodotto dalla Atmel, con l'aggiunta di componenti complementari per facilitarne l'incorporazione in altri circuiti. In queste schede sono usati chip della serie megaAVR - nello specifico i modelli ATmega8, ATmega168, ATmega328, ATmega1280 e ATmega2560.
Molte schede includono un regolatore lineare di tensione a 5 volt e un oscillatore a cristallo a 16 MHz, sebbene alcune implementazioni, come ad esempio la piccola LilyPad[4], abbiano un clock di 8 MHz e facciano a meno dello stabilizzatore di tensione.
Versioni [modifica]
Fino a oggi sono state commercializzate 14 versioni dell'hardware Arduino.[3]
- 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 ancora più piccola della Mini, utilizzante lo stesso controller ATmega168 SMD e alimentata tramite USB
- LilyPad Arduino, un progetto minimalista (scheda circolare dal diametro di 50mm, per circa 8mm di spessore), per applicazione su indumenti, con lo stesso ATmega168 in versione SMD[4]
- 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 ed è un'evoluzione dell'Arduino Mega.
- Arduino Due, che fa uso di un Atmel SAM3X8E ARM Cortex-M3 CPU.
La programmazione del microcontroller [modifica]
Inoltre, in alcuni casi, il microcontroller della scheda è pre-programmato con un bootloader che semplifica il caricamento dei programmi sulla memoria flash incorporata nel chip.
A livello concettuale, tutte le schede sono programmate attraverso una porta seriale RS-232, ma il modo in cui questa funzionalità è implementata 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 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 usavano 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 [modifica]
Per implementare il comportamento interattivo, Arduino è fornita di funzionalità di input/output (I/O), grazie alle quali essa riceve i segnali raccolti da sensori esterni. In base a tali valori, il comportamento della scheda è gestito dal microcontroller, in base alle decisioni determinate dal particolare programma in esecuzione in quel momento sulla scheda. L'interazione con l'esterno avviene attraverso attuatori pilotati dal programma attraverso i canali di output in dotazione.
Connettori I/O [modifica]
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". Inoltre, sono 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, input o output, è decisa dallo sketch programmato sull'IDE.
Sei dei canali I/O possono produrre 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[5]. 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 in uscita in maniera efficiente, senza dover eseguire linee di codice appositamente predisposte[6]. La funzione accetta due parametri, il primo dei quali è il pin pilotato mentre il secondo rappresenta l'intensità della modulazione (espressa su una scala da 0 a 255): così, ad esempio, analogWrite(9, 128) attiverà un led collegato al pin 9 al 50% della sua luminosità[7].
- I/O analogico
Sempre sulla Uno, sono presenti altri 6 connettori specificamente dedicati a ingressi di segnali analogici (collegati quindi ad una ADC), cioè valori di tensione letti da sensori esterni i cui valori, fino a un massimo di 5 Volt, 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.
Nella seguente tabella sono riepilogate le dotazioni dell'hardware dei vari modelli:
| Arduino | Microcontrollore | Flash KiB |
EEPROM KiB |
SRAM KiB |
Pin di I/O digitale |
...di cui con PWM |
Pin di Input analogico |
Tipo interfaccia USB |
Dimensioni in pollici |
Dimensioni in millimetri |
|---|---|---|---|---|---|---|---|---|---|---|
| Diecimila | ATmega168 | 16 | 0,5 | 1 | 14 | 6 | 6 | FTDI | 2,7 in × 2,1 in | 68,6 mm × 53,3 mm |
| Due [8] | Atmel SAM3X8E | 512 | 96 | 54 | 12 | 12 | ATmega16U2 + native host | 4 in × 2,1 in | 101,6 mm × 53,3 mm | |
| Duemilanove | ATmega168/328P | 16/32 | 0,5/1 | 1/2 | 14 | 6 | 6 | FTDI | 2,7 in × 2,1 in | 68,6 mm × 53,3 mm |
| Uno | ATmega328P | 32 | 1 | 2 | 14 | 6 | 6 | ATmega8U2 | 2,7 in × 2,1 in | 68,6 mm × 53,3 mm |
| Leonardo | Atmega32u4 | 32 | 1 | 2,5 | 20 | 7 | 12 | Atmega32u4 integrato | 2,7 in × 2,1 in | 68,6 mm × 53,3 mm |
| Mega | ATmega1280 | 128 | 4 | 8 | 54 | 14 | 16 | FTDI | 4 in × 2,1 in | 101,6 mm × 53,3 mm |
| Mega2560 | ATmega2560 | 256 | 4 | 8 | 54 | 14 | 16 | ATmega8U2 | 4 in × 2,1 in | 101,6 mm × 53,3 mm |
| Fio | ATmega328P | 32 | 1 | 2 | 14 | 6 | 8 | Nessuno | 1,6 in × 1,1 in | 40,6 mm × 27,9 mm |
| Nano | ATmega168 o ATmega328 | 16/32 | 0,5/1 | 1/2 | 14 | 6 | 8 | FTDI | 1,70 in × 0,73 in | 43 mm × 18 mm |
| LilyPad | ATmega168V o ATmega328V | 16 | 0,5 | 1 | 14 | 6 | 6 | Nessuno | ⌀ 2 in | ⌀ 50 mm |
Alimentazione elettrica [modifica]
L'alimentazione della scheda può avvenire attraverso la porta USB del computer, o attraverso la maggior parte degli alimentatori USB, oppure attraverso un adattatore in corrente continua a 9 volt, con connettore cilindrico (diametro 2,1 mm e positivo centrale). In quest'ultimo caso, la scheda commuta automaticamente sull'alimentazione esterna quando il connettore dell'alimentatore esterno è inserito, mentre commuta autonomamente sull'alimentazione USB in caso di disconnessione del connettore. La Arduino-NG e la Arduino Diecimila, versioni meno recenti, necessitano di essere commutate a mano, azionando uno switch ubicato tra la porta USB e l'ingresso dell'alimentazione esterna.
Schede Arduino compatibili [modifica]
L'enorme quantità e l'estrema variabilita d'uso e di componenti rendono difficile definire univocamente una scheda Arduino compatibile. Solitamente, contiene un microcontroller a 8 16 o 32 bit AVR, PIC o ARM, con clock variabile tra gli 1 e 96 MHz. Molte schede incorporano componenti aggiuntivi pensati per i più svariati utilizzi.
La programmazione del microcontrollore [modifica]
La programmazione può avvenire tramite il protocollo ISP e un'altra scheda Arduino utilizzata come programmatore, tramite la usb (in alcuni casi il microcontrollore contiene usb hardware) oppure grazie a un programmatore esterno dedicato.
Software [modifica]
| Per approfondire, vedi Arduino (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 artisti e altri 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 lanciare 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.
Cloni [modifica]
Benché i progetti hardware e software siano resi disponibili con licenze copyleft, gli sviluppatori hanno espresso il desiderio che il nome "Arduino" (o suoi derivati) venga riferito solo al prodotto originale e non sia usato, senza permesso, per indicare opere derivate.
Il documento che esprime la policy ufficiale sull'uso del nome "Arduino" mette l'accento su come il progetto sia aperto a incorporare lavori altrui nel prodotto ufficiale.[9]
Quale conseguenza di queste convenzioni sulla protezione del nome, un gruppo di utilizzatori ha effettuato un "fork" (nel senso esteso del termine) della "the Arduino Diecimila", distribuendo una scheda equivalente chiamata "Freeduino". Il nome "Freeduino" non è però un marchio commerciale ma è liberamente utilizzabile da chiunque lo desideri.
Note [modifica]
- ^ Massimo Banzi. BetaBook, il manuale di Arduino: Cap. 3 - Un po’ di storia di Arduino. Apogeo. URL consultato in data 12 luglio 2011.
- ^ Justin Lahart (27 novembre 2009). Taking an Open-Source Approach to Hardware. The Wall Street Journal (in inglese). URL consultato in data 11 maggio 2011.
- ^ a b c (EN) Hardware. Arduino.cc. URL consultato in data 10 maggio 2011.
- ^ a b LilyPad Arduino, dal sito ufficiale
- ^ Banzi, Massimo (2009). Getting Started with Arduino. Make Books (1ª ed.): p. 56 (in inglese).
- ^ Banzi, Massimo (2009). Getting Started with Arduino. Make Books (1ª ed.): 57 (in inglese).
- ^ Banzi, Massimo (2009). Getting Started with Arduino. Make Books (1ª ed.): 58 (in inglese).
- ^ Chirgwin, Richard, Arduino to add ARM board this year, The Register, 20 settembre 2011. URL consultato in data 20 settembre 2011.
- ^ (EN) Frequently Asked Questions. Arduino.cc. URL consultato in data 10 maggio 2011.
Bibliografia [modifica]
- Banzi, Massimo (13 dicembre 2009). BetaBook, il manuale di Arduino. Apogeo (versione β) (in italiano). URL consultato in data 12 luglio 2011.
- Noble, Joshua (15 luglio 2005). Programming Interactivity: A Designer's Guide to Processing, Arduino, and openFramework. O'Reilly Media (prima edizione): pp. 768 (in inglese).
- Banzi, Massimo (24 marzo 2009). Getting Started with Arduino. Make Books (prima edizione): pp. 128 (in inglese).
- Sciamanna, Lucio (2010). [www.sanditlibri.it Arduino il microprocessore per tutti]. Sandit: pp. 140 (in italiano). ISBN 978-88-95990-71-2
- Schmidt, Maik (2011). Il manuale di Arduino. Apogeo: pp. 242 (in italiano). ISBN 978-88-503-3044-7
- Margolis, Michael (2011). Arduino progetti e soluzioni. Tecniche Nuove: pp. 625 (in italiano). ISBN 978-88-481-2539-0
- Banzi, Massimo (2012). Arduino La guida ufficiale. Tecniche Nuove: pp. 140 (in italiano). ISBN 978-88-481-2726-4
- Majocchi, Simone (Giugno 2012). Arduino UNO Programmazione avanzata e Librerie di sistema. Vispa Edizioni: pp. 224 (in italiano). ISBN 978-88-907430-2-3
Voci correlate [modifica]
Altri progetti [modifica]
Commons contiene immagini o altri file su Arduino (hardware)
Collegamenti esterni [modifica]
- (EN) Sito ufficiale
- (EN) Arduino wiki, aka Playground
- Playground Italiano
- Libreria Arduino per moduli audio LPM11162
- Il documentario di Wired sulla nascita di Arduino
- Componenti elettronici per circuiti Arduino
- gioblu.com - Tutorials e guide Arduino in italiano
- Tutorial e guide con codici da scaricare per programmare con Arduino
- Guide ed esempi per cominciare con Arduino
- (EN) Tutorial completo su Arduino
- (EN) Make: Articolo su Arduino
- (EN) "Wiring" software project
- di Arduino su Flickr
- (EN) Arduino tutorial – diviso in molte lezioni con fotografie e suggerimenti e per strumenti appropriati per principianti
- (EN) Introduction to the Arduino - Weekend Project Podcast
- (EN) Sheepdog Software's Introduction to Arduino: Pagine "per iniziare" e tutorial sulla programmazione con aiuto sull'hardware
- Arduino e Actionscript Tutorial – Video, immagini e sorgenti per realizzare progetti con Arduino alcuni dei quali con integrazione Flash e Flex
- (PT) Tutorial di Arduino – in portoghese, ma con video e codici sorgente
- (EN) Esempi estremamente documentati per l'implementazione di componenti elettronici – (Fritzing - sviluppato dai partecipanti all'"Interaction Design Lab" della Università di scienze applicate di Potsdam, Germania)
- (EN) Minibloq – ambiente di sviluppo integrato per Arduino
- Elettronica IN - Primi Passi con Arduino UNO (Libro in italiano)
- Mauro Alfieri, tutorial e progetti con codici spiegati passo passo - in Italiano
- Treviso Arduino User Group Nato nel 2011, il Treviso Arduino User Group è un hacker collective situato a Montebelluna, in provincia di Treviso. Lo scopo dello user group e di imparare, condividere la conoscenza, e realizzare progetti con Arduino e apparati open-hardware. - in Italiano