DS3231 for pi

2018年11月30日 - 未分類

Raspberry Piには、RTCが付いていないので、電源起動時の時計が狂ってしまいます。fake-hwclockというものが、Raspberry Piの終了時の時刻を記録して、再開時に、その時刻をセットするようですが、停止していた時間だけ誤差が生じます。通常は、インターネットに接続していて、ntpでネットワーク時間を取得するので問題はありませんが、インターネットに接続できない場合には、時刻の設定が手動となるために面倒です。

DS3231 for piは、Raspberry PiのGPIOに挿して使えるRTCです。

このように挿して使います。

$i2cdetect -y 1

で、68が表示されます。

$ sudo vi /boot/config.txt

dtparam=i2c_arm=on dtoverlay=i2c-rtc,ds3231

を追加して、リブートします。fake-hwclockは、使わないので停止します。

# sudo systemctl stop fake-hwclock
# sudo systemctl disable fake-hwclock

RTCを初期化します。

$sudo hwclock --systohc

ルールファイルを作成します。

$ sudo vi /etc/udev/rules.d/85-hwclock.rules

# On the Raspberry Pi the RTC isn't available when systemd tries,
# set the time from RTC now when it is available.
KERNEL=="rtc0", RUN+="/sbin/hwclock --rtc=$root/$name --hctosys"

再度、reboot後には、RTCが使える状態になっています。i2cdetectでは、68がUUに変わります。システムが使っているという意味でしょう。

$ i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 70: -- -- -- -- -- -- 76 -- $ sudo hwclock -r 2018-11-30 09:44:35.560653+0900 時刻が表示されます。この時刻は、dateコマンドの時刻と同じになります。 再度、リブートしてから、RTCの動作を確認します。 $ timedatectl Local time: 木 2019-05-09 08:50:35 JST Universal time: 水 2019-05-08 23:50:35 UTC RTC time: 水 2019-05-08 23:50:35 Time zone: Asia/Tokyo (JST, +0900) Network time on: yes NTP synchronized: no RTC in local TZ: no

MacOSXでもsshfsを使う

brewで以下の2つをインストールすれば使えるようになります。 

brew cask install osxfuse

brew install sshfs

Translate »