2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

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

image.png

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

何もしない

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

プログラム

void setup() {

}

void loop() {

}

結果

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

delay

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

プログラム

void setup() {
  delay(15000);
}

結果

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

DeepSleep

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

プログラム

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

結果

45mAほど流れています。
DeepSleepでもあまり電流を抑えられていません。バッテリー駆動で長時間は難しそうですね。
image.png
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関数をコールすればもうちょっと控えられるかもしれません。
image.png

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

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

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ほど流れています。
何もしない状態とあまり変わりません。バッテリー駆動とかでなければ、初期化で接続したままで良さそうです。
image.png

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ほど流れています。
思ったより流れていませんでしたが、計測周期が遅いので、ピークはもっと流れているかもしれません。
image.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?