・第1回
・第2回
・第3回
・データロガー用スケッチ(ウェブ閲覧用、S-JIS)
・上記スケッチのzip(Arduino読み込み用、UTF-8)
スケッチは自由に使用・改変していただいて構いませんが、一部に第三者のコードを含みますので、ご注意下さい。
一応の説明:RTC (DS1370)とSDカードリーダライタを搭載したデータロガーシールド用のスケッチです。アナログ0番ピンの入力を日時とともに記録し続けます。TinyRTCライブラリを使用していますので、別途インストールが必要です(第3回資料に説明あり)。コンパイル・書込み時に毎回、PCの時計で時刻合わせします。Chip select (CS)ピンの番号と記録間隔を、ご自身の環境・用途に合わせて書き換えて使って下さい。ATmega328Pの機能であるディープスリープとウォッチドッグタイマ(WDT)を利用して、待機電流を低減しています。これらはATmega328P(とそのファミリ)に固有の機能ですので、ESP32などではコンパイルできません(固有のディープスリープモードがあるので、それを使う)。なお、このスケッチのディープスリープの部分のコードは、ラジオペンチ氏のものをそのまま使わせていただいています。この場を借りてお礼申し上げます。
電池で長時間駆動させる場合、省電力化はこれだけでは不十分です。SDカードアクセスの回数を減らすとか、待機時にセンサーの電源も切るとか、ATmega328P単体を3.3V, 8MHz動作で使うとか、色々と工夫の余地があります。このあたりの方法の一部については、第3回の資料で紹介しています。
データロガーシールドはお手軽ですが、搭載されているDS1307はそれほど精度がよくなさそうです。ロガーシールドを使わないのであれば、DS3231などの高精度なRTCを使うほうがいいでしょう。用いるライブラリを入れ替えて、RTC周りのコードを少し書き直せばいいはずです。
下記が作成例です。実写画像(上)の方には、3.3Vへの昇圧回路(左手前の小さな赤い基盤)を取り付けてありますので、エネループ1~2本(1.2~2.4V)でも動作します。秋葉原aitendo謹製のラベルシールをATmega328Pに貼り付けてありますので、ピンの対応がわかりやすいと思います。
その下に、簡単な回路図を載せました。一部レイアウトは違いますし、部品も少しだけ違います。こちらでは昇圧回路をつないでいませんので、エネループなら3~4本(3.6~4.8V)で使っていただくのがいいでしょう。
いずれも、スペースの関係で一部のデジタルピン(D1~D4)は殺していますが、通常の使用ですとピン数は十分でしょうし、シリアル通信(I2C, SPI)も使えます。
一般的なArduino(5V駆動、基板上に取り付けた水晶発振子を用いた16MHz動作)と違うところは、電源が3.3Vで、内部発振での8MHz動作であることです。また、USB-シリアル変換器やLEDを積んでいません。これにより部品点数を減らし、省電力化を実現しています。
いずれもう少し詳しい解説を載せようと思います。