M5Stack社の「ATOMS3 Lite」を購入しました。
先日、M5Stack社製のいくつかのデバイスについて消費電力の比較を行ったのですが(記事は こちら)、その時に「ATOMS3」の消費電力がとても小さいという結果が得られました。
この「ATOMS3」にはディスプレイが搭載されていますが、ディスプレイなしの「ATOMS3 Lite」でも同等に低電力であれば、より安価な低電力IoTデバイスとして有力な選択肢になるのでは?と考えたのが今回の購入のきっかけです。
そんな訳で「ATOMS3 Lite」の使い方を確認してみたいと思います。
まずは環境構築ですが、「ATOMS3 Lite」のArduino IDE環境構築方法は「ATOMS3」と全く同じです(「ATOMS3」用の環境構築方法は こちら)。
Arduino IDEで「M5Stack」ボード(2.0.6以降)をインストールし、「ツール」>「ボード:」>「M5Stack Arduino」>「M5Stack-ATOMS3」を選択します。
ライブラリは「M5AtomS3」と「FastLED」をインストールします。
スケッチの書き込み方法も「ATOMS3」と同様で、USBケーブルでパソコンと「ATOMS3 Lite」をつなぎ、内蔵の緑色LEDが点灯するまでリセットボタンを長押し(約2秒)した後、「ツール」>「シリアルポート」で接続先を選択すると、スケッチが書き込めるようになります。
サンプルスケッチは以下のとおりです。
#include <M5AtomS3.h>
void setup() {
M5.begin(false, true, false, true);
}
void loop() {
M5.dis.drawpix(0xff0000);
M5.dis.show();
delay(500);
M5.dis.drawpix(0x00ff00);
M5.dis.show();
delay(500);
M5.dis.drawpix(0x0000ff);
M5.dis.show();
delay(500);
}
「M5.begin」の引数は順に「LCD, USBSerial, I2C, LED」となっているようです。そのため「ATOMS3」では「M5.begin(true, true, false, false);」という感じに設定しますが、「ATOMS3 Lite」では「M5.begin(false, true, false, true);」という感じになります。
このスケッチを「ATOMS3 Lite」に書き込むと、「ATOMS3 Lite」表面のLEDの点灯色が一定時間間隔で変わるようになります。
消費電力を調査するために、一定間隔でデータをWebサーバに送信、送信完了したらディープスリープに移行するスケッチをつくりました。
スケッチはこちらです。
#include <M5AtomS3.h>
#include <WiFi.h>
const char* ssid = "XXXXXXXX";
const char* password = "XXXXXXXX";
unsigned long interval = 30; // unit:sec
boolean sendRequest(float val0) {
: 省略
}
void setup() {
M5.begin(false, true, false, true);
esp_sleep_enable_timer_wakeup(interval*1000*1000);
M5.dis.drawpix(0xff0000);
M5.dis.show();
// Get Data
float val0 = random(0, 1000) / 10.0;
// Connect WiFi
USBSerial.printf("Connecting to %s\n", ssid);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
USBSerial.print(".");
}
USBSerial.printf("\nWiFi connected\n");
// Send Data
if(!sendRequest(val0)) esp_deep_sleep_start();;
USBSerial.println("Send request is finished.");
M5.dis.clear();
M5.dis.show();
esp_deep_sleep_start();
}
void loop() {}
Ni-MH電池4本をGROVEポートにつないで「ATOMS3 Lite」を動かし、このスケッチの処理を行っているときの消費電流波形をグラフ化してみました。
1回の処理にかかる時間は「1.42秒」、その間の平均消費電流値は「46.79mA」、ディープスリープ中の平均消費電流値は「0.33mA」となりました。
単三型Ni-MH電池(2000mAh)4本で動かす場合、1分毎に処理を行うと「58.3日」、10分毎であれば「189.4日」も連続稼働できる計算になります。
電池駆動の低電力IoTデバイスとして、とても良い選択肢になりそうです。