LoginSignup
23
22

More than 5 years have passed since last update.

RaspberryPiにRTCモジュールを搭載して、ハードウェア起動時に時刻を合わせる

Last updated at Posted at 2014-06-07

RaspberryPiはRTCおよびバックアップバッテリを搭載していないため、起動直後はシステムクロックが初期値になっています。バッテリバックアップ付きのRTCモジュールを使用することで、オフライン状態で起動してもシステムクロックを維持することが出来ます。

前提条件

  • Arch Linux ARM
  • DS3231使用RTCモジュール

RTCモジュールを搭載する

RTCモジュール

RaspberryPi, RTCなどのキーワードで検索するといくつかの製品が販売されていますが、Amazon.co.jpで販売されていたRaspberryPi用のI2Cモジュールを使いました。

ビジュアル的にこんなかんじで、RaspberryPiに亀の子にして搭載します。写真には写っていませんがモジュールの裏側に小型バッテリがハンダ付けされています。

IMG_0083.jpg

モジュールの初期化

ArchLinux 3.12.20-4-ARCHでは、次のコマンドでRTCモジュールを呼び出すことが出来ました(手元のハードウェアではrc.local的なファイルを使用して起動時にRTCモジュールが有効になるようにしています。
)。

/usr/bin/echo ds1307 0x68 | /usr/bin/tee /sys/class/i2c-adapter/i2c-1/new_device

※昔はmodprobeコマンドなどを利用して認識させていたと思いますが、イマイチこの辺りの仕組みを理解できていません。modprobe.conf的なファイルに何かを書いてあげればシステムファイルに書き込みしなくても認識するのでしょうか?

dmesgの出力。

[root@alarmpi ~]# dmesg | grep -i ds1307
[    8.205884] i2c i2c-1: new_device: Instantiated device ds1307 at 0x68
[    8.277696] rtc-ds1307 1-0068: rtc core: registered ds1307 as rtc0
[    8.277758] rtc-ds1307 1-0068: 56 bytes nvram

起動後の状態で確認

起動直後の状態で、

[root@alarmpi ~]# uptime
 15:21:28 up 0 min,  1 user,  load average: 0.81, 0.22, 0.07

システムクロックがハードウェアクロックと同期しています。


[root@alarmpi ~]# timedatectl status
      Local time: Sat 2014-06-07 15:21:29 JST
  Universal time: Sat 2014-06-07 06:21:29 UTC
        RTC time: Sat 2014-06-07 06:21:30
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

いえい!


参考。

23
22
0

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
  3. You can use dark theme
What you can do with signing up
23
22