Utilizziamo arduino e un modulo rtc ds3231 per visualizzare l'ora e la data
su un display lcd i2c 16x02
In questo progetto mostreremo un semplice esempio di orologio e calendario utilizzando una scheda Arduino UNO e un modulo RTC DS3231, in cui l'ora e la data sono visualizzati sullo schermo LCD i2C 1602.
Il bello di questo progetto è che possiamo modificare l'ora e la data agendo direttamente su due pulsanti inseriti su una breadboard.
Il bello di questo progetto è che possiamo modificare l'ora e la data agendo direttamente su due pulsanti inseriti su una breadboard.
Il modulo RTC DS3231 rappresentato in figura è dotato di una pila tipo CR2032 da 3V ed è in grado di fornire informazioni su data, ora e temperatura ambientale.
Grazie alla pila di cui è dotato, una volta memorizzata l'ora e la data, continua a segnare il tempo, anche quando non è in uso oppure tolto dal circuito.
Grazie alla pila di cui è dotato, una volta memorizzata l'ora e la data, continua a segnare il tempo, anche quando non è in uso oppure tolto dal circuito.
Il modulo fornisce le informazioni ad Arduino attraverso il protocollo di comunicazione I2C o bus SDA/SCL.
In Arduino Uno questo protocollo è gestito dalle porte A4 e A5 in Arduino Mega 2560 sulle porte D20 e D21.
In Arduino Uno questo protocollo è gestito dalle porte A4 e A5 in Arduino Mega 2560 sulle porte D20 e D21.
In questo esercizio non ci limiteremo ad utilizzare il solo modulo RTC DS3231, ma utilizzeremo anche un display LCD 16x02 gestito da un driver I2C e quindi avremo contemporaneamente in funzione due componenti che utilizzano il bus SDA/SCL.
COMPONENTI:
SCHEMA DI COLLEGAMENTO:
Nel circuito ci sono 2 pulsanti collegati rispettivamente ai pin 8 e 9. I due pulsanti sono utilizzati per impostare i parametri di data e ora (minuti, ore, data, mese e anno).
Il primo pulsante seleziona il parametro e il secondo incrementa il parametro selezionato.
Il primo pulsante seleziona il parametro e il secondo incrementa il parametro selezionato.
LIBRERIE:
Per prima cosa dobbiamo installare una libreria sull'Arduino IDE.
Utilizzeremo la libreria Newliquidcrystal_1.3.5 per il funzionamento del display LCD I2C.
Per installare le librerie aprire Arduino IDE e cliccare su Sketch > #includi libreria > Aggiungi libreria da file .ZIP.. e scegliere la libreria appena scaricata.
Il sketch di Arduino segue non utilizza alcuna libreria per il modulo RTC DS3231, la libreria Wire è per la comunicazione tra Arduino e il DS3231 per il protocollo I2C.
Utilizzeremo la libreria Newliquidcrystal_1.3.5 per il funzionamento del display LCD I2C.
Per installare le librerie aprire Arduino IDE e cliccare su Sketch > #includi libreria > Aggiungi libreria da file .ZIP.. e scegliere la libreria appena scaricata.
Il sketch di Arduino segue non utilizza alcuna libreria per il modulo RTC DS3231, la libreria Wire è per la comunicazione tra Arduino e il DS3231 per il protocollo I2C.
newliquidcrystal_1.3.5.zip | |
File Size: | 2457 kb |
File Type: | zip |
SKETCH:
arduino_rtc_ds3231___display_i2c.ino | |
File Size: | 6 kb |
File Type: | ino |
Il modulo DS3231 funziona solo con il formato BCD (Binary-coded decimal su wikipedia) e per convertire il BCD in decimale e viceversa ho usato le 2 righe seguenti (esempio per minuto):
Click here to edit.
Click here to edit.
Visualizza l'ora e il calendario, prima di visualizzare i dati dell'ora e del calendario vengono convertiti dal formato BCD al formato decimale.
Click here to edit.
All'interno di questa piccola funzione in basso è inserita la pausa del lampeggiare e viene interrotta dai pulsanti (collegati ai pin 8 e 9) .
Con questa funzione possiamo vedere il lampeggiare del parametro selezionato con una frequenza di 2Hz.
Quindi un ritardo di 250 ms arriva dopo la stampa del parametro selezionato e dopo questo delay vengono stampati 2 spazi per far sparire il parametro sul display LCD, successivamente un altro delay di 250 ms arriva dopo la stampa dei 2 spazi.
Con questa funzione possiamo vedere il lampeggiare del parametro selezionato con una frequenza di 2Hz.
Quindi un ritardo di 250 ms arriva dopo la stampa del parametro selezionato e dopo questo delay vengono stampati 2 spazi per far sparire il parametro sul display LCD, successivamente un altro delay di 250 ms arriva dopo la stampa dei 2 spazi.
Click here to edit.