M5StickCバッテリーライフ検証 その2

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

概要

前回に引き続き、バッテリー駆動時間の計測をしてみました。一分に1度データ転送をした場合の駆動時間です。

充電時間

駆動時間とは違いますが、充電に約40分程度かかっています。バッテリーの状態や、本体の温度など状況によって変わると思いますが、数分間同じ電圧になり上昇が止まったところまで測定しています。

実験中に3ボルト以下になって、自動的に電源が落ちた状態から、USB給電をして測定をしています。USB接続した瞬間に3.4ボルト程度に上がりますが、外部電源を外した瞬間に電圧は低下します。

充電完了時には4.18ボルト程度ですが、接続を外すと4.10ボルトなどに低下していました。

また、充電は電源を入れておいた方は早いはずです。M5.begin()関数でAXP192の充電速度のパラメータをセットしているためです。ただしセットしている充電速度までは出ていないので、本当に影響しているかは未検証です。

CPU速度別

条件動作分数
240MHz52
10MHz95183%
#include <M5StickC.h>

void setup() {
  setCpuFrequencyMhz(10);
  M5.begin();
  M5.Lcd.fillScreen(WHITE);
  Serial2.begin(115200, SERIAL_8N1, 0, 26);
}

void loop() {
  Serial2.println(M5.Axp.GetBatVoltage());
  delay(60000);
}

動作周波数を10MHzにして計測した結果です。過去の消費電流調査でも画面より、CPU周波数を下げたほうが省電力になるのがわかっていましたがかなり違います。

もう少し条件を変えて実験したいのですが、この条件だけでも充電と計測で2時間半ぐらいかかっています。。。

BluetoothSerial

条件動作分数
Base(Serial)52
BluetoothSerial4383%
BluetoothSerial(画面7, CPU80)90173%
#include <M5StickC.h>
#include <BluetoothSerial.h>

BluetoothSerial SerialBT;

void setup() {
  setCpuFrequencyMhz(80);
  M5.begin();
  M5.Axp.ScreenBreath(7);
  M5.Lcd.fillScreen(WHITE);
  SerialBT.begin("ESP32");
}

void loop() {
  SerialBT.println(M5.Axp.GetBatVoltage());
  delay(60000);
}

実線でのシリアル接続ではなく、BluetoothSerialを使った無線接続の計測です。無線を使っても思ったより消費電力は増えないので、小さいM5StickCでは積極的に利用したいと思います。

また、CPU周波数は無線を利用する場合には、80MHz以上を指定する必要があります。10、20、40を指定するとウォッチドッグタイマでリセットがかかりますので注意してください。

画面暗くして、CPU周波数を下げれば、実運用でも1時間以上毎分の通信ができそうです。

まとめ

実は毎秒通信のデータも計測したのですが、結果を保存せずに閉じてしまったので、再度測定しなおしです、、、

スリープ系の実験をしたいと思っていましたが、もう少しリアルタイム系の通信を計測したいと思います。Wi-fiはもう少し時系列が細かいデータが取れる機材が届いてから実験したいと思います。

続編

コメント

  1. […] その1、その2に引き続き、バッテリー駆動時間の計測をしてみました。 […]