先日、Timer Cameraに「ENV IIユニット(温湿度センサ)」をつなぎ、Timer Cameraを低電力のIoTデバイスとして使えないか、調査を行いました(記事は こちら)。
その結果は、5分に1回の間隔でデータ送信を行った場合、約6日半も連続稼働できるというものでした。
もしもデータ送信を1時間に1回行うとすると、内蔵バッテリーだけで約2.5ヶ月も連続稼働できる計算になります。
これだけ低消費電力だと、屋外に設置するIoTデバイスとして、色々な用途が考えられそうです。
さて、Timer Cameraがこれだけ低電力だと、小型のソーラーパネルなど、ちょっとした外付け電源をつけるだけで常時稼働できないかと、さらに欲が出てきてしまいます。
ただ、Timer CameraにUSB給電している状態では、この超低電力モードには移行しないようです。
そんな訳で、まずは、USBで外部から給電している時のTimer Cameraの消費電流値がどの程度か、調査してみることにしました。
Timer Camera X(Yahoo!ショッピング)Timer Cameraに書き込むスケッチは、前回の調査時のものとほとんど同じです。
スタンバイ期間を2分にし、また、温湿度データをambientに送信してからスタンバイに移行するまでに2分待つように変更しました。
#include "SHT3X.h"
#include "battery.h"
#include "bmm8563.h"
#include <WiFi.h>
#include "Ambient.h"
SHT3X sht30;
WiFiClient client;
Ambient ambient;
const char* ssid = "XXXXXXXX";
const char* password = "XXXXXXXX";
unsigned int channelId = XXXXX;
const char* writeKey = "XXXXXXXX";
float tmp = 0.0;
float hum = 0.0;
unsigned long interval = 120; // unit:sec
void sleepTimerCam() {
bat_disable_output(); // disable bat output, will wake up after interval sec, Sleep current is 1~2μA
// if usb not connect, will not in here;
esp_sleep_enable_timer_wakeup(interval*1000*1000);
esp_deep_sleep_start();
}
void setup() {
Serial.begin(115200);
Serial.println("[ENV.II Unit (SHT30)]");
bat_init(); // hold bat output
bmm8563_init();
bmm8563_setTimerIRQ(interval); // interval sec later will wake up
}
void loop() {
if(sht30.get()==0) {
tmp = sht30.cTemp;
hum = sht30.humidity;
}
Serial.printf("Connecting to %s\n", ssid);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.printf("\nWiFi connected\n");
Serial.printf("Temperatura: %2.2f*C Humedad: %0.2f%%\r\n", tmp, hum);
ambient.begin(channelId, writeKey, &client);
ambient.set(1, tmp);
ambient.set(2, hum);
ambient.send();
delay(interval*1000);
WiFi.disconnect(true);
Serial.printf("WiFi disconnected\n");
sleepTimerCam();
}
消費電流値測定には、ストロベリー・リナックスの「INA226PRC」というモジュールとM5Stackを使います。
以前、このモジュールを使ってM5Cameraの消費電流値を調べたことがあります(記事は こちら)が、その時と同様に、Timer Cameraの電源供給ライン(USB-C)の途中に「INA226PRC」をつなぎます。
5秒に1回の間隔で「INA226PRC」で消費電流値を測定し、Ambientに送信しました。
結果は以下のとおりです。
動作時の消費電流値は80mA程度、Wi-Fi通信時は100mA超と、他のM5Stack製品と同じような値でした。
またスタンバイ時(deep sleep時)の消費電流値は約35mAと、非常に大きな値でした。
USBで外部から給電している限りは、低電力のIoTデバイスとしては使えないことが分かりました。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。