よみやさんの動画などを参考にやってみた。
そもそもこのRTCモジュールは彼の動画を見て購入してた。(2月)
ゆくゆくは「PlotClock」に使うつもり。
【電池モジュールをCR2032に変更】
ネット記事を読むとこの基盤で使う電池はリチウムイオン充電池「LIR2032」だそうで、買うと結構高価
AliExで買えば1個100円程度だが9月までは待てない。(航空便不可らしい)
ネットで調べるとキャンドゥ辺りで100円で売っているやつが内蔵してるそうな。
早速買いに行ったが、3大100均ショップで未発見
親切なキャンドゥ店員さんが過去の商品まで調べてくれたが、もう何円も前に絶版になったらしい。
超残念
改造前
手持ち在庫のLR2032を使うことにした。
これでも数年は電池が持つそうです。
【基盤の改造】
ネットで調べると抵抗とダイオードを外しR6をブリッジすれば良いと書いてある。
改造後の写真 「↑」部分をハンダゴテで温めて部品を取り去る。
R6はハンダもりもり
いやーほんま小さいですね~ 一個は何処かへ吹き飛ばされて無くなった。
こんな部品をホットプレートでハンダ付けするなんて私には無理です。
5Pinソケットをハンダ付けして完成
電池をセットしたが結構固くてソケットを壊しそうだった。
【Arduinoと接続】
I2C通信を行うので、
GND を Arduino GND
VCC を Arduino 5V
SDA を Arduino A4
SCL を Arduino A5
に接続
【ソフトウエア編 I2Cアドレス確認】
I2C通信用の「Wire」ライブラリは導入済みだったので、
サンプル「i2c_scanner」をライブラリから引っぱり出す。
0x50 が メモリ
0x68 が RTC
アドレスだそうです。
ちなみに、0x50は4KbのEEPROMが実装されており記憶領域として使えるそう。(よみやさん)
なので、Arduinoで取得したセンサーデータをここに記憶させておき、一括データ送信などが可能
また電池バックアップされた58byteのRAMも使える。
【ソフトウエア編 I2Cアドレス確認】
RTCモジュールから時刻を取得してみるサンプルを動かす。
基盤メーカーが提供しているので、ここから「RTC.zip」をDLする。
Arduino IDEのツールバーからスケッチ/ライブラリをインクルードを選択
「zip形式のライブラリをインストール」を選び保存したzipファイルを指定する。
ライブラリのサンプル「RTC」を開いて、Arduinoに書き込む。
速度を合わせてシリアル窓を開けば現在時刻が表示された。
「RTClib」なるライブラリもあるそうです。
ちなみに、Arduinoに”プログラム転送した時刻”が自動でモジュールへ書き込まれるそうです。
私は、ほぼほぼ正しい時刻でOK
そうでなければ時分秒設定プログラムを書かなければならない。(これはキーボードもないので超面倒)
RTC.adjust(DateTime(__DATE__, __TIME__)); の行をプログラムのsetup();で動かせばその時間に設定するそうです。
こちらにも説明がありました。
-------
1時間してシリアルコンソールを開いたり、リセットするとRTC内で時間をカウントアップしていないようだ???
Arduinoからの給電を止めると「2001/1/1」になったり
ボード内でちゃんと時間が進んでいない。最後にアクセスした時間で止まってる。
そんな感じなのだ。・・・変
電池を抜いて電圧測ったら1.1V
パッケージに電池有効期限は2023年2月と書いてあったがもはやお前は 死んどる!
電池を抜いたら「2165/165/165 165:165:85」になりました。
電池交換。ダイソーの奴今度は2027年有効電池でした。
電池を入れて再起動
あれれ「2022/7/5 22:22:xx」のままだ
あ、これがコンパイル時の時刻か
void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
ここにあった記述を外に出す
}
RTC.adjust(DateTime(__DATE__, __TIME__)); ここね
}
これで再書き込み
現在時刻になりました。
再度時間をおいて起動・・・れれれ、時間がさっきの書き込み時刻から再開
ああ、「RTC.adjust(DateTime(__DATE__, __TIME__)); 」の記述を残して書き込んだままではだめなのか??
この1行を削って再コンパイル&送り込み
今度は「2000/1/1 0:0:0」??になる
続いて、2022/7/6 11:7:31~開始
時間が進んどらん!
何回リセットしても、ここからが現在時刻ですとデータを送ってくる!!
そりゃ書き込んだ時刻だろうが。
ネットを探すとこういう粗悪品が結構混じっているらしい。
くそっ OLEDに続いてまたも粗悪品を掴まされたか。
この業者からは二度と買わない。
-----サンプルソース---------
#include
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
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(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
}