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 でも インターネットなしで正確な時刻で管理できます。