RTCモジュールをArduinoで動かします。
目次:
今回の目的
ELEGOOのチュートリアル「実時間モジュール」をチュートリアル通りに動かします。
※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。
実時間(RTC)モジュール
「実時間」と和訳されてますが、英文の「Real Time Clock Module」の略称で「RTCモジュール」の方が通りが良いので以降そのように呼びます。
RTCはコンピュータ等が内蔵する、時計機能を持つICです。システムの電源が切られても電池等により「時刻」を刻み続け、システム側は起動する度にRTCを参照して時刻を設定します。
外部端子は5本。シルク表記は「GND」、「VCC」、「SDA」、「SCL」、「SQW」。
表面シルクに「DS1307-Module-V03」。ELEGOOチュートリアルにも同じDS1307の写真が載っているのですが、そこではなぜか「DS3231」と紹介されてます。
目立つのはボタン電池、刻印には「Lithium Cell CR 1220 3V」と表記。
中央の8ピンIC、刻印には「DS1307Z」の文字あり、これがRTCを実現しているICなのでしょう。
このIC「DS1307」は秋月電子通商等でも販売しており、そちらにデータシートも掲載しておりましたので入用な方は参考にされて下さい。
また、モジュールも通販サイト等で見つかりますが、図1とは外見が異なっているものばかりでした。きっと代替品が出回るようになったのでしょう。
器材接続
RTCモジュールの「GND」、「VCC」、「SDA」、「SCL」をArduinoのGND、5V、SDA、SCLにつなぎます。
シリアルモニタに出力するため、USBはパソコンに接続します。
スケッチ
省略します。
ライブラリ「Wire」、「DS3231」をインクルードしてI2C通信でモジュールを働かせ、延々と日時をシリアル出力させ続ける流れですが、ライブラリ「DS3231」の中身について理解が及びませんでした(なにしろ行数が長い)。
出力結果は次の項「動作」で示しますが、正しく時間が刻まれております。
ですが、このモジュールは今回使用前にそのボタン電池のフィルムを外して通電させたばかりです。それがどうして正しい時刻を刻めるのでしょうか。
調べたところ、スケッチをコンパイルしたタイミングで、パソコンの時計から日時を取り込んだ様子(変数「__DATE__」、「__TIME__」で時計合わせの関数に与えている)。よって、コンパイル所要時間のずれは数秒発生するものの、パソコンの日時情報が正しければこのモジュールもほぼほぼ正しい日時がセットされる仕組みです。
動作
図3はシリアルモニタの表示です。
イニシャライズ実行の表示後、日時が1行ずつ延々と表示されていきます。
延々と延々と出力が続きます。
所感
「RTC」の存在は知っておりましたが、こうして触れるのは初めてでした。スケッチへの理解は今一つなままですが、様々な電気製品に組み込まれている「RTC」に触れて実感を得られたのを良しとして次に進みたいと思います。
0 件のコメント:
コメントを投稿