9. 电源控制

ESP8266 提供动态更改 CPU 频率并进入深度睡眠状态的能力。两者都可用于管理功耗。

9.1. 更改 CPU 频率

机器模块具有获取和设置CPU频率的功能。要获取当前频率,请使用:

>>> import machine
>>> machine.freq()
80000000

默认情况下,CPU 运行在 80MHz。如果您需要更多处理能力,可以更改为 160MHz,但会消耗电流:

>>> machine.freq(160000000)
>>> machine.freq()
160000000

您可以在代码进行繁重处理时更改为更高的频率,然后在完成后更改回来。

9.2. 深度睡眠模式

深度睡眠模式将关闭 ESP8266 及其所有外围设备,包括 WiFi(但不包括用于唤醒芯片的实时时钟)。这大大降低了电流消耗,并且是使设备可以使用电池运行一段时间的好方法。

为了能够使用深度睡眠功能,您必须将 GPIO16 连接到复位引脚(Adafruit Feather HUZZAH 板上的 RST)。然后可以使用以下代码来休眠和唤醒设备:

import machine

# configure RTC.ALARM0 to be able to wake the device
rtc = machine.RTC()
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)

# set RTC.ALARM0 to fire after 10 seconds (waking the device)
rtc.alarm(rtc.ALARM0, 10000)

# put the device to sleep
machine.deepsleep()

请注意,当芯片从深度睡眠中唤醒时,它会完全复位,包括所有内存。引导脚本将照常运行,您可以将代码放入其中以检查重置原因,如果设备刚刚从深度睡眠中醒来,可能会做一些不同的事情。例如,要打印重置原因,您可以使用:

if machine.reset_cause() == machine.DEEPSLEEP_RESET:
    print('woke from a deep sleep')
else:
    print('power on or hard reset')