Guida completa a ARDUINO MEGA

Guida completa a ARDUINO MEGA

Guida Completa Arduino Mega Intro - ProjectEMS

Introduzione

In questo articolo verrà introdotta la famosissima scheda elettronica open source made in Italy Arduino Mega, utilizzata da milioni di utenti di tutto il mondo per creare le più svariate applicazioni professionali e non.

La peculiarità di questo prodotto sta soprattutto nella modularità, espandibilità e versatilità, permettendo a tutti gli appassionati di elettronica, robotica o anche software/firmware di interfacciarsi con un qualsiasi oggetto di questo tipo.
Esistono differenti versioni di questa scheda, che si differenziano per capacità di calcolo, dimensioni, modalità di comunicazione con ambienti esterni, ecc. In questo articolo ci si concentrerà sulla versione Arduino Mega 2560.

Questo modello, rispetto ai precedenti, è caratterizzato da un numero maggiore di porte di input/output ed una maggiore memoria destinata agli sketch (set-up + loop), ovvero gli elenchi di comandi che la scheda dovrà elaborare.
In questo articolo verranno mostrate in dettaglio le caratteristiche hardware della scheda e saranno forniti anche alcuni cenni del software utilizzato per programmare la board e caricare il codice.

Come è fatto

Arduino Mega 2560 è composto da un microcontrollore ATmega2560, di 54 pin digitali e 16 analogici, 4 porte seriali UART, un cristallo oscillatore a 16 MHz, una porta USB e un jack di alimentazione, un header ICSP e un pulsante di reset.
Ha tre tipi di memoria: Flash, SRAM ed EPROM. La scheda lavora ad una tensione nominale di 5V e sopporta una corrente massima di 40 mA.

Guida Completa Arduino Mega - ProjectEMS

Per quanto riguarda le dimensioni fisiche, Arduino Mega, rispetto al suo predecessore, è più esteso soprattutto in lunghezza, misurando 101.52 mm, mentre la larghezza è pressoché invariata (53.3 mm). Il peso è di 37g.
Per poter utilizzare la scheda è sufficiente collegarla ad un PC tramite un cavo USB o alimentarla tramite una sorgente esterna. Arduino Mega è compatibile con gran parte delle schede di espansione, i cosiddetti shield progettati per le altre versioni di Arduino (UNO, Duemilanove, Diecimila). Allo stesso modo, è possibile caricare ed eseguire la maggior parte dei codici sviluppati per le altre versioni, senza quindi dover far modifiche o avere problemi di compatibilità.

Microcontrollore

La figura seguente mostra il “cervello” di Arduino Mega.

Guida Completa Arduino Mega ATMEGA - ProjectEMSGuida Completa Arduino Mega ATMEGA Spec - ProjectEMS

Esso è un microcontrollore a 8 bit di tipologia AVR-RISC che integra una memoria flash da 256 KB per l’immagazzinamento del codice, un SRAM da 8 KB e una EPROM da 4KB (che possono essere letti tramite la libreria EPROM), un oscillatore, delle porte di I/O e componenti aggiuntivi come ADC, DAC, contatori e timer. Il dispositivo è in grado di raggiungere un throughput di 16 MIPS a 16 MHz operando ad una tensione nominale di 5V.
ATMega per poter funzionare ha bisogno di un clock con una frequenza di 16 MHz; per questo motivo è necessaria la presenza di un circuito oscillante ad alta frequenza. Per questo motivo troviamo integrato nella scheda un oscillatore, basato su oscillazioni di un materiale piezoelettrico (quarzo).

Guida Completa Arduino Mega Piezo - ProjectEMS

Alimentazione

Guida Completa Arduino Mega Alimentazione - ProjectEMS

Arduino Mega può essere alimentato in 2 modi: tramite la porta USB o attraverso una sorgente esterna (adattatore AC-DC o batteria) utilizzando un power jack. In questo caso bisogna utilizzare un connettore da 2.1 mm con il positivo al centro.

Guida Completa Arduino Mega Alimentazione Jack - ProjectEMS

Accanto al Power Jack è posizionato un regolatore di tensione, il cui compito è quello di rendere stabile (ovvero senza eccessivi picchi) la tensione erogata ai componenti.

La tensione di funzionamento della scheda è compreso tra i 6 e i 22 volts, tuttavia nel caso si alimentasse la scheda con una tensione inferiore ai 7V o superiore ai 12V potrebbero verificarsi dei malfunzionamenti o instabilità. Infatti fornendo una tensione inferiore ai 7V di conseguenza i pin a 5V potrebbero non riuscire a raggiungere il valore nominale di tensione rendendo la scheda instabile. Nel secondo caso, alimentando Arduino con una tensione superiore ai 12V, il regolatore di tensione potrebbe surriscaldarsi eccessivamente con conseguente danneggiamento della scheda.
Il consiglio è quindi quello di mantenersi nel range 7-12 volts.

Per quanto riguarda la tensione di output, è possibile scegliere tra due differenti valori: 5V e 3.3V. Sono disponibili quattro pin di alimentazione:

  • Pin VIN, corrisponde alla tensione di ingresso della scheda quando si decide di alimentarla tramite sorgente esterna. Più nel dettaglio, è possibile usufruire di tale tensione nel caso l’input arrivi tramite il power jack.
  • Pin 5V, è utilizzato per alimentare il microcontrollore o gli altri componenti della scheda con una tensione stabilizzata a 5V.
  • Pin 3.3V, come il precedente ma utilizzato nel caso di componenti che necessitano di questo tipo di voltaggio.
  • Pin GND, corrisponde al pin negativo, ovvero la massa.

Input/Output

Arduino Mega è provvisto di 54 pin digitali e 16 analogici.

Guida Completa Arduino Mega Pin - ProjectEMS

I pin digitali possono essere utilizzati indifferentemente come input o output. Il settaggio della tipologia di pin (I/O) può essere effettuata tramite le funzioni pinMode(), digitalWrite(), e digitalRead(). Essi lavorano a 5V ed un massimo di 40 mA.
Come si può osservare dalla figura, alcuni di questi pin hanno inoltre delle funzioni aggiuntive.

  • I pin (RX/TX) sono utilizzati per poter inviare o ricevere dati tramite la comunicazione seriale TTL (si veda paragrafo Comunicazione)
  • I pin (PWM) forniscono un output di tipo PWM a 8 bit mediante la funzione analogWrite().
  • I pin (MISO) supportano la comunicazione SPI utilizzando la libreria SPI().
  • I pin (SDA) e (SCL) supportano la comunicazione I2C per mezzo della libreria WireLibrary
  • LED è un led integrato collegato al pin 13: impostando un valore su HIGH il led risulta acceso, mentre settandolo su LOW, il led si spegne.
    Per quanto riguarda i 16 pin analogici invece, essi operano esclusivamente come pin di input ed hanno una risoluzione di 10 bit, potendo quindi determinare fino a 1024 differenti valori.
    Su Arduino Mega sono inoltre presenti due altri pin: AREF e RESET.

  • AREF permette di configurare (tramite la funzione analogReference()) la tensione di riferimento per i pin analogici.
  • RESET è di solito utilizzata per avere a disposizione un pulsante di RESET aggiuntivo, nel caso che quello a bordo è reso inaccessibile da qualche shield aggiuntivo.

Comunicazione

Arduino Mega è in grado di comunicare con un computer, con un altro Arduino o anche con un microcontrollore. Per far Arduino Mega mette a disposizione 4 UART hardware per la comunicazione seriale di tipo TTL (5V). A differenza delle versioni precedenti, che utilizzavano un FTDI USB serial driver, nell’ultima versione è presente il microcontrollore ATMega I6U2 (meno potente del microcontrollore principale) programmato appositamente come convertitore seriale.
Arduino Mega inoltre è dotato di un ICSP (In Circuit Serial Programming) che permette di programmare Arduino ignorando la procedura di caricamento del codice (ad esempio già sviluppato in un altro ambiente) tramite bootloader; in tal modo si ha la possibilità di sfruttare più memoria sulla scheda, passando da 8 KB a 256 KB.

Guida Completa Arduino Mega Comunicazione - ProjectEMS

Attraverso la libreria SoftwareSerial è possibile effettuare una comunicazione seriale anche sui pin digitali della scheda. 

Software e installazione

Una delle grandi potenzialità di Arduino Mega è la sua facilità di programmazione. Collegandosi al sito ufficiale infatti è possibile scaricare il software e lavorare in un ambiente di sviluppo dedicato. Per chi ha già utilizzato C/C++ troverà molte similitudini con il linguaggio Arduino.
Un esempio di come si presenta l’ambiente di sviluppo è mostrato nella figura seguente

Guida Completa Arduino Mega Software E installazione - ProjectEMS

Descriviamo quindi i passi necessari all’installazione del software, dei driver e alla configurazione di Arduino Mega.
Dopo aver scaricato il software, è necessario connettere la scheda al PC tramite la porta USB. L’accensione del led PWR conferma l’avvenuta connessione.
A questo punto, in Gestione Dispositivi di Windows, bisogna individuare la porta COM e scegliere di aggiornare il driver, inserendo come path quello relativo al file .inf appena scaricato.
Dopo aver fatto ciò è possibile avviare l’applicazione, aprire un nuovo file scegliendo il tipo di scheda utilizzato (in questo caso Arduino Mega 2560).
La comunicazione può essere avviata dopo aver selezionato la COM corrispondente nel menù Tool/Serial Port.
Per caricare il codice (nuovo o esistente) sulla scheda è necessario cliccare su UPLOAD a ci seguirà un’accensione intermittente dei LED TX e RX. Ad upload avvenuto compare un messaggio di avvenuto caricamento e pochi secondi dopo il LED 13 inizierà ad accendersi ripetutamente.

Cosa ci riserva il futuro

Non si può dire con esattezza cosa ci riserverà il futuro per quanto riguarda la miniaturizzazione ulteriore dei componenti e le maggiori capacità di calcolo a disposizione. Di sicuro nell’immediato futuro quello che ci si può attendere è una completa integrazione con ambiente Eclipse o con Raspberry pi (server di aggregazione linux, vpn, mail, sms, domotica, comunicazione radio).
Inoltre sono in arrivo sul mercato nuovi microcontrollori con ad esempio più risorse, dual core, con connettività bluetooth 4.2 e wireless o anche microcontrollori con cpu ARM Cortex-M3 e si potrebbe pensare anche di poter aggiungere autonomamente alla scheda controllori alternativi, quindi non nativi di Arduino così da raggiungere livelli di personalizzazione ancora più elevati degli attuali.