Modulo RTC DS3231
- Chips
- DS3231 (reloj compensado por temperatura) y AT24C32 (memoria de 4 KB)
- Precisión
- ±2 ppm entre 0 y 40 °C (menos de un minuto al año)
- Comunicación
- I2C (dirección 0x68)
- Alimentación
- 3,3 a 5 V
Características
Módulo de reloj de tiempo real (RTC) de alta precisión con el chip DS3231, que trae el cristal dentro y compensa los cambios de temperatura: se desvía menos de un minuto al año. Lleva la fecha y la hora aunque el Arduino se apague, gracias a una pila de respaldo.
Incluye además una memoria EEPROM AT24C32, un sensor de temperatura y dos alarmas.
| Chips | DS3231 (reloj compensado por temperatura) y AT24C32 (memoria de 4 KB) |
|---|---|
| Precisión | ±2 ppm entre 0 y 40 °C (menos de un minuto al año) |
| Comunicación | I2C (dirección 0x68) |
| Alimentación | 3,3 a 5 V |
| Extras | Sensor de temperatura, 2 alarmas y salidas SQW y 32K |
| Pila | Portapila para CR2032 o LIR2032 |
¿Para qué sirve?
- Registrar datos con fecha y hora exactas
- Riego, luces y alarmas programadas
- Relojes que deben mantenerse en hora por meses
Diagrama de conexión de prueba
Placa usada: Arduino UNO
| Cable | Módulo | Arduino UNO | Nota |
|---|---|---|---|
| rojo | VCC | 5V | |
| negro | GND | GND | |
| azul | SDA | A4 | Datos I2C |
| amarillo | SCL | A5 | Reloj I2C |
Código de prueba
Instala desde el Gestor de librerías del IDE de Arduino: RTClib (de Adafruit)
// Prueba del módulo RTC DS3231: muestra la fecha, la hora y la temperatura
// del chip cada segundo.
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc;
void setup() {
Serial.begin(9600);
if (!rtc.begin()) {
Serial.println("No se encuentra el DS3231: revisa SDA y SCL");
while (true) {}
}
if (rtc.lostPower()) {
// Primera vez o pila agotada: pone la hora en que se compiló el código
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime t = rtc.now();
char texto[24];
snprintf(texto, sizeof(texto), "%02d/%02d/%04d %02d:%02d:%02d",
t.day(), t.month(), t.year(), t.hour(), t.minute(), t.second());
Serial.print(texto);
Serial.print(" ");
Serial.print(rtc.getTemperature(), 1);
Serial.println(" °C");
delay(1000);
}
La primera vez (o si se agotó la pila) el código pone el reloj en la hora de la computadora. Abre el Monitor serie a 9600 baudios.
Precauciones
- El módulo trae un circuito que carga la pila (una resistencia de 200 Ω y un diodo): con una CR2032 normal quita esa resistencia, o usa una LIR2032 recargable.
- La temperatura que entrega es la del chip, no la exacta del ambiente.
- Funciona a 3,3 V y a 5 V: sirve también con ESP32 y Raspberry Pi Pico.
Fuentes consultadas: Analog Devices: DS3231 · Foro de Arduino: módulo ZS-042 (DS3231) · 320volt: el problema de la pila CR2032 en el DS3231. Ficha preparada por Electrodrone; verifica siempre el voltaje de tu módulo antes de conectarlo.