検証用スケッチリアルタイム系無線利用時の省電力方針リアルタイム系無線利用時の推定動作時間の計算方法スリープ系無線利用時の省電力方針さらなる長時間稼働のためにまとめ概要M5StickCを省電力で動かすための情報です。Coreで検証していますが、どんな環境でも使えると思います。IN端子にマルチメーター経由で電源を接続して、マルチメーターの電流計で計測しています。誤差が出やすい環境ですので、数値の絶対値はあまり信用しないでください。外部電源を接続していますので、バッテリーにも多少充電されています。55.0マルチメーターの値が一番低かったです。マルチメーターとAXP192の外部電源電流で4.4mAも差がありました。外部電源を外して、バッテリー駆動にした場合には55mAでしたが、実際のところどの数字が正しいのかはわかりません。AXP192の計測自体で消費電流が変わってしまうので、本文ではマルチメーターの数値を元にしています。68.1ざっくりとした、M5StickCの最低限のスケッチの場合の消費電流の割合です。{}一番支配的なのがCPUで、その後画面になります。このデータは、徐々にパラメーターを変えながら機能を無効にしていった差分をまとめたものになります。-14.8loop()の中身にdelay()がない場合には、無限ループでloop()が呼び出されている状態ですので、中身がなくても電力を使ってしまいます。delay(1)を入れることで約15mAの消費電流が下がりました。delayの数値をもっと大きくしても、あまり消費電流は下がりませんでした。処理が増えて来ると消費電流はあがりますので、絶対的に消費電流を下げる方法ではありません。-28.2delay(1)をした状態でsetCpuFrequencyMhz()でCPU周波数を変更した場合の差分です。無線を利用する場合には80以上を指定する必要があるので注意してください。処理がない場合の消費電流なので、重い処理をすることでより消費電流が増えます。CPU電源供給OFFのみAXP192経由でDCDC1への電源共有をOFFにしています。この他にスリープすることでもう少し消費電力を減らすことが可能だと思います。-20.1M5.Axp.ScreenBreath()で画面の明るさを変更した場合の消費電流です。OFFはAXP192でLDO2への電源供給をOFFにしています。OFFにしても、明るさ7でもほとんど変わりませんので、OFFにするのであればなんとか読めることができる7を使ってもいいと思います。8か9ぐらいの明るさがないと文字を読むのは難しい気がします。OUT用のDCDCが1.3mA以上使っていました。測定する状況によって違うのですが、2mAぐらい計測された場合もあります。OUTのDCDCで使っていることになります。利用しないのであればOFFにしておくことをおすすめします。OFFにするとバッテリー電圧がそのまま出力される状態になります。OFFにするやり方は後ろにある検証用スケッチを参考にしてもらいたいですが、次バージョンのSDKで初期化時にOFFにするパラメーターが追加されています。その他AXP192基本機能の1.4mAは電源OFFにしないと減らすことはできません。その他の機能は0.1mA単位なので、減らしてもいいですが、それほど効果はないようです。delay(delayTime);}シリアルモニタからコマンドを送信することで、状態が変わるスケッチです。行う場合には、CPUクロックを80MHz以上にする必要があります。基本80で動かしたほうがよいと思います。通信間隔は1秒でも0.1秒でも、それほど消費電流に差はないようです。1分ぐらいまで間隔をあけると消費電流は下がっていました。無線方式には主にWi-FiとBluetooth、ESP-NOWがありますが、ESP-NOWが一番省電力です。Serialの利用が手軽に使えます。その5上記にリアルタイム系の通信継続時間を検証しているので、参考にしてみてください。6.2一番最初の表から基本となるプログラムの消費電流を計算し、上記の差分を足します。その2上記のブログでは0.1秒間隔の場合56.6mAでした。0.8で0.63時間(35.7分)みたいに計算できます。最後の安全係数はバッテリーからのDCDCロスなどです。実測だと37分ぐらい動いていましたので、そこから安全係数を逆算しています。バッテリーがヘタると、もっと悪化しますので0.7ぐらいで計算しておいたほうが安全かもしれません。無線系はデータが少ないのと、結構測定データによって誤差があるので、実測してみるしかないかもしれません。スリープ系無線利用時の省電力方針ESP32がディープスリープで消費電流がなくなったとしても、AXP192が動き続けていますので、長時間の稼働は難しいです。Wi-Fiアクセスポイントに接続する場合には、CPU周波数を240MHzで高速に通信を終わらせて、すばやく無線をOFFにしたほうが全体の消費電流が下がるパターンもあるようです。その4上記の検証では半日しか動かすことができませんでした。AXP192の利用していない機能をOFFにすることでおそらく24時間前後の動作をすることは可能だと思いますが、AXP192自体で1.4mA程度消費電流がありそうなので、そのへんが限界だと思います。さらなる長時間稼働のために外部バッテリーを使うのが一番だと思います。HATなどは、バッテリーを拡張するものではなく、外部接続したServoへの電源供給を目的としてものなので、外部バッテリーとしては利用できません。バッテリー系のHATを利用してください。この記事にために先月末にバッテリー系HATを2種類注文しましたが、まだ到着していませんのでまだ私も使ったことがありません。内蔵バッテリーが80mhAに対して、1000mhA以上のバッテリーを利用できると思うので、10倍以上の稼働時間になると思われます。まとめマルチメーターは秒単位での消費電流変化しか測定できません。無線系はもっと短い時間で消費電流が変化しているので、あまり正しい数値が測定できていません。シャント抵抗とオシロスコープなどを利用すれば、もう少し短い時間軸で測定が可能ですので、今後実験をしたいと思っています。不明点や、調べてほしい点があったらブロクへのコメントかTwitterへ連絡お願いします。コメントをキャンセルメールアドレスが公開されることはありません。date*管理者承認後にページに追加されます。公開されたくない相談はその旨本文に記載するかTwitterなどでDM投げてください。スパム対策として、日本語が含まれない投稿は無視されますのでご注意ください。その1ESP32のGPIO入力について関連記事はこちらです。関連記事はこちらです。Themegraphy。