ディープスリープ
2022/07/31
MicroPython1.17(ESP32)
動作確認デバイス:M5Stack Atom-Lite
import machine
# ディープスリープから起こされたかをチェック
if machine.reset_cause() == machine.DEEPSLEEP_RESET:
print('woke from a deep sleep')
import utime
utime.sleep(5000)
# 10秒間のディープスリープに入る
machine.deepsleep(10000)
即時ディープスリープの無限ループにすると、スクリプト変更も困難になるので注意。
ATOM Liteでボタンを押したら、ディープスリープが開始されるスクリプト
import machine
if machine.reset_cause() != machine.DEEPSLEEP_RESET:
import utime
btn_pin = machine.Pin(39, machine.Pin.IN, machine.Pin.PULL_UP)
while btn_pin.value():
utime.sleep(0.1)
else:
machine.deepsleep(1000) # 1sec
ATOM Liteでボタンを押したら、ディープスリープが開始されるスクリプトに、ボタンを押すまで青に光る処理を追加
def deepsleep_loop():
import time
import machine,neopixel
if machine.reset_cause() != machine.DEEPSLEEP_RESET:
pin = machine.Pin(27, machine.Pin.OUT)
np = neopixel.NeoPixel(pin, 1)
np[0] = (0, 0, 255)
np.write()
btn_pin = machine.Pin(39, machine.Pin.IN, machine.Pin.PULL_UP)
while btn_pin.value():
time.sleep(0.1)
np[0] = (0, 0, 0)
np.write()
machine.deepsleep(1)
else:
#main proccess
machine.deepsleep(60*30*1000)
ESP32 用クイックリファレンス ディープスリープモード
https://micropython-docs-ja.readthedocs.io/ja/latest/esp32/quickref.html#deep-sleep-mode