ArduinoにRTC(実時間)モジュールを接続して時間を表示しました

なにを学習するの?

  • 温度、湿度、距離などを計測してデータを記録する時に測定した時間を同時に記録したい場合が多くあります。Arduino UNO R3は時計機能を内蔵していません。時計機能を持つRTC(実時間)モジュールの接続方法とARDUINO IDE R3のモニタ画面で時間を表示させる方法を学習します。

必要な部品は?

RTC(実時間)モジュール(DS1307)1個
Arduino UNO R31個
  • Elegoo社製の「 Arduino用のUNO R3 最終版スタータキット」を購入しました。RTC(実時間)モジュール(DS1307)がこのキットに含まれていたので使用しました。
  • RTC(実時間)モジュール(DS1307)のFritzingの部品モジュールを作成しました。(Webで探しましたが見つかりませんでしたので…)
Fritzingの部品を作成する記事は?
RTCモジュールはキットに含まれています

RTC(実時間)モジュール(DS1307)のピン配置は?

端子番号端子名備考
GNDグランド
VCC電源
SDAI2C データ
SCLI2C データクロック
SQW設定した波形の出力

回路図 (配線図)は?

  • Fritzingで描いた回路図(配線図)と実際の配線です。

RTC(実時間)モジュール (DS1307)の動作は?

  • DS1307 はシンプルな時間管理チップです。 内蔵バッテリを備えているため、電源を切っても時計は時間を維持できます。
  • DS1307はArduinoとI2Cインターフェースで繋がります。Arduino IDEにはI2Cライブラリ[wire.h]が用意されており、I2Cのインターフェースを意識することなくDS1307を利用できます。
  • Arduino IDEのシリアルモニタを起動すると日付・時間が表示されます。

スケッチのコードは?

  • DS1307をArduino で動作させるために、2つのライブラリをインクルードします。
    • Wire.h : Arduino UNO R3 とI2C通信のデータを扱います。
    • DS3231.h: DS1307でも動作するRTCライブラリです。
//www.arduinomakesiteasy.com 2022.4.25

#include <Wire.h>
#include <DS3231.h>

DS3231 clock;
RTCDateTime dt;

void setup()
{
  Serial.begin(9600);

  Serial.println("Initialize RTC module");

  clock.begin();

  // コンパイル終了時間をRTCモジュールに設定する。
  clock.setDateTime(__DATE__, __TIME__);    
  //この行を使ったコンパイルは1回のみ実施し、この行を消して再度コンパイルする。

}

void loop()
{
  dt = clock.getDateTime();

  Serial.print("Raw data: ");
  Serial.print(dt.year);   Serial.print("-");
  Serial.print(dt.month);  Serial.print("-");
  Serial.print(dt.day);    Serial.print(" ");
  Serial.print(dt.hour);   Serial.print(":");
  Serial.print(dt.minute); Serial.print(":");
  Serial.print(dt.second); Serial.println("");

  delay(1000);
}
  • RTC(実時間)モジュール(DS1307)を使うときに時間設定をしなければなりません。スケッチをコンパイルした時のPCの時間を書き込みできれば、手間が省けます。このスケッチのコードが下記です。
clock.setDateTime(__DATE__, __TIME__); 
  • このコードは一回実行した後は、コメントアウトして再度実行します。そうしないとArduino UNO R3をPCに繋がずに動作させる毎に不定の日時をRTC(実時間)モジュール(DS1307)に書き込む動作をし続けてしまいます。

RTCモジュールを含んだシールドは?

  • Arduino UNO R3には、ハードウェアの機能を簡単に拡張するためのシールドと呼ばれる拡張ハードウェアを簡単に接続できます。
  • RTCモジュールとSDモジュールが一体となったデータロガーモジュールがあり、時間データを扱う機能とデータを保存する機能を容易に使用できます。
データロガーモジュールの記事は?

ご質問、誤植の指摘などありましたら。「問い合わせ 」のページからお願いします。