【arduino-ds3231】rtcモジュールの時刻合わせ

スポンサーリンク

arduinoには時計機能がありません。

そのため、arduinoの時間関数 millis()で時計を自作するという方法もありますが、DS3231RTCモジュールを使えば簡単にarduinoに時計機能を持たせることが出来ます。

スポンサーリンク

DS3231 RTCモジュール

DS3231RTCモジュールは安価で耐久性もあります。

既に1年以上使っていますが、問題なく動作しています。

電池はなくても構わないのですが、電源が切れると時刻設定が保持出来ないので再度書き込みする必要があります。

電池があれば時刻を保持出来るので楽ですね。

回路

DS3231とarduinoの配線です。

GND → GND

VCC → 5V or 3.3V

SCL → SCL

SDA → SDA

RTC側の残り2本のピンは使いません。

たったこれだけの配線ですので簡単ですね。

スポンサーリンク

RTCスケッチ

ファイル ⇒ スケッチ例 ⇒ RTClib と進みds3231を選択します。

このスケッチをarduinoに書き込むだけで動作します。

スポンサーリンク

arduino rtc 時刻設定

RTCの時刻設定です。

rtc.adjust(DateTime(年, 月, 日, 時, 分, 秒));

年月日時分秒のところに、半角で入力します。

例: rtc.adjust(DateTime(2020, 2, 2, 2, 2, 2));

例では2020年,2月2日,2時2分2秒と入力しています。

書き込んだら//でコメントアウトしておくと再度書き込んでも時刻設定は変わりません。

スポンサーリンク

RTCのスケッチ

サンプルスケッチを少し変更しただけです。 (^^;

#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
  Serial.begin(115200);
   delay(50); 
  if (! rtc.begin()) {
    while (1);
  }
  rtc.adjust(DateTime(2020, 2, 2, 2, 2, 0)); //時刻設定
  
}
void loop () {
    DateTime now = rtc.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);   
    Serial.println();
    delay(1000);
}
スポンサーリンク

RTC DS3231 まとめ

arduinoを使って水やりタイマーを作るには時間の管理が必要になってきます。

arduinoの時間関数では最大50日でリセットされるのでRTCモジュールがお勧めです。

IF関数と組み合わせることで自由に水やりプログラムを組めますね。

カズは昨年、霧吹き水やり機を自作しましたが今年は、3系統の水やりタイマーを作ってみました。

温室水やり、露地水やり、そして霧吹き水やりです。

自作タンク式水やり機おかげで、検索2位になりました。