基本原理:
RPi在斷電後,本身系統時間是不會跳動的,更新時間的方式有兩種方式,一個是開機連上網路後透過NTP更新時間,一個是額外裝RTC模組(晶片+電池)。如果應用RPi的位置沒有網路,那就只能走第二條路。這邊我使用了ref.1的程式來簡化後續的複雜度。
連線:
基於ref.1內的設定:VCC | 3.3V |
GND | GND |
CLK | #11 / GPIO#17 |
DAT | #13 / GPIO#27 |
RST | #15 / GPIO#22 |
Python程式:
import datetime
import pyRPiRTC
rtc = pyRPiRTC.DS1302()
#rtc.write_datetime(datetime.datetime.utcnow())
print(rtc.read_datetime())
討論:
1. 我手上測試的這個DS1302晶片,折磨了我很久,看了許多相關文件後仍沒辦法正常運作。在執行程式後一直跑出月份必須為1~12,在中間加了一條print發現晶片回傳的時間是2000年0月0日0時0分0秒;最後,我把RPi的系統時間設定給DS1302晶片後,一切都運作正常了。若有相似問題的,可以更新晶片內的時間試試。2. 許多網路經驗分享,提到DS1302可以透過I2C作連線,我測試手上這片是完全無法透過i2cdetect -y 1抓到任何設備。
沒有留言:
張貼留言