最近、アマゾンで、中華の Arduino 用モジュールが色々入手出来る。
※かなり前からかな・・
これらのモジュール基板、多くの種類があり、値段がもの凄く安い!
※品質はそれなりかもしれないが、この値段なら十分だと思える。
※部品単体で買っても、こんなに安くは買えない。
で、気になった「基板」をいくつか買ってみた~
※RTC、ジャイロ・加速度センサー、リチウムイオン充電モジュールなど
・DS3231(RTC)
このモジュールは、マキシム社のRTCで、I2Cインターフェースを備えている。
温度補償水晶発振器(TCXO)および水晶を内蔵していて、超高精度。
このモジュールには、32KのEEPROM、リチウムイオン電池(CR2032)による
バックアップ付きで、電池まで付いている。
これで、たったの、200円
※degi-key で調べると、デバイス単体で890円
ありえない値段でビックリ!
※2個買ったけど、どちらも機能するようだ。
とりあえず、以前にDS1371でRTCのテストプロジェクトを作成したので、DS3231用
クラスを実装してみた。
※しょうもないバグで、数時間悩んだけど・・
内臓レジスターは、BCDになっており、非常に面倒な仕様となっている。
クラスでは、レジスターを読み出してから、time_t に変換している。
逆にレジスターに書き込むには、time_t から、tm 形式に変換してから行う。
※そうしないと、多くの場合、不便極まりないので・・・
本当は、こんな「クソ」仕様のRTCは使いたくないのだが、安いので仕方無い・・・
※この仕様のRTCは「うるう年」を厳密には正しく扱えない、まぁ今は既に2015年なので、
2099年までの範囲なら、まぁ問題無いか・・
common/time.c は、タイムゾーンを含めた、時間関係で最低限必要な関数を実装してある。
通常は、libc に含まれるが、R8C で、time 関係のライブラリーをリンクすると、非常に大きな
容量となるので、独自に実装した関数郡を用意してある。
標準の「time.h」をインクルードすると、「当たる」ので注意が必要。
// 対象の RTC を有効にする // #define DS1371 #define DS3231
※「main.cpp」で、どちらかを有効にする事で、RTCのタイプを切り替えできる。
こんにちは
お安くお得だと思いますがリチウムイオン電池(CR2032)が付いているようで、http://e-structshop.com/item/mea0044/
などみると普通の電池では危険ではないでしょうかね?
充電池にも対応する為、電池の+には、200オームの抵抗と、ダイオードが直列に入っているのですが、
3.3Vで動かすのであれば、問題無いはずです。
5Vで動かすなら、念のため、200オームの抵抗を外せば良いでしょう。