Modulo DS3231 Real Time Clock con Arduino Uno

Alcuni dei progetti, che è possibile realizzare con Arduino, potrebbero richiedere l’utilizzo di un RTC, acronimo di Real Time Clock. Esistono diversi moduli RTC utilizzabili con la board Arduino. In questo post vedremo come utilizzare il Modulo DS3231 Real Time Clock con Arduino Uno.


Modulo DS3231 Real Time Clock con Arduino Uno

Panoramica modulo DS3231

Un Real Time clock (RTC) è un circuito con funzioni di orologio in tempo reale capace di gestire anno, mese, giorno, ore, minuti e secondi.
Il modulo DS3231, che utilizzeremo in questa guida, è dotato anche di un alloggio per l’inserimento di una batteria tampone: in questo modo, anche se la board Arduino non viene alimentata, l’ RTC continuerà a mantenere il tempo reale.

Modulo DS3231 Real Time Clock con Arduino Uno scheda

Per maggiori informazioni sul modulo DS3231 vi rimando al datasheet raggiungibile a link

Materiale occorrente

  • Arduino UNO: questa guida è basata su un Arduino UNO Rev3 (acquistabile su AmazoneBay)
  • RTC DS3231: (acquistabile su AmazoneBay)
  • Jumper Wire: cavetti (acquistabili su AmazoneBay)
  • Arduino IDE: ambiente di sviluppo per programmare il micro controllore Arduino (per l’installazione e la configurazione vi rimando a questi post)

Modulo DS3231 Real Time Clock con Arduino Uno materiale occorrente

Collegamenti

Procediamo con il collegamento dei piedini del modulo DS3231, e i pin di Arduino Uno R3, come mostrato nella tabella seguente:

COLLEGAMENTO PIEDINI
RTC DS3231 Arduino UNO Jumper Wire
SCL SCL (A5)      Grigio
SDA SDA (A4)      Bianco
VCC 3.3V      Rosso
GND GND      Nero

Questo è lo schema di collegamento realizzato con Fritzing

Modulo DS3231 Real Time Clock con Arduino Uno circuito fritzing

Gestione Libreria

Terminato il circuito colleghiamo Arduino, tramite la porta USB, al nostro PC e avviamo l’ambiente di sviluppo Arduino IDE.
Per poter permettere ad Arduino di poter gestire il modulo DS3231 dobbiamo installare le librerie. Per farlo utilizzeremo il gestore delle librerie messo a disposizione da Arduino IDE.
Da Arduino IDE avviamo il gestore della librerie cliccando su Sketch -> #Include Libreria -> Gestione Librerie

Modulo DS3231 Real Time Clock con Arduino Uno gestore librerie

Con Gestore Librerie aperto utilizziamo la casella di ricerca (in alto a destra) per cercare la libreria RTClib messa a disposizione da Adafruit.
Una volta individuata la libreria RTClib by Adafruit scegliamo la versione da installare e clicchiamo su Installa

Modulo DS3231 Real Time Clock con Arduino Uno RTClib By Adafruit installazione

Al termine dell’installazione ci verrà mostrato l’esito e la versione installata.

Modulo DS3231 Real Time Clock con Arduino Uno controllo installazione libreria


Modulo DS3231 Real Time Clock con Arduino Uno

Creazione ed esecuzione sketch

Una volta terminati i collegamenti tra il modulo DS3231 e la board Arduino, e scaricato la libreria RTClib, non ci resta che vedere come caricare lo sketch su Arduino.
Insieme alla libreria sono presenti diversi sketch di esempi reperibili da File -> Esempi -> RTClib.
Lo sketch che vi propongo è una modifica basato sullo sketch di esempio ds3231

Analizziamo le righe più significative del codice. Con la funzione rtc.adjust impostiamo la data e l’ora sul modulo RTC.
Con la riga di codice

settiamo il modulo con la date e l’ora del PC nel momento in cui carichiamo lo sketch su Arduino.

Per impostare una data e ora differente, ad esempio 16/01/19 12:30, possiamo richiamare la funzione in questo modo:

Il resto del codice è molto semplice: vengono prelevati i valori data/ora e vengono inviati al monitor seriale.

Ora che abbiamo effettuato i collegamenti e visto il codice, non ci resta che caricare lo sketch su Arduino e verificare il funzionamento del modulo RTC DS3231.

Selezioniamo la board da Strumenti -> Scheda -> Arduino/Genuino Uno

Modulo DS3231 Real Time Clock con Arduino Uno board

Selezioniamo la porta su cui è collegata la board da Strumenti -> Porta -> COM7 (N.B.: il nome della porta potrebbe essere differente)

Modulo DS3231 Real Time Clock con Arduino Uno port

Copiamo lo sketch, che abbiamo visto prima, in Arduino IDE e carichiamolo sulla board Arduino cliccando sul pulsante Carica (contrassegnato da una freccia rivolta verso destra).

Modulo DS3231 Real Time Clock con Arduino Uno upload sketch

Se non viene visualizzato nessun messaggio di errore vuol dire che è andato tutto a buon fine.
Ora no ci resta che visualizzare i dati utilizzando il Monitor Seriale.
Per avviarlo clicchiamo su Strumenti -> Monitor Seriale

Modulo DS3231 Real Time Clock con Arduino Uno monitor seriale

Dopo qualche secondo, sul Monitor Seriale, saranno visualizzati i dati provenienti dal modulo RTC DS3231

Modulo DS3231 Real Time Clock con Arduino Uno risultato

Bene, abbiamo visto come utilizzare il Modulo DS3231 Real Time Clock con Arduino Uno. Per qualsiasi dubbio o domanda non esitate ad utilizzare i commenti.

A presto 😉

2 commenti su “Modulo DS3231 Real Time Clock con Arduino Uno”

  1. Trombetta Pasquale

    agenzie del vostro suggerimento un bel sito. Vorrei chiedervi una cortesia premetto che sono un neofita col desiderio di creare un orologio con i neopixel rgb. Sono riuscito dopo svariati tentativi andati a vuoto ad avere quello che mi ero prefissato. Purtroppo non riesco a completare l’obiettivo finale è cioè:
    1 – dopo 24 ore fare accendere il led del giorno (lunedi) e spegnere quello precedente (domenica), contemporaneamente accendere il giorno attuale (28) e spegnere quello precedente (27) e infine dopo i 28,30 o 31 giorni accendere il led del mese (febbraio) e spegnere quello precedente (gennaio).
    È possibile avere un aiuto dei suggerimenti. Grazie.

  2. salve
    complimenti per il progetto
    è possibile mettere anche i centesimi di secondo ed implementarlo con un display lcd
    vorrei fare un progetto di sistema di cronometraggio con delle fotocellule dove la fotocellula mi congela l’orario
    che dici e’ possibile
    grazie comunque

Lascia un commento

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