Using sourceperl rpi.rtc library to read time
Needs corrections
Install Python3 and download the github repository
sudo python3 setup.py install git clone https://github.com/sourceperl/rpi.rtc.git
Wire the rtc to the raspberry pi using the default mapping.
| Chip | Rpi pin |
|---|---|
| VCC | 3.3v pin |
| GND | GND pin |
| CLK | pin 11 |
| DATA | pin 13 |
| CE (RST) | pin 15 |
*You can modify the the pin connections on the pyRPiRTC.py file by changing the pin =#
def __init__(self, clk_pin=11, data_pin=13, ce_pin=15)
Create a file to Read RTC chip date and time .
sudo nano DS1302_Time.py
Use functions from pyRPiRTC.py to read and set time
#!/usr/bin/env python3
# read date and time from RTC chip, return ISO 8601 UTC string
# assume DS1302 contain UTC time and not local
import sys
import pyRPiRTC
rtc = pyRPiRTC.DS1302(clk_pin=11, data_pin=13, ce_pin=15)
try:
# read date and time from RTC chip
dt = rtc.read_datetime()
print(dt.strftime('%Y-%m-%dT%H:%M:%SZ'))
except ValueError:
sys.exit('error with RTC chip, check wiring')
finally:
# clean close
rtc.close()
Update Rpi system time from RTC chip
Typically call at RPi startup
sudo date -s `./ds1302_get_utc`
One line to check RTC chip time vs system time
Since RTC store only second and not millisecond a 1s delta can occur (or more after a few days)
# drift in second
echo $(($(date -u -d`ds1302_get_utc` +%s) - $(date -u +%s)))
# human readable
echo "RTC `ds1302_get_utc`"; echo "SYS `date --utc +%FT%TZ`";
echo $(($(date -u -d`ds1302_get_utc` +%s) - $(date -u +%s)))
# human readable
echo "RTC `ds1302_get_utc`"; echo "SYS `date --utc +%FT%TZ`";
