Tanuki_Bayashin’s diary

電子工作を趣味としています。最近はラズベリーパイPicoというマイコンを使って楽しんでいます

Raspberry Pi Pico を単体にて、電池駆動で動かす

※なにか気になる点がありましたらコメント欄からお伝えください。また、回路を製作する場合には電源を切るなど、注意を払って行うようお願いいたします。
(2021/10/11)

目次

1.はじめに

 今年1月にRaspberry Pi Pico がRaspberry Pi 財団より発売され、記事を見かけることも多くなったかと思います。初期設定に関する方法を紹介する記事も多く見受けられ、関心の高さが伝わってきます。

 しかし、このRaspberry Pi Pico(以下Pico)を単体で(USB接続することなしに)動かす方法にはあまり触れられていないかと思います(?)。そこで、この記事では、Picoを単体で、そして電池駆動にて動かす方法を紹介したいと思います。

情報ソース:

Pico を単体で動かす
www.itmedia.co.jp

Pico を電池駆動で動かす
https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf



2.picoを単体で動かすには

 Picoを単体で動かす方法はわりと簡単です。Pico内のプログラムで単体動作時に動いて欲しいファイルを"main.py"と名前を付け保存します(図1)。この状態で一旦電源を切り、再度電源が入ると、main.pyが動作を始めます。

図1 ファイル名を"main.py"として保存する

 ※電池駆動する前に、USB端子にPCからのケーブルを接続することで動作確認をすることができます。このとき、BOOTSEL ボタンを押しておく必要はありません。

3.Picoを電池で動かすには

3.1乾電池で動かす場合

 乾電池で動かす場合の接続法を説明します。GNDをしっかりつないだ上でPicoの39番の端子に1.8~5.5vの電圧を掛けると動き始めます(図2)。Picoには全部で8本のGND端子がありますが、そのうちの1つを電池のマイナス側につなげばOKです。(GND端子:#3, #8, #13, #18, #23, #28, #33, #38)

図2 電池駆動にて動作させる

 (付け加えると、#39 端子に十分な電圧が加わった場合、Pico内蔵のパワーサプライにより、Pico内にはRP2040やGPIOのための3.3vの電圧が作られます。また、#36 端子からは内部で作られた3.3Vが出力されます)

 1.8vでも十分なので、単3や単4の乾電池2本で間に合いますね。ただ、注意すべきこととして、電池の寿命を考えると充電可能な電池にすべきかも知れないです。

3.2モバイルバッテリーで動かす場合

 モバイルバッテリーで駆動するのであれば、USB端子にモバイルバッテリーの端子を接続すれば完了です(図3)。乾電池の場合よりさらに簡単ですね。難点としては、少し大きくなってしまうと言ったところでしょうか?(Picoの端子はmicroUSBです。スマホ用のUSBケーブルなら大体つなぐことができると思います)

 モバイルバッテリーをつなぐ場合、流れる電流が小さいと約1分ほどで(製品により異なる?)バッテリーが電圧を出さなくなることを確認しました。時間のある時に書き直します。悪しからず(2021/09/25 追記)

図3 モバイルバッテリーにて駆動する

(単3電池より構成されるタイプのものは問題ありませんでした)(2021/09/25 追記)

図4 電流が大きい場合、モバイルバッテリーでも駆動可能

 モバイルバッテリーは、流れる電流が小さい場合、電流が流れなくなる保護機能が働くようです。(検索しましたが、1重保護とあるだけで理由は突き止められませんでした)ただし図4に示す通り、電流が大きめの場合(写真では0.22A)では、モバイルバッテリーであっても電流は流れ続けました。(2時間以上流れることを確認)
 ただし、モバイルバッテリー内部の保護装置がどのような仕様になっているかで異なってくると思うので、一般にモバイルバッテリーではラズベリーパイPicoを駆動できるとは言えないようです。(2021/09/28追記)

※過充電を防止するためと判明しました。過充電により、リチウムイオン電池は火災につながるなど、危険な状態になりうるので、それを防止する機能が設けられているということでした。
(2023/10/02 追記)

4.サンプルプログラム

以下にお試しで動かしたコードを載せます。押しボタンswを押すとLEDが付くといういたってシンプルなものです。

11行目に誤りがありました。お詫びして訂正いたします。(2022/08/01)

import machine
import utime

#This LED is GPIO25 on the board of pico
led = machine.Pin(25, machine.Pin.OUT)

# 以下の行に誤りがありました。お詫び申し上げます
#(”machine.Pin.IN”が抜けていました)2022/08/01訂正
#button GPIO16 -> the real Pin21 of pico
#button = machine.Pin(16, machine.Pin.PULL_DOWN)
button = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)

# count: Do print() once when LED ON <--> OFF
count = False

# loop forever
while True:
    while( button.value() == 1):    # while button is pressed
        led.value(1)                # let LED ON
        if count == True:           # Do print() once if button is pressed
            print('LED ON')
            count = False
        utime.sleep(0.1)            # wait 0.1 [sec]

    while( button.value() == 0):    # while button is not pressed
        led.value(0)                # let LED OFF
        if count == False:          # Do print() once if button is not pressed
            print('LED OFF')
            count = True
        utime.sleep(0.1)            # wait 0.1[sec]

動画もご視聴下さい。
・字幕をオンにしてお楽しみください

youtu.be

動画内でモバイルバッテリーでも駆動可能とありますが、条件によります。近いうちに差し替えます(2021/09/25 追記)

youtu.be

 約1分でLEDの点滅は停止します。しかし、ある程度電流値が大きい場合では、一部のモバイルバッテリーなら駆動できるようです。一つ上の動画ではモバイルバッテリーではなく、電池式のバッテリーの場合とお受け止めください(2021/09/28 追記)

5.まとめ

 以下に内容をまとめます。

  • Raspberry Pi Pico を単体で動かすときは、ファイル名をmain.py とする
  • 乾電池で駆動するのであれば、#39 の端子にプラス、GNDの端子にマイナスを接続する
  • モバイルバッテリーであればUSBに接続端子をつなげばOK

 ボタン電池で駆動し、3Dプリンタなどでケースを作れば、ペットの首輪などに取り付けて、留守のときに、リモートで様子を知ることもできるかも知れません(少し大きめかも?)。(終わり)