Obtenga entrega gratuita en todas las órdenes más de £20!

Cómo usar el DS1307 RTC con el Arduino

How to Use the DS1307 RTC with the Arduino

El DS1307 Real-Time Clock (RTC) es un módulo muy utilizado para mantener la hora en proyectos con Arduino. Mantiene la hora con precisión incluso cuando el Arduino está apagado, gracias a su batería interna. En este tutorial aprenderás a conectar y programar el módulo DS1307 RTC con el Arduino para mostrar y actualizar la hora.


Lo que necesitarás

  1. Placa Arduino (por ejemplo, Uno, Mega, Nano)
  2. Módulo DS1307 RTC
  3. Protoboard y cables de conexión
  4. Un ordenador con el IDE de Arduino instalado
  5. Bibliotecas: RTClib

Paso 1: Conectar el módulo DS1307 RTC

El DS1307 RTC se comunica con el Arduino mediante el protocolo I2C.

Conexiones

Pin del RTC Pin del Arduino
VCC 5V
GND GND
SDA A4
SCL A5

Nota: Si usas una placa Arduino con pines dedicados SDA y SCL (por ejemplo, Mega), conecta los pines SDA/SCL del RTC a esos en su lugar.


Paso 2: Instalar la biblioteca requerida

Para trabajar con el DS1307 RTC necesitarás la biblioteca RTClib.

Pasos para instalar RTClib

  1. Abre el IDE de Arduino.
  2. Ve a Sketch > Include Library > Manage Libraries.
  3. Busca "RTClib" en el Gestor de Bibliotecas.
  4. Haz clic en Install.

Paso 3: Subir el código de ejemplo

Aquí tienes un sketch de ejemplo para mostrar la fecha y hora actual desde el módulo DS1307:

Código de ejemplo

#include 
#include 

RTC_DS1307 rtc;

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

  // Initialize the RTC
  if (!rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  // Check if the RTC is running
  if (!rtc.isrunning()) {
    Serial.println("RTC is NOT running! Setting the time...");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

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

  // Display the time
  Serial.print(now.hour());
  Serial.print(":");
  if (now.minute() < 10) {
    Serial.print("0");
  }
  Serial.print(now.minute());
  Serial.print(":");
  if (now.second() < 10) {
    Serial.print("0");
  }
  Serial.println(now.second());

  // Display the date
  Serial.print(now.day());
  Serial.print("/");
  Serial.print(now.month());
  Serial.print("/");
  Serial.println(now.year());

  delay(1000); // Update every second
}

Paso 4: Ajustar la hora

Si el RTC no está funcionando o la hora necesita actualizarse, puedes usar la siguiente línea en la función setup():

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • F(__DATE__) y F(__TIME__) son macros que establecen la fecha y hora desde tu ordenador cuando subes el sketch.

Para ajustar una hora específica manualmente, usa:

rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS

Paso 5: Usar los datos del RTC en tus proyectos

El DS1307 puede proporcionar datos de hora para una variedad de aplicaciones, como:

  1. Registro de datos: Registrar con marcas de tiempo lecturas de sensores o eventos.
  2. Alarmas y temporizadores: Disparar acciones basadas en horas específicas.
  3. Relojes: Crear relojes digitales o analógicos con pantallas.

Ejemplo: Disparar una acción a una hora específica

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

  // Check if it's 8:00 AM
  if (now.hour() == 8 && now.minute() == 0 && now.second() == 0) {
    Serial.println("It's 8:00 AM!");
  }

  delay(1000);
}

Resolución de problemas

  1. RTC no encontrado:

    • Verifica las conexiones SDA y SCL.
    • Asegúrate de que la batería esté instalada correctamente.
  2. Hora incorrecta:

    • Usa rtc.adjust() para reiniciar la hora.
    • Comprueba si la batería del RTC está descargada o falta.
  3. Datos inconsistentes:

    • Asegura una alimentación estable al Arduino y al módulo RTC.

Aplicaciones del DS1307 RTC

  1. Relojes en tiempo real y alarmas
  2. Sistemas de automatización basados en tiempo
  3. Registro de datos con marcas de tiempo
  4. Sistemas de recordatorios

Conclusión

El módulo DS1307 RTC es una excelente herramienta para añadir funcionalidad de cronometraje a tus proyectos con Arduino. Siguiendo esta guía puedes configurar el RTC, mostrar hora y fecha, e incorporarlo en diversas aplicaciones. ¡Experimenta combinando el DS1307 con pantallas o sensores para crear proyectos aún más dinámicos!

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

1 comentario

Beim Verwenden des Befehls rtc.adjust(DateTime(F(DATE), F(TIME))); wird der sketch zwar fehlerlos kompiliert und hochgeladen, beim Ausführen des Programms stürzt das Programm aber ab, was auch zur Folge hat, dass die USB-Verbindung zum PC crasht und ein Hochladen von sketchs nicht mehr möglich ist. Abhilfe schafft dann nur ein Trick?. Nach einem Doppelclick auf die Reset-Taste des Boards funktioniert die USB-Verbindung wieder.

Ulf Jacob,

Escribir un comentario