M5NanoC6でできること 〜M5NanoC6の消費電流値

先日、「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)
動作時待機時動作時待機時動作時待機時
M5NanoC61078.078.100.005.425.53423.300.00
ESPr Developer 321081.582.840.125.465.70452.310.68
M5Stack Basic V2.61370.596.7216.045.325.60514.5589.82
M5Stamp Pico867.058.340.605.375.65313.293.39
Timer Camera F1248.082.190.005.365.70440.540.00
ATOMS31707.561.480.095.435.65333.840.51
ATOMS3 Lite1420.546.790.335.575.74260.621.89
M5Stamp S3822.559.050.285.395.55318.281.55
Raspberry Pi Pico W2751.054.241.405.435.59294.527.83
micro:bit V2.21378.015.342.122.712.8141.575.96

一定時間間隔で間欠動作させた時の平均消費電流値を机上計算しました。

間欠動作時の平均消費電流値(mA)
1分毎10分毎1時間毎
M5NanoC61.400.140.02
ESPr Developer 321.610.270.14
M5Stack Basic V2.617.8816.2216.07
M5Stamp Pico1.430.680.61
Timer Camera F1.710.170.03
ATOMS31.840.260.12
ATOMS3 Lite1.430.440.35
M5Stamp S31.090.360.29
Raspberry Pi Pico W3.821.641.44
micro:bit V2.212.202.132.12

また、この結果を元に、単三型Ni-MH電池(2000mAh)での稼働日数を机上計算しました。
2024年7月時点のスイッチサイエンスでの販売価格も併記しておきました。

価格(円)単三型Ni-MH電池での稼働日数
1分毎10分毎1時間毎
M5NanoC6115559.4593.93563.2
ESPr Developer 32220051.7309.7575.3
M5Stack Basic V2.667434.75.15.2
M5Stamp Pico114458.1121.9135.7
Timer Camera F346548.7487.52924.7
ATOMS3278345.4314.8699.6
ATOMS3 Lite152958.3189.4239.2
M5Stamp S3145276.8231.1284.0
Raspberry Pi Pico W135321.850.757.9
micro:bit V2.21292637.839.239.3

「M5NanoC6」は期待どおりの低電力で、「M5Stamp S3」などのデバイスと比べても遜色のない結果になりました。
また、ディープスリープ時の消費電力が非常に小さいので、1日数回しか動作する必要がないなど、ディープスリープの頻度が高い用途では特に有効です。
価格も非常に安いので、外付けデバイスを接続する際の都合(GPIOやGROVEポートの要不要)などで使用するデバイスを選択すればよさそうです。

なお、今回の調査では「M5NanoC6」からWi-Fiネットワークへの接続がやや不安定でした。
デバイスの問題なのか、Arduino IDE用esp32ボード設定のバージョンによるものか、もしくは使用方法によるものなのか不明ですが、今後も継続して様子を見ていきたいと思います。


なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。


このサイトで書いている、M5Stackシリーズ(M5Stack、M5StickCなど)に関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。

他のM5Stackシリーズの記事にも興味のある方は「さとやまノート」をご覧ください。