从 API 到实践:树莓派 Pico 低功耗软件控制用法与注意事项全解析

1.machine 模块中低功耗模式设置方法

在 MicroPython 的 machine 模块中,提供了多种低功耗模式和唤醒机制的方法,如下表所示:

1.png
2.png

有些平台提供了 RTC(实时时钟)来设定定时唤醒。例如,在深度睡眠模式下,可以通过 RTC 设置定时器,以在特定时间后唤醒设备,方法说明在这里:https://docs.micropython.org/en/latest/library/machine.RTC.html

3.PNG

打开终端,输入命令 dir(machine),输出如下:

4.PNG

可以看到,在树莓派 Pico 上并没有 machine.wake_reason(),同时对于 machine.reset_cause() 方法来说,返回值仅有 WDT_RESETPWRON_RESET

5.PNG

2.树莓派 Pico 使用 MicroPython 进入低功耗模式时的问题

在这里,需要注意的是,树莓派 Pico 中 machine.deepsleep([time_ms]方法和 machine.lightsleep([time_ms])方法实现有缺陷(在 MicroPython v1.23.0 版本上),无法正确唤醒且 pico 的休眠时间被限制为 127 秒以内,具体说明可以参考如下链接:

https://github.com/ghubcoder/PicoSleepDemo/issues/2

6.PNG

https://github.com/orgs/micropython/discussions/9969

7.png

简单来说,就是在深度睡眠(或休眠)后,Pico 上的 UART 可能会出现意外行为,例如限制其可以发送或接收的字符数,同时睡眠后无法重新连接到 REPL ,重新初始化后与电脑会产生通信问题。

关于解决方法你可以查看如下链接:[https://ghubcoder.github.io/posts/deep-sleeping-the-pico-micropython/]

7.png

简单来说就是通过编译包含 Pico SDK 和 pico-extras 库的自定义 MicroPython 固件,并使用作者自定义的模块进行深度睡眠和唤醒来避免上述问题。这里,由于低功耗模式在初学者实际应用中使用场景不多,设备的大部分功耗来源于使用的外部传感器或驱动装置,因此,我们建议如果你需要低功耗尽量使用 machine.idle() 方法。

同时,需要注意的是,在树莓派 Pico 中,由于定时器在 MicroPython 环境下只能作为软件定时器使用,因此它们无法唤醒 CPU。这个限制意味着如果设备进入低功耗模式,软件定时器不会触发任何硬件中断来唤醒设备。同时,在树莓派 Pico 的 RTC 外设中,没有中断方法,也无法唤醒 CPU。

9.png

我们在树莓派 Pico 进入低功耗模式时,只能通过外部中断将其唤醒。

posted @ 2026-09-02 18:30  FreakStudio  阅读(34)  评论(0)    收藏  举报