En esta lección vas a aprender a usar el módulo RTC para que tus proyectos mantengan la hora exacta. El DS1307 es un chip de bajo consumo que te permite gestionar fecha y hora de forma súper sencilla y eficiente.
Resumen
La dirección y los datos se transfieren de forma serial a través de I2C, lo que te permite conectar el módulo al UNO usando solo tres cables de datos. El DS1307 te da información de segundos, minutos, horas, día, fecha, mes y año. Lo mejor es que sigue funcionando y manteniendo la hora gracias a su batería de respaldo, incluso si desconectás la alimentación principal.
Componentes necesarios
(1) x Elegoo Uno R3, (1) x Módulo RTC DS1307, (4) x Cables H-M (Hembra a Macho).
Introducción de los componentes, Esquema de conexión y Diagrama de cableado
Fijate en los diagramas para conectar correctamente los pines SDA y SCL. Asegurate de que los cables DuPont estén bien firmes para evitar errores en la comunicación I2C.
Código
Hacé clic en el enlace de texto azul para bajar el archivo del programa a tu compu y dale doble clic para abrirlo una vez que termine la descarga. Importante: antes de abrir el archivo, fijate de tener instalado el Arduino IDE y de haber configurado el soporte de placa y los drivers para el UNO R3. Si tenés dudas con esto, mirá la guía detallada en la "parte 1" del documento.
📥 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 verlo, hacé clic en el botón del Monitor Serie (los conceptos básicos del mismo están 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("Inicializando módulo RTC");
clock.begin();
// Configuración manual: Año, Mes, Día, Hora, Minutos, Segundos
// clock.setDateTime(2016, 12, 9, 11, 46, 00);
// Sincroniza con la hora de compilación del sketch
clock.setDateTime(__DATE__, __TIME__);
}
Librerías y Setup: Se usa Wire.h para la comunicación I2C y DS3231.h para controlar el módulo. En el setup se inicia la comunicación serie a 9600 baudios y se arranca el RTC. El comando setDateTime sincroniza el módulo con la hora de tu compu al momento de subir el código.
void loop()
{
dt = clock.getDateTime();
Serial.print("Datos crudos: ");
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);
}
Función Loop: Con el método getDateTime() obtenés la fecha y hora actual. El código imprime estos datos en el monitor serie con formato AAAA-MM-DD HH:MM:SS y espera un segundo antes de volver a preguntar.
Solución de problemas
Si no ves datos en el monitor serie, fijate que la velocidad esté en 9600 baudios. Si la hora es incorrecta, revisá que el módulo esté bien conectado y alimentado. En caso de que la hora no se actualice, asegurate de que el DS3231 tenga la pila de respaldo puesta. Si tenés problemas de comunicación, chequeá los cables SDA y SCL y verificá que las librerías Wire y DS3231 estén instaladas correctamente.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.