先日、「M5Stamp Pico」の動作確認を行いました(記事は こちら)。
M5Stack社の各モジュールは、はんだづけなどの面倒な加工をしなくても、簡単にIoTデバイスをつくれるのが特長です。
ただ、ディープスリープ中であっても消費電力が比較的大きく、電池やソーラーパネルなどを電源として屋外で使用する際には、この点がネックになっています。
それに対し、「M5Stamp Pico」は回路構成が単純なため、他のM5Stack社のモジュールに比べて消費電力が小さいのではないかと期待しています。
そんな訳で、早速「M5Stamp Pico」の消費電力を調べてみたいと思います。
低電力のIoTデバイスとして使いたいと考えているので、「Wi-Fi接続中」「ディープスリープ時」の消費電力に着目することにします。
以下のような簡単なスケッチをつくりました。
「起動して10秒待つ」→「Wi-Fi接続して10秒待つ」→「Wi-Fiを切断して10秒待つ」→「10秒間ディープスリープする」を繰り返すだけです。
#include <WiFi.h>
const char* ssid = "XXXXXXXX";
const char* password = "XXXXXXXX";
void setup() {
Serial.begin(115200);
delay(10000);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.printf("\nWiFi connected\n");
delay(10000);
WiFi.disconnect(true);
delay(10000);
esp_sleep_enable_timer_wakeup(10000000);
esp_deep_sleep_start();
}
void loop() {
}
比較のため、M5Stack社の他のモジュールについても、同等のスケッチを書き込んで調査を行います。
「M5StickC」用のスケッチです。
#include <M5StickC.h>
#include <WiFi.h>
const char* ssid = "XXXXXXXX";
const char* password = "XXXXXXXX";
void setup() {
M5.begin();
delay(10000);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.printf("\nWiFi connected\n");
delay(10000);
WiFi.disconnect(true);
delay(10000);
M5.Axp.ScreenBreath(0);
esp_sleep_enable_timer_wakeup(10000000);
esp_deep_sleep_start();
}
void loop() {
}
「ATOM Lite」用のスケッチです。
#include "M5Atom.h"
#include <WiFi.h>
const char* ssid = "XXXXXXXX";
const char* password = "XXXXXXXX";
void setup() {
M5.begin(true, false, true);
delay(10000);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.printf("\nWiFi connected\n");
delay(10000);
WiFi.disconnect(true);
delay(10000);
esp_sleep_enable_timer_wakeup(10000000);
esp_deep_sleep_start();
}
void loop() {
}
「M5Camera」用のスケッチです。
#include <WiFi.h>
const char* ssid = "XXXXXXXX";
const char* password = "XXXXXXXX";
void setup() {
Serial.begin(115200);
delay(10000);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.printf("\nWiFi connected\n");
delay(10000);
WiFi.disconnect(true);
delay(10000);
esp_sleep_enable_timer_wakeup(10000000);
esp_deep_sleep_start();
}
void loop() {
}
ACアダプターから各モジュールに電源供給しますが、その途中に以下のようにテスターを挿入し、上記スケッチの各フェーズにて電流値を測定します。
各フェーズの電流値測定結果は以下のとおりです。
M5Stamp Pico | M5StickC | ATOM Lite | M5Camera | |
---|---|---|---|---|
起動後 | 29.9mA | 74.3mA | 41.3mA | 40.8mA |
Wi-Fi接続中の数秒間 | 85mA程度 | 130mA程度 | 100mA程度 | 100mA程度 |
Wi-Fi接続後 | 33.5mA | 78.2mA | 45.1mA | 44.7mA |
Wi-Fi切断後 | 29.9mA | 74.3mA | 41.3mA | 40.8mA |
ディープスリープ中 | 0.3mA | 19.1mA | 11.7mA | 11.3mA |
特にディープスリープ中は、他のモジュールに比べて非常に低消費電力であることがわかりました。
電源のない屋外で、一定間隔でデータを採取するような用途に活用できそうです。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。