提供基于时间间隔或外部事件(例如引脚更改)触发的警报。该程序可以简单地等待这些警报,或者在它们触发时进入睡眠状态并被唤醒。
有两种支持的睡眠水平:浅睡眠和深睡眠。
轻度睡眠保持足够的状态,因此程序可以在睡眠后恢复。它不会关闭 WiFi、BLE 或其他通信,也不会关闭音频播放等正在进行的活动。它尽可能降低功耗,使这些持续活动继续运行。在某些情况下,功耗可能不会降低。
深度睡眠会关闭几乎所有微控制器(包括 CPU 和 RAM)的电源。这可以节省更多的电量,但是 CircuitPython 必须code.py
在唤醒时从头重新启动。
对于轻度睡眠和深度睡眠,如果 CircuitPython 连接到主机,则保持连接优先,并且可能不会降低功耗。
在这些板上可用
- ARAMCON Badge 2019
- ARAMCON2 Badge
- ATMegaZero ESP32-S2
- Adafruit CLUE nRF52840 Express
- Adafruit Circuit Playground Bluefruit
- Adafruit Feather Bluefruit Sense
- Adafruit Feather RP2040
- Adafruit Feather STM32F405 Express
- Adafruit Feather nRF52840 Express
- Adafruit FunHouse
- Adafruit ItsyBitsy RP2040
- Adafruit ItsyBitsy nRF52840 Express
- Adafruit LED Glasses Driver nRF52840
- Adafruit Macropad RP2040
- Adafruit MagTag
- Adafruit Metro ESP32S2
- Adafruit Metro nRF52840 Express
- Adafruit QT Py RP2040
- Adafruit QT2040 Trinkey
- Arduino Nano 33 BLE
- Arduino Nano RP2040 Connect
- Artisense Reference Design RD00
- AtelierDuMaker nRF52840 Breakout
- BLE-SS dev board Multi Sensor
- BastBLE
- BastWiFi
- BlueMicro840
- Challenger RP2040 WiFi
- CrumpS2
- Cytron Maker Pi RP2040
- ESP 12k NodeMCU
- Electronut Labs Blip
- Electronut Labs Papyr
- EncoderPad RP2040
- Feather ESP32S2 without PSRAM
- FeatherS2
- FeatherS2 Neo
- FeatherS2 PreRelease
- Franzininho WIFI w/Wroom
- Franzininho WIFI w/Wrover
- Gravitech Cucumber M
- Gravitech Cucumber MS
- Gravitech Cucumber R
- Gravitech Cucumber RS
- HMI-DevKit-1.1
- HiiBot BlueFi
- IkigaiSense Vita nRF52840
- Kaluga 1
- LILYGO TTGO T8 ESP32-S2 w/Display
- MDBT50Q-DB-40
- MDBT50Q-RX Dongle
- MORPHEANS MorphESP-240
- MakerDiary nRF52840 MDK
- MakerDiary nRF52840 MDK USB Dongle
- Makerdiary M60 Keyboard
- Makerdiary Pitaya Go
- Makerdiary nRF52840 M.2 Developer Kit
- Melopero Shake RP2040
- Oak Dev Tech BREAD2040
- Oak Dev Tech PixelWing ESP32S2
- Open Hardware Summit 2020 Badge
- PCA10056 nRF52840-DK
- PCA10059 nRF52840 Dongle
- Particle Argon
- Particle Boron
- Particle Xenon
- Pimoroni Interstate 75
- Pimoroni Keybow 2040
- Pimoroni PGA2040
- Pimoroni Pico LiPo (16MB)
- Pimoroni Pico LiPo (4MB)
- Pimoroni PicoSystem
- Pimoroni Plasma 2040
- Pimoroni Tiny 2040
- PyKey60
- PyboardV1_1
- Raspberry Pi Pico
- S2Mini
- STM32F4_DISCO
- Saola 1 w/Wroom
- Saola 1 w/Wrover
- SparkFun MicroMod RP2040 Processor
- SparkFun MicroMod nRF52840 Processor
- SparkFun Pro Micro RP2040
- SparkFun Pro nRF52840 Mini
- SparkFun STM32 MicroMod Processor
- SparkFun Thing Plus - RP2040
- TG-Watch
- Targett Module Clip w/Wroom
- Targett Module Clip w/Wrover
- Teknikio Bluebird
- TinkeringTech ScoutMakes Azul
- TinyS2
- WarmBit BluePixel nRF52840
- microS2
- nanoESP32-S2 w/Wrover
- nanoESP32-S2 w/Wroom
- nice!nano
-
alarm.
sleep_memory
:SleepMemory
在深度睡眠期间持续存在的记忆。该对象是 的唯一实例alarm.SleepMemory
.
-
alarm.
wake_alarm
:_typing.Alarm
最近触发的警报。如果 CircuitPython 正在睡觉,警报会将它从睡眠中唤醒。
-
alarm.
light_sleep_until_alarms
(*alarms: _typing.Alarm) → _typing.Alarm
进入浅睡眠,直到唤醒其中一个闹钟。返回引起唤醒的闹钟,也可用作alarm.wake_alarm
.
如果未指定警报,则立即返回。
如果 CircuitPython 连接到主机,连接将保持,并且微控制器实际上可能不会进入轻度睡眠。
这允许用户使用 ctrl-C 中断现有程序,并编辑 CIRCUITPY 中的文件,这在真正的轻度睡眠中是不可能的。因此,要使用轻度睡眠并节省大量电量,可能需要与主机断开连接。
-
alarm.
exit_and_deep_sleep_until_alarms
(*alarms: _typing.Alarm) → None
退出程序并进入深度睡眠,直到被其中一个闹钟唤醒。此函数不返回。
唤醒后,微控制器将重新启动boot.py
并 code.py
从头开始运行。
重新启动后,相当于引起唤醒的警报将作为 可用alarm.wake_alarm
。它的类型和/或属性可能与原始警报不完全对应。对于时基报警,目前alarm.time.TimeAlarm()
创建了一个。
如果未指定警报,微控制器将进入深度睡眠状态直至复位。
如果 CircuitPython 连接到主机,连接将保持,系统不会进入深度睡眠。
这允许用户使用 ctrl-C 中断现有程序,并编辑 CIRCUITPY 中的文件,这在真正的深度睡眠中是不可能的。因此,要使用深度睡眠并节省大量电量,您需要与主机断开连接。
这是深度睡眠并每 60 秒重新启动一次的骨架示例:
import alarm
import time
print("Waking up")
# Set an alarm for 60 seconds from now.
time_alarm = alarm.time.TimeAlarm(monotonic_time=time.monotonic() + 60)
# Deep sleep until the alarm goes off. Then restart the program.
alarm.exit_and_deep_sleep_until_alarms(time_alarm)
-
class
alarm.
SleepMemory
将原始字节存储在深睡眠期间持续存在的 RAM 中。该类充当 bytearray
. 如果断电,内存内容将丢失。
注意这个类不能直接导入使用。的唯一实例SleepMemory
可在
alarm.sleep_memory
。
用法:
import alarm
alarm.sleep_memory[0] = True
alarm.sleep_memory[1] = 12
未使用。通过 访问唯一实例alarm.sleep_memory
.
-
__bool__
(self) → bool
sleep_memory
是True
如果它的长度大于零。这是检查它是否存在的简单方法。
-
__len__
(self) → int
返回长度。这是由 (len
)
-
__getitem__
(self, index: slice) → bytearray
-
__getitem__
(self, index: int) → int
返回给定索引处的值。
-
__setitem__
(self, index: slice, value: _typing.ReadableBuffer) → None
-
__setitem__
(self, index: int, value: int) → None
在给定索引处设置值。