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