ArduinoとDS3231リアルタイムクロックのチュートリアル
このArduinoチュートリアルでは、DS3231リアルタイムクロックモジュールの使用方法を学習します。次のビデオを見るか、以下のチュートリアルを読むことができます。
ここで最初に出てくる質問は、Arduino自体にタイムキーパーが組み込まれているのに、Arduinoプロジェクトに個別のRTCが実際に必要な理由です。重要なのは、RTCモジュールはバッテリーで動作し、マイクロコントローラーを再プログラムしたり、主電源を切断したりしても、時間を追跡できるということです。

DS3231リアルタイムクロック
DS3231は、時間、分、秒、および日、月、年の情報を維持できる、低コストで高精度のリアルタイムクロックです。また、うるう年と31日未満の月の自動補償があります。

このモジュールは3.3または5Vで動作するため、多くの開発プラットフォームまたはマイクロコントローラーに適しています。バッテリー入力は3Vで、一般的なCR2032 3Vバッテリーはモジュールに電力を供給し、1年以上情報を維持できます。
このモジュールは、Arduinoボードへの接続を非常に簡単にするI2C通信プロトコルを使用しています。
回路図は次のとおりです。

したがって、必要なのは4本のワイヤ、モジュールに電力を供給するためのVCCピンとGNDピン、および2本のI2C通信ピンSDAとSCLです。
このArduinoチュートリアルに必要なコンポーネントは、以下のリンクから入手できます。
- DS3231リアルタイムクロック……………..
- Arduinoボード……………………………
- ブレッドボードとジャンパー線………
モジュールを接続したら、リアルタイムクロックで動作するようにArduinoボードをプログラムする必要があります。ただし、ArduinoとI2Cモジュール間の通信をプログラミングする場合、コードはそれほど小さくて簡単ではありません。幸いなことに、DS3231 RTCには、インターネット上にあるいくつかのライブラリがすでにあります。
このチュートリアルでは、Henning Karlsenが作成したライブラリを使用することにしました。このライブラリは、彼のWebサイトwww.rinkydinkelectronics.comから見つけてダウンロードできます。
したがって、ライブラリをダウンロードしてインストールすると、最初のデモ例を使用して、RTCモジュールのクロックを最初にアクティブ化できます。デモサンプルコードのセットアップセクションでは、曜日、時刻、データを最初に設定するためにコメントを外す必要がある3行があることがわかります。
// Code from the Demo Example of the DS3231 Library
void setup()
{
// Setup Serial connection
Serial.begin(115200);
// Uncomment the next line if you are using an Arduino Leonardo
//while (!Serial) {}
// Initialize the rtc object
rtc.begin();
// The following lines can be uncommented to set the date and time
//rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY
//rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014
}
Code language: Arduino (arduino)
1行目は曜日を設定し、2行目は時刻を時、分、秒で設定し、3行目は日付を日、月、年で設定します。
このコードをアップロードしたら、3行をコメントバックして、コードを再度アップロードする必要があります。
// Code from the Demo Example of the DS3231 Library
void loop()
{
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
Serial.print(" ");
// Send date
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
// Send time
Serial.println(rtc.getTimeStr());
// Wait one second before repeating
delay (1000);
}
Code language: Arduino (arduino)
コードのループセクションを見ると、3つのカスタム関数を使用して、RTCから情報を取得し、シリアルモニターに出力していることがわかります。シリアルモニターに表示される方法は次のとおりです。

これで、Arduinoの電源を切断してから再接続し、シリアルモニターを再度実行しても、リセットされずに時間が経過していることがわかります。
これで、リアルタイムクロックが稼働し、任意のArduinoプロジェクトで使用できるようになりました。 2番目の例として、LCDをArduinoに接続し、時刻と日付を印刷しました。

この例のソースコードは次のとおりです。
/*
* Arduino DS3231 Real Time Clock Module Tutorial
*
* Crated by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
* DS3231 Library made by Henning Karlsen which can be found and downloaded from his website, www.rinkydinkelectronics.com.
*
*/
#include <DS3231.h>
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
DS3231 rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
rtc.begin(); // Initialize the rtc object
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
lcd.setCursor(0,0);
lcd.print("Time: ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr());
delay(1000);
}
Code language: Arduino (arduino)
このArduinoチュートリアルは以上です。下のコメントセクションで、お気軽に質問してください。
製造プロセス