XIAO ESP32S3 (sense)の消費電力調べてみた

前回はこちら(XIAO ESP32ではないです)
- <a href="https://qiita.com/saya-reg/items/d124487c7a474bb3f8ad">今更ながらSPRESENSEの消費電力調べてみた①</a>
- <a href="https://qiita.com/saya-reg/items/044defa2f7eb1f06a9e0">今更ながらSPRESENSEの消費電力調べてみた⓶</a>

# XIAO ESP32SS3 (sense)とは
- ESP32S3が搭載されたSDカードサイズの基板
- カメラがつけられる。しかも安い(セットで買っても2500円くらい)
- AIも搭載できるので一部界隈で盛り上がっているらしい（伝聞）
- 無駄に-40℃～という動作保証
- 詳しくは<a href="https://wiki.seeedstudio.com/xiao_esp32s3_getting_started/">こちら<a>
![XIAO](https://files.seeedstudio.com/wiki/SeeedStudio-XIAO-ESP32S3/img/2.jpg)

## 買うきっかけ
SPRESENSEだとちょっと高いというのと動作温度周りでちょっとでも資料が出ているものを探しているときに教えてもらいました。
軽く触りましたが、SPRESENSEに長時間触れていたのでESP32の使い方のコツがまだ掴み切れていないです。
というわけで早速、消費電力を見ていきましょう

## メインボードのみ
### 1. idle状態
- 電源投入直後
![esp32_idle_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3737064/d42e7bae-fe70-d13e-a793-852e566922b5.png)

- 1分間平均
![esp32_idle_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3737064/dcfccd9a-25ba-6b59-0ecd-8ae0cf4b815b.png)

### 2. lightSleep状態
- 電源投入直後
![esp32_coldS_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3737064/b4d51d65-33fd-face-a959-b503e5b8b502.png)

- 1分間平均①
![esp32_coldS_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3737064/ec51f15c-452b-e554-91f1-c1f816364ce3.png)

- 1分間平均⓶
![esp32_coldS_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3737064/fd1ab4be-f560-d3a0-5845-822e158c51d9.png)

### 3. deepSleep状態
- 電源投入直後
![esp32_deepS_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3737064/625829dd-059a-bab4-e873-4910786d2aa3.png)

- 1分間平均①
![esp32_deepS_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3737064/065d84ad-26f3-bf06-2819-8a6527bebffc.png)

- 1分間平均⓶
![esp32_deepS_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3737064/e72a9137-2da9-47a3-670c-2726c8cf2d09.png)

<details><summary>検証ソース</summary>

```cpp
#define uS_TO_S_FACTOR 1000000ULL  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP  200        /* Time ESP32 will go to sleep (in seconds) */
RTC_DATA_ATTR int bootCount = 0;
void print_wakeup_reason(){
    esp_sleep_wakeup_cause_t wakeup_reason;
    
    wakeup_reason = esp_sleep_get_wakeup_cause();
    
    switch(wakeup_reason)
    {
        case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
        case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
        case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
        case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
        case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
        default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
    }
}

void setup(){
    Serial.begin(115200);
    delay(1000); //Take some time to open up the Serial Monitor
    ++bootCount;
    Serial.println("Boot number: " + String(bootCount));
    print_wakeup_reason();
    esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
    Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) +
    " Seconds");
    
    Serial.println("Going to sleep now");
    Serial.flush(); 
    esp_deep_sleep_start();
    // esp_light_sleep_start();
    Serial.println("This will never be printed");
}

void loop(){
}
```
    
</details>

## SPRESENSEと比較して
- 突入電流が小さい
- lightSLeep、deepSleepはSPRESENSEよりも多いが、SPRESENSEはPOWER LEDを外しているのでdeepSleepはほぼ同等か

XIAOのESP32S3ですが、扱ってみて気づいたのが電源を入れてそのままにしておくと、40秒ほどでPOWER LEDが消灯します。
そのため、sleep状態でもLEDの有無で電力が変わりました。
とはいっても省エネ性だとSPRESENSEには勝てず。
とはいえ最初からWIFI／Bluetooth付かつ、めっちゃ安いしさらに動作温度が幅広いことを考えればかなり有用ではないでしょうか。
大きさがSDカードサイズというのは最近ではよく見かけますが、そこに専用のカメラまで接続できるとなるとかなり選択肢は広がりますね。

ただWEBカメラみたいな使い方をするとモジュールの発熱が大きすぎるというのはあるようです。
またカメラを使わない場合は価格的にraspberry pi pico Wといい勝負しそうな価格のため、迷うところではありますね。

次回はこのESP32S3にカメラを付けた場合の電力を調べていきたい思います。