2019年6月28日 星期五

Raspberry Pi筆記:RTC1302

基本原理:

RPi在斷電後,本身系統時間是不會跳動的,更新時間的方式有兩種方式,一個是開機連上網路後透過NTP更新時間,一個是額外裝RTC模組(晶片+電池)。如果應用RPi的位置沒有網路,那就只能走第二條路。
這邊我使用了ref.1的程式來簡化後續的複雜度。

連線:

基於ref.1內的設定:
VCC3.3V
GNDGND
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抓到任何設備。

參考資料:

1. https://github.com/sourceperl/rpi.rtc

沒有留言:

張貼留言