ESP32 Deep Sleep のテスト

 ESP8266 に比べて Bluetooth など様々なペリフェラルに対応している ESP32 ですが、そーいう表面的なところのほか、実は Sleep と Wakeup の付近も極めて充実しています。
 RTC Slow Memory と呼ばれる遅いけど電気を食わないメモリ空間があって、そこにプログラムを配置しておくと Deep Sleep からの復帰時にリセットでなく、所定の処理を走らせることができたり・・・そんな風ぽい感じです。


 そーいう深いゾーンはおいおいとして、とりあえず Deep Sleep がちゃんと作動するのか試してみます。

#include "esp_deep_sleep.h"

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200, SERIAL_8N1);
  Serial.println("Start");  

  esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
  esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_OFF);
  esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF);
  esp_deep_sleep_pd_config(ESP_PD_DOMAIN_MAX, ESP_PD_OPTION_OFF);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("good night!");
  delay(500);
  esp_deep_sleep_start();
  delay(500);
  Serial.println("now sleeping");  // ここは実行されない
}

 Deep Sleep 時の挙動を決める esp_deep_sleep_pd_config という関数があるものの、具体的にどう使うべきなのか資料が見つけられてないんですけど、引数に使える選択肢の全てを ESP_PD_OPTION_OFF にしてみましたが。


http://dl.ftrans.etr.jp/?2ad69e7acfb84bf692324cbd66a23c6d3b0b5e04.jpg


 手持ちテスターにて 27μA。
 2980円で買った安物テスターなので、μAオーダーの測定が正しく行えているのか疑問は残りますが、公式には 5μA まで落とせるらしいので頑張りが足りないですかねー


http://dl.ftrans.etr.jp/?0490bd90fcc8415a9ad151fac33f864f8ad3aef6.png


 テスターの計測が概ね合ってるとしたら「Deep-sleep mode ULP sensor-monitored pattern」という状態か?
 esp_deep_sleep_pd_config で RTC Memories も全て OFF にさせたつもりなんですが、何が足りないんでしょ
 一桁μA に出来た方おられたら、是非ともコメントくださーい!


(追記)
 TrueRMS なテスター を使って再測定してみました。

3.3V時 3.0V時
http://dl.ftrans.etr.jp/?baff1c70959546f08422861cca1a0a23aa95390c.jpg http://dl.ftrans.etr.jp/?1f04140bf2394c49aa3dad8471f7d154158b711a.jpg
2.7V時 2.5V時 2.2V時
http://dl.ftrans.etr.jp/?9f30b4e48d444e77a553a6490b0910e692408204.jpg http://dl.ftrans.etr.jp/?b724a2d783944f9ea0498fc0ccf246c5fa07e5aa.jpg http://dl.ftrans.etr.jp/?4c2bcb5a79e8471cba3a5046d461137d2fde7f86.jpg


 2980円のテスターで27μAを測定したときは約3Vでしたので、ほとんど誤差なかったみたいです。


(追記)2017/02/19
 keynee さんの貴重なコメントで、無事に Hibernation mode に移行させることに成功しました。
 消費電流は僅か 3.8〜4.0μA という次元です。


 サンプルソースも貼りましたので、こちら からどうぞ