El Módulo de reloj en tiempo real (RTC) DS1307 Permite que la Raspberry Pi realice un seguimiento del tiempo incluso cuando está apagado. Esta guía lo guiará a través de la configuración del Módulo RTC DS1307 con la Raspberry Pi usando el Protocolo I2C.
Lo que necesitarás
- Frambuesa pi (Cualquier modelo con soporte GPIO e I2C, por ejemplo, PI 3, PI 4)
- Módulo RTC DS1307
- Batería CR2032 (para mantener el tiempo cuando se enciende)
- Cables de placa y jersey
- Python instalado en la frambuesa pi
Paso 1: Cableado el DS1307 al Raspberry Pi
El DS1307 se comunica a través de I2C, así que lo conectamos a los pines I2C de Raspberry Pi.
Conexiones (modo I2C)
Pin DS1307 | Pin de frambuesa 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: Habilite I2C en la Raspberry Pi
- Abra la herramienta de configuración de Raspberry Pi:
sudo raspi-config
- Navegar por Opciones de interfaz> I2C y habilitarlo.
- Reinicie la Raspberry Pi:
sudo reboot
- Verificar que el DS1307 se detecta En el autobús I2C:
El DS1307 debería aparecer en la direcciónsudo i2cdetect -y 1
0x68
.
Paso 3: Instale las bibliotecas requeridas
- Actualice la lista de paquetes de su Raspberry Pi:
sudo apt update && sudo apt upgrade -y
- Instale las herramientas I2C requeridas y las bibliotecas de Python:
sudo apt install -y i2c-tools python3-smbus python3-pip pip3 install adafruit-circuitpython-ds1307
Paso 4: Configuración y tiempo de lectura en el DS1307
Código de Python para establecer la fecha y la hora
Ejecute este script una vez para establecer el reloj RTC.
import time
import board
import busio
import adafruit_ds1307
# Initialize I2C bus and DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)
# Set the date and time (Year, Month, Day, Hour, Minute, Second, Weekday, DST)
rtc.datetime = time.struct_time((2025, 1, 1, 12, 0, 0, 0, -1, -1))
print("RTC Date and Time Set!")
Código de Python para leer el tiempo de DS1307
Después de configurar la hora, use este script para leer la fecha y hora actuales.
import time
import board
import busio
import adafruit_ds1307
# Initialize I2C bus and DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)
while True:
current_time = rtc.datetime
print(f"Date: {current_time.tm_year}-{current_time.tm_mon:02d}-{current_time.tm_mday:02d}")
print(f"Time: {current_time.tm_hour:02d}:{current_time.tm_min:02d}:{current_time.tm_sec:02d}")
time.sleep(1)
Paso 5: Sincronizar DS1307 con el reloj Raspberry Pi System
Para sincronizar el DS1307 TIEMPO RTC Con el tiempo del sistema Raspberry Pi:
-
Lea la hora RTC DS1307 y establecerlo como el tiempo del sistema:
sudo hwclock -r sudo hwclock -s
-
Establezca el tiempo RTC DS1307 desde el tiempo del sistema Raspberry Pi:
sudo hwclock -w
Paso 6: Aplicaciones del módulo RTC DS1307
- Mantener el tiempo en los dispositivos Raspberry Pi sin cabeza - útil para registro de datos proyectos.
- Sistemas de automatización del hogar - Asegure eventos programados precisos incluso después de la pérdida de energía.
- Proyectos de IoT - Use el DS1307 para Datos de campaña de tiempo en entornos desconectados.
- Estaciones meteorológicas - Almacene las marcas de tiempo precisas para Registros de temperatura y humedad.
Solución de problemas
-
DS1307 no detectado (
i2cdetect
no se muestra0x68
)- Asegurar el Pines SDA/SCL están conectados correctamente.
- Verifique que I2C está habilitado usando
sudo raspi-config
.
-
Lecturas de fecha/hora incorrectas
- Correr
sudo hwclock -r
Para verificar el reloj de hardware. - Restablecer el reloj RTC usando
sudo hwclock -w
.
- Correr
-
El tiempo de RTC no persiste después del poder
- Asegurar el Batería CR2032 se instala correctamente.
- Reemplace la batería si es baja o muerta.
Conclusión
El Módulo RTC DS1307 brindar Seguimiento preciso en tiempo real Para proyectos de Raspberry Pi, incluso cuando se apaga. Siguiendo esta guía, puede integrar la funcionalidad RTC en IoT, automatización y aplicaciones de registro de datos. 🚀