LoginSignup
13

More than 5 years have passed since last update.

posted at

Organization

【RaspberryPi】RTC DS1307 導入方法まとめ

RaspberryPi + RTC 導入方法まとめ

RaspberryPi3Bの時間が起動時毎回おかしいのでRTC(リアルタイムクロック) を導入しました。
スタンドアロン状態でセンサから値をMysqlに取り込む装置を作っていたところ、時刻が大変なことになっていました。
なのでとりあえずRTCを導入してみました。

使用機器
- RaspberryPi3B
- RTC DS1307(ピン付きの完成品)

コイン電池(CR1220)が必要。
i2cで通信するのでRaspberryPiからの制御が容易。

はじめに注意すること

  • NTP,fake-hwclockと共存させようとすると上手く動かない(解決済み)
  • rc.localがデフォルトではうまく動作しない(解決済み)

導入方法

電池をDS1307に入れてRaspberryPiのIOに挿してある前提で進めます。

また必要であれば

$ sudo raspi-config

からi2cを有効化しておいて下さい。

【1】必要なツールをインストール

$ sudo apt-get install i2c-tools // 制御に使用
$ sudo apt-get install ntpdate   // ntpクライアント時刻設定に使用 

【2】/etc/modulesに「i2c-dev」と「rtc-ds1307」を追加

$ sudo echo i2c-dev >> /etc/modules
$ sudo echo rtc-ds1307 >> /etc/modules

【3】接続されたアドレスを確認(私の環境では0x68でした。)

$ sudo i2cdetect -y 1

【4】次は管理者から実行

# modprobe rtc-ds1307
# echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
# i2cdetect -y 1

この時点でアドレスが変わっていると、ちゃんとシステムの管理下に置かれていることになります。

【5】NTPとfake-hwclockの停止

$ sudo apt-get install chkconfig
$ sudo chkconfig ntp off
$ sudo apt-get remove fake-hwclock
$ sudo dpkg --purge fake-hwclock

【6】起動スクリプトの修正

/etc/rc.local に以下の内容を追加
ちなみに起動時のrc.localは管理者権限で実行されるのでsudoは必要ありません。

/etc/rc.local

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device

ntpdate -v ntp.nict.jp

if  [ $? = 0 ]; then
  hwclock -w # システムクロック => RTC
else
  hwclock -s # システムクロック <= RTC
fi

【7】rc.localの有効化

そのままではrc.localが上手く動作しません。

$ sudo raspi-config

から
"Wait for Network at Boot"を選択し、
"Slow Wait for network connection before completing boot"を選択して下さい。

これで上手く動くはずです。

参考URL

http://my-web-site.iobb.net/~yuki/2016-11/raspberry-pi/rtc/
http://my-web-site.iobb.net/~yuki/2016-11/raspberry-pi/rtc-ok/
https://qiita.com/nuwaa/items/298ada62c4209ea7f9ca
http://www.pentacreation.com/blog/2016/12/161209.html

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
13