En esta lección vas a aprender a usar el módulo RTC, basado en el chip de bajo consumo DS1307. Vas a ver cómo se comunica por I2C con la placa 2560 para llevar un registro preciso de la fecha y hora, incluso usando su batería de respaldo.
Descripción General
El DS1307 es un chip de reloj de tiempo real que consume muy poca energía. Los datos se transfieren de forma serie a través de un bus I2C, lo que permite conectarlo a la placa 2560 usando solo tres cables de datos. El módulo registra segundos, minutos, horas, día de la semana, fecha, mes y año, manteniendo el funcionamiento mientras el componente opere desde la fuente de respaldo.
Componentes Necesarios
(1) x Elegoo MEGA 2560 R3
(1) x Módulo RTC DS1307
(4) x Cables Hembra-Macho (cables DuPont)
Introducción a los Componentes
El módulo de reloj de tiempo real permite que tus proyectos mantengan la hora exacta aunque se reinicie el microcontrolador, gracias a que cuenta con su propia batería.
Esquema de Conexión y Diagrama de Cableado
Seguí las conexiones indicadas para vincular los pines de alimentación y los pines de datos I2C (SDA y SCL) entre el módulo y tu placa Elegoo MEGA.
Código
Podés hacer clic en el link de texto azul para descargar el programa a tu dispositivo y abrirlo con un doble clic una vez terminada la descarga. Antes de abrir el archivo, asegurate de tener instalado el Arduino IDE y los componentes necesarios, como el paquete de soporte de la placa y el driver de la 2560 R3. Si tenés dudas, fijate en el capítulo "part 1" de la documentación para una guía detallada.
📥 DESCARGAR rtc_clock.ino
Este código muestra cómo usar un módulo RTC DS3231 con Arduino. Inicializa el reloj y muestra la fecha y hora actual en el Monitor Serie. Para activarlo, hacé clic en el botón del Monitor Serie (podés ver más detalles sobre esto en el tutorial 4 de la parte 2).
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
void setup()
{
Serial.begin(9600);
Serial.println("Initialize RTC module");
// Inicializar DS3231
clock.begin();
// Manual (AAAA, MM, DD, HH, II, SS)
// clock.setDateTime(2016, 12, 9, 11, 46, 00);
// Enviar hora de compilación del sketch al Arduino
clock.setDateTime(__DATE__, __TIME__);
/*
Tip: Este comando se ejecutará cada vez que Arduino se reinicie.
Comentá esta línea para mantener la memoria del módulo DS3231.
*/
}
void loop()
{
dt = clock.getDateTime();
Serial.print("Raw data: ");
Serial.print(dt.year); Serial.print("-");
Serial.print(dt.month); Serial.print("-");
Serial.print(dt.day); Serial.print(" ");
Serial.print(dt.hour); Serial.print(":");
Serial.print(dt.minute); Serial.print(":");
Serial.print(dt.second); Serial.println("");
delay(1000);
}
Librerías y Configuración
El código usa Wire.h para la comunicación I2C y DS3231.h para el control del RTC. En el setup(), se inicializa el Monitor Serie a 9600 baudios y se configura el módulo con la hora actual de la PC al momento de compilar. La función loop() pide los datos al reloj y los imprime con el formato AAAA-MM-DD HH:MM:SS cada un segundo.
Solución de Problemas
No hay datos en el Monitor Serie: Revisá que la velocidad esté en 9600 baudios.
Hora incorrecta: Verificá que el módulo esté bien conectado y alimentado.
La hora no se actualiza: Asegurate de que el DS3231 tenga la pila de respaldo instalada.
Problemas de comunicación I2C: Chequeá las conexiones en los pines SDA y SCL.
Errores de librería: Asegurate de tener instaladas las librerías Wire y DS3231.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.