見出し画像

【ミーア】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で消費電力がアクティブモートの時と比較すると、ほとんど誤差みたいな差であること。

続きは、こちらで記載しています。


この記事が参加している募集

仕事について話そう

よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費に使わせていただきます!