Raspberry Pi Pico 2は独自開発マイコンのRP2350を搭載したマイコンボードです。Raspberry Pi Pico 2の情報を収集していたところ、待機電力を極限まで小さくできる省電力モードが存在するという情報を発見。待機状態が長時間続く用途での電力節約に便利そうだったので、実際にRaspberry Pi Pico 2の省電力モードを有効化してどれだけ消費電力を小さくできるのか試してみました。

Missing an example to set low power states on Pico 2 · Issue #530 · raspberrypi/pico-examples · GitHub

https://github.com/raspberrypi/pico-examples/issues/530

◆省電力モードのサンプルコードをビルドしてRaspberry Pi Pico 2に書き込む

今回は、Raspberry Pi所属のピーター・ハーパー氏が公開している省電力モードのサンプルコードをUbuntuでビルドしてRaspberry Pi Pico 2に書き込んでみます。Ubuntuでの開発環境構築手順は以下の記事で解説しています。

「Raspberry Pi Pico 2」の開発環境を構築してLチカするまでの手順まとめ - GIGAZINE



まず、作業用ディレクトリを作成し、「powman」ブランチをクローンします。作業用ディレクトリの名前は「powman」としました。

mkdir powman

cd powman

git clone -b powman https://github.com/peterharperuk/pico-examples.git

続いて、サンプルコードをビルドします。Ubuntu 24.04を使っている場合はそのままビルドするとエラーが発生するため、「作業用ディレクトリ/pico-examples/powman/powman_example.c」の2行目に「#include <sys/_stdint.h>」を追記します。



ソースコードの編集が完了したら、以下のコマンドを順番に実行してサンプルコードをビルドします。

cd pico-examples

mkdir build

cd build

cmake -DPICO_PLATFORM=rp2350 ..

cd powman

make

ビルドに成功すると「作業用ディレクトリ/pico-examples/build/powman/powman_timer」に「powman_timer.uf2」が出力されるので、Raspberry Pi Pico 2に書き込みます。これで準備は完了です。なお、「powman_timer.uf2」の機能は「『通常モードを10秒間維持した後、省電力モードを5秒間維持する』というモード切替を延々と繰り返す」というものです。



◆Raspberry Pi Pico 2の省電力モード時の消費電力を測定

まず、5V出力のUSB電源とUSBテスター「Power-Z KM003C」を用意し、通常モードと省電力モードの消費電力を測定してみます。



消費電力の変化が分かりやすいようにPower-Z KM003Cのモニターを撮影した映像が以下。Raspberry Pi Pico 2の電源をONにしてから通常モードが10秒間続き、その後省電力モードが5秒間続きます。

省電力モードのRaspberry Pi Pico 2の消費電力を測定する - YouTube

消費電力は通常モードが35mW前後で、消費電力モードは4mW前後でした。



Raspberry Pi Pico 2は3V入力にも対応しているので、3V出力可能な電源を用意。



さらに、デスクトップマルチメーターも準備しました。



各種機材を接続し、Raspberry Pi Pico 2に3Vの電圧をかけて消費電力を測定してみます。



Raspberry Pi Pico 2に3Vの電圧をかけた際の電流量の推移はこんな感じ。

Raspberry Pi Pico 2に3Vの電圧をかけて消費電力を測定 - YouTube

3V時の電流量は通常モードが7.36mA前後で、省電力モードが0.057mA前後でした。



◆消費電力のさらなる低下を目指す

消費電力のさらなる低下を目指していろいろ試したところ、省電力モード時の電力を0.15mW以下に抑えることに成功しました。消費電力を下げるには、「作業用ディレクトリ/pico-examples/powman/powman_timer/powman_timer.c」に以下のコードを追記すればOK。

#include "hardware/vreg.h"

hw_write_masked(
&powman_hw->vreg_lp_entry,
POWMAN_PASSWORD_BITS | ((uint)VREG_VOLTAGE_0_60 << POWMAN_VREG_LP_ENTRY_VSEL_LSB),
POWMAN_PASSWORD_BITS | POWMAN_VREG_LP_ENTRY_VSEL_BITS
);

編集したコードをビルドしてRaspberry Pi Pico 2に書き込んだところ、3Vの電圧をかけた際の電流量は0.0495mA前後となりました。



なお、省電力モードのサンプルコードを作成したハーパー氏は、将来的に省電力モードをAPI経由で有効化可能にする予定と投稿しています。