【ミーア】ESP32のスリープモード(Deep / Light sleep)選択。消費電力の最適化と実装
今回は、猫型ロボットの消費電力を最適化するために、スリープモードをどのように選択し、実装していくかについて見ていく。こちらの記事で、Lipoによる給電にも対応できるようにしたので、USB-C接続で常に電源供給されている状態とは異なり、ESP32の消費電力も考慮する必要が出てきた。
ESP32のスリープモード概要
ESP32は高度な省電力機能を備えており、その中心となるのがスリープモード。主にDeep-sleep modeとLight-sleep modeの2つのスリープモードがある。
実際には、細かく分けると5つのモードがあるが、今回は割愛。
公式詳細記事はこちら
Light-sleep mode
**デジタル周辺機器、ほとんどのRAM、CPUは一時停止状態(clock-gated)**になる。しかし、完全オフではなく一時停止状態のため、復帰時には、プログラムはスリープ前の状態から再開されるため、迅速な復帰が可能
Light-sleepは、比較的短時間のアイドル状態や、迅速なレスポンスが求められる場合に適している。
Deep-sleep mode
デジタル周辺機器、ほとんどのRAM、CPUは一時停止ではなく電源オフになる。そのおかげで低い電力消費を実現する。
チップの中で電源が維持されるのは、RTCコントローラ(時刻やアラームの維持)、ULPコプロセッサ(簡単な計算やセンサーデータの監視)、RTC FASTメモリ、RTC SLOWメモリ(データの保存)のみ。
メモリの内容は保持されず、復帰時にはリセットが行われ、プログラムは最初から再開される。
Deep-sleepは長期間のアイドル状態や、非常に限られた機能しか必要としないアプリケーションに適している
ちなみに各modeでの消費電力はこちら
アクティブモード(通常時):95-240mA
Light-sleep mode:〜0.8mA(800μA)
Deep-sleep mode:10〜150μA
特筆すべきは、Light-sleep modeとDeep-sleep modeで消費電力がアクティブモートの時と比較すると、ほとんど誤差みたいな差であること。
続きは、こちらで記載しています。