Pico Wの感想ツイートとかを眺めていたら、電池で動かしたらどのくらい持つのかという内容のツイートを見つけて、面白そうだったので試してみることにしました。
たしかに、PimoroniのPico関連製品は乾電池で動かすことを意識してバッテリーボックスセットが売られていたりします。Pico Wに合わせて発売されたPico W Aboardシリーズも単4電池x2のケース付きで販売されていますね。
実験内容
今回は、電池で駆動するPico W上にWebサーバーを立てて、RP2040のCPU温度と現在時刻をJSONで返すURLを作り、それを別の機材から毎秒GETでアクセスをして、アクセスができなくなるまでの時間を測りました。スクリプトは、前回のレポート記事で紹介したものからBME280を取り除いたようなイメージです。
Pico Wが起動したときの時刻が2021/01/01 00:00:00なので、GETできなくなった直前のJSONに含まれている時刻=電池で動かせた時間として見ることができそうです。
電池は、IKEAのニッケル水素充電池「LADDA」1.2V・2450mAhを2本使用しました。前回のレポートでは、ネットワーク通信時は5Vで0.06A==60mAくらいと計測できていたため、2.4Vでは60mA * 5V / 2.4V == 125mAとして、2450mAh/125mA==19.6時間くらい動くのではないかと思います(なんとなくあってますかね……?このあたりせっかくSNSで助言をいただいたものの、ニガテで理解できているかどうか自信がなく……)。
ネットワーク構成とPico Wの監視方法
今回もPico Wは電波暗箱に入れるため、毎秒GETする端末は暗箱の外に設置しますが、暗箱内で無線ブリッジ役をしているRaspberry Piから出る有線LANはUSBに変換されているため、暗箱外で別のRaspberry Piにつないで有線LANブリッジを組み、自宅ネットワークと接続できるようにしつつ、ここからPico Wに対して毎秒GETして、OLEDディスプレイモジュールでJSON内の時刻と温度を表示することとしました。
OLEDディスプレイでは毎回JSONの内容を表示しますが、JSONが取得できなくなったら時刻の表示内容は更新せずに、結果記録用としてそのままにします。
実験開始
今回はスイッチ付き電池ボックスを使用しましたが、スイッチのレバーを倒すのは暗箱を閉じた状態ではできないので、仕方なく暗箱を開いた状態でレバーを倒して、すぐに箱を閉じることとしました(本当はリレーとかを使えばよかったのでしょうが、機材の都合でできませんでした……)。
あとは電池が切れるまで放置します。が、この時点では時間の予測ができていなかったので、夜に開始して、寝る前にも終わる気配がないことである程度察し、OLEDディスプレイを適当に隠して就寝しました。
実験結果
翌日、出先からたまにcurlで確認をしていたら、夕方頃に応答がなくなっていました。帰宅してOLEDの表示を確認した結果、22時間43分40秒で更新が止まっていました。
予想よりも3時間ほど長い結果になりましたが、常に通信し続けるわけではなく、毎秒小さなJSONファイルをGETする程度だったため、実際にはアイドル時間もそれなりにあったと思われます。
感想
毎秒無線でアクセスされるような環境下でも、充電池2本でほぼ1日動くことがわかりました。
実際になにかしっかりと運用する時には、センサーやLEDやサーボモーターなどを付けたり、ディープスリープ・ウェイクアップを実装したり、無線アクセスも毎秒ではなく毎分だったりと、実装によって変動はするでしょうが、電池駆動でもわりとなにか遊べそうな感じがしますね。電池駆動の可能性を感じた実験でした。
追記: スクリプト
使用したスクリプトをこちらに置きました。
https://github.com/Akkiesoft/akkiesoft-pico/tree/main/MicroPython/rp2040-temp-webserver