O 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á
- Raspberry Pi (Qualquer modelo com suporte GPIO e I2C, por exemplo, PI 3, PI 4)
- Módulo RTC DS1307
- Bateria CR2032 (para manter o tempo quando desligado)
- Fios de pão e jumper
- 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
- Abra a ferramenta de configuração do Raspberry Pi:
sudo raspi-config
- Navegar para Opções de interface> i2c e ativá -lo.
- Reinicie o Raspberry Pi:
sudo reboot
- Verifique se o DS1307 é detectado No ônibus i2C:
O DS1307 deve aparecer no endereçosudo i2cdetect -y 1
0x68
.
Etapa 3: Instale as bibliotecas necessárias
- Atualize a lista de pacotes do Raspberry Pi:
sudo apt update && sudo apt upgrade -y
- 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:
-
Leia o horário do DS1307 RTC e defina -o como o tempo do sistema:
sudo hwclock -r sudo hwclock -s
-
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
- Mantendo o tempo em dispositivos sem cabeça de framboesa Pi - Útil para registro de dados projetos.
- Sistemas de automação residencial - Garanta eventos programados precisos mesmo após a perda de energia.
- Projetos de IoT - Use o DS1307 para Dados de registro de data e hora em ambientes desconectados.
- Estações meteorológicas - armazenar registros de data e hora para Registros de temperatura e umidade.
Solução de problemas
-
DS1307 não detectado (
i2cdetect
não mostra0x68
)- Garanta o Pinos SDA/SCL estão corretamente conectados.
- Verifique isso I2C está ativado usando
sudo raspi-config
.
-
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
.
- Correr
-
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. 🚀