Ubuntu mate + RPi 3B + DS3231 RTC
在樹莓派上沒有RTC,所以每次開機時都要用網路對時的方式來對時間校正。
如果有DS3231 RTC的話,可用來對時間做存取。
先不討論硬體的部分,預想已在樹莓上接上DS3231了
1. 打開I2C設定:
在指令下輸入sudo raspi-config
請將I2C的設定Enable
2. 輸入指令確定I2C設備已接上,並新增RTC至I2C:
sudo i2cdetect -y 1
會出現以下畫面
接著輸入新增RTC至I2C指令
sudo echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
在ubuntu mate下會顯示權限問題無法新增,需先給與new_device可讀取的權限
sudo chmod 777 /sys/class/i2c-adapter/i2c-1/new_device
再次重新輸入新增RTC的指令就OK了
再次輸入sudo i2cdetect -y 1 確認是否新增成功
3. 測試並使用DS3231
輸入指令讀取RTC的時間
sudo hwclock -r
如果找不到RTC會顯示以下畫面
可直接輸入正確的時間或網路NTP校時。校時完後把正確的時間輸入到RTC裡
sudo hwclock -w
再次查看RTC的時間
sudo hwclock -r
將 Linux 的系統時間設定為硬體 RTC 的時間
sudo hwclock -s
接著輸入指令查看所有時間資訊
timedatectl
最後設定開機時,自動啟用DS3231 RTC
編輯檔案
sudo gedit /etc/rc.local
在exit 0之前加入兩行指令
echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s
之後開機就會自動使用RTC的時間對系統時間修正了
完成
參考 reference:
https://blog.gtwang.org/iot/raspberry-pi/raspberry-pi-ds3231-real-time-clock/
如果有DS3231 RTC的話,可用來對時間做存取。
先不討論硬體的部分,預想已在樹莓上接上DS3231了
1. 打開I2C設定:
在指令下輸入sudo raspi-config
請將I2C的設定Enable
2. 輸入指令確定I2C設備已接上,並新增RTC至I2C:
sudo i2cdetect -y 1
會出現以下畫面
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --有出現68代表I2C已有接上
接著輸入新增RTC至I2C指令
sudo echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
在ubuntu mate下會顯示權限問題無法新增,需先給與new_device可讀取的權限
sudo chmod 777 /sys/class/i2c-adapter/i2c-1/new_device
再次重新輸入新增RTC的指令就OK了
再次輸入sudo i2cdetect -y 1 確認是否新增成功
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --原本的68會變成UU
3. 測試並使用DS3231
輸入指令讀取RTC的時間
sudo hwclock -r
如果找不到RTC會顯示以下畫面
可直接輸入正確的時間或網路NTP校時。校時完後把正確的時間輸入到RTC裡
sudo hwclock -w
再次查看RTC的時間
sudo hwclock -r
將 Linux 的系統時間設定為硬體 RTC 的時間
sudo hwclock -s
接著輸入指令查看所有時間資訊
timedatectl
最後設定開機時,自動啟用DS3231 RTC
編輯檔案
sudo gedit /etc/rc.local
在exit 0之前加入兩行指令
echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s
之後開機就會自動使用RTC的時間對系統時間修正了
完成
參考 reference:
https://blog.gtwang.org/iot/raspberry-pi/raspberry-pi-ds3231-real-time-clock/
留言
張貼留言