ARDUINO DUE

ultimo aggiornamento 6 agosto 2017


 

Indice

Disponibile dal 22 ottobre 2012 questa versione di scheda Arduino è denominata Arduino DUE
Si tratta di una scheda a 32bit ed è equipaggiata con un processore ARM Cortex-M3 tipo AT91SAM3X8E che viaggia a 84MHz

homotix

 

Link utili:

Presentazione originale della Scheda Arduino DUE
Schema elettrico della scheda

Schema della scheda in formato EAGLE
Mappa dei pin del processore SAM3X
Software IDE Arduino versione 1.5.0
Guida introduttiva al Arduino Due

Caratteristiche

Microcontroller

 AT91SAM3X8E

Velocità di Clock

 84 MHz

Tensione di funzionamento

 3.3V

Tensione d'ingresso (raccomandata)

 7-12V

Limiti tensione d'ingresso

 6-20V

Numero di pin digitali di  I/O

 54 (di cui 16 con PWM )

Pin di Input analogico

 12

Pin di uscita analogici

 2 (DAC)

Corrente continua totale in uscita da tutte le linee I/O

 130 mA

DC Current for 3.3V Pin

 800 mA

DC Current for 5V Pin

 teorici 1A, realistici 800 mA

Flash Memory

 512 KB completamente disponibili per le applicazioni

SRAM

 96 KB (64 + 32 KB)

Memoria DataFlash

 2 Mbit (250 KB)

La Arduino Due è una scheda basata sulla CPU Atmel ARM Cortex-M3 SAM3X8E e, la prima della famiglia Arduino, basata su un microcontrollore a 32 bit con core ARM.
La scheda contiene tutto la circuiteria necessaria a supportare il nuovo microprocessore, per iniziare è sufficiente disporre di un PC con sistema operativo Windows XP oppure Windows 7, Windows 10, la connessione USB sarà utilizzata sia per lo scambio dati sia per l'alimentazione, ovviamente rimane la possibilità di alimentare la scheda con un alimentatore esterno utilizzando l'apposito connettore jack previsto a bordo scheda.

Vista superiore della scheda

Vista inferiore della scheda

Questa scheda è stata oggetto di un mio articolo pubblicato sul numero 331 della rivista Fare Elettronica dal titolo  "Arduino Due senza veli"

Alcuni dettagli della scheda

Dettaglio del pulsante per la cancellazione della memoria Flash del processore

Dettalio della porta USB di programmazione e del connettore per l'alimentazione

Dettaglio della sezione dell'alimnetazione in grado di fornire i 3,3V per l'alimentazione del processore e +5V per i circuiti esterni

Dettaglio dei connettore JTAG e DEBUG

Dettaglio pulsante Reset e connettore della porta USB nativa

Dettaglio connettore SPI

Dettaglio del processore principale della scheda Arduino DUE un Atmel ARM Cortex-M3 SAM3X8E

Dettaglio del processore ATmega16U2 che permette la comunicazione tra il PC e il processore Cortex-M3 SAM3X8E

Dettaglio dei led per il monitoraggio dell'alimentazione e delle comunicazioni seriali

Schema elettrico della scheda Arduino DUE

Processore U1 ATSAM3X8EA-AU Presa alimentazione DC 2,1mm Transistor FET tipo FDN340P Transistor FET tipo FDN340P Transistor FET tipo FDN340P Integrato regolatore IC4 NCP1117ST33T3G -3V3 Integrato IC1 LMV358IDGKR Transistor Q2 BC847BSMD IC2 regolatore LM2734Y o LM2736Y Integrato IC6 ATMEGA16U2-MU Integrato IC10 74LVC1G125DCK D1 Diodo raddrizzatore M7 Fusibile ripristinabile 500mA tipo MF-MSMF050-2 Fusibile ripristinabile 500mA tipo MF-MSMF050-2 Presa USB tipo micro AB Presa USB tipo micro AB Led SMD Risuonatore 32.768Khz  Tipo FC-145 Quarzo 12MHz KX-7 20pF Quarzo 12MHz KX-7 20pF Induttore di potenza schermato 10μHtipo SRR0604-100ML Ferrite MH2029-300Y Varistore tipo CG0603MLC-05E Varistore tipo CG0603MLC-05E Diodo SS1P3L Diodo CD1206-S01575 Varistore tipo CG0603MLC-05E Diodo CD1206-S01575 Ferrite MH2029-300Y Ferrite MH2029-300Y Varistore tipo CG0603MLC-05E

C1,2,3,11,27,29,33,35,41

10u

C4,5,6,7,8,9,10,12,13,14,15, 16,17,18,19,28,30,31,32,34,36,37

100n

C20,26,42

10n

C21,22,25,39,40

22p

C23,24

22pF_NM

C38

1u

PC1,2

47u

R1

0R

R2,10,11,13,18,23

10K

R3

1K

R4

100K

R5,6

39R 1%

R7

6k8 1%

R8

0R_NM

R9

1M_NM

R12

52K3

R14,15

1K

R19,20

22R

R21

1K

RN1,2,4

100K

RN3

1k

RN5

1K5

JR1

0R

D1

Diodo raddrizzatore M7

D2,D3

Diodo CD1206-S01575

D4

Diodo SS1P3L

L, TX,TX2,RX,RX1

Led giallo 0805 SMD

ON

Led verde 0805 SMD

F1,2

Fusibile ripristinabile 500mA tipo MF-MSMF050-2

IC1

LMV358IDGKR

IC2

LM2734Y o LM2736Y

IC4

NCP1117ST33T3G -3V3

IC6

ATMEGA16U2-MU

IC10

74LVC1G125DCK

U1

Processore ATSAM3X8EA-AU

L1,2,3,5,6

Ferrite MH2029-300Y

L4

Induttore di potenza schermato 10μHtipo SRR0604-100ML

Q2

BC847BSMD

T1,2,3

Transistor FET tipo FDN340P

SPI

3x2M

Z1,2,3,4,5

Varistore tipo CG0603MLC-05E

Y1, 4

Quarzo 12MHz KX-7 20pF

Y2

Risuonatore 32.768Khz  Tipo FC-145

ADCH, L,POWER, PWML, COMMUNICATION

Pinstrip 8x1F-H8.5

PWMH

Pinstrip 10x1F-H8.5

JTAG,MACB

Pinstrip 2x5 pass 1,27,,

ICSP1

Pinstrip 2x3

JP5

Pinstrip 2x2M - NM

DEBUG

Pinstrip 4x1V M

XIO

Pinstrip 18x2F-H8.5

USB1, J3

Presa MICRO-USB-AB1

X2

Presa alimentazione DC 2,1mm

RESET

Tasto SMD tipo TS42

ERASE

Tasto SMD tipo MYSMD_PB157


File formato EAGLE

Datasheet dei principali componenti attivi e passivi utilizzati

M7 - SMD diodo rettificatore 1A

Piedinatura Datasheet Foto

CD1206-S01575 Switching Chip Diode

Piedinatura Datasheet Foto

SS1P3L Low VF High Current Density Surface Mount Schottky Barrier Rectifiers

Piedinatura Datasheet Foto

Led smd 0805

Piedinatura Datasheet (Verde, Giallo) Foto

LMV 358  General Purpose, Low Voltage, Rail-to-Rail Output - Operational Amplifiers

 
Piedinatura Datasheet Foto dell'integrato

LM2734 Step-Down DC-DC Regulator 1A

 
Piedinatura Datasheet Foto dell'integrato

LM2736 Step-Down DC-DC Regulator 750mA

 
Piedinatura Datasheet Foto dell'integrato

NCP1117ST33T3G Low-Dropout Positive Fixed Voltage Regulators 1.0 A

Piedinatura Datasheet Foto dell'integrato

FDN340P Single P-Channel, Logic Level, PowerTrench MOSFET
  
Piedinatura Datasheet Foto del transistor

Transistor NPN BC847B/BC847C SMALL SIGNAL TRANSISTORS
Piedinatura Datasheet Foto del transistor

Processore ATSAM3X8EA-AU - ARM® Cortex®-M3 revision 2.0 running at up to 84 MHz

Piedinatura Datasheet Foto dell'integrato

ATmega16U2 8-bit Microcontroller with 16 K Bytes of ISP Flash and USB Controller

Piedinatura Datasheet Foto dell'integrato

 SN74LVC1G125 Single bus buffer gate with 3-state output

Piedinatura Datasheet Foto dell'integrato

MH2029-300Y MH Series High Current Chip Ferrite Beads

Piedinatura Datasheet Foto della ferrite

SRR0604-100ML Shielded Power Inductors

Piedinatura Datasheet Foto dell'induttore

CG0603MLC-05E ChipGuard MLC Series - ESD Protectors

Piedinatura Datasheet Foto dell'induttore

MF-MSMF Series - PTC Resettable Fuses

Piedinatura Datasheet Foto del PTC

FC 135/145 thin smd low frequency cristal unit
Piedinatura Datasheet Foto del quarzo

Quarzo smd 12MHz KX-7 20pF
Piedinatura Datasheet Foto del quarzo

Presa USB tipo micro AB
Piedinatura Datasheet Foto del quarzo

DC Power Jack connector
Piedinatura Datasheet Foto del connettore

Sezione di alimentazione

Come per le precedenti versioni della scheda l’alimentazione può avvenire da due fonti: tramite le porte USB o tramite un alimentatore esterno collegato al connettore X2, in ogni caso la fonte di alimentazione sarà scelta automaticamente dalla scheda.

Dettaglio schema elettrico sezione di alimentazione

Esaminando il circuito si nota che la tensione in ingresso della presa polarizzata X3 viene prima filtrata tramite la ferrite L6 tipo MH2029-300Y  e i due condensatori PC1 e C41 per poi arrivare al circuito IC2 che può essere un LM2734Y o LM2736Y, la differenza è nella massima corrente fornita.
A differenza delle precedenti versioni di Arduino che prevedevano dei regolatori a basso dropout, in questa versione è stato utilizzato un regolatore DC-DC di tipo step-down con un’efficienza del 90%, alimentati con una tensione minima di 3V e una massima di 18-20 V garantiscono una tensione d’uscita di 5V con una corrente che varia tra i 750 mA (LM2736Y) e 1A (LM2734Y) . La tensione di 5V raggiunge poi l’integrato IC4 tipo NCP1117ST33T3 regolatore a basso dropout, con un’uscita a 3.3V con una corrente massima di 1A.


Integrati sezione di alimentazione

La tensione di +5V come detto in precedenza può derivare dalle prese USB presenti sulla scheda USB AB e USB B (USBVCC, USBVCCU2), la tensione arriva ai due MOSFET a canale P , T1 e T2 tipo FDN340P che opportunamente pilotati attraverso il uno dei due amplificatori operazionali contenuti nell’integrato IC1 tipo LMV358 permette di selezionata automaticamente la fonte di alimentazione.
Sull’uscita delle porte USB sono presenti dei fusibili tipo MF-MSMF050-2 da 500mA, questi sono di tipo auto ripristinante, in pratica sono costituiti da un resistore "PTC" (Positive Temperature Coefficient) ovvero un resistore il cui valore di resistenza aumenta con la temperatura. Al superamento di un valore di corrente, l'aumento di temperatura causa un aumento di resistenza, che a sua volta causa un aumento dell'effetto Joule e così via, con effetto valanga.
Nel circuito è anche presente il transistor NPN Q2 tipo BC847B la cui base è pilotata dalla porta PB10 del processore U1, questo permette di forzare ad OFF l'alimentazione alla porta USB quando la porta è in modalità USB HOST (scheda alimentata da alimentatore esterno).


Porte USB

La presenza della tensione è data dall’accensione del verde con la scritta ON connesso alla tensione di +3.3V
I vari pin di alimentazione sono raggruppati e sono


Pin alimentazione.

Memoria

Il SAM3X dispone di 512 KB (2 blocchi di 256 KB) di memoria Flash (anche chiamata flash memory, è una tipologia di memoria a stato solido, di tipo non volatile) per la memorizzazione del codice.  Il bootloader è programmato in una memoria ROM (acronimo di Read Only Memory Memoria di sola lettura) dedicata.
La SRAM (acronimo di Static Random Access Memory, è un tipo di RAM volatile che non necessita di refresh) a disposizione è di 96 KB in due banchi contigui di 64 KB e 32 KB.
E' possibile cancellare la memoria Flash del SAM3X con il tasto di cancellazione presente bordo. Questa operazione rimuoverà il programma attualmente caricato dalla MCU.
Per cancellare, premere e tenere premuto il pulsante ERASE per alcuni secondi, mentre la scheda è alimentata.
Vedere anche:
- Per la memoria tipo ROM http://it.wikipedia.org/wiki/Read_Only_Memory
- Per la memoria tipo SRAM http://it.wikipedia.org/wiki/SRAM
- Per la memoria Flash http://it.wikipedia.org/wiki/Memoria_flash


Pulsante per la cancellazione memoria FLASH

Il comando può anche essere attivato tramite l’attivazione del MOSFET a canale P , T3 un FND 340P tramite la linea ERASE_CMD connessa al pin 23 dell’integrato IC6 tipo ATMEGA16U2.

Ingressi e uscite

Ciascuno dei 54 pin disponibili può essere utilizzato sia come ingresso sia come uscita, utilizzando le funzioni PinMode (), digitalWrite (), e digitalRead ().
Ogni pin può fornire (source) una corrente compresa tra i 3 e 15 mA, o ricevere (sink) una corrente tra i 6 i 9 mA, la corrente di source e sink dipende dalla funzione del pin.  Su ogni pin è presente una resistenza interna di pull-up da 100 Kohm (disconnessa per impostazione predefinita). Alcuni pin hanno funzioni specializzate




Pin porte di Ingresso/Uscita

Nel connettore con i pin numerati da 22 a 53 i due pin in alto sono connessi a +5V mentre i due pin in basso a GND.

Pin per comunicazione SERIALE

La scheda Arduino DUE dispone di 4 gruppi di pin per la comunicazione seriale, diversamente dai modelli precedenti che erano TTL a 5V queste sono TTL a 3,3V. I pin N.0 e N.1 sono collegati direttamente ai corrispondenti pin del chip IC6 tipo ATmega16U2 utilizzato come convertitore USB/Seriale

Seriale

Pin RX

Pin TX

Seriale N.0

0

1

Seriale N.1

19

18

Seriale N.2

17

16

Seriale N.3

15

14


Pin porte Seriali TTL

Pin con uscita PWM

I pins dal 2 al 13 sono utilizzati come uscite PWM (acronimo di Pulse Width Modulation) a 8 bit utilizzando la funzione analogWrite(). La risoluzione delle uscite PWM può essere variata con l'utilizzo della funzione analogWriteResolution().
Vedere anche http://it.wikipedia.org/wiki/Pulse-width_modulation 


PWM

Connettore SPI

Questi pin supportano la comunicazione SPI (acronimo di Serial Peripheral Interface) con il processore SAM3X, il connettore è denominato ICSP sule precedenti schede Arduino.   Per la comunicazione si utilizza la libreria SPI e sono resi disponibili sul connettore a 6 pin presente al centro scheda, questo connettore è fisicamente compatibile con le versioni Uno, Leonardo e mega2560.  La connessione SPI può essere utilizzata solo per comunicare con altri dispositivi SPI non per la programmazione del SAM3X con la modalità "In-Circuit-Serial-Programming.
Vedere anche http://it.wikipedia.org/wiki/Serial_Peripheral_Interface

Pin

Funzione

1

MISO (Master Input Salve Output)

2

+5V

3

SCK (Serial Clock Signal)

4

MOSI (Master Output Slave Input)

5

RESET

6

GND

 


Connettore SPI

Connettore ICSP per IC6

Nelle vicinanze del Processore IC6 un ATmega16U2 che fa da convertitore USB-to-serial è presente un connettore ICSP acronimo di In Circuit Serial Programming per la sua programmazione senza rimozione dal circuito.   I pin del connettore sono collegati ai relativi pin del processore

Pin

Funzione

1

MISO (Master Input Salve Output)

2

+5V

3

SCK (Serial Clock Signal)

4

MOSI (Master Output Slave Input)

5

RESET

6

GND

 

Connettore ICSP per IC6

Connettore JTAG

La scheda Arduino DUE dispone di un connettore denominato JTAG acronimo di Join Test Action Group, creato da un associazione di produttori di circuiti integrati, che hanno voluto definire uno protocollo standard per effettuare i test funzionali di tali dispositivi.
Questo protocollo ha la funzione di bloccare il funzionamento normale di tutti i pin del dispositivo ponendolo in uno stato speciale di funzionamento, che permette la sua programmazione diretta.
Vedere anche http://it.wikipedia.org/wiki/JTAG

Pin

Funzione

Nome del pin SAM3X

1

+3V3 – Alimentazione

 

2

TMS (Test Mode Select) Selezione del modo test

PB31

3

GND

 

4

TCK (Test Clock) Pin di clock dei dati

PB28

5

GND

 

6

TDO (Test Data Out) Pin di uscita dei dati

PB30

7

NC – non collegato

 

8

TDI (Test Data In) Pin di ingresso dei dati

PB29

9

GND

 

10

TRST (Test Reset) Segnale di reset del test

NRSTB

 

 Connettore JTAG

Connettore DEBUG

A fianco del connettore JTAG è presente il connettore DEBUG, in esso sono presenti i segnali: TCK, TMS e Reset

Pin

Funzione

Nome del pin SAM3X

1

GND

 

2

TCK (Test Clock) Pin di clock dei dati

PB28

3

TMS (Test Mode Select) Selezione del modo test

PB31

4

TRST (Test Reset) Segnale di reset del test

NRSTB

 

Connettore DEBUG

Pin CAN RX e CAN TX

Questi pin supportano il protocollo di comunicazione CAN (acronimo di Controller Area Network), noto anche come CAN-bus, è uno standard seriale per bus di campo, ideato allo scopo di collegare diverse unità di controllo elettronico. Il protocollo per il momento non è ancora supportato dalle API di Arduino. I pin sono connessi alle porte PA0, PA1 del SAM3X
Vedere anche http://it.wikipedia.org/wiki/Controller_Area_Network



Pin comunicazione CAN

Tasto RESET

Sulla scheda in alto a sinistra è presente il tasto RESET che permette premendolo di riavviare l’esecuzione del programma presente nella memoria del processore.

Pulsante RESET

LED presenti sulla scheda

Sulla scheda Arduino DUE sono presenti in totale 6 led

Nome

Connesso a

Colore

RX

PC30 SAM3X

Giallo

TX

PA22 SAM3X

Giallo

L

IC1A – Pin 13 PWM

Giallo

ON

+3v3

Verde

RX

PD4 ATMEGA16U2

Giallo

TX

PD5 ATMEGA16U2

Giallo

Due coppie si occupano del monitoraggio del traffico seriale (un gruppo connesso al processore SAM3X e uno all’ ATMEGA16U2), uno mostra se la scheda è alimentata mentre il led L è di servizio ed è collegato al pin 13, quando il pin è HIGH il led è acceso, quando il pin è LOW, il led è spento  Interessante la possibilità di "dimmerare", cioè cambiare la luminosità del led sfruttando il fatto che il pin 13 è anche una uscita PWM.

Led della scheda Arduino DUE

Pin connessione TWI/ I2C

La scheda ha due gruppi di porte per connessione secondo il protocollo hardware TWI detto anche I2C  formato da due linee seriali di comunicazione.   La porta 2 dispone già di resistori di pull-up da 1,5 kΏ.  Il piedino supporta la connessione TWI utilizzando la libreria Wire

SDA (Serial DAta line) per i dati
SCL (Serial Clock Line) per il clock

Vedere anche http://it.wikipedia.org/wiki/I%C2%B2C

TWI

Pin SDA

Pin SCL

1

SDA -20 (PB12)

SCL-21 (PB13)

2

SDA 1 (PA17)

SCL 1 (PA18)


Pin SDA, SCL

Ingressi analogici

La Arduino Due possiede 12 ingressi analogici (Pin da A0 a A11)) ogni pin presenta una risoluzione a 12 bit (4096 livelli), per mantenere la compatibilità con le altre schede Arduino la risoluzione è fissata a 10 bit ma è possibile variarla con la funzione analogReadResolution()
Su questi pin è ammessa una tensione massima pari a 3,3V, l'applicare una tensione superiore potrebbe danneggiare il chip.
Nella Arduino Due la funzione analogReference() viene ignorata.
Il pin AREF è collegato al riferimento analogico del SAM3X attraverso una serie di resistenze, per utilizzare questo pin occorre dissaldare dalla scheda la resistenza siglata BR1.


Porte analogiche

Il pin AREF è collegato al riferimento analogico del SAM3X attraverso una serie di resistenze, per utilizzare questo pin occorre dissaldare dalla scheda la resistenza siglata BR1

Posizione resistenza BR1

Uscite Analogiche

Arduino DUE ha due porte di uscita Analogiche segnate come DAC1 (PB16) e DAC2 connesse alle porte PB16 e PB15 del SAM3X. Questi pin forniscono delle uscite analogiche con 12-bit di risoluzione (4096 livelli) con l'utilizzo della funzione analogWrite ().   Possono anche essere utilizzati per creare un output audio utilizzando la libreria audio.


Uscite analogiche

Sulla scheda sono presenti anche il pin AREF utilizzato come tensione di riferimento per gli ingressi analogici ed il pin RESET attivo basso.

Comandi speciali per gestione Ingressi e uscite analogiche

Per la gestione degli ingressi e delle uscite analogiche sono state inserite nelle API del programma due nuove funzioni: analogReadResolution() e analogWriteResolution(), vediamo in breve a cosa servono:

analogReadResolution ()
Imposta la dimensione (in bit) del valore restituito da analogRead(). Il valore predefinito è 10 bit (restituisce i valori tra 0-1023) per garantire la compatibilità con le altre schede basate su AVR.  Come abbiamo visto però la Arduino DUE può operare con una risoluzione a 12 bit, in questo caso la funzione analogRead() restituirà un numero compreso tra 0 e 4095.

La sua sintassi è: analogReadResolution (bit)

Dove (bit) determina la risoluzione in bit del valore restituito dalla funzione analogRead (). È possibile impostare questo 1 e 32. È possibile impostare una risoluzione superiore a 12, ma i valori restituiti da analogRead () subiranno un’approssimazione.

analogWriteResolution ()
La funzione analogWriteResolution() imposta la risoluzione della funzione analogWrite(). Il valore predefinito è 8 bit (valori compresi tra 0-255) per garantire la compatibilità con le altre schede basate su AVR.
Come abbiamo visto la Arduino DUE possiede:
• 12 pin con 8-bit PWM (come le schede basate su altri AVR)
• 2 pin con 12-bit DAC (Digital-to-Analog Converter)
Impostando la risoluzione di scrittura a 12, è possibile utilizzare analogWrite() con valori compresi tra 0 e 4095 e sfruttare la piena risoluzione DAC o per impostare il segnale PWM senza approssimazione.

La sua sintassi è: analogWriteResolution (bit)

Dove (bit) determina la risoluzione in bit dei valori utilizzati nella funzione analogWrite(). Il valore può variare da 1 a 32. Se si sceglie una risoluzione superiore o inferiore alle caratteristiche hardware il valore utilizzato nella analogWrite() viene troncato se è troppo alto o riempito con zeri, se è troppo bassa.


Pinout scheda Arduino

Utilizzo RTC interno alla scheda Arduino DUE

All'interno del processore ARM Cortex-M3 tipo AT91SAM3X8E che equipaggia la Arduino Due è presente una periferica Real-Time Clock( RTC) che è stato progettata per il consumo di energia molto basso, sfortunatamente nella scheda Arduino Due non è presente una batteria tampone, per cui i dati memorizzati non possono essere salivati

Caratteristiche
• Basso consumo energetico
• Progettazione asincrono completa
• Calendario Gregoriano
• Programmable Interrupt periodico
• Ora, data e allarme a 32 bit Parallel Load
• Scrittura dei Registri protette


Estratto del datasheet
inerente il modulo RTC

Il modulo RTC interno combina un completo orologio giornaliero con sveglia e un calendario gregoriano, completato da un interrupt programmabile periodico. I registri di allarme e di calendario sono accessibili da un bus a 32 bit di dati.   I valori di tempo e il calendario sono codificati in codice binario decimale (BCD). Il formato del tempo di può essere in modalità 24 ore o 12 ore con un indicatore AM/PM.  L'aggiornamento del tempo e i campi del calendario come la configurazione dei campi di allarme sono effettuate da parallel capture del bus a 32 bit di dati.  Un controllo viene eseguito per evitare che i registri siano caricati con dati in formato BCD incompatibili  o con una data incompatibile in base al corrente mese/anno/secolo.

Processore ATSAM3X8EA-AU - ARM® Cortex®-M3 revision 2.0 running at up to 84 MHz

Piedinatura Datasheet Foto dell'integrato

Uscita su display LCD

Utilizzando il modulo RTC interno, l'unico collegamento esterno necessario è quello con il display LCD. Sono utilizzati in questo progetto.

Arduino DUE Display LCD

Per l'utilizzo viene utilizzata una speciale versione di libreria che può essere scaricata a questo link https://github.com/MarkusLange/Arduino-Due-RTC-Library 

Sono utilizzati i seguenti pin

Pin Funzione
Pin +5V +5V LCD
Pin GND GND LCD
TX1 (D18) RX LCD

 

Pin per comunicazione SERIALE con il modulo LCD

La scheda Arduino DUE dispone di 4 gruppi di pin per la comunicazione seriale, diversamente dai modelli precedenti che erano TTL a 5V queste sono TTL a 3,3V. I pin N.0 e N.1 sono collegati direttamente ai corrispondenti pin del chip IC6 tipo ATmega16U2 utilizzato come convertitore USB/Seriale

Seriale

Pin RX Pin TX

Seriale N.0

0

1

Seriale N.1

19

18

Seriale N.2

17

16

Seriale N.3

15

14

 


Programma IDE Arduino 1.5.2

Libreria RTC

 

 
#include <rtc_clock.h>
//include la libreria necessaria al funzionamento del programma

RTC_clock rtc_clock(XTAL);
//RTC_clock rtc_clock(RC);
// Seleziona la sorgente del clock

char* daynames[]={
  "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"};
//Definisce i giorno della settimana


void setup()  {
  // Imposta la velocità dei dati per la porta
  rtc_clock.init();
  //inizializza l'istanza della classe inclusa
  rtc_clock.set_time(11, 34, 0);
  //Imposta l'ora corrente
  rtc_clock.set_date(24, 02, 2013);
  //Imposta la data corrente
  Serial1.begin(9600);
  //Imposta velocità porta comunicazione con LCD
  //connesso alla porta seriale 1 
}

void loop() {
  clearLCD();
  //Cancella lo schermo del display
  selectLineOne();
  //Seleziona la linea 1 del display
  Serial1.print("Ore ");
  Serial1.print(rtc_clock.get_hours());
  //Scrive sul diplay l'ora letta dal RTC
  Serial1.print(":");
  Serial1.print(rtc_clock.get_minutes());
  //Scrive sul diplay i minuti letti dal RTC
  Serial1.print(":");
  Serial1.print(rtc_clock.get_seconds());
  //Scrive sul diplay i secondi letti dal RTC
  selectLineTwo();
  //Seleziona la linea 2 del display
  Serial1.print(daynames[rtc_clock.get_day_of_week()-1]);
  //Scrive sul diplay il giorno della settimana convertendo
  //il valore del giorno della settimana letto dal RTC
  Serial1.print(" ");
  Serial1.print(rtc_clock.get_days());
  //Scrive sul diplay il giorno del mese letto dal RTC
  Serial1.print("/");
  Serial1.print(rtc_clock.get_months());
  //Scrive sul diplay il numero del mese letto dal RTC
  Serial1.print("/");
  Serial1.print(rtc_clock.get_years());
  //Scrive sul diplay l'anno letto dal RTC
  delay (1000);
  //attesa 1000 millisecondi (un secondo) prima di
  //eseguire un nuovo ciclo di lopp()
}

// Resetta il display, annullando qualsiasi scorrimento
// e la rimozione di tutto il testo
void clearLCD() {
  serCommand();
  Serial1.write(byte (0x01));
}

// Avvia il cursore all'inizio della prima linea
void selectLineOne() {  //sposta il cursore alla riga 0 carattere 0
  serCommand();   //command flag
  Serial1.write(byte (128));
}

// Sposta il cursore all'inizio della seconda linea
void selectLineTwo() {  //sposta il cursore alla riga 2 carattere 0
  serCommand();   //command flag
  Serial1.write(byte (192));
}

// Invia un comando al display
void serCommand() {
  Serial1.write(byte (0xFE));
}

 

Uscita su display Monitor seriale

Se non si possiede il display LCD è possibile visualizzare ora e data nella finestra di Debug. Controllare che la velocità della porta seriale sia settata a 57600 baud

Arduino DUE


Programma IDE Arduino 1.5.2

Libreria RTC

 

#include <rtc_clock.h>
//include la libreria necessaria al funzionamento del programma

RTC_clock rtc_clock(XTAL);
//RTC_clock rtc_clock(RC);
// Seleziona la sorgente del clock

char* daynames[]={
  "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"};
//Definisce i giorno della settimana

void setup()  {
  // Imposta la velocità dei dati per la porta
  rtc_clock.init();
  //inizializza l'istanza della classe inclusa
  rtc_clock.set_time(11, 34, 0);
  //Imposta l'ora corrente
  rtc_clock.set_date(24, 02, 2013);
  //Imposta la data corrente
  Serial1.begin(9600);
  //Imposta velocità porta comunicazione con LCD
  //connesso alla porta seriale 1 
}

void loop() {
  clearLCD();
  //Cancella lo schermo del display
  selectLineOne();
  //Seleziona la linea 1 del display
  Serial1.print("Ore ");
  Serial1.print(rtc_clock.get_hours());
  //Scrive sul diplay l'ora letta dal RTC
  Serial1.print(":");
  Serial1.print(rtc_clock.get_minutes());
  //Scrive sul diplay i minuti letti dal RTC
  Serial1.print(":");
  Serial1.print(rtc_clock.get_seconds());
  //Scrive sul diplay i secondi letti dal RTC
  selectLineTwo();
  //Seleziona la linea 2 del display
  Serial1.print(daynames[rtc_clock.get_day_of_week()-1]);
  //Scrive sul diplay il giorno della settimana convertendo
  //il valore del giorno della settimana letto dal RTC
  Serial1.print(" ");
  Serial1.print(rtc_clock.get_days());
  //Scrive sul diplay il giorno del mese letto dal RTC
  Serial1.print("/");
  Serial1.print(rtc_clock.get_months());
  //Scrive sul diplay il numero del mese letto dal RTC
  Serial1.print("/");
  Serial1.print(rtc_clock.get_years());
  //Scrive sul diplay l'anno letto dal RTC
  delay (1000);
  //attesa 1000 millisecondi (un secondo) prima di
  //eseguire un nuovo ciclo di lopp()
}

// Resetta il display, annullando qualsiasi scorrimento
// e la rimozione di tutto il testo
void clearLCD() {
  serCommand();
  Serial1.write(byte (0x01));
}

// Avvia il cursore all'inizio della prima linea
void selectLineOne() {  //sposta il cursore alla riga 0 carattere 0
  serCommand();   //command flag
  Serial1.write(byte (128));
}

// Sposta il cursore all'inizio della seconda linea
void selectLineTwo() {  //sposta il cursore alla riga 2 carattere 0
  serCommand();   //command flag
  Serial1.write(byte (192));
}

// Invia un comando al display
void serCommand() {
  Serial1.write(byte (0xFE));
}

Mancata presenza della scheda Arduino Due nell'IDE

Può accadere che sia impossibile trovare Arduino Due sul menu e quindi non è possibile caricare lo sketch sulla scheda.
Le schede sono elencate sotto Strumenti Schede nell'IDE di Arduino, per inserire la scheda è necessario installare un software aggiuntivo

La scheda Arduino due non è mostrata nell'elenco

L'Arduino Due per funzionare ha bisogno di installare il software extra per poter essere programmato.
Per fare questo occorre seguire questi semplici passi:

Selezionare la voce di menu Gestione schede dal menu IDE di Arduino, che si trova sotto Strumenti Schede Gestione schede

Nell'elenco che apparirà ricercare Arduino SAM Board (32-bits ARM Cortex M3) By Arduino e fare clic  sul pulsante Installa.

Ci vorrà un po 'di tempo per installare il software, a seconda della velocità di connessione Internet. Dopo l'installazione, fare clic sul pulsante Chiudi nella finestra di dialogo.

Dopo l'installazione, il pannello Schede Arduino ARM (32-bits), selezionare Arduino Due (Programming Port) per consentire agli sketches di essere caricati sulla scheda.  In questo caso, il cavo USB deve essere collegato alla porta USB denominata PROGRAMMING sul fondo della scheda.

Quando collegate il cavo, potrebbe essere necessario installare il driver necessario al sistema operativo nel vostro PC

Filmati sulla scheda Arduino Due

 

 

 

 

 

 

 

 

Elenco revisioni
06/08/2017 Aggiornato pagina, inseriti filmati
05/03/2017 Aggiornato pagina
08/12/2012 Emissione preliminare
Private Policy Cookie Policy