*[[Real Time Clock(RTC)]] [#g463c150]
**はじめに [#o8c4826e]
>
>Raspberry Pi 3にRTCを接続します。
<
**使用デバイス [#e311fea4]
***概要 [#t748e177]
>
>使用したデバイスは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&amp;bull; 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&amp;reg; (UL) Recognized
<<
<
>
>3.3V~5Vで動作する、I2Cインタフェースの高精度なRTCといったところでしょうか。
<
***リファレンス回路 [#p61c4b70]
>
>データシートからリファレンス回路を引用します。
>&ref(rtc-ds3231.JPG,,DS3231);
<
***購入先 [#r065d2e3]
>
>Amazonでモジュールを購入しました。
>2個 ¥430 です。
<
**ハードウェア構成 [#cde9feb9]
***購入したモジュールの構成 [#x35bc8a9]
>
>実際に購入したモジュールは
>>
-バックアップ電池
-電源用パスコン
-SCK、SDAのプルアップ(4.7KΩ)
<<
>のみ実装されていました。プルアップ抵抗は、今後のモジュール増設に応じ、削除の検討が必要です。
<
***実装方法 [#c6fbb882]
>
>秋月電子で購入した「Raspberry Pi Model B プロトタイプ基板」です。(申し訳ありません。正式な販売名は忘れました)
>今後、LCDモジュール等を増設予定で、3.3Vバスの各種モジュールを混載できるように考えておきます。
>&ref(rtc-universal-pcb.jpg,,RTC-Unversal Board);
<
**ソフトウェア [#pf37f415]
>
>では、実際にCentOSから使用できるようにしましょう。
<
***アドレス [#udad94f6]
>
>まず、どこに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の通りですね。
>&ref(ds3231-address.jpg);
<
***ドライバの有効化 [#rb5eaa6d]
>
>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じゃないんですね
<
***確認 [#n07ac47a]
>
>リブートしてから確認
>>
 [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を使用してます。
<<
<

お疲れ様でした。



トップ   編集 編集(GUI) 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS