Approccio con Arduino – Le schede di prima generazione

La gran varietà di schede Arduino può mettere in crisi il neofita che per primo si avvicina al mondo dell’elettronica e vuole farlo con uno di questi prodotti. Cerchiamo di capire come scegliere il prodotto migliore per le nostre esigenze, sia nel caso si cerchi una scheda per iniziare sia che se ne cerchi una più performante di quella che abbiamo già.

In questo articolo analizzeremo le caratteristiche principali di ogni scheda e vedremo quali sono i punti che possono influenzare la scelta finale.

Sfatiamo subito un mito: “più potente non vuol dire migliore”. Come ogni altro prodotto, anche una scheda Arduino va scelta in base al progetto da realizzare e non leggendo semplicemente le caratteristiche tecniche. Vediamo le schede principali dell’offerta di Arduino.

Arduino UNO

Questa è l’Arduino per antonomasia. La UNO, diretta erede della precedente Duemilanove, è una scheda compatta, facile da utilizzare e ben supportata sia a livello hardware che software.

Arduino UNO R3

La scheda è basata sull’ATmega328P di Atmel, un microcontrollore ad 8 bit che lavora a 16 MHz di clock. La connessione al PC è assicurata da una porta USB standard che, grazie al bootloader Optiboot installato sul chip, permette di fare l’upload dei programmi in modo molto semplice direttamente dall’ambiente di sviluppo. E’ presente sulla scheda anche un connettore jack japan per alimentare l’Arduino da una fonte esterna in caso di installazioni in progetti standalone. La scheda opera a 5 Volt ed è facilmente utilizzabile con una gran varietà di hardware perché il layout della scheda, con gli header montati in maniera asimmetrica, deriva dalla Duemilanove (a sua volta derivata dalla Diecimila), e questa retrocompatibilità permette di usare tutti gli shield in circolazione prodotti fino ad oggi. A livello software esistono tantissime librerie che permettono di utilizzare un sacco di componenti elettronici quali sensori, driver per matrici di led, shift register, chip di memoria, ecc…

Caratteristiche tecniche principali:

  • MCU: Atmel ATmega328P a 16 MHz
  • Memoria Flash (programma): 32 kB (512 byte sono riservati al bootloader)
  • Memoria SRAM (per le variabili del programma):  2048 byte
  • Memoria EEPROM (per salvataggio di impostazioni o altro): 1024 byte
  • Pin di I/O: 20, di cui 14 I/O digitali e 6 usabili I/O digitali oppure come input analogici
  • PWM: 6 pin
  • ADC: 6 canali a 10 bit
  • Tensione operativa: 5 V
  • Comunicazione: 1 Seriale – 1 I2C – 1 SPI

Arduino MEGA2560

L’Arduino MEGA2560 è stata sviluppata per venire incontro alle esigenze degli utenti che necessitano di una scheda con più linee di I/O e più memoria per gli sketch.

Arduino MEGA2560

La MEGA2560 è basata sull’omonimo microcontrollore Atmel ATmega2560 ad 8 bit operante a 16 MHz, che offre 8 volte la memoria dell’ATmega328P della UNO e ben 70 pin, di cui 54 digitali e 16 ingressi analogici usabili anche come I/O digitali. Come la UNO utilizza un chip ATmega16U2 programmato per fungere da convertitore seriale/USB così da poter essere connessa direttamente al PC. La tensione di funzionamento è 5 V. Il layout riprende quello della UNO nella metà di sinistra, aggiungendo altri connettori nella parte destra per i pin in più. Essendo il chip della stessa famiglia AVR ad 8 bit di quello della UNO ed essendo il compilatore identico, i programmi generici scritti per la UNO girano senza modifiche anche sulla MEGA2560. Inoltre il team di sviluppo ha cercato di mantenere sui pin in comune con la UNO le stesse funzionalità base per cui il led integrato è sul pin 13 anche sulla MEGA, la seriale è sulla coppia D0/D1 e così via. Solo i programmi che utilizzano in maniera diretta l’hardware della UNO possono avere problemi di compilazione, così come i programmi scritti specificatamente per la MEGA2560 possono non funzionare sulla UNO.

Caratteristiche tecniche principali:

  • MCU: Atmel ATmega2560 a 16 MHz
  • Memoria Flash (programma): 256 kB (8 kB sono riservati al bootloader)
  • Memoria SRAM (per le variabili del programma):  8 kB
  • Memoria EEPROM (per salvataggio di impostazioni o altro): 4 kB
  • Pin di I/O: 70, di cui 54 I/O digitali e 16 usabili I/O digitali oppure come input analogici
  • PWM: 15 pin
  • ADC: 16 canali a 10 bit
  • Tensione operativa: 5 V
  • Comunicazione: 4 Seriali – 1 I2C – 1 SPI

Arduino LEONARDO

La LEONARDO è una scheda recente basata sul microcontrollore ATmega32U4.

Arduino LEONARDO

Rispetto ai chip della UNO e della MEGA2560, questo integra il convertitore seriale/USB in hardware per cui può essere collegato direttamente al computer senza microcontrollori intermedi. Anzi, questa caratteristica permette alla scheda di essere riconosciuta dal sistema operativo come una periferica HID (Human Interface Device) tipo un mouse o una tastiera: la LEONARDO ha librerie specifiche che permettono di poter simulare appunto questi dispositivi in modo da poter spedire un tasto al sistema oppure muovere il puntatore del mouse o far leggere un click. A parte questa particolarità la LEONARDO è molto compatibile con la UNO: presenta lo stesso layout e la stessa disposizione dei pin. Le uniche differenze riguardano la gestione della seriale, che sulla LEONARDO è fatta, come detto, in maniera diretta per cui per accedere ai pin RX e TX è stata creata una classe Serial1, mentre la Serial classica indica al chip di comunicare col computer. Oltre a questo, il chip ha anche 12 ingressi analogici rispetto ai 6 della UNO: gli ingressi in più sono indicati sul retro della scheda con una didascalia aggiuntiva. Il chip è leggermente differente a livello hardware per cui bisogna prestare attenzione nell’uso di software che accede in maniera diretta all’hardware dell’ATmega328P perché esso potrebbe non girare sull’ATmega32U4. Altra differenza è la porta Micro-USB per la connessione al PC, che necessita dell’uso di un cavetto tipo quello dei cellulari più recenti.

Caratteristiche tecniche principali:

  • MCU: Atmel ATmega32U4 a 16 MHz
  • Memoria Flash (programma): 32 kB (4 kB sono riservati al bootloader)
  • Memoria SRAM (per le variabili del programma):  2,5 kB
  • Memoria EEPROM (per salvataggio di impostazioni o altro): 1 kB
  • Pin di I/O: 20, di cui 8 I/O digitali e 12 usabili I/O digitali oppure come input analogici
  • PWM: 7 pin
  • ADC: 12 canali a 10 bit
  • Tensione operativa: 5 V
  • Comunicazione: 1Seriale  – 1 I2C – 1 SPI

Arduino ETHERNET

L’Arduino ETHERNET è una scheda pensata per chi necessita di un prodotto che integri le possibilità di programmazione di una Arduino con le potenzialità offerte dallo shield Ethernet per l’accesso ad internet. La scheda monta infatti sia l’ATmega328P che il controller ethernet Wiznet W5100, entrambi in formato SMD.

Arduino ETHERNET

Per essa esiste anche un modulo aggiuntivo denominato POE (Power Over Ethernet) che permette alla scheda di prendere l’alimentazione direttamente dal cavo ethernet. La scheda è offerta anche con il modulo POE già saldato. In cosa differisce la ETHERNET dalla UNO? Nel fatto che non c’è la porta USB per il collegamento al computer, sostituita dalla porta RJ45, per cui la programmazione può essere effettuata solo tramite il connettore laterale che va collegato ad un convertitore seriale/USB esterno. Altra differenza è la presenza dello slot per schede micro-SD, una scelta questa dettata dal fatto che la Ethernet viene spesso utilizzata per ospitare piccoli server e sulla schedina vengono memorizzate le pagine HTML da visualizzare sui browser. Per il resto, la ETHERNET è una UNO a tutti gli effetti, con l’unica limitazione che alcuni pin sono riservati a particolari funzioni: 4 sono utilizzati per la programmazione via SPI; altri 4 per la connessione con la micro-SD e 2 per la comunicazione con il controller W5100.

Caratteristiche tecniche principali:

  • MCU: Atmel ATmega328P a 16 MHz
  • Memoria Flash (programma): 32 kB (512 byte sono riservati al bootloader)
  • Memoria SRAM (per le variabili del programma):  2048 byte
  • Memoria EEPROM (per salvataggio di impostazioni o altro): 1024 byte
  • Pin di I/O: 20, di cui 14 I/O digitali e 6 usabili I/O digitali oppure come input analogici
  • PWM: 6 pin
  • ADC: 6 canali a 10 bit
  • Tensione operativa: 5 V
  • Comunicazione: 1 Seriale – 1 I2C – 1 SPI

Arduino DUE

L’Arduino DUE è una scheda molto particolare. E’ un prodotto di fascia alta, destinata ad un’utenza esperta che ricerca prestazioni avanzate. E’ infatti basata sull’Atmel SAM3X8E, un microcontrollore a 32 bit che integra un core ARM Cortex-M3 ed opera a 84 MHz di clock.

Arduino DUE R3

Il SAM3X è una MCU che offre una grande varietà di periferiche integrate, a cominciare da un RTC hardware per finire a due DAC, alcune non supportate dalle librerie di sistema come l’Ethernet MAC 10/100. Altra differenza sostanziale è il fatto che essa opera a 3,3 V contro i 5 V delle altre schede. Questo fatto va tenuto a mente quando si collegano dispositivi esterni operanti a 5 V ma anche shield non recenti sviluppati per la UNO e la MEGA2560. Solo gli shield più recenti, sviluppati per il layour R3, possono essere montati sulla DUE senza correre il rischio di danneggiarla. Questo perché con il layout R3 è stato introdotto un pin denominato IOREF che serve ad informare lo shield della tensione a cui lavora la scheda sottostante.

Caratteristiche tecniche principali:

  • MCU: Atmel SAM3X8E a 84 MHz
  • Memoria Flash (programma): 512 kB
  • Memoria SRAM (per le variabili del programma):  96 kB
  • Pin di I/O: 66, di cui 54 I/O digitali e 12 usabili I/O digitali oppure come input analogici
  • PWM: 12 pin
  • ADC: 12 canali a 10 bit
  • DAC: 2 a 12 bit
  • Tensione operativa: 3,3 V
  • Comunicazione: 4 Seriali – 2 I2C – 1 SPI – 1 CAN

La scheda è dotata di 2 porte Micro-USB, una stranezza presto spiegata: nonostante il chip SAM3X8E integri il convertitore USB, per la programmazione è raccomandato l’utilizzo della porta denominata “Programming Port” per via del fatto che il chip ATmega16U2 utilizzato per comunicare con il PC esegue un “hard reset” del SAM3X8E, una procedura che permette una programmazione più sicura rispetto a quella che si ottiene facendo l’upload dalla porta denominata “Native USB port”, che invece avvia la programmazione con un “soft reset”. Se poi il chip va in crash per qualche motivo, il “soft reset” potrebbe non funzionare, e l’uso dell’”hard reset” potrebbe essere l’unico modo valido per poter riprogrammare la scheda. La DUE presenta anche un pulsantino con l’etichetta “ERASE”, premendo il quale si cancella completamente il contenuto della Flash. Altra differenza rispetto alle altre schede è che il bootloader è residente in ROM ed è scritto direttamente da Atmel. Insomma, una scheda particolare destinata ad un’utenza particolare.

Arduino Yún

L’Arduino Yún è una scheda arrivata sul mercato nella seconda metà del 2013. E’ un prodotto del tutto nuovo, relativamente alla linea di prodotti Arduino, in quanto monta un microcontrollore ATmega32U4 (lo stesso della Leonardo) collegato via seriale ad un SoC (System-on-Chip) Atheros AR9331, con quest’ultimo che integra la distribuzione Linux Linino (basata su OpenWRT).

Arduino Yun

La scheda integra anche un controller Wi-Fi, una porta Ethernet, un host USB con porta USB-A, un lettore di Micro-SD, un connettore Micro-USB per la connessione al PC nonché i soliti header classici di tutte le schede Arduino. La Yún è in effetti una Leonardo “espansa”: grazie ad un “bridge” (un “ponte”) software creato tramite connessione seriale, il sistema Linux che gestisce le periferiche avanzate della scheda comunica con l’ATmega32U4, che invece sovrintende alla gestione delle linee di I/O ed alla comunicazione con il computer. La ricchezza di possibilità offerte dalla Yún richiede però un maggior impegno da parte dell’utente per sfruttare appieno la scheda: egli, infatti, deve preparare 2 programmi, uno per l’ATmega32U4 ed uno, scritto in un linguaggio di programmazione supportato da Linux, per l’AR9331. Di serie, Linino fornisce una libreria in Python per la gestione delle periferiche collegate all’AR9331. Gli sketch per l’ATmega32U4 si scrivono, invece, sempre tramite IDE.

Caratteristiche tecniche principali:

  • MCU: Atmel ATmega32U4 a 16 MHz
  1. Memoria Flash (programma): 32 kB (4 kB sono riservati al bootloader)
  2. Memoria SRAM (per le variabili del programma):  2,5 kB
  3. Memoria EEPROM (per salvataggio di impostazioni o altro): 1 kB
  4. Comunicazione: 1 I2C, 1 Seriale, 1 SPI
  5. Tensione operativa: 5 V
  • SoC: Atheros AR9331(MIPS) a 400 MHz
  1. Memoria Flash (contiene la distribuzione Linux): 16 MB
  2. Memoria DRAM (per l’esecuzione dei programmi): 64 MB DDR2
  3. Ethernet: IEEE 802.3 10/100 Mbs
  4. WiFi: IEEE 802.11b/g/n
  5. USB: USB 2.0 host/device
  6. Tensione operativa: 3,3 V
  • Pin di I/O: 20, di cui 8 I/O digitali e 12 usabili I/O digitali oppure come input analogici
  • PWM: 7 pin
  • ADC: 12 canali a 10 bit
  • Tensione accettata sui pin di I/O: 5 V

Come detto, la comunicazione fra i 2 chip è realizzata mediante interfaccia seriale usando i pin 0 e 1 della scheda. Se si vuole comunicare serialmente con qualche altro dispositivo esterno, bisogna ricorrere alla libreria SoftwareSerial, fornita di serie con l’IDE di Arduino, ed utilizzabile su qualunque coppia di pin della scheda. Il bridge software permette lo scambio di dati fra l’ATmega32U4 e l’AR9331: il team di Arduino ha messo a disposizione una pagina in cui illustra le funzioni del bridge disponibili nell’IDE. La periferica Wi-Fi va configurata prima dell’utilizzo, ciò va fatto tramite ethernet collegandosi con un browser ad una particolare pagina in locale. Altro software può essere installato sulla distribuzione Linux grazie al gestore di pacchetti opkg presente in Linino. E’ comunque disponibile una guida alla scheda che raccoglie queste ed altre informazioni.

Arduino MICRO

Di tutte le schede secondarie prodotte col marchio Arduino (Mini, Pro, LilyPad, Nano ecc…) voglio citare l’Arduino MICRO, anch’essa arrivata di recente sul mercato.

Ardino MICRO

Progettata in collaborazione con Adafruit (come ricorda la scritta sul lato inferiore della scheda), questa MICRO tiene fede al proprio nome essendo una scheda veramente miniaturizzata: grazie all’uso dell’ATmega32U4, non serve un convertitore seriale/USB per collegarla al computer. Le sue dimensioni sono così di 4,8 x 1,77 cm. Tutte le linee di I/O del chip sono riportate sui connettori inferiori, risultando una LEONARDO a tutti gli effetti.

Caratteristiche tecniche principali:

  • MCU: Atmel ATmega32U4 a 16 MHz
  • Memoria Flash (programma): 32 kB (4 kB sono riservati al bootloader)
  • Memoria SRAM (per le variabili del programma):  2,5 kB
  • Memoria EEPROM (per salvataggio di impostazioni o altro): 1 kB
  • Pin di I/O: 20, di cui 8 I/O digitali e 12 usabili I/O digitali oppure come input analogici
  • PWM: 7 pin
  • ADC: 12 canali a 10 bit
  • Tensione operativa: 5 V
  • Comunicazione: 1Seriale  – 1 I2C – 1 SPI

Un regolatore sulla scheda permette di alimentarla con un alimentatore esterno. La programmazione può essere fatta utilizzando anche il connettore ICSP integrato.

Quale fa per noi?

Alla fine dell’analisi, abbiamo più dati per scegliere la scheda correttamente:

  1. stiamo iniziando ora? cerchiamo una scheda di uso generale, con un ricco parco librerie e la possibilità di accedere ad un numero consistente di shield di espansione? Allora la scelta giusta è la UNO. E’ facile usarla, è la scheda per la quale è stato scritto il maggior numero di guide inrete, gli shield permettono di aggiungere funzionalità extra senza ricorrere al saldatore, uno strumento che spesso è visto di cattivo occhio dal neofita. Inoltre il chip ATmega328P è in formato DIP28 (Dual In-line Package a 28 pin) e lo si può sostituire facilmente in caso lo si bruci per errore (può capitare). La possibilità di rimuovere il chip permette anche di creare versioni standalone dei propri progetti dove il microcontrollore programmato può essere estratto e montato su un circuito e sostituito sull’Arduino da un altro nuovo (con opportuno bootloader precaricato) in modo da riusare la schedina.
  2. Vogliamo comandare il computer? cerchiamo un modo facile per spedire comandi al sistema tipo simulare la pressione di un tasto o il click di un mouse? Allora la scheda giusta è la LEONARDO. Grazie al fatto che il suo microcontrollore integra l’hardware necessario per comunicare via USB col sistema operativo, essa è vista da quest’ultimo come una periferica HID e può quindi essere utilizzata come periferica di input. La Arduino ESPLORA, una scheda che replica un gamepad, è basata proprio su un ATmega32U4. A parte questo, la LEONARDO è compatibile con la UNO per molti aspetti e molto del software e degli shield per la UNO girano anche su di essa.
  3. Cerchiamo una scheda con un sacco di linee di I/O e con tanta memoria per il nostro programma? Allora la MEGA2560 è scheda da acquistare. La MEGA2560 ha 70 pin, divisi fra ingressi digitali e analogici, e può quindi risultare indispensabile in caso si realizzino progetti dove l’Arduino deve poter dialogare con dispositivi che richiedono diverse connessioni (esempio: display). La MEGA2560 offre inoltre 256 kB di Flash, 8 volte lo spazio offerto dalla UNO, permettendo quindi di scrivere programmi molto complessi e che usano molte librerie extra. La MEGA2560 può inoltre far girare molto del software scritto per la UNO, a meno che non siano usate periferiche specifiche dell’ATmega328P.
  4. Stiamo cercando un microcontrollore molto potente e capace di eseguire una grosse mole di calcoli per unità di tempo? L’Arduino DUE è la risposta. La DUE è una scheda nata per venire incontro alle esigenze di un’utenza di tipo avanzato, che cercano un prodotto della famiglia Arduino ma che offra potenza maggiore. Il target della DUE è ad esempio l’utilizzo in sistemi di volo autonomo in progetti di quadricotteri oppure di interazione con l’ambiente per robot semoventi. La compatibilità con le altre schede è molto limitata, praticamente ridotta alle funzioni base del core: l’architettura a 32 bit e le periferiche integrate nel SAM3X8E ne fanno un prodotto del tutto diverso.
  5. Non ho citato la ETHERNET e la MICRO. Sono schede particolari, richieste solo da una particolare utenza. La ETHERNET è in pratica una UNO con lo shield ETHERNET integrato, è comoda per risparmire dei soldi ma per contro si paga il fatto di dover usare un programmatore esterno. La MICRO è comodissima per progetti in cui la compattezza deve essere al primo posto dei punti da rispettare, da ricordare che è però basata su un ATmega32U4 e non sull’ATmega328P della UNO per cui particolari librerie potrebbero non funzionare.
  6. A chi serve la Yún? A chi vuole una scheda che possa offrire le funzionalità di una scheda base con in più la connessione Wi-Fi offerta con l’acquisto di un apposito shield. La Yún è però una scheda che mi sento di consigliare solo a chi ha un minimo di dimestichezza con l’ambiente Linux e Python: per la programmazione dell’AR9331 il brige offerto è per questo linguaggio, e Linux richiede una certa dimestichezza con il terminale.

Conclusioni

Se state per acquistare la vostra prima scheda, prendete la UNO: è fatta apposta per i principianti. E’ facile da usare, tollera i 5 V che è la tensione della logica TTL, si può sostituire il suo chip in caso di danneggiamento o per montarlo in standalone. Sempre se siete neofiti, non fatevi prendere dalla bramosia di comprare la DUE pensando che “più grande è meglio”: la DUE non è una scheda pensata per iniziare ma per chi ha già una buona base e sa cosa sta maneggiando. Già il fatto che la sua tensione operativa sia di 3,3 V causa non pochi problemi ai neofiti, a causa del fatto che molti dei prodotti in circolazione sono stati pensati per la UNO ed i suoi 5 V. Solo recentemente il team di sviluppo ha introdotto il layout R3 che, grazie al pin IOREF, permette allo shield compatibile di adeguare la tensione a quella della scheda. Ma per gli shield di vecchia concezione bisogna controllare in anticipo. Inoltre molte delle librerie in circolazione non funzionano con la DUE. Anche in questo caso bisogna controllare in anticipo.

Comments (2)

  1. 720p

    Good post. I am facing many of these issues as well.. Almire Sigfrid Zimmer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Close
Navigation

Categories