Usando o DS1307 RTC com o Raspberry Pi

Using the DS1307 RTC with the Raspberry Pi

Módulo DS1307 Relógio em tempo real (RTC) Permite que o Raspberry Pi acompanhe o tempo, mesmo quando é desligado. Este guia irá orientá -lo na configuração do Módulo RTC DS1307 com o Raspberry Pi usando o Protocolo I2C.


O que você precisará

  1. Raspberry Pi (Qualquer modelo com suporte GPIO e I2C, por exemplo, PI 3, PI 4)
  2. Módulo RTC DS1307
  3. Bateria CR2032 (para manter o tempo quando desligado)
  4. Fios de pão e jumper
  5. Python instalado No Raspberry Pi

Etapa 1: Fiação do DS1307 para o Raspberry Pi

O DS1307 se comunica via i2c, então conectamos aos pinos I2C do Raspberry Pi.

Conexões (modo i2c)

Pino DS1307 Pino de framboesa pi
VCC 3.3V ou 5V (pino 1 ou 2)
Gnd Terra (pino 6)
SDA SDA (pino 3, gpio2)
SCL SCL (pino 5, gpio3)

Etapa 2: Ativar I2C no Raspberry Pi

  1. Abra a ferramenta de configuração do Raspberry Pi:
    sudo raspi-config
    
  2. Navegar para Opções de interface> i2c e ativá -lo.
  3. Reinicie o Raspberry Pi:
    sudo reboot
    
  4. Verifique se o DS1307 é detectado No ônibus i2C:
    sudo i2cdetect -y 1
    
    O DS1307 deve aparecer no endereço 0x68.

Etapa 3: Instale as bibliotecas necessárias

  1. Atualize a lista de pacotes do Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. Instale as ferramentas i2c e as bibliotecas Python necessárias:
    sudo apt install -y i2c-tools python3-smbus python3-pip
    pip3 install adafruit-circuitpython-ds1307
    

Etapa 4: Configurando e lendo o tempo no DS1307

Código Python para definir a data e a hora

Execute este script uma vez para definir o relógio 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 Python para ler o tempo do DS1307

Depois de definir a hora, use este script para ler a data e hora atuais.

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)

Etapa 5: sincronizando o DS1307 com o relógio do sistema Raspberry Pi

Para sincronizar o DS1307 Hora do RTC Com o tempo do sistema Raspberry Pi:

  1. Leia o horário do DS1307 RTC e defina -o como o tempo do sistema:
    sudo hwclock -r
    sudo hwclock -s
    
  2. Defina o horário do DS1307 RTC a partir do tempo do sistema Raspberry Pi:
    sudo hwclock -w
    

Etapa 6: Aplicações do módulo DS1307 RTC

  1. Mantendo o tempo em dispositivos sem cabeça de framboesa Pi - Útil para registro de dados projetos.
  2. Sistemas de automação residencial - Garanta eventos programados precisos mesmo após a perda de energia.
  3. Projetos de IoT - Use o DS1307 para Dados de registro de data e hora em ambientes desconectados.
  4. Estações meteorológicas - armazenar registros de data e hora para Registros de temperatura e umidade.

Solução de problemas

  1. DS1307 não detectado (i2cdetect não mostra 0x68)

    • Garanta o Pinos SDA/SCL estão corretamente conectados.
    • Verifique isso I2C está ativado usando sudo raspi-config.
  2. Leituras de data/hora incorretas

    • Correr sudo hwclock -r Para verificar o relógio de hardware.
    • Redefina o relógio RTC usando sudo hwclock -w.
  3. Tempo de RTC não persiste após a energia

    • Garanta o Bateria CR2032 está instalado corretamente.
    • Substitua a bateria se estiver baixa ou morta.

Conclusão

O Módulo RTC DS1307 fornece rastreamento preciso em tempo real Para projetos de Raspberry Pi, mesmo quando desligados. Seguindo este guia, você pode integrar a funcionalidade RTC em Aplicativos de IoT, automação e log de dados. 🚀

Deixe um comentário

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.