現時点の情報です。最新情報はM5StickC非公式日本語リファレンスを確認してみてください。
概要

M5StickCのバッテリー駆動時間を、条件を変えながら計測してみました。
測定条件として2台のM5StickCをシリアル接続し、60秒間隔でバッテリー電圧を記録しました。
充電管理が難しいので、バッテリー電圧が4.0V以下になった計測から、電源が切れるまでの記録を比べています。
同一端末を利用して、計測を行っていますが誤差や、個体差などがあるので参考値として利用してください。
ベース条件
#include <M5StickC.h> void setup() { M5.begin(); M5.Lcd.fillScreen(WHITE); Serial2.begin(115200, SERIAL_8N1, 0, 26); } void loop() { Serial2.println(M5.Axp.GetBatVoltage()); delay(60000); }
上記プログラムをベースに作っています。画面は起動がわかりやすい白に設定し、0と26ピンを利用してシリアルで現在のバッテリー電圧を60秒間隔で出力しています。
受信プログラム
#include <M5StickC.h> void setup() { M5.begin(); M5.Lcd.fillScreen(WHITE); Serial2.begin(115200, SERIAL_8N1, 0, 26); } void loop() { if (Serial2.available()) { int inByte = Serial2.read(); Serial.write(inByte); } }
受信側のプログラムです。送信側とはクロスでTXとRXを接続して、外部シリアルの受信を、USB接続のシリアルに転送するプログラムです。
画面の明るさ別バッテリーライフ
#include <M5StickC.h> void setup() { M5.begin(); M5.Axp.ScreenBreath(7); M5.Lcd.fillScreen(WHITE); Serial2.begin(115200, SERIAL_8N1, 0, 26); } void loop() { Serial2.println(M5.Axp.GetBatVoltage()); delay(60000); }
上記のようにM5.Axp.ScreenBreath()関数で液晶画面の明るさを変更して、動作時間を比べてみました。数値が低いほど暗く、7がうっすら見える限界値ですが、9ぐらいの明るさからが実用範囲内と思います。

条件 | 動作分数 | 比 |
Base(液晶明るさ12) | 52 | – |
液晶明るさ9 | 73 | 140% |
液晶明るさ8 | 82 | 158% |
液晶明るさ7 | 85 | 163% |
標準値の12だと、60分も動作することができませんでした。7だとさすがに液晶が読みにくいので、画面表示するのであれば、8か9ぐらいを使いたいですね。
まとめ
内部の消費電力も一緒に出力しておいたほうが、後の分析に便利そうですがこの条件で計測をはじめてしまったので、過去の計測値などから、参考値をどこかで計算したいと思います。
液晶の他にCPU周波数や、スリープ時などの計測も続ける予定です。しかしながら充電に30分以上かかるのと、測定時間だけでも5時間以上かかっているので、のんびり計測を続けていきたいと思います。
コメント
[…] その1、その2に引き続き、バッテリー駆動時間の計測をしてみました。 […]
[…] その1、その2、その3に引き続き、バッテリー駆動時間の計測をしてみました。 […]
[…] その1、その2、その3、その4に引き続き、 ESP-NOWを利用して、1秒間隔でデータ送信した場合の送信時間を計測してみました。 […]