冷蔵庫の温度を測るような市販の記録計は、データを見るのに専用のスマホアプリが要る。それが嫌で、アプリなしで使える温湿度ロガーを自作した人がいる。開発者のMichael Manning氏が、電子ペーパー画面を備えた電池式の温湿度計「Weathergotchi」を作り、設計一式をオープンソースで公開した。
きっかけは、キャンプで夜どれだけ冷えたかを知りたかったことだという。市販のロガーはアプリ前提で、いずれ使えなくなるのも不満だった。そこで、温度センサーと電池と画面さえあればよいと考えた。画面には電子ペーパーを選んだ。表示を書き換えない間は電力を消費せず、常に表示を出しておけるためだ。現在の温度に加え、これまでの変化をグラフでも見せられる。
頭脳には、電子工作で広く使われるESP32-S3を使い、基板も自分で設計した。Manning氏は、基板設計の初歩は、部品のデータシートにある推奨回路や、AdafruitやSparkFunのような企業が公開する参考設計を読んで写すのが近道だと話す。電源まわりは、SparkFunの公開設計をもとにし、電池とUSBの電源を自動で切り替える管理チップや、電池の残量を電流から正確に見積もる「フューエルゲージ」を載せた。
この製品の最大の課題が、450mAhの小さな電池で1週間以上もたせることだった。ESP32-S3は、そのままだと数時間で電池を使い切るが、CPUを止める「ディープスリープ」を使えば消費は1mA未満に下がる。ただ、眠るとプログラムも止まり、それまでの記録を忘れ、ボタンにも反応しなくなる。そこでManning氏は、低消費電力の時計チップ「DS3231」を別に載せ、ESP32が眠っている間も時間を刻ませた。1分ごとにこの時計のアラームでESP32を起こす仕組みだ。
記録を消さないために、外付けのEEPROM(書き換えに強い記憶素子)を、ハードディスクのように使って温度の履歴を残す。電源を完全に切る機能も、機械式スイッチを置く場所がないため、専用ICに任せた。「LTC2954」というボタン制御ICが、ほとんど電力を使わずに電源の入り切りを管理し、ボタンの状態をESP32にも伝える。温度センサーや時計はI2Cという共通の配線でつなぎ、画面はSPIでつないだ。
ソフトは、1分ごとに起きて温度を測り、EEPROMに記録し、画面を更新してすぐ眠る。この数秒の間にESP32は最大50mAを引くため、ほとんどの電力をここで使う。温度を最初に測るのは、ESP32の発熱が基板を通じてセンサーを温め、測定値を狂わせるためだ。手で持ったり日が当たったりしても狂うという。画面は氷点下では表示できず、記録はできても、暖まるまで見られない。基板は試作1枚目で動いたといい、ケースは寸法を変数で調整できるOpenSCADで設計した。Manning氏は、電池寿命にはまだ改善の余地があるとしつつ、やりたいことはほぼできたとしている。