現時点の情報です。最新情報はM5StickC非公式日本語リファレンスを確認してみてください。
概要
前回に引き続き、バッテリー駆動時間の計測をしてみました。
充電時間
BATの電圧を外部から測定する追試をしてみましたところ、電源状態にかかわらず充電速度はほとんど変わりませんでした。
M5.begin()の中で充電速度の設定をAXP192にしていますが、その設定値が適応されていないように思えます。電源ON時に100mAまでの充電設定をしていますが、充電電流が100mAも流れていないので、電源的な限界なのか、結線がまちがっている可能性などがあります。
Wi-Fi
条件 | 動作分数 | 比 |
Base(Serial) | 52 | – |
BluetoothSerial(画面12, CPU240) | 43 | 83% |
BluetoothSerial(画面7, CPU80) | 90 | 173% |
WiFi | 29 | 56% |
#include <M5StickC.h> #include <WiFi.h> #include <Preferences.h> Preferences preferences; char wifi_ssid[33]; char wifi_key[65]; void setup() { M5.begin(); M5.Lcd.fillScreen(WHITE); Serial2.begin(115200, SERIAL_8N1, 0, 26); // Wi-Fiアクセスポイント情報取得 preferences.begin("Wi-Fi", true); preferences.getString("ssid", wifi_ssid, sizeof(wifi_ssid)); preferences.getString("key", wifi_key, sizeof(wifi_key)); preferences.end(); // connect to WiFi Serial.printf("Connecting to %s ", wifi_ssid); WiFi.begin(wifi_ssid, wifi_key); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" CONNECTED"); } void loop() { Serial2.println(M5.Axp.GetBatVoltage()); delay(60000); }
アクセスポイントに接続しただけのコードで、Wi-Fiでの通信は行っていません。Serialに毎分出力した場合の結果です。接続したままですとWi-FiよりBluetoothSerialを利用したほうが良さそうです。
Wi-Fiは、Sleepして定期実行などの場合にはBluetoothSerialより良い結果になりそうですが、リアルタイム系には向いていないと思います。
BluetoothSerial(毎秒送信)
条件 | 動作分数 | 比 |
BluetoothSerial(画面12, CPU240) | 26 | – |
BluetoothSerial(画面7, CPU80) | 41 | 158% |
5秒間隔(画面12, CPU240) | 26 | 100% |
0.1秒間隔(画面12, CPU240) | 25 | 96% |
1分間隔(画面12, CPU240) | 52 | 200% |
1秒間隔にしたところ、1分間間隔の半分程度の動作時間になりました。画面を暗くして、CPUを遅くしても30分程度までの測定で、利用したほうが良さそうです。
しかしながら5秒間隔にしても、0.1秒間隔にしても、ほぼ動作時間が変わっていないので、秒単位のデータを扱う場合には0.1秒とかでの送信がよさそうです。
バッテリーライフの実験が終わったあとに、電流計を使って秒と分の境目が何秒ぐらいなのかを検証したいと思います。
まとめ
リアルタイム系の計測はBluetoothSerialを利用して、30分以内が限界そうでした。それ以上長い時間の計測が必要な場合には、データを内部に保存してから抜き出す工夫が必要そうです。
Wi-Fiは消費電流が多いので、リアルタイム系では利用することができず、スリープして定期計測用途になりそうです。逆にスリープするとBluetoothSerialは接続の継続性がなくなるので、使いにくいです。
現在スリープ系の実験をしていますが、毎分起動で10時間程度しか持ちません。条件を変えながらテストをしていますが、非常に時間がかかるのでいつ終わるだろうか。。。
最近販売されている16340などの外部バッテリー利用HATを使った場合で、十倍前後の稼働時間が確保できそうな気がしますが、届いたら検証してみます。
コメント