Table of Contents
なにを学習するの?
- 温度、湿度、距離などを計測してデータを記録する時に測定した時間を同時に記録したい場合が多くあります。Arduino UNO R3は時計機能を内蔵していません。時計機能を持つRTC(実時間)モジュールの接続方法とARDUINO IDE R3のモニタ画面で時間を表示させる方法を学習します。
必要な部品は?
RTC(実時間)モジュール(DS1307) | 1個 |
Arduino UNO R3 | 1個 |
- Elegoo社製の「 Arduino用のUNO R3 最終版スタータキット」を購入しました。RTC(実時間)モジュール(DS1307)がこのキットに含まれていたので使用しました。
- RTC(実時間)モジュール(DS1307)のFritzingの部品モジュールを作成しました。(Webで探しましたが見つかりませんでしたので…)
Fritzingの部品を作成する記事は?
- [Fritzing の部品データを作る方法] — Arduinoで回路図(配線図)を作成する時に部品データを自作できます。
RTCモジュールはキットに含まれています
- Amazon — [Arduino用のUNO R3 最終版スタータキット] 個別の部品を別々に購入するよりお得です。
RTC(実時間)モジュール(DS1307)のピン配置は?
端子番号 | 端子名 | 備考 |
1 | GND | グランド |
2 | VCC | 電源 |
3 | SDA | I2C データ |
4 | SCL | I2C データクロック |
5 | 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モジュールが一体となったデータロガーモジュールがあり、時間データを扱う機能とデータを保存する機能を容易に使用できます。
データロガーモジュールの記事は?
- [Arduinoデータロガーシールドを使ってデータを記録しました] — RTCモジュールとSDモジュールが一体となっており、データ収集時に時間データも加えられて便利です。
ご質問、誤植の指摘などありましたら。「問い合わせ 」のページからお願いします。