ATOM Matrixの消費電流を計測してみた


ATOM Matrixに流れる電流を調べてみました。
計測には、AVHZY CT-2を使ってます。

ケーブル等、計測環境をあまり気にしていないので、参考程度にしてもらえればと思います。

何もしない

ブランクのプログラムを動かして、電流を計測します。

プログラム

void setup() {

}

void loop() {

}

結果

78mAほど流れてます。
内蔵されている加速度センサ等のせいか、何もしなくても結構流れています。

delay

delay関数内で何を行っているか調べていませんが、電流を計測してみます。

プログラム

void setup() {
  delay(15000);
}

結果

55mAほど流れています。
delay中は、少し抑えられるようです。

DeepSleep

DeepSleep状態にして、電流を計測します。

プログラム

void setup() {
  esp_deep_sleep(15000);  // 引数はタイムアウト時間
}

結果

45mAほど流れています。
DeepSleepでもあまり電流を抑えられていません。バッテリー駆動で長時間は難しそうですね。

DeepSleepがタイムアウトするとリセットがかかり、メモリも保持されないため、例えば、定期的にセンサの値を取得して、クラウドにアップロードする場合は、delayでループするよりもesp_deep_sleepをして、繰り返したほうが消費は少なくなります。
もしかしたら、esp_deep_sleepに入る前に個別に機能をOFFにすることができればもっと控えられるかもしれません。

LED Matrix 点灯

LED Matrixを全点灯して、明るさごとに電流を計測しました。

プログラム

#include "M5Atom.h"

uint8_t DisBuff[2 + 5 * 5 * 3];

// LED Matrixの明るさ(0~100)
uint8_t brightness = 20;

void setBuff(uint8_t Rdata, uint8_t Gdata, uint8_t Bdata)
{
  DisBuff[0] = 0x05;
  DisBuff[1] = 0x05;
  for (int i = 0; i < 25; i++)
  {
    DisBuff[2 + i * 3 + 0] = Rdata;
    DisBuff[2 + i * 3 + 1] = Gdata;
    DisBuff[2 + i * 3 + 2] = Bdata;
  }
}

void setup() {
  M5.begin(true, false, true);
  delay(50);
  setBuff(0xff, 0xff, 0xff);
  M5.dis.displaybuff(DisBuff);
  M5.dis.setBrightness(brightness);
}

結果

Brightness:20

92mAほど流れています。
デフォルトの明るさ設定は20となっており、LEDを傷めないためにはこの設定が推奨されています。
loop関数内で、delay関数をコールすればもうちょっと控えられるかもしれません。

Brightness:50
140mAほど流れています。
25個×3のLEDを点灯するため、明るさを上げるとだいぶ増えます。

Brightness:100
220mAほど流れています。
LEDパネルのボタンが押せないほど熱くなるため、この設定は行わないほうが良いです。

Wi-Fi接続

APにWi-Fi接続を行った際の電流を計測しました。

プログラム

#include "M5Atom.h"
#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "ssid";
const char* password = "pass";

void setup() {

  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
  }
  Serial.print("WiFi connected\r\nIP address: ");
  Serial.println(WiFi.localIP());
}

結果

80mAほど流れています。
何もしない状態とあまり変わりません。バッテリー駆動とかでなければ、初期化で接続したままで良さそうです。

HTTPS通信

HTTPS通信を行った際の電流を計測しました。

プログラム

#include "M5Atom.h"
#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "ssid";
const char* password = "pass";

void setup() {

  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
  }
  Serial.print("WiFi connected\r\nIP address: ");
  Serial.println(WiFi.localIP());
}


void loop() {
  HTTPClient http;
  http.begin("https://httpbin.org/get");
  Serial.printf("http response code = %d\n", http.GET());
  Serial.println(http.getString());
  delay(500);
}

結果

HTTPS通信を行った瞬間は122mAほど流れています。
思ったより流れていませんでしたが、計測周期が遅いので、ピークはもっと流れているかもしれません。