RTC (リアルタイムクロック) (DS1307)

RTC (リアルタイムクロック) です。Arduino には RTC がないので、時計を使いたい場合には RTC モジュールが必要となります。この製品にはデータ保存用の EEPROM も付属しています。



購入

Amazon 等で購入できます (購入時価格: ¥780)。

私が購入した RTC モジュールには LIR2032 という電池が付属していました。これは CR2032 リチウム電池の充電池版です。単体でもそれなりの金額がする電池なので、この RTC モジュールはお買い得かもしれません (LIR2032 別売のものも多い)。



各部詳細

この RTC モジュールの製品名は "TinyRTC" といい、I2C 接続の RTC となります。右下にはダイオードのようなシルク印刷 (U1) がありますが、ここには DS180B20 という温度センサーが取り付けられます。なお、この製品は 5V 専用となっています。

電池ホルダをのある面を下にして解説してある記事が多いのですが、ブレッドボード用にピンヘッダを立てるとなると、電池ホルダをのある面を上にしないと電池ホルダ (と DS180B20) が干渉してしまいます。この記事では電池ホルダをのある面を上にした説明をしてあるので注意してください。

See Also:



動作確認

Arduino (UNO) との接続は以下のようになります。

Arduino と TinyRTC との接続は I2C (Inter-Integrated Circuit) となります。

I2C RTC Arduino
GND GND GND
VCC VCC 5V
SCL SCL A5
SDA SDA A4

スケッチなどは ELECROW のサイトにあるので何も難しくはないのですが、念のために説明しておきます。

  1. Arduino IDE を終了させておく
  2. RTC ライブラリを DL する。
  3. C:\Users\<ユーザ名>\Documents\Arduino\libraries に移動
  4. RTC ライブラリをここにフォルダごと解凍。既に RTC というフォルダがあるのなら RTC2 というフォルダを作ってそこへ解凍 (名前がカブっていないのであれば [スケッチ | ライブラリを使用 | ライブラリをインストール] でインストールできるのですが...)
  5. Arduino IDE を起動
  6. サンプルスケッチをコピペ
  7. コンパイル&転送

無事にコンパイルができて転送が終わったらシリアルモニタを開きます。

すると以下のように現在時刻がリアルタイムで表示されます。このライブラリで定義されている DS1307 の I2C スレーブアドレスはデフォルトで 0x68 (104) です。AT24C32 の I2C スレーブアドレスはデフォルトで 0x50 (80) です

もし、表示される日時が狂っているようでしたら...

void setup () {
    Serial.begin(9600);
    Wire.begin();
    RTC.begin();
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
//  RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  RTC.adjust(DateTime(__DATE__, __TIME__)); // ここに出す
}

このように時刻調整部分をブロックの外に出して再コンパイル&転送してください。現在時刻がコンパイルした時刻で設定されます (理屈上数秒の遅れが出ます)。

See Also:


ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。

メニュー: