Zenn
🔖

【Raspberry Pi Pico W】lightsleepについて(micropython)

2025/03/11に公開

1. はじめに

結論:lightsleepを使うなら、v1.23.0のファームウェアを使おう!!

1.1 この記事について

  • Raspberry Pi Pico W(以下、Pico)のlightsleepを使ったサンプルプログラムを記載する

1.2 対象読者

  • Picoを使ったことがある
  • Thonnyを使ってPicoにプログラムを書き込み・実行ができる
  • プログラム言語(特にmicropython)が多少読める、書ける

1.3 動作環境

  • PC
    • OS:Windows 11 Home
    • プログラミング環境:Thonny(v4.1.4)
  • Raspberry Pi Pico W
    • ファームウェア:v1.23.0 , v1.24.1, v1.25.0-preview.365.g3823aeb0f (2025-03-07)

2. lightsleepについて

  • プログラムの処理を一時停止して、省電力状態にする
  • lightsleeの場合、RAMと状態が完全に保持され、起床時はそのまま続きのプログラムが実行される
  • 指定はmsecのため、1000で1秒のスリープとなる

詳しくはこちら↓
https://docs.micropython.org/en/v1.16/library/machine.html#machine.lightsleep

3. 実験

今回は以下の3つのuf2ファイルで検証

  • RPI_PICO_W-20240602-v1.23.0.uf2
  • RPI_PICO_W-20241129-v1.24.1.uf2
  • RPI_PICO_W-20250307-v1.25.0-preview.365.g3823aeb0f.uf2

ファームウェアの入手元はこちら
https://micropython.org/download/RPI_PICO_W/

実行するプログラムは以下の通り

test_lightsleep.py
from machine import Pin, lightsleep
from time import sleep_ms

led = Pin("LED", Pin.OUT)  # OnBoard LED

while True:
    led.on()
    sleep_ms(1000)
    led.off()

    print("Good Night...")
    lightsleep(5000)  # 5000msec
    print("Good Morning!!!")

    for _ in range(6):
        led.toggle()
        sleep_ms(100)

処理としては、以下の1~3を繰り返すだけ

  1. LEDを1秒間点灯
  2. 5秒間lightsleepに入る
  3. LEDを3回点滅させる

3.1 v1.23.0

正常にlightsleepで5000msec停止したのち、LEDを3回点滅している

3.2 v1.24.1

ligthsleepが一瞬で解除されて、LEDが3回点滅している。不眠症かな?

3.3 v1.25.0

この子も不眠症。最新だから治っているわけではなかった。。。

Z. まとめ

ligthsleepを使う場合は、v1.23.0を使おう!!

Discussion

ログインするとコメントできます