Python × Pico 電子工作 | #01 Picoをはじめよう

プログラミングで作れるのは、画面の中だけではありません。このシリーズでは Raspberry Pi Pico(ラズベリーパイ・ピコ)というマイコンボードを使い、LED を光らせたり、センサーで値を測ったり、モーターを動かしたりします。

難しい電子工作の予備知識は必要ありません。PycoBlocks(MicroPythonモード) のブロックを組み合わせるだけで、MicroPython コードが自動生成され、配線図もリアルタイムで表示されます。まずは Pico の基本と PycoBlocks の起動方法を確認しましょう。

Picoをはじめよう

Raspberry Pi Pico / Pico W とは

Raspberry Pi Pico は マイコンボード と呼ばれる小型コンピューターです。「マイコン」は マイクロコントローラ(microcontroller) の略で、CPU・メモリ・入出力ピンを 1 つのチップにまとめた小さなコンピューターを指します。

PC やスマートフォンは OS(Windows や Android)の上でたくさんのアプリを同時に動かしますが、Pico は OS を持たず、書き込んだ 1 つのプログラムだけを電源が入っている間ずっと繰り返し実行します。そのぶん起動が一瞬で、LED やモーターなど現実の部品を 正確なタイミングで直接制御できるのが特徴です。値段も数百円〜千円台と手ごろで、電子工作の入門にぴったりです。

下の図は Pico 基板のおもな部品の名前です。これから何度も出てくる「BOOTSEL ボタン」「GPIO ピン」「オンボード LED」の位置を、ここで一度確認しておきましょう。

Raspberry Pi Pico の各部名称(USB端子・BOOTSELボタン・オンボードLED・RP2040チップ・ピンヘッダ・SWD)
Raspberry Pi Pico の各部名称。USB を上にした向きで示している。
項目Pico(無印)Pico W
チップRP2040(デュアルコア ARM Cortex-M0+、133 MHz)
メモリ264 KB RAM・2 MB フラッシュ
GPIO ピンGP0〜GP28(うち 26 本が利用可能)
無線なしWiFi 2.4 GHz・Bluetooth 5.2
オンボード LEDPin(25)Pin('LED')
電源USB(5 V)または VSYS(1.8〜5.5 V)
言語MicroPython / C/C++

このシリーズでは MicroPython を使います。通常の Python とほぼ同じ書き方で Pico のピンを制御できます。Pico と Pico W は GPIO の配置・使い方はほぼ同じです。違いが出る箇所(オンボード LED・WiFi)は記事内でその都度説明します。

MicroPython を Pico に書き込もう

Pico を買ったばかりの状態では MicroPython が入っていません。最初に .uf2 ファームウェア を書き込む必要があります。一度書き込めば、次からは書き込み不要です。

💡 PycoBlocks が書き込み手順を案内してくれます

以下の手順は、PycoBlocks(MicroPythonモード) の画面からも同じことができます。上のツールバーにある [MicroPython導入] ボタンを押すと、①ボードを選ぶ → ②BOOTSEL にする → ③書き込む → ④つないで確かめる の 4 ステップで案内が出ます。ダウンロードするファイルも選んだボードに合わせて用意されるので、バージョンを自分で選ぶ必要はありません。Pico 2 / Pico 2 W を使う場合もこのウィザードが対応しています。
この記事では何が起きているのかが分かるように、手作業の手順もそのまま残しています。どちらか片方だけやれば大丈夫です。

ステップ1:.uf2 ファームウェアをダウンロード

以下の公式サイトから使っているボードに合わせてファイルをダウンロードしてください。

ステップ2:BOOTSEL モードで接続

  1. Pico の基板上にある白いボタン(BOOTSEL)を押しながら、USB ケーブルを PC に差し込む
  2. ボタンを離す。PC に RPI-RP2 という名前のドライブが表示される
  3. ダウンロードした .uf2 ファイルを RPI-RP2 ドライブにコピー(ドラッグ&ドロップ)する
  4. Pico が自動的に再起動し、RPI-RP2 ドライブが消える。書き込み完了。

⚠️ RPI-RP2 ドライブが出てこないときは

BOOTSEL を押さずに接続すると通常モードで起動し、RPI-RP2 ドライブは表示されません。その場合は一度 USB を抜いて、BOOTSEL を押したまま挿し直してください。ボタンは「カチッ」と確実に押し込むのがコツです。

💡 書き込みは最初の一度だけ

MicroPython(.uf2)は一度書き込めば Pico 本体に保存されます。次回からは BOOTSEL を押さずにそのまま USB をつなぐだけで使えます。別のプログラムを動かしたいときも、ファームウェアの再書き込みは不要です。
あとから MicroPython を入れ直したくなったときは、BOOTSEL ボタンを押す必要はありません。PycoBlocks で Pico につないだ状態で [MicroPython導入] を開き、[BOOTSEL に入れる] を押せば切り替わります。

ブレッドボードの使い方

ブレッドボードは半田付けなしで電子部品を接続するための板です。表面の穴(ホール)に部品の足やジャンパーワイヤーを挿すだけで回路が組めます。

内部配線のルールは次の 2 点です。

  • センター部:縦に並んだ a〜e の 5 穴が 1 グループとして電気的につながっている(横方向はつながらない)。f〜j 側も同じく縦 5 穴で 1 グループ。
  • 電源レール(赤+・青-):横一列がずっとつながっている。+を赤、-(GND)を青に決めて使うのが定番。

たとえば a1・b1・c1・d1・e1(列 1 の縦 5 穴)は同じグループなのでつながっています。一方、中央には溝があり、これを境に a〜e 側と f〜j 側は分かれています。そのため同じ列 1 でも e1 と f1 はつながっていません。Pico をブレッドボードに挿すとき、左右のピンが中央の溝をまたぐように置くのは、左右のピンが別グループになるようにするためです。

ブレッドボードの内部のつながり(縦5穴が1グループ・電源レールは横一列・中央の溝で上下が分離)
ブレッドボードの内部のつながり。中央は縦 5 穴が 1 グループ(横はつながらない)。赤・青の電源レールは横一列がつながる。真ん中の溝をはさんで上下は別グループ。

Pico のピン配置を読もう

Pico には 40 本のピンがあります。ピン番号には 物理ピン番号 と GP 番号 の 2 種類があります。

種類番号の振り方使う場面
物理ピン番号基板の左上から時計回りに 1〜40部品のデータシートなど
GP 番号GP0〜GP28(GPIO 機能を持つピン)MicroPython・PycoBlocks

下の図は PycoBlocks の配線図ビューアを空の状態で表示したものです。Pico ボードの左右にピン名(GP 番号・GND・電源)が並んで表示され、実際の基板と同じ並びでピンの位置を確認できます。黄色が GPIO ピン(GP0〜GP28)、青灰色が GND、赤が電源(3V3 / VSYS / VBUS)です。ブロックを配置すると、ピンから部品へ配線が自動で引かれます。

PycoBlocks 配線図ビューア(部品なし)—Pico ピン一覧
PycoBlocks 配線図ビューア(空状態)—左右にピン名が表示される。ブロックを置くと自動で配線が引かれる。

電源まわりのピンも押さえておきましょう。3V3 は Pico が作り出す 3.3 V の出力で、LED やセンサーなど多くの部品はここから電気をもらいます。VBUS は USB から来る 5 V、VSYS は本体を動かすための入力電源です。そして GND(複数あり)は電気の戻り道(0 V の基準)で、回路を組むときは必ず部品の GND と Pico の GND をつなぎます。

🚫 3.3 V を超える電圧をピンに入れないこと

Pico の GPIO ピンが扱えるのは 0〜3.3 V までです。5 V のセンサー出力や電池を直接 GPIO につなぐと、RP2040 が壊れることがあります。5 V 系の部品をつなぐときは、後の記事で説明する分圧やレベル変換を使います。

PycoBlocks のブロックでは GP 番号 でピンを指定します。たとえば「ピン:GP2 を HIGH にする」と指定すると、MicroPython コードに Pin(2, Pin.OUT).value(1) が自動生成されます。

PycoBlocks を MicroPython モードで開こう

PycoBlocks(MicroPythonモード) を開くと、左のカテゴリに「Pico 電子工作」が表示されます。ブロックをワークスペースに置くと、コードと配線図がリアルタイムで更新されます。

URL に ?mode=micropython が付いていることを確認してください。このパラメータがない場合は Python 入門モード(PC で動くコード)になります。

配線図を表示するには、ブロックを置いた後に画面左下の「配線図」ボタンをクリックします。ブロックのピン設定を変えると配線図も即座に更新されます。

💡 ここで一度 PycoBlocks を開いてみよう

PycoBlocks(MicroPythonモード) を新しいタブで開き、左カテゴリ「Pico 電子工作」からブロックを 1 つワークスペースに置いてみましょう。右側に MicroPython コードが、画面左下の「配線図」ボタンで配線図が表示されます。次の記事(#02)から、このブロックで実際に LED を光らせていきます。

演習課題

課題3-1-1:GP15 は Pico のどの位置にあるか調べよう

上の配線図ビューアで GP15 を探し、基板の左右どちら側にあるか答えよう。また、物理ピン番号(左上から時計回りに 1〜40)で数えると何番になるか答えよう。

▶ 模範解答と解説を見る
# GP15 = 左側・いちばん下 = 物理ピン番号 20

解説: 配線図ビューアの左列はいちばん上が GP0(物理 1 番)で、下へ向かって順に並びます。GP15 は左列のいちばん下なので、上から数えて 20 番目 = 物理ピン 20 です。PycoBlocks のブロックで「ピン:GP15」と選択すると、このピンが使われます。

課題3-1-2:ブレッドボードの e3 と f3 はつながっているか?

ブレッドボードの内部配線を思い出して、e3 と f3 が電気的につながっているかどうか答えよう。

▶ 模範解答と解説を見る
# e3 と f3 はつながっていない(中央の溝で分かれている)

解説: センター部は a〜e(上ブロック)と f〜j(下ブロック)が中央の溝を境に分かれています。同じ列 3 でも、e3 は上グループ・f3 は下グループなので別グループです。Pico をブレッドボードに挿すとき中央の溝をまたぐのは、この仕組みを利用しています。

課題3-1-3:Pico と Pico W でオンボード LED の制御方法はどう違うか?

Pico(無印)と Pico W では、オンボード LED を点灯させる MicroPython コードが異なる。それぞれどのように書くか調べてみよう。

▶ 模範解答と解説を見る
# Pico(無印)
from machine import Pin
led = Pin(25, Pin.OUT)   # GP25 がオンボード LED に直結
led.on()

# Pico W
from machine import Pin
led = Pin('LED', Pin.OUT)  # 'LED' という名前で WiFi チップ経由で制御
led.on()

解説: Pico W のオンボード LED は WiFi チップ(CYW43439)に接続されているため、GP25 では制御できません。代わりに Pin('LED') という特殊な名前を使います。この違いを知らないと Pico W で LED が点灯しないので要注意です。

課題3-1-4:オンボード LED を点滅させてみよう(実践)

ここまでの準備ができたら、実際に手を動かしてみよう。上の PycoBlocks(MicroPython モード)で、Pico に最初から付いているオンボード LED(GP25)を 1 秒ごとに点滅させるプログラムを作ってみよう。ヒント:「ずっとくり返す」の中に「LED を ON」「1 秒待つ」「LED を OFF」「1 秒待つ」を並べる。

▶ 模範解答と解説を見る
from machine import Pin
import time

led = Pin(25, Pin.OUT)   # Pico 無印のオンボード LED は GP25

while True:
    led.on()
    time.sleep(1)
    led.off()
    time.sleep(1)

解説: PycoBlocks でブロックを組むと、上のような MicroPython コードが自動生成されます。Pico W を使っている場合は Pin(25) を Pin('LED') に変えてください。コードを Pico に転送して LED が 1 秒ごとに点滅すれば成功です。点滅の間隔(time.sleep の数字)を変えて、速さが変わることも確かめてみよう。

まとめ

  • Pico / Pico W はマイコンボード。MicroPython を書き込むことで GPIO ピンを制御できる。
  • MicroPython 書き込みは BOOTSEL ボタン+USB 接続 → RPI-RP2 ドライブに .uf2 をコピーする。一度だけ必要。PycoBlocks の[MicroPython導入]ボタンから同じ手順を案内させることもできる。
  • ブレッドボードは縦 5 穴(a〜e)が 1 グループでつながり、電源レールは横一列。中央の溝で上下(e と f)が分かれる。
  • PycoBlocks の配線図ビューアで Pico のピン名(GP番号・GND・電源)を確認できる。
  • PycoBlocks MicroPython モードでは GP 番号でピンを指定する。ブロックを置くと配線図がリアルタイムで更新される。

次の記事では実際に LED を光らせます。電流制限抵抗の計算方法と外付け LED の配線を一緒に確認しましょう。

トップへ戻る