先日、「M5NanoC6」の使い方を確認しました(記事は こちら)。
「M5NanoC6」は低価格でサイズも小さいことから、IoTデバイスを大量に設置するような用途に適していると思われます。
ただ、そのような用途で使用する場合、乾電池などで長期間にわたり連続稼働できるかどうかが重要なポイントになります。
そのため今回は「M5NanoC6」の消費電力を調べてみることにします。
なお、私はこれまでそのような用途には「M5Stamp S3」「M5Stamp Pico」「ATOMS3 Lite」などのデバイスを使ってきました。これらのデバイスについても以前、同じ目的で消費電力を調査しています(記事は こちら)ので、今回も同一条件で調査し、結果を比較することにします。
開発環境のバージョンは以下のとおりです。
- Arduino IDEのバージョン:1.8.19
- esp32ボードのバージョン:3.0.3 *以前の「M5Stamp S3」などの消費電力調査時には「2.0.9」を使用していました。
調査内容
以下のような処理を行った時の消費電力を調査します。
- 起動したら「チップID」と「ランダムな値(3桁の整数を10で割った値)」をWebサーバに送信。
- 送信完了するとディープスリープモードに移行し、30秒たってから再起動。
- 以降は同じ処理を繰り返す。
Ni-MH電池4本で動かします。電池をGROVEポート(電源端子名は「VBUS」)につなぎます。電池とデバイスの間に「INA226PRC」を挿入して電流波形を測定します。(測定方法は こちら)。
Arduino IDEのボード設定で、「ツール」>「ボード」>「ESP32 Arduino」>「ESP32C6 Dev Module」を選択します。
スケッチはこちらです。
#include <M5NanoC6.h>
#include <WiFi.h>
const char* ssid = "XXXXXXXX";
const char* password = "XXXXXXXX";
unsigned long interval = 30; // unit:sec
boolean sendRequest(float val0) {
: 省略
}
void setup() {
NanoC6.begin();
esp_sleep_enable_timer_wakeup(interval*1000*1000);
pinMode(M5NANO_C6_BLUE_LED_PIN, OUTPUT);
digitalWrite(M5NANO_C6_BLUE_LED_PIN, HIGH);
// Get Data
float val0 = random(0, 1000) / 10.0;
// Connect WiFi
Serial.printf("Connecting to %s\n", ssid);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.printf("\nWiFi connected\n");
// Send Data
if(!sendRequest(val0)) esp_deep_sleep_start();;
Serial.println("Send request is finished.");
digitalWrite(M5NANO_C6_BLUE_LED_PIN, LOW);
esp_deep_sleep_start();
}
void loop() {}
調査結果
データ送信処理を4回行い、その時の消費電流の変化を重ねてグラフ表示しました。
Wi-Fi接続できるまでの時間によって処理時間も変わってきますが、各回の処理時間にばらつきがあると結果比較が難しくなるので、今回は速やかにWi-Fi接続できるよう、Wi-Fiルータの近くで調査を実施しました。
結果比較
先ほどの消費電流グラフやその他のデータから、1回の処理にかかる時間やその間の消費電流値などをまとめ、以前実施した別デバイスの調査結果と比較してみます。
なお、今回の調査方法では、待機時の消費電流値が若干のマイナスになってしまいましたので、表にはゼロと記載しています。
処理時間(ms) | 消費電流(mA) | 電源電圧(V) | 消費電力(mW) | ||||
---|---|---|---|---|---|---|---|
動作時 | 待機時 | 動作時 | 待機時 | 動作時 | 待機時 | ||
M5NanoC6 | 1078.0 | 78.10 | 0.00 | 5.42 | 5.53 | 423.30 | 0.00 |
ESPr Developer 32 | 1081.5 | 82.84 | 0.12 | 5.46 | 5.70 | 452.31 | 0.68 |
M5Stack Basic V2.6 | 1370.5 | 96.72 | 16.04 | 5.32 | 5.60 | 514.55 | 89.82 |
M5Stamp Pico | 867.0 | 58.34 | 0.60 | 5.37 | 5.65 | 313.29 | 3.39 |
Timer Camera F | 1248.0 | 82.19 | 0.00 | 5.36 | 5.70 | 440.54 | 0.00 |
ATOMS3 | 1707.5 | 61.48 | 0.09 | 5.43 | 5.65 | 333.84 | 0.51 |
ATOMS3 Lite | 1420.5 | 46.79 | 0.33 | 5.57 | 5.74 | 260.62 | 1.89 |
M5Stamp S3 | 822.5 | 59.05 | 0.28 | 5.39 | 5.55 | 318.28 | 1.55 |
Raspberry Pi Pico W | 2751.0 | 54.24 | 1.40 | 5.43 | 5.59 | 294.52 | 7.83 |
micro:bit V2.21 | 378.0 | 15.34 | 2.12 | 2.71 | 2.81 | 41.57 | 5.96 |
一定時間間隔で間欠動作させた時の平均消費電流値を机上計算しました。
間欠動作時の平均消費電流値(mA) | |||
---|---|---|---|
1分毎 | 10分毎 | 1時間毎 | |
M5NanoC6 | 1.40 | 0.14 | 0.02 |
ESPr Developer 32 | 1.61 | 0.27 | 0.14 |
M5Stack Basic V2.6 | 17.88 | 16.22 | 16.07 |
M5Stamp Pico | 1.43 | 0.68 | 0.61 |
Timer Camera F | 1.71 | 0.17 | 0.03 |
ATOMS3 | 1.84 | 0.26 | 0.12 |
ATOMS3 Lite | 1.43 | 0.44 | 0.35 |
M5Stamp S3 | 1.09 | 0.36 | 0.29 |
Raspberry Pi Pico W | 3.82 | 1.64 | 1.44 |
micro:bit V2.21 | 2.20 | 2.13 | 2.12 |
また、この結果を元に、単三型Ni-MH電池(2000mAh)での稼働日数を机上計算しました。
2024年7月時点のスイッチサイエンスでの販売価格も併記しておきました。
価格(円) | 単三型Ni-MH電池での稼働日数 | |||
---|---|---|---|---|
1分毎 | 10分毎 | 1時間毎 | ||
M5NanoC6 | 1155 | 59.4 | 593.9 | 3563.2 |
ESPr Developer 32 | 2200 | 51.7 | 309.7 | 575.3 |
M5Stack Basic V2.6 | 6743 | 4.7 | 5.1 | 5.2 |
M5Stamp Pico | 1144 | 58.1 | 121.9 | 135.7 |
Timer Camera F | 3465 | 48.7 | 487.5 | 2924.7 |
ATOMS3 | 2783 | 45.4 | 314.8 | 699.6 |
ATOMS3 Lite | 1529 | 58.3 | 189.4 | 239.2 |
M5Stamp S3 | 1452 | 76.8 | 231.1 | 284.0 |
Raspberry Pi Pico W | 1353 | 21.8 | 50.7 | 57.9 |
micro:bit V2.21 | 2926 | 37.8 | 39.2 | 39.3 |
「M5NanoC6」は期待どおりの低電力で、「M5Stamp S3」などのデバイスと比べても遜色のない結果になりました。
また、ディープスリープ時の消費電力が非常に小さいので、1日数回しか動作する必要がないなど、ディープスリープの頻度が高い用途では特に有効です。
価格も非常に安いので、外付けデバイスを接続する際の都合(GPIOやGROVEポートの要不要)などで使用するデバイスを選択すればよさそうです。
なお、今回の調査では「M5NanoC6」からWi-Fiネットワークへの接続がやや不安定でした。
デバイスの問題なのか、Arduino IDE用esp32ボード設定のバージョンによるものか、もしくは使用方法によるものなのか不明ですが、今後も継続して様子を見ていきたいと思います。