mieki256's diary



2017/07/19(水) [n年前の日記]

#1 [raspberrypi] Raspberry Pi3にRTCモジュールを追加してみた

昨日届いた、DS3231使用のRTCモジュールを、Raspberry Pi3に追加してみた。以下を参考に作業。

_「Raspberry Pi 3 (ラズパイ3)」 RTC 追加 : Snow in Novemberのblog
_Raspberry Pi 3BでRTC(リアルタイムクロック)|Penta creation
_Raspberry PiでDS3231 RTCを正しく動かす - My life is programming
_Raspberry Pi 2 で RTC を使いスタンドアロンで時刻を保持 - 或る阿呆の記
_RedSleeve へのミニ RTC モジュールの導入 | あたがわの日記

一応、行った作業をメモ。

本体に接続。 :

GPIOの、1,3,5,7,9版に接続。でいいのかな。

OS側の設定。 :

Raspberry Pi3 と RTCモジュールは、I2Cなる規格(?)で通信するらしい。raspi-config で I2C を有効化する。
sudo raspi-config
enable にしたら再起動(sudo reboot)…しただけでは何故か正常起動しなかったので、一旦電源ケーブルを抜いてからまた差し直した。

I2C関係のツールをインストールする。が、最初から入ってた。
sudo apt install i2c-tools

状態を確認。
sudo i2cdetect -y 1
     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: -- -- -- -- -- -- -- --
68と出てきた。たぶん認識されてる。のかな。

/boot/config.txt に以下の行を追加。
dtoverlay=i2c-rtc,ds3231
再起動。sudo reboot。

状態を確認。
sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
UUが表示された。有効になってるっぽい。

ntpdateをインストール。 :

ntpdate をインストールして、NTPサーバの時刻を強制取得。
sudo apt install ntpdate
sudo ntpdate -u ntp.jst.mfeed.ad.jp
date

RTCに設定。
sudo hwclock -w

ntpを停止。fake-hwclockをアンインストール。 :

ntpが動いてるとRTCとのソレがアレになるらしい。また、フツーの Raspberry Pi にはRTCがついてないので、fake-hwclock なるソレでそれっぽくしてるらしい。ので、サービスを無効にしたり、アンインストールしたり。
sudo apt install chkconfig
sudo chkconfig ntp off
sudo apt remove fake-hwclock
sudo dpkg --purge fake-hwclock

/etc/rc.localに追加。 :

/etc/rc.local に、RTC からシステムクロックに時刻を設定するソレを記述する事例が多いっぽいので真似したり。
sudo vi /etc/rc.local
以下を追加。
# RTC
/sbin/hwclock --hctosys
sleep 10
/usr/sbin/ntpdate -b ntp.nict.jp && /sbin/hwclock --systohc
hwclock -s (hwclock --hctosys) で、RTCからシステムクロックに時刻を設定。また、ntpdate が成功したら、その後に続く処理、hwclock -w (hwclock --systohc)が実行されるらしい。

/etc/default/hwclock を修正。
sudo vi /etc/default/hwclock
HWCLOCKACCESS=no

サービスとして追加する方法もあるらしい。そのほうが、起動直後から早く時間が設定されるとか…。そのうち試してみたい。

cron で一定時間毎に時刻合わせ。 :

sudo crontab -e
# m h dom mon dow command
0 0,12 * * * /usr/sbin/ntpdate ntp.nict.jp && /sbin/hwclock -w
00:00、または 12:00 に、ntpdate でシステムクロックを設定後、RTCに設定。ということでいいのかな。

一応動いてるっぽいような。 :

不良品のRTCモジュールが届いてたらどうしようと不安だったけど、一応動いてるように見える、ような。ホッとした。ただ、通電してない状態で、どの程度時刻を保持できるのかはまだ不明。

使われている電池について。 :

Amazonのレビューには、CR927 なる電池が使われているという話が。

_ボタン電池 CR927の規格や互換品などの詳細情報
_CR927 ‐ 通信用語の基礎知識

充電池ではないっぽい。すると、既に電池が切れてたり、そのうち切れちゃう可能性が。電池交換は…無理だな…。電池に直接端子を溶接してあるし…。個人が半田ごてで何かくっつけようとしたら、熱で電池が爆発しそうだし。

コイン型電池を交換できるタイプのソレを買ったほうが良かったのだろうか…。

以上です。

過去ログ表示

Prev - 2017/07 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project