Collegamento modulo orologio in tempo reale RTC Arduino

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.

Modulo Real Time Clock Arduino pinout, datasheet
Modulo Real Time Clock Arduino pinout, datasheet

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

Come usare modulo RTC DS1302 con Arduino
Come usare e pilotare modulo RTC DS1302 con Arduino Uno
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:



  1. per lavorare con il programma è necessario scaricare la libreria iarduino_RTC.h;
  2. 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

Come usare modulo RTC DS1307 con Arduino
Come usare e pilotare modulo RTC DS1307 con Arduino Uno
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:

  1. 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.

5/5 - (1 vote)


Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.