ESP-IDFを使ってみる

DeepSleep

ESP8266と同様に、ESP32でもSleepを使うことができます。
Sleepの詳細はこ ちらに詳しく記載されていますが、LightSleepとDeepSleepが使えます。

DeepSleep中は以下の機能だけに電源が供給されます。
RTCコントローラー
RTC周辺機器
ULPコプロセッサー
RTC高速メモリ
RTC低速メモリ

DeepSleepからの復帰にはタイマー、タッチパッド、RTCトリガー、ULPコプロセッサーが使えます。
LightSleepからの復帰にはこれらに加えGPIOトリガー、UART入力が使えます。

RTCトリガーではトリガー対象のGPIOがLOW→HIGH、またはHIGH→LOWになった時に復帰します。
トリガー対象のGPIOは複数指定可能ですが、復帰条件はLOW→HIGH、またはHIGH→LOWのどちらか1つです。

GPIOトリガーではトリガー対象のそれぞれのGPIOにLOW→HIGH、またはHIGH→LOWの復帰条件を指定します。
トリガー対象のGPIOは複数指定可能で、復帰条件はGPIOごとにLOW→HIGH、またはHIGH→LOWを指定することができます。

ESP8266ではDeepSleep中のタイマーは2%程度の誤差が有り、正確な時間でSleepから復帰することができません。
そこで、ESP32のDeelSleep中のタイマー精度を測定してみました。
こ ちららのサンプルコードを少し変更し、10分間のDeepSleepから復帰した時に、MQTTでPublishしました。


1時間(3600秒)で約15秒の誤差(15/3600=0.4%)なので、ESP8266よりもはるかに精度は高いです。



ESP-12H、ESP32-C3-12F、ESP32-C3-13など、最小構成で使えるモジュールが入手できるようになったので、
近日中に、乾電池を使って、Sleep中の消費電力と、どこまで低い電圧でSleepから復帰できるかを調べてみたいと思います。

続く...