Real Time Clock(RTC)

はじめに

Raspberry Pi 3にRTCを接続します。

使用デバイス

概要

使用したデバイスはMaximのDS3231です。I2CインタフェースのRTCですので、Arduino/Raspberry PiのRTCとしてポピュラーな石です。

特徴をデータシートから引用すると

  • Real-Time Clock Counts Seconds, Minutes, Hours, Date of the Month, Month, Day of the Week, and Year, with Leap-Year Compensation Valid Up to 2100
  • Accuracy ±2ppm from 0°C to +40°C
  • Accuracy ±3.5ppm from -40°C to +85°C
  • Digital Temp Sensor Output: ±3°C Accuracy
  • Register for Aging Trim• RST Output/Pushbutton Reset Debounce Input
  • Two Time-of-Day Alarms
  • Programmable Square-Wave Output Signal
  • Simple Serial Interface Connects to Most Microcontrollers
  • Fast (400kHz) I2C Interface
  • Battery-Backup Input for Continuous Timekeeping
  • Low Power Operation Extends Battery-Backup Run Time
  • 3.3V Operation
  • Operating Temperature Ranges: Commercial (0°C to +70°C) and Industrial (-40°C to +85°C)
  • Underwriters Laboratories® (UL) Recognized

3.3V~5Vで動作する、I2Cインタフェースの高精度なRTCといったところでしょうか。

リファレンス回路

データシートからリファレンス回路を引用します。

DS3231

購入先

Amazonでモジュールを購入しました。

2個 ¥430 です。

ハードウェア構成

購入したモジュールの構成

実際に購入したモジュールは

  • バックアップ電池
  • 電源用パスコン
  • SCK、SDAのプルアップ(4.7KΩ)

のみ実装されていました。プルアップ抵抗は、今後のモジュール増設に応じ、削除の検討が必要です。

実装方法

秋月電子で購入した「Raspberry Pi Model B プロトタイプ基板」です。(申し訳ありません。正式な販売名は忘れました)

今後、LCDモジュール等を増設予定で、3.3Vバスの各種モジュールを混載できるように考えておきます。

RTC-Unversal Board

ソフトウェア

では、実際にCentOSから使用できるようにしましょう。

アドレス

まず、どこにRTCがマップされているかを確認します。

[root@akari ~]# /opt/i2cdetect/bin/i2cdetect
0x03 : 0x06 : Unknown device
0x68 : 0xD0 : Unknown device
     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: -- -- -- -- -- -- -- --
[root@akari ~]#

0x68にマップされています。DataSheet?の通りですね。

ds3231-address.jpg

ドライバの有効化

I2Cインタフェースのドライバの有効化とDS3231ドライバを有効化します。

  • /boot/config.txt
#
dtparam=i2c_arm=on
dtparam=i2c1=on
dtoverlay=i2c-rtc,ds3231

モジュールがロードされているか確認します。

[root@akari ~]# lsmod
Module                  Size  Used by
dm_mirror              15332  0
dm_region_hash         13392  1 dm_mirror
dm_log                 11207  2 dm_mirror,dm_region_hash
dm_mod                115340  2 dm_mirror,dm_log
rtc_ds1307             13844  0
hwmon                  10552  1 rtc_ds1307
brcmfmac              289093  0
brcmutil                9863  1 brcmfmac
cfg80211              543000  1 brcmfmac
rfkill                 20896  1 cfg80211
i2c_bcm2835             7103  0
bcm2835_gpiomem         3940  0
fixed                   3285  0
uio_pdrv_genirq         3923  0
uio                    10268  1 uio_pdrv_genirq
i2c_dev                 6913  0
i2c_bcm2708             5994  0
ip_tables              13161  0
x_tables               20830  1 ip_tables
ipv6                  418247  33
crc_ccitt               1771  1 ipv6
[root@akari ~]#

rtc_ds1307がロードされています。ds3231じゃないんですね

確認

リブートしてから確認

[root@akari ~]# hwclock -r
2001年01月01日 00時00分15秒  -0.476564 秒
[root@akari ~]# hwclock --systohc
[root@akari ~]# hwclock -r
2020年06月13日 14時35分23秒  -0.543832 秒
[root@akari ~]# timedatectl
      Local time: 土 2020-06-13 14:35:26 JST
  Universal time: 土 2020-06-13 05:35:26 UTC
        RTC time: 土 2020-06-13 05:35:26
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: no
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
[root@akari ~]#

ちなみに、通常NW接続ではNTP同期です。

[root@akari ~]# timedatectl
      Local time: 土 2020-06-13 14:38:51 JST
  Universal time: 土 2020-06-13 05:38:51 UTC
        RTC time: 土 2020-06-13 05:38:51
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@akari ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.0.xxx   219.164.211.137  5 u   28   64    1    0.559    0.014   0.008
[root@akari ~]#

頑固にntpdを使用してます。

お疲れ様でした。


添付ファイル: fileds3231-address.jpg 755件 [詳細] filertc-universal-pcb.jpg 728件 [詳細] filertc-ds3231.JPG 760件 [詳細]

トップ   編集 編集(GUI) 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-06-13 (土) 14:40:54 (1406d)