ESP 裝置提供以下幾種Sleep 的形式
使用方式:
import machine
machine.idle()
[秘訣] 筆者很喜歡把try .. exception 中的例外情況下 直接置入machine.idle() , 讓ESP 裝置遇到問題的時候會直接回到Idle 模式, 方便後續除錯使用
>>> machine.sleep()
Warning: not yet implemented
[秘訣] 筆者在實行後發現這功能尚未完成, 所以會出現警告訊息
[實做]
以RTC為例 程式將在進入深度睡眠前, 在terminal 顯示倒數的訊息並且在每次啟動duration [自定義的秒數]後再次進入深度睡眠
import machine
import time
duration=8000 # ms
rtc = machine.RTC()
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
rtc.alarm(rtc.ALARM0, duration)
---- 這個區段寫主要或其他功能 ----
............
............
---- 這個區段寫主要或其他功能 ----
---- 這個區段放置醒了後要做啥事情 ----
if machine.reset_cause() == machine.DEEPSLEEP_RESET:
print('Woke up from Deep sleep')
for i in range(3):
print('Wait for going deep sleep in {} sec'.format(3-i))
time.sleep(1)
---- 這個區段放置醒了後要做啥事情 ----
machine.deepsleep()
[秘訣]
(1) reset_cause 總共有下面這幾種模式:
>>> from machine import WDT
>>> wdt = WDT(timeout=2000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: function do3es not take keywork arguments
PS: 筆者發現如果沒有給與timeout的數值, 就可以成功啟用, 但wdt.feed的功能還是無效, 猜測可能要等之後的版本才有完整的功能
>>> wdt = WDT()
>>> wdt.feed()