Reloj D53231

Reloj DS3231

Voltaje que puede aplicarse al reloj: entre 3,3V y 5,5V.

Lleva una pila de 3V tipo CR2032.

Dimensiones de la placa:

Vista de la placa...


Real Time Clock (RTC) conectado a un ESP32 y a un display LCD para mostrar fecha y hora

Esquema de conexión...


Programa utilizado en este montaje

// Programa basado en el que se puede descargar desde la página web
//    https://linuxhint.com/ds3231-rtc-module-esp32/
// al que se le han añadido comandos para visualizar la Fecha y Hora 
// en un display LCD de 16x2 caracteres conectado por I2C

#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>

RTC_DS3231 rtc; // Initialize an instance of the RTC_DS3231 class

int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);

void setup() {
    Serial.begin(115200);
    Wire.begin();

    lcd.init();
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Inicializando...");
    

    if (!rtc.begin()) {
        Serial.println("RTC not detected");
        while (1); // Hang indefinitely if RTC is not found
    }

    //Uncomment the below line to set the initial date and time
    //rtc.adjust(DateTime(__DATE__, __TIME__));
    
    // rtc.adjust(DateTime(2016,8,31,13,55,00));
    // rtc.adjust(DateTime( año, mes, dia, hora, minuto, segundo ));
}

void loop() {
  // Read current time from the sensor (DS3231)
  DateTime now = rtc.now();

  // Print the date and time on the same line with two digits for hours, minutes, and seconds
  Serial.print("Current Date: ");
  Serial.print(now.year(), DEC);
  Serial.print("/");
  printTwoDigits(now.month());
  Serial.print("/");
  printTwoDigits(now.day());
  Serial.print(" Current Time: ");
  printTwoDigits(now.hour());
  Serial.print(":");
  printTwoDigits(now.minute());
  Serial.print(":");
  printTwoDigits(now.second());
  Serial.println();
    
  // Clear the LCD
  lcd.clear();

  // Print the date and time on the LCD
  lcd.setCursor(0, 0); // Set the cursor to the top-left corner
  lcd.print("Fecha ");
  printTwoDigits(now.day());
  lcd.print("/");
  printTwoDigits(now.month());
  lcd.print("/");
  lcd.print(now.year(), DEC);
  
  lcd.setCursor(0, 1); // Set the cursor to the second row
  lcd.print("Hora  ");
  printTwoDigits(now.hour());
  lcd.print(":");
  printTwoDigits(now.minute());
  lcd.print(":");
  printTwoDigits(now.second());
  lcd.print("  ");

  delay(1000); // Update every 1 second
}

void printTwoDigits(int number) {
    if (number < 10) {
        Serial.print("0"); // Add a leading zero for single-digit numbers
        lcd.print("0");
    }
    Serial.print(number);
    lcd.print(number);
}
	

Pulsa aquí para descargar el código "esp32rtc.ino"

Pulsa aquí para descargar la librería RTClib

Vídeo del funcionamiento de este montaje (Formato: .mp4 - Tamaño 39,6 MB)...

Ver un vídeo con el funciomaniento del montaje