ラズパイ

Raspberry Pi にリアルタイムモジュールDS3234を搭載する方法

Raspberry Pi にリアルタイムモジュールDS3234を搭載する方法

Raspberry Piを再起動すると、

システム日時がずれる問題があります。

それは、RTC(リアルタイムクロック)が

搭載されていないために起こります。

リアルタイムモジュールは

RTCが組み込まれてものです。

リアルタイムモジュールは、

電源が切れてもバッテリで時刻を刻み続けれるため、

再起動後でも正しい日時を維持することができます。

RTCモジュールの種類と性能はこちら

 

システム日時がずれる問題は、

RTCモジュールを搭載することで解決できます。

ここでは、RTC(リアルタイムモジュール)

DS3234SNの搭載から設定方法まで

紹介しています。

一部リンクにはアフィリエイトが含まれます

 

<【PR】使用するRTCモジュールはこちら>

 

DS3234SN リアルタイムモジュールの使い方

RTCモジュール(DS3234)と

Raspberry Pi 4Bの接続をします。

手順は次の通りです。

 

①リアルタイムモジュールの配線

②I2C 通信を有効にする

③RTCモジュールの接続確認

④ライブラリのインストール

⑤起動するたびにRTCモジュールから時刻を合わせる

 

①リアルタイムモジュールの配線

DS3234SNとRaspberry Piの接続は

以下の通りです。

 

  • DS3234SNのSCLピンをRaspberry PiのGPIO 5番ピン
  • DS3234SNのSDAピンをRaspberry PiのGPIO 3番ピン
  • DS3234SNのVCCピンをRaspberry Piの3.3V電源
  • DS3234SNのGNDピンをRaspberry PiのGND

4ケ所接続します。

 

②I2C 通信を有効にする

RTCモジュール(DS3234)は、

I2C 通信を使用するため

I2C 通信を有効にします。

 

Raspberry Pi の画面左上にある

「ラズベリーパイのマーク」をクリック

→「設定」

→「Raspberry Pi の設定」

の順番に選択すると

Raspberry Pi の設定画面が表示されます。

ここで、I2C 通信を有効にします。

「インターフェイス」をクリックして

インターフェース設定画面を表示します。

 

①I2C の欄で「有効」を選択します

②最後に「OK」ボタンで終了です。

これで I2C通信が有効になります。

 

③RTCモジュールの接続確認

RTCモジュールが正常に接続されているか確認します。

DS3231 RTCのI2Cアドレスを確認する事で

正常に接続されているかを確認できます。

 

DS3231 RTCのI2Cアドレスを確認する方法は、

以下の手順で行うことができます。

  1. Raspberry PiにDS3231 RTCを接続し、電源を投入します。
  2. Raspberry Piのターミナルを開き、以下のコマンドを入力します。

 

このコマンドは、I2Cデバイスを検索し、

アドレスを表示するものです。

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: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

 

リアルタイムクロックモジュールが正常な状態は

「68」になります

ここで68が表示されなかった場合は

クロックモジュールとラズパイの

配線を確認してください。

 

上記の結果の中で、”68″と表示されている箇所が

DS3231 RTCのI2Cアドレスです。

この場合、I2Cアドレスは0x68であることがわかります。

 

④ライブラリのインストール

DS3234SNをRaspberry Piに接続した後、

以下の手順で使用できます。

 

必要なライブラリーをインストールします。

sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install adafruit-circuitpython-ds3231

 

Raspberry PiのI2CバスとDS3231 RTCを

Pythonで操作するためのパッケージとして

「smbus2」と「RPi.GPIO」があります。

「smbus2」は、I2Cバスを制御するためのパッケージで、

「RPi.GPIO」は、GPIOピンを制御するためのパッケージです。

 

これらのパッケージは、

以下のコマンドでインストールできます。

$ sudo apt-get update
$ sudo apt-get install python-smbus
$ sudo apt-get install python-rpi.gpio

 

順番に実行します。

続行しますか?「Y/n」と出てきますが

「Y」を押して、継続してインストールしていきます。

インストールが完了したら、

PythonのプログラムでDS3231を操作することができます。

 

⑤起動するたびにRTCモジュールから時刻を合わせる

起動時にラズパイ時刻を

RTC時刻に更新するための処理を行います。

/boot/内にあるconfig.txtに

RTC時刻に更新するためのコードを追加します。

 

config.txtを編集するには、

管理者権限が必要になります。

 

管理者権限にします。

$ xhost +
$ sudo pcmanfm

 

コマンドを実行するとウインドウが開き、

編集したいファイルを選択します。

場所は、

/boot/config.txt
を開きます。

config.txtの編集画面になったら

最後に次のコードを追加します。

 

[all]
dtoverlay=i2c-rtc,ds3231

 

以下の様にコードを追加して

保存します。

再起動すると

RTCモジュールから時刻がシステム時間に読みこまれます。

 

時刻をあわせる

インターネットにつながっていれば

自動で時刻が更新されますので

特に何もする必要はありません。

 

手動で時刻を変更する

インターネット環境がない場合は

手動で時刻を設定します。

 

①NTPを無効にして時刻を設定します。

(無効でないと設定できません)

②2行目のコマンドで時刻を設定します。

③3行目のコマンドでNTPを有効化します。

 

今回は、

2023年4月19日、15時00分に設定していまが、

自分の設定したい時刻を入力してください。

$ sudo timedatectl set-ntp false
$ sudo timedatectl set-time "2023-04-19 15:30:00"
$ sudo timedatectl set-ntp true

 

 

timedatectlコマンドが見つからない場合、

systemd-timedatedサービスが

インストールされているか確認する必要があります。

以下のコマンドを使用して、

systemd-timedatedサービスが

インストールされているかどうかを確認できます。

 

systemctl status systemd-timedated

 

もしインストールされていない場合は、

以下のコマンドを使用してインストールすることができます。

sudo apt-get update
sudo apt-get install systemd-timesyncd

 

 

<【PR】今回使用したRTCモジュールはこちら>