NVIDIA Jetson

Jetson NanoでRTCモジュール(DS3231)を設定! インターネットなしでも正確な時刻を維持する方法

Jetson NanoでRTCモジュール(DS3231)を設定! インターネットなしでも正確な時刻を維持する方法

Jetson Nano は、インターネットに接続していないと 時刻がリセット され、

起動するたびに時間がずれてしまいます。

これは、ネットワークを利用した NTP(時刻同期) ができないためです。

この問題を解決するために、RTC(リアルタイムクロック)モジュール を使えば、

インターネットがなくても正確な時刻を維持 できます。

今回、RTC(リアルタイムクロック)モジュール は、

安価で手に入る「DS3231」をJetson Nanoに接続して、RTCの設定を行っていきます。

この記事では、DS3231 を Jetson Nano に接続し、RTCの設定を行う方法 を、

解説していきます!

 

<一部アフィリエイトリンクが含まれています>

 

1.必要なものを準備しよう!

必要なものを準備します。

<準備するもの>

 Jetson Nano(開発ボード)

 DS3231 RTCモジュール

 ジャンパーワイヤー(メス-メス)

 RTCモジュール(DS3231)

2. DS3231 を Jetson Nano に接続しよう!

DS3231は I2C通信 を使用してJetson Nanoと接続します。

DS3231 ピン Jetson Nano GPIO
VCC 5V (Pin 2, 4) または 3.3V (Pin 1)
GND GND (Pin 6, 9, 14, 20, 25, 30, 34, 39)
SDA I2C SDA (Pin 3)
SCL I2C SCL (Pin 5)

配線を間違わないように接続します。

5Vと3.3Vのどちらでも動作しますが、安定動作には5V推奨
SDA/SCLを逆に接続しないように注意!
I2C通信を有効にする必要があります(次のステップで解説)

 

3. RTCモジュール(DS3231)が認識されているか確認しよう!

RTCモジュール接続されているかの確認

RTCが接続されているか確認するコマンド

sudo i2cdetect -y 1

 

正常に認識されていない場合

RTCモジュールが正常に接続されている場合、

UU や 0x68 などのアドレスが表示されます。

 

正常に認識されている場合

     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: -- -- -- -- -- -- -- --

 

0x68 など、表示されていれば、正常に接続されています!

 

4. I2Cを有効にする方法

I2Cが無効のままだと、DS3231が認識されず、

電力供給もうまくいかないことがあります。

Jetson Nano で I2C デバイスが認識されているか確認します。

 

I2C が有効か確認するコマンド

ls /dev/i2c-*

 

実行結果

/dev/i2c-1 のようなデバイスが表示されていれば、I2C は有効です!

もし何も表示されない場合は、以下のコマンドで I2C を有効化します。

 

上記は、/dev/i2c-1 のようなデバイスが表示されていますので

I2C は有効になっています。

 

表示されない場合は、

次のコマンドを実行して I2C を有効にしていきます。

 

I2Cを有効にする

以下のコマンドで I2C を有効化します。

<I2C を有効にするコマンド>

sudo modprobe i2c-dev

 

etson Nano を再起動しても I2C を自動的に有効にする設定

 

echo "i2c-dev" | sudo tee -a /etc/modules

 

<実行結果>

このように、コマンドが実行されたことを確認します。

 

その後、Jetson Nano を再起動して、

もう一度 ls /dev/i2c-* で確認しましょう!

 

ls /dev/i2c-*

 

実行結果(I2C が有効になっている場合)

/dev/i2c-1 のようなデバイスが表示されていれば、有効になりました。

 

再起動して確認しましょう。

sudo reboot

 

 

5.RTCの時刻を設定しよう!

インタネットに接続されていれば、自動で時刻が更新されます。

コマンドでシステム時刻をRTCに書き込み

システムの現在時刻をRTCに書き込みます。

現在のシステム時刻をRTCに設定するには、

以下のコマンドを実行します。

sudo hwclock --set --date "2025-03-10 12:00:00"

 

RTCに正しく設定されたか確認します。

sudo hwclock -r

 

正常に時刻が表示されれば、RTCへの書き込みが成功しています。

6. Jetson Nano の起動時にRTCの時刻を適用する

Jetson Nano の起動時に RTCの時刻をシステムに自動適用 するには、

以下のコマンドを実行します。

sudo hwclock --hctosys

 

さらに、起動時に自動で実行するように設定します。

sudo nano /etc/rc.local

 

exit 0 の前に、以下を追加。

hwclock --hctosys

保存後、Jetson Nano を再起動すれば、

インターネットなしでも正確な時刻が維持 されます!

sudo reboot

まとめ

Jetson Nanoはインターネットがないと、時刻がリセットされる問題がありますが

DS3231 RTCモジュールを使うことで、正確な時刻を記憶できます。

I2Cを有効化し、RTCをJetson Nanoに接続して設定する

RTCの時刻をシステム時刻に適用し、起動時に自動適用する設定を行いました。

これで、Jetson Nano でも インターネットなしで正確な時刻で管理できます。