micropython
ESP32

ESP32だって省電力したい。

ESP32にはdeepsleepモードがある。

いや、どのマイコンにもおおよそあるんですけど。
とりあえずこのdeepsleepモードを使えばなんか出来そうな気もするから試してみましょう。

ターゲットはmicroPython for ESP32(本家)ファームウェアです。

deepsleep

import machine
machine.deepsleep()

これで使えます。が、これを実行したらもうリセットするしかないです。
これじゃ意味が無いから何らかの何やらをトリガーにして復帰してもらわないとね。

時間で復帰

import machine
machine.deepsleep(5000)

5秒で復帰。

GPIOの変化で復帰

import machine,esp32
p2 = machine.Pin(2,machine.Pin.In,machine.Pin.PULL_UP)
esp32.wake_on_ext0(p2)
machine.deepsleep()

GPIO #2がLOWになると復帰。

なるほど、確かにdeepsleepから復帰はする

復帰はするけど、復帰するとなんだかリセットされたみたいな動作するね?
ただ、内部的には電源落ちてないのでRTCとかは保持できますよ。みたいな。(未確認)

いちいち初めから動くので使い道は限られるかもしれないけど、定点観測みたいなやつならいいのかな、スリープから復帰したら環境ログをSDに保存してまたスリープみたいな。

M5stackには向かない

deepsleepに入るとスピーカーからホワイトノイズがしゃーしゃーと…。

もうすこし浅いレベルのスリープモードがあるかもしれない。

よく解って無いんです。
このやり方だって偶然見つけただけですし。
何か情報がある方はぜひ共有してください。

それでは。