CONTENUTO ►
Real Time Clock DS1302 Arduino è un modulo di orologio in tempo reale con la possibilità di alimentazione ininterrotta da una batteria al litio. Vediamo lo schema per collegare il modulo alla scheda Arduino Uno e dimostriamo il codice che può essere utilizzato per impostare la data e l’ora desiderate. Abbiamo anche pubblicato una descrizione della libreria universale iarduino_RTC.h per lavorare con i moduli RTC DS1302, DS1307 e DS3231.
Per questa attività sono necessari:
- Arduino Uno / Arduino Nano / Arduino Mega
- modulo orologio DS1302, DS1307, DS3231
- display LCD 1602 i2c
- cavi di collegamento
- librairia LiquidCrystal_I2C.h e iarduino_RTC.h
Modulo orologio in tempo reale datasheet, pinout
L’orientamento temporale è utile quando si crea un dispositivo per l’irrigazione automatica delle piante, l’accensione delle luci o del riscaldamento secondo un programma preciso, ecc. Il controllore Arduino non dispone di un orologio incorporato, quindi se è necessario eseguire attività con il microcontrollore Arduino Uno a un’ora del giorno rigorosamente definita, è necessario utilizzare il modulo orologio DS1302 o gli analoghi più vicini nel progetto.
Caratteristiche del modulo di orologio DS1302:
- Tensione di alimentazione: 2 – 5,5V
- Consumo di corrente: 300nA a 2 Volt
- RST: pin di avvio/fine comunicazione seriale
- CLK: pin di clock della comunicazione seriale
- DAT: pin di trasmissione dati seriali
- Temperatura di funzionamento: da -40℃ a +80℃
Caratteristiche del modulo di orologio DS1307:
- Tensione di alimentazione: 4,5 – 5,5V
- Consumo di corrente: 1,5 mA
- Porta di comunicazione: I2C
- Frequenza massima di trasmissione: 100KHz
- Temperatura di funzionamento: da 0℃ a +70℃
Il microcircuito è caratterizzato da un basso consumo energetico e consente di contare il tempo al secondo più vicino. Il modulo ds1307 è collegato ad Arduino tramite cinque pin. I pin VCC e Gnd sono responsabili dell’alimentazione del modulo. I pin CLK, DAT e RESX del modulo di orologio sono collegati ai pin digitali del microcontrollore. Nello sketch è possibile specificare i pin digitali coinvolti (nel nostro esempio utilizziamo i pin 6, 7 e 8).
Come collegare modulo di orologio DS1302 Arduino
LCD 1602 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VCC | 5V | 5V | 5V |
SDA | A4 | A4 | 20 |
SCL | A5 | A5 | 21 |
Esaminiamo diverse opzioni per collegare il modulo RTC ad Arduino e al display di testo 1602 I2C. La prima opzione utilizza il protocollo SPI per il modulo di orologio DS1302. L’ora e la data vengono visualizzate sul monitor seriale e sullo schermo LCD 1602 i2c. La riga corrispondente deve essere decommentata nel programma. Dopo aver apportato le modifiche allo schema e al programma, caricare il seguente codice nel microcontrollore Arduino Uno.
Programma Arduino per modulo orologio in tempo reale DS1302
#include "Wire.h" #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C LCD(0x27,16,2); #include "iarduino_RTC.h" iarduino_RTC time (RTC_DS1302,7,5,6); // per modulo DS1302 // iarduino_RTC time (RTC_DS1307); // per modulo DS1307 i2C // iarduino_RTC time (RTC_DS3231); // per modulo DS3231 i2C void setup() { Serial.begin(9600); LCD.init(); LCD.backlight(); time.begin(); // 0 sec, 30 min, 18 hour, 2 date, january, 2022, wed time.settime(0, 30, 18, 2, 1, 22, 0); } void loop() { // se è trascorso 1 secondo, visualizza l'ora if (millis() % 1000 == 0) { Serial.println(time.gettime("d-m-Y, H:i:s, D")); LCD.setCursor(0,0); LCD.print(time.gettime("d M Y, D")); LCD.setCursor(4,1); LCD.print(time.gettime("H:i:s")); } }
Spiegazione del codice per modulo orologio in tempo reale DS1302:
- per lavorare con il programma è necessario scaricare la libreria iarduino_RTC.h;
- dopo aver impostato l’ora, commentare il comando time.settime(); e caricare di nuovo lo sketch, altrimenti l’ora verrà impostata di nuovo quando Arduino verrà riavviato.
Come collegare modulo di orologio DS1307 Arduino
DS1307 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VCC | 5V | 5V | 5V |
SDA | A4 | A4 | 20 |
SCL | A5 | A5 | 21 |
I moduli di orologio in tempo reale DS1307 e DS3231 sono collegati alla scheda Arduino tramite il protocollo I2C, come un display LCD I2C. Il pin SDA è collegato al pin A4 e il pin SCL al pin A5 del microcontrollore Arduino Uno. Quando si collega il modulo I2C alla microcontrollore Arduino Mega 2560, è necessario utilizzare le porte SDA (pin 20) e SCL (pin 21). Nel programma è necessario decommentare la riga con il modulo richiesto.
Programma Arduino per modulo orologio in tempo reale DS1307
#include "Wire.h" #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C LCD(0x27,16,2); #include "iarduino_RTC.h" // iarduino_RTC time (RTC_DS1302,7,5,6); // per modulo DS1302 iarduino_RTC time (RTC_DS1307); // per modulo DS1307 i2C // iarduino_RTC time (RTC_DS3231); // per modulo DS3231 i2C void setup() { Serial.begin(9600); LCD.init(); LCD.backlight(); time.begin(); // 0 sec, 30 min, 18 hour, 2 date, january, 2022, wed time.settime(0, 30, 18, 2, 1, 22, 0); } void loop() { // se è trascorso 1 secondo, visualizza l'ora if (millis() % 1000 == 0) { Serial.println(time.gettime("d-m-Y, H:i:s, D")); LCD.setCursor(0,0); LCD.print(time.gettime("d M Y, D")); LCD.setCursor(4,1); LCD.print(time.gettime("H:i:s")); } }
Spiegazione del codice per modulo orologio in tempo reale DS1307:
- dopo aver impostato l’ora, commentare il comando time.settime(); e caricare di nuovo lo sketch, altrimenti l’ora verrà impostata di nuovo quando Arduino verrà riavviato.
Libreria Arduino iarduino_RTC.h: descrizione dei comandi
Per lavorare con i moduli di clock di Arduino, nella libreria sono implementate 5 funzioni:
begin(); // avvia il modulo
settime(sec, min, hours, day, month, year, weekday); // specifica l'ora
– l’anno viene specificato senza tenere conto del secolo, nel formato 0-99
– le ore sono specificate nel formato 24 ore, da 0 a 23
– il giorno della settimana è specificato come un numero da 0-domenica, 6-sabato
gettime("stringa con parametri"); // ottiene l'ora
– gettime(“d-m-Y, H:i:s, D”); risponde con la stringa “12-06-2020, 18:30:05, Fri”.
– gettime(“H”); risponde con la stringa “18”.
con la funzione gettime è possibile ottenere diverse informazioni:
- s – secondi da 00 a 59 (due caratteri)
- i – minuti da 00 a 59 (due caratteri)
- h – ore in formato 12 ore da 01 a 12 (due caratteri)
- H – ore in formato 24 ore da 00 a 23 (due caratteri)
- d – giorno del mese da 01 a 31 (due caratteri)
- D – giorno della settimana da lun a dom (tre caratteri)
- m – mese da 01 a 12 (due caratteri)
- M – nome del mese da gennaio a dicembre (tre caratteri)
- Y – anno da 2000 a 2099 (quattro caratteri)
- y – anno da 00 a 99 (due caratteri)
Conclusione. Nell’orologio su Arduino con LCD 1602 e DS1302 è possibile aggiungere la funzione di visualizzazione della temperatura e la sveglia. Questo modulo consente di ampliare notevolmente le funzioni del microcontrollore, che devono essere eseguite in determinati momenti della giornata. Se avete domande sull’assemblaggio e la programmazione dell’orologio su Arduino con DS1302 e display LCD, lasciatele nei commenti alla registrazione.
Lascia un commento