In offerta!

DS1302 Modulo orologio e calendario con memoria e Batteria RTC Real Time Clock Arduino compatibile

Il prezzo originale era: 4,70 €.Il prezzo attuale è: 2,24 €.

DS1302 Modulo orologio e calendario con memoria e Batteria RTC Real Time Clock Arduino compatibile

Disponibile su ordinazione

COD: ARD0060 Categorie: ,

Descrizione

[vc_row][vc_column][vc_column_text]

Modulo DS1302 RTC (Real Time Clock) con Memoria, Batteria e Calendario – Descrizione Completa e Guida per l’Uso con Arduino


🕒 Descrizione del Modulo DS1302 RTC

Il DS1302 è un modulo orologio in tempo reale (RTC) che consente di tenere traccia precisa dell’orario e del calendario anche in assenza di alimentazione, grazie a una batteria tampone (di solito tipo CR2032). È molto usato in progetti con Arduino, ESP8266, ESP32, Raspberry Pi e altri microcontrollori.


Caratteristiche Tecniche

Specifica Dettaglio
Chip RTC DS1302
Alimentazione 3.3V – 5.5V (compatibile con Arduino)
Comunicazione Serializzata a 3 fili (SCLK, I/O, CE)
Batteria tampone Supporto CR2032 (non sempre inclusa)
Memoria RAM 31 byte di RAM statica per uso generale
Precisione ±1 minuto/mese tipica (senza calibrazione)
Intervallo di date 01/01/1900 – 31/12/2099
Funzioni Orologio, calendario, RAM, backup batteria

🔌 Collegamento DS1302 con Arduino

Pin DS1302 Collegamento ad Arduino
VCC 5V (oppure 3.3V)
GND GND
CLK (SCLK) D6
I/O D7
CE (RST) D8

📦 Libreria consigliata per Arduino

Per usare il modulo DS1302 con Arduino, puoi installare la libreria “DS1302RTC” scritta da Paul Stoffregen, che semplifica la lettura/scrittura dell’orologio.

🔧 Installazione della Libreria

  1. Apri l’IDE di Arduino
  2. Vai su Sketch > Include Library > Manage Libraries
  3. Cerca DS1302RTC e installa la libreria di Paul Stoffregen

🧪 Esempio di Codice per Impostare e Leggere Data/Ora

#include <DS1302RTC.h>
#include <TimeLib.h>
#include <Wire.h>
#include <Streaming.h>

// Pin collegati al modulo DS1302: CE, I/O, CLK
DS1302RTC rtc(8, 7, 6);

void setup() {
  Serial.begin(9600);

  // Imposta l’orario solo la prima volta
  // Imposta: Anno, Mese, Giorno, Ora, Minuti, Secondi
  tmElements_t tm;
  tm.Year = CalendarYrToTm(2025); // Anno - 1970
  tm.Month = 7;
  tm.Day = 28;
  tm.Hour = 15;
  tm.Minute = 45;
  tm.Second = 0;
  rtc.write(tm);

  Serial.println("Ora impostata!");
}

void loop() {
  tmElements_t tm;
  if (rtc.read(tm)) {
    Serial << "Data: " << tm.Day << "/" << tm.Month << "/" << tmYearToCalendar(tm.Year);
    Serial << " - Ora: " << tm.Hour << ":" << tm.Minute << ":" << tm.Second << endl;
  } else {
    Serial.println("Errore lettura RTC");
  }
  delay(1000);
}

📘 Funzioni Utili della Libreria

Funzione Descrizione
rtc.read(tm) Legge la data e ora dal modulo
rtc.write(tm) Imposta la data e ora
tm.Year, tm.Month Accesso ai singoli elementi della data e ora
tmHour, tmMinute Accesso diretto a ora/minuti
CalendarYrToTm(anno) Conversione da anno calendario ad anno base 1970
tmYearToCalendar(tm) Conversione inversa (utile per stampa)

⚠️ Consigli pratici

  • Non impostare l’orario a ogni avvio: il codice per impostare l’ora va eseguito solo una volta. Dopo, commentalo.
  • Controlla la batteria: se l’orario si azzera, la batteria CR2032 è scarica o assente.
  • Non invertire i pin: collegamenti errati causano letture errate o mancate comunicazioni.
  • La precisione del DS1302 è buona per uso generale, ma per applicazioni critiche è meglio usare il DS3231 (che ha un oscillatore compensato in temperatura).

🎯 Applicazioni Tipiche

  • Orologi digitali con display (LCD, OLED, 7 segmenti)
  • Log dati con timestamp (ad esempio su schede SD)
  • Sveglie e temporizzatori automatici
  • Progetti domotici con eventi programmati
  • Timer per impianti di irrigazione

🔄 Alternative

Modulo RTC Precisione Batteria Comunicazione Note
DS1302 Media CR2032 3 fili (Seriale) Economico, base
DS1307 Buona CR2032 I2C Più diffuso
DS3231 Alta Inclusa I2C Alta precisione, compensato temperatura

📌 Conclusione

Il modulo DS1302 RTC è un’ottima scelta per progetti Arduino in cui è necessario tenere traccia del tempo anche quando il microcontrollore è spento. È economico, facile da usare e ben documentato, anche se oggi viene spesso sostituito dal più preciso DS3231.

Perfetto! Ti fornisco due estensioni pratiche per il modulo DS1302 RTC con Arduino:


🔹 1. Visualizzare Data/Ora su Display OLED I2C (128×64)

🧰 Componenti necessari:

  • Arduino UNO / Nano
  • Modulo RTC DS1302
  • Display OLED 128×64 (driver SSD1306, interfaccia I2C)
  • Cavi jumper

🔧 Schema dei Collegamenti

Componente Pin Arduino
DS1302 VCC, GND 5V, GND
CLK D6
I/O D7
CE (RST) D8
OLED VCC, GND 5V, GND
SDA A4
SCL A5

📦 Librerie da installare:

  • DS1302RTC – Paul Stoffregen
  • Adafruit GFX Library
  • Adafruit SSD1306

Apri l’IDE di Arduino → Library Manager → Cerca e installa tutte e tre.


💡 Codice esempio con OLED:

#include <DS1302RTC.h>
#include <TimeLib.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
DS1302RTC rtc(8, 7, 6); // CE, IO, SCLK

void setup() {
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
}

void loop() {
  tmElements_t tm;
  if (rtc.read(tm)) {
    display.clearDisplay();
    display.setCursor(0, 0);
    
    display.printf("%02d:%02d:%02dn", tm.Hour, tm.Minute, tm.Second);
    display.setTextSize(1);
    display.setCursor(0, 40);
    display.printf("%02d/%02d/%04d", tm.Day, tm.Month, tmYearToCalendar(tm.Year));
    display.display();
  } else {
    display.clearDisplay();
    display.setCursor(0, 0);
    display.println("RTC ERROR");
    display.display();
  }
  delay(1000);
}

🔹 2. Logger su SD Card con Timestamp da DS1302

🧰 Componenti:

  • Arduino UNO / Nano
  • RTC DS1302
  • Lettore SD card (con adattatore logico se serve)
  • MicroSD formattata FAT32

🔧 Collegamento SD Card

Lettore SD Arduino
CS D10
MOSI D11
MISO D12
SCK D13
VCC, GND 5V, GND

📦 Librerie da usare:

  • SD
  • DS1302RTC
  • TimeLib

💡 Codice esempio per Data Logging:

#include <SPI.h>
#include <SD.h>
#include <DS1302RTC.h>
#include <TimeLib.h>

const int chipSelect = 10;
DS1302RTC rtc(8, 7, 6); // CE, IO, SCLK

void setup() {
  Serial.begin(9600);
  SD.begin(chipSelect);
  if (!SD.begin(chipSelect)) {
    Serial.println("SD init failed!");
    return;
  }
  Serial.println("SD OK");
}

void loop() {
  tmElements_t tm;
  if (rtc.read(tm)) {
    File logFile = SD.open("log.txt", FILE_WRITE);
    if (logFile) {
      logFile.print(tmYearToCalendar(tm.Year));
      logFile.print("/");
      logFile.print(tm.Month);
      logFile.print("/");
      logFile.print(tm.Day);
      logFile.print(" ");
      logFile.print(tm.Hour);
      logFile.print(":");
      logFile.print(tm.Minute);
      logFile.print(":");
      logFile.println(tm.Second);
      logFile.close();
      Serial.println("Dati scritti su SD.");
    } else {
      Serial.println("Errore apertura log.txt");
    }
  }
  delay(5000); // Log ogni 5 secondi
}

✅ Suggerimenti aggiuntivi:

  • Puoi combinare OLED + SD + DS1302 nello stesso progetto se non ci sono conflitti di pin.
  • Puoi loggare anche dati da sensori (es. temperatura, umidità) aggiungendoli alla stringa logFile.print().
  • Ricorda di formattare la SD in FAT32 e usare file .txt semplici.

[/vc_column_text][/vc_column][/vc_row]

Informazioni aggiuntive

Peso 13 g