🚚 Envío GRATIS en compras sobre $30.000 | Retiro en Curauma, Valparaíso | 📞 +56 9 65214463
Arduino 06 de July de 2026 · 2 min de lectura

Módulo RTC DS3231 con Arduino: Fecha y Hora Exacta sin Internet

Usa el módulo RTC DS3231 para mantener fecha y hora exacta en tu Arduino sin conexión a internet. Con batería de respaldo, no pierde la hora aunque desconectes el Arduino.

El DS3231 es un módulo de Reloj en Tiempo Real (RTC) de alta precisión con temperatura compensada. A diferencia del ESP32 con NTP (que necesita WiFi), el DS3231 mantiene la fecha y hora con una batería CR2032 de respaldo aunque el Arduino esté apagado.

Por Qué Usar DS3231 y No millis()

  • millis(): se reinicia cuando el Arduino se apaga — no sirve para aplicaciones reales
  • NTP (WiFi): requiere conexión a internet siempre
  • DS3231: mantiene hora exacta con ±2 ppm de precisión, funciona sin red, con batería dura años

Conexión I2C

DS3231Arduino Uno
VCC3.3V o 5V
GNDGND
SDAA4
SCLA5

Dirección I2C: 0x68. Si en el mismo bus hay un MPU-6050, también usa 0x68 — habrá conflicto; cambia la dirección del MPU-6050 a 0x69 poniendo su pin AD0 en HIGH.

Código: Leer y Configurar Fecha/Hora

#include <RTClib.h> // Librería "RTClib" de Adafruit

RTC_DS3231 rtc;

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

  // Solo la primera vez — comentar después
  // Ajusta al momento de compilar el sketch
  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}

void loop() {
  DateTime ahora = rtc.now();

  Serial.print(ahora.day()); Serial.print("/");
  Serial.print(ahora.month()); Serial.print("/");
  Serial.print(ahora.year()); Serial.print(" ");
  Serial.print(ahora.hour()); Serial.print(":");
  Serial.print(ahora.minute()); Serial.print(":");
  Serial.println(ahora.second());

  // Temperatura interna del DS3231
  Serial.print("Temp sensor RTC: ");
  Serial.print(rtc.getTemperature(), 1);
  Serial.println(" °C");

  delay(1000);
}

Automatización por Horario

// Encender relay a las 18:00 y apagar a las 23:00
DateTime ahora = rtc.now();
if (ahora.hour() >= 18 && ahora.hour() < 23) {
  digitalWrite(RELAY, LOW);  // Encender
} else {
  digitalWrite(RELAY, HIGH); // Apagar
}

Proyectos con DS3231

  • Data logger con SD: guardar sensor + timestamp exacto en CSV
  • Reloj despertador: buzz a una hora programada via teclado matricial
  • Riego programado: sin WiFi, activa la bomba según horario configurable
  • Registrador de eventos: cuándo se abrió la puerta, cuándo se activó la alarma
Compartir: WhatsApp
Escríbenos por WhatsApp