RP2040の低消費電力化をArduinoで試してみる
こんにちは、リゲル・インテリジェンスです。
Seeed XIAO RP2040のソフトウェア開発環境としてArduino IDEとC/C++ SDKベースの2つが用意できたところで、本来の目的であった機器組込みのために重要な要件である消費電力の測定を行ってみました。今回、ターゲットとしている機器はバッテリー駆動ですので、消費電力は少しでも抑えたいところです。
開発環境(ハードウェア側)はこのような感じです。不安になるくらい小さいというかシンプルです。
試したコードは下記になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<code>// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(25, OUTPUT); pinMode(16, OUTPUT); pinMode(17, OUTPUT); digitalWrite(25, HIGH); // turn the LED off by making the voltage LOW digitalWrite(16, HIGH); // turn the LED off by making the voltage LOW digitalWrite(17, HIGH); // turn the LED off by making the voltage LOW } // the loop function runs over and over again forever void loop() { } </code> |
Seeed XIAO RP2040にはポート直結のLEDが3個ありますので、setup()にて全て消しています。
メインのloop()は空です。コアクロックはデフォルトの125MHzになります。
消費電流の測定時はUSBから電源(5V)のみ引くようにし、電流計を間に入れています。この状態で27mA〜28mA程度でした。
大きいですね、、ちょっと信号処理をさせるだけのサブマイコンと考えるともっと抑えないと、機器の稼働時間に影響が出そうです。
ちなみに写真では(少しわかりにくいですが)RP2040ボードで赤色LEDが点灯しています。これは上記ソースコードで消したLED(青、緑、赤)とは別に電源ラインに入れられており、RP2040からは制御出来ません。電源が入ると点きっぱなしです。
Arduino IDEから設定可能で消費電力低下に効果がありそうなものはコアクロックの設定です。
Arduino IDEのメニュー→ツール→CPU Speedからクロックを選べます。
、、Overclock多くない?
組込み機器用途(ですよね? →RP2040)のプロセッサでOverclockってそんなに需要あるんでしょうか?
発熱とかもちろん故障も心配になります。。
壊れたら元も子もないのでOverclockを試してみたい衝動を抑えて、下げる方を選びます。といっても100MHzと50MHzしかないので50MHzを選びます。気持ち的には5MHz位迄落としてみたいのですが、選択肢少なすぎです。
125MHz→50MHzに変更した結果がこちらです。約半分になりました。効果は大きいですが、これ以上下げる設定はArduino IDE上では見つけられませんでした。
試しにloop()にdelayを挿入してみました。(裏でうまいこと消費電力を抑えるようなことをやってくれていることを期待して)
13 14 15 16 |
// the loop function runs over and over again forever void loop() { delay(1000); } |
さらに下げることは出来ましたが、思ったほどには効果は無かったようです。
他にArduino環境にて出来ることは無いか少し調べたのですが、これといったものは見つけられませんでした。
次にC/C++ SDKベースでどこまで出来るか試してみようと思います。
コメント