El Módulo de Reloj en Tiempo Real (RTC) DS1307 permite que la Raspberry Pi mantenga la hora incluso cuando está apagada. Esta guía te guiará para configurar el módulo RTC DS1307 con la Raspberry Pi usando el protocolo I2C.
Lo Que Necesitarás
- Raspberry Pi (cualquier modelo con soporte para GPIO e I2C, p. ej., Pi 3, Pi 4)
- Módulo RTC DS1307
- Batería CR2032 (para mantener la hora cuando está apagado)
- Protoboard y Cables Puente
- Python instalado la Raspberry Pi
Paso 1: Cableado de DS1307 a la Raspberry Pi
El DS1307 se comunica vía I2C, así que lo conectamos a los pines I2C de la Raspberry Pi.
Conexiones (Modo I2C)
| DS1307 Pin | Pin de Raspberry Pi |
|---|---|
| VCC | 3.3V o 5V (Pin 1 o 2) |
| GND | Tierra (Pin 6) |
| SDA | SDA (Pin 3, GPIO2) |
| SCL | SCL (pin 5, GPIO3) |
Paso 2: Habilita I2C en la Raspberry Pi
- Abre la herramienta de configuración de Raspberry Pi:
sudo raspi-config - Ir a Opciones de Interfaz > I2C y habilítelo.
- Reinicia la Raspberry Pi:
sudo reboot - Verifique que el DS1307 se detecta el bus I2C:
El DS1307 debería aparecer en la direcciónsudo i2cdetect -y 10x68.
Paso 3: Instalar las Bibliotecas Necesarias
- Actualiza la lista de paquetes de tu Raspberry Pi:
sudo apt update && sudo apt upgrade -y - Instala las herramientas I2C necesarias y las bibliotecas de Python:
sudo apt install -y i2c-tools python3-smbus python3-pip pip3 install adafruit-circuitpython-ds1307
Paso 4: Ajuste y Lectura de la Hora en el DS1307
Código de Python para Establecer la Fecha y la Hora
Ejecuta este script una vez para configurar el reloj RTC.
import time
import board
import busio
import adafruit_ds1307
# Inicializa el bus I2C y DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)
# Configura la fecha y la hora (Año, Mes, Día, Hora, Minuto, Segundo, Día de la semana, Horario de verano)
rtc.datetime = time.struct_time((2025, 1, 1, 12, 0, 0, 0, -1, -1))
print("¡Fecha y hora del RTC configuradas!")
Código Python para Leer la Hora de DS1307
Después de configurar la hora, utiliza este script para leer la fecha y la hora actuales.
import time
import board
import busio
import adafruit_ds1307
# Inicializar bus I2C y DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)
while True:
current_time = rtc.datetime
print(f"Fecha: {current_time.tm_year}-{current_time.tm_mon:02d}-{current_time.tm_mday:02d}")
print(f"Hora: {current_time.tm_hour:02d}:{current_time.tm_min:02d}:{current_time.tm_sec:02d}")
time.sleep(1)
Paso 5: Sincronización DS1307 con el Reloj del Sistema de Raspberry Pi
Para sincronizar el DS1307 hora del RTC con la hora del sistema de Raspberry Pi:
-
Lee el DS1307 hora del RTC y establecerla como la hora del sistema:
sudo hwclock -r sudo hwclock -s -
Configura el DS1307 Hora del RTC desde la hora del sistema de Raspberry Pi:
sudo hwclock -w
Paso 6: Aplicaciones de la DS1307 Módulo RTC
- Mantener la Hora en Dispositivos Raspberry Pi sin Monitor – Útil para registro de datos proyectos.
- Sistemas de Domótica – Garantiza eventos programados precisos incluso después de un corte de energía.
- Proyectos de IoT – Usa el DS1307 para datos de marcado de tiempo entornos desconectados.
- ` – Guardar marcas de tiempo precisas para registros de temperatura y humedad.
Solución de problemas
-
DS1307 No Detectado (
i2cdetectno se muestra0x68)- Asegura el pines SDA/SCL están conectados correctamente.
- Verifica que I2C está habilitado usando
sudo raspi-config.
-
Lecturas Incorrectas De Fecha/Hora
- Correr
sudo hwclock -rpara comprobar el reloj de hardware. - Restablecer el reloj RTC usando
sudo hwclock -w.
- Correr
-
La Hora Del RTC No Se Conserva Después De Apagar
- Asegure el pila CR2032 está instalado correctamente.
- Reemplace la batería si tiene poca carga o está agotada.
Conclusión
El DS1307 módulo RTC proporciona seguimiento preciso en tiempo real para proyectos de Raspberry Pi, incluso cuando está apagada. Al seguir esta guía, puedes integrar la funcionalidad RTC en aplicaciones para IoT, automatización y registro de datos. 🚀





