Arduino Elegoo MEGA2560 R3ボードで時間を把握できるリアルタイムクロックモジュールDS3231 RTCを使用してみます。
なお、今回はELEGOO Arduino用のMega2560スタータキット最終版に付属していたのが、「DS3231 RTCmodule」ではなく「DS1307-Module-V03」という品番なので、注意お願いします。
■用意したもの
・Arduinoバージョン1.8.13がインストールされているPC(Windows10)
・Elegoo MEGA2560 R3ボード、1個(https://amzn.to/37DlvBj)
・DS3231 Precision RTCモジュール(DS3231 RTCmodule)、もしくはDS1307-Module-V03、1個(https://amzn.to/2Hrz8ZL)
「DS1307-Module-V03」と表記されています。
・メスからオスのデュポンワイヤーリボンケーブル(Female to Male DuPont wires)、4つ(https://amzn.to/2TqTsfW)
それぞれ(ELEGOO Arduino用のMega2560スタータキット最終版)に付属しているものです。
■リアルタイムクロックモジュールDS3231 RTCへの理解
リアルタイムクロックモジュールDS3231には、低コストで非常に正確なRTCチップ「DS3231」が備わっている。また2線式I2Cインターフェースを備えており、任意のマイクロコントローラーとインターフェースが可能です。
このチップの中で秒、分、時間、日、日付、月、年の情報を保持しています。また便利な機能として、月の終わりの日付は、うるう年の修正(有効期間は最大2100日)を含め、31日未満の月に対して自動的に調整されます。
ほとんどのRTCモジュールには、計時用に32kHz水晶振動子が内蔵されている。しかし、水晶振動子は、外部温度がその発振周波数に影響を与える可能性があります。この頻度の変化はごくわずかですが、確実に加算されます。
水晶のこのようなわずかな変化を回避するために、DS3231は32kHzの温度補償水晶発振器(TCXO)が駆動します。これにより、外部温度変化の影響を非常に受けにくい特徴を持っています。
温度補償水晶発振器(TCXO)が安定した正確な基準時間を提供し、RTCを1年あたり±2分以内の精度に維持している。
なお、DS1307にも、計時用の32kHzの温度補償水晶発振器が内蔵されていますが、その発振周波数は外部温度の影響を受けやすくなっている。1か月あたり約5分ほど時計がずれている可能性があります。より正確な時間管理を必要とするプロジェクトには、DS3231がおすすめ。
■リアルタイムクロックモジュールとメスからオスのデュポンワイヤーを接続する
それでは、Elegoo MEGA2560 R3ボードでリアルタイムクロックモジュールを使用してみますので、まずはリアルタイムクロックモジュールとメスからオスのデュポンワイヤーを接続します。
接続する前に、リアルタイムクロックモジュール本体のピンには「GND」、「VCC」、「SDA」、「SCL」、「SQW」と記載されていることを覚えておくと良いです。
※デュポンワイヤーのオス、メスに注意する。「SQW」にはデュポンワイヤーは接続しません。
接続する際は、デュポンワイヤーの「メス」の方を、リアルタイムクロックモジュールのピンに差し込みます。
■Elegoo MEGA2560 R3ボードとデュポンワイヤーの「オス」を接続する
リアルタイムクロックモジュールのピンに差し込んだ後は、MEGA2560 R3ボードとデュポンワイヤーの「オス」を接続します。
配線は上記のようになります。
■Elegoo MEGA2560 R3ボードをPC(パソコン)に接続する
接続後、Elegoo MEGA2560 R3ボードをUSBケーブルを使って、PC(パソコン)に接続する。
接続すると、リアルタイムクロックモジュール本体の赤色LEDランプが点灯します。
■コードをアップロードし、マイコンボードに書き込む
接続後、ELEGOO Arduino用のMega2560スタータキット最終版に付属したCD-ROMをパソコンで読み取ります。
CD-ROMから「日本語」をクリックする。
「code」をクリックする。
「Lesson 19 Real Time Clock Module」をクリックする。
今回届いたのが「DS1307-Module-V03」という品番だったので、「DS1307_Example」をクリックする。「DS3231」の場合は「DS3231_Example」をクリックする。
「DS1307_Example.ino」をクリックする。
クリックすると、「Arduino」が起動し、ウインドウ内に「DS1307_Example」のコードが表示されます。
このコードをMEGA2560 R3ボードに書き込みますが、このまま書き込むと、エラーが発生し書き込むことができないので、ライブラリを追加する必要があります。
ライブラリを追加するには、CD-ROMの「Lesson 19 Real Time Clock Module」の中にある「DS1307.zip」というファイルを、コピーし、Windows10のローカル上に保存します。今回届いたのが「DS1307-Module-V03」という品番だったので、「DS1307.zip」となります。
保存後、「Arduino」のウインドウ上部にある「スケッチ」をクリックします。プルダウンメニューが表示されますので「ライブラリをインクルード」をクリックします。さらにメニューが表示されますので、「.ZIP形式のライブラリをインストール」をクリックします。
クリックすると「インストールするライブラリを含むZIPファイルまたはフォルダを指定してください。」というウインドウが表示されますので、「DS1307.zip」を選択し、「開く」ボタンをクリックします。
クリックすると、「スケッチ」の「ライブラリをインクルード」に「提供されたライブラリ」として「DS3231」が追加されますので、こちらをクリックします。
クリックすると、ライブラリが追加された状態になりますので、「Arduino」の上部にある「マイコンボードに書き込む・書込装置を使って書き込み」ボタンをクリックします。クリックする際は、接続したPC(パソコン)でMEGA2560 R3ボードが認識されているかを確認し、クリックします。
クリックすると、「ボードへの書き込みが完了しました。」と表示され、書き込みが成功しました。
書き込みが成功した後は、「Arduino」のウインドウ上部にある「シリアルモニタ」をクリックします。
クリックすると、「シリアルモニタ」のウインドウが表示され、リアルタイムクロックモジュールのチップの中にある時間の情報が出力されます。
■リアルタイムクロックモジュールに保持されている時間を出力できるのか検証
書き込み後、リアルタイムクロックモジュールのチップに保持されている時間を出力できるのか検証を行いました。
検証を行いましたが、シリアルモニタで時間を出力させることができました。「DS1307-Module-V03」は、正確な時間よりも少しずれていることも確認できました。
コメント