Magazine Tecnologia

Arduino: Il microcontrollore e le sue caratteristiche

Creato il 08 maggio 2013 da Scimiazzurro

La grande ingegneria informatica/elettronica italiana ha partorito, da anni, una serie di microcontrollori programmabili dandole il nome di Arduino.Questi è un framework OpenSource realizzato presso l’Interaction Design Institute, un istituto di formazione post-dottorale con sede a Ivrea, fondato da Olivetti e Telecom Italia.Arduino 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. L’Hardware di Arduino è venduto per gli hobbisti in versione pre-asseblata.

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 chipdella serie megaAVR - nello specifico i modelli ATmega8, ATmega168, ATmega328, ATmega1280 e ATmega2560.

Fino a oggi sono state commercializzate 14 versioni dell’hardware Arduino.

  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 ancora 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 50mm, per circa 8mm di spessore), per applicazione su indumenti, con lo stesso ATmega168 in versione SMD[4]
  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 ed è un’evoluzione dell’Arduino Mega.
  14. Arduino Due, che fa uso di un Atmel SAM3X8E ARM Cortex-M3 CPU.

La programmazione del microcontroller 

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

Per implementare il comportamento interattivo, Arduino è fornita di funzionalità di input/output (I/O), grazie alle quali essa riceve i segnali raccolti dasensori 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 

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.

Alimentazione elettrica

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.

Nell’immagine seguente i vari modelli a confronto:

arduino

Sviluppo Codice

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.

Arduino_IDE_-_v0011_Alpha

Il prezzo della Board oscilla tra i 20,00 per l’ Arduino UNO e i 40,00 PER l’Arduino DUE.


Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :