Ubuntu Weekly Recipe

第684回 UbuntuからRaspberry Pi Picoを使う

この記事を読むのに必要な時間:およそ 7.5 分

2021年の1月にRaspberry PiシリーズにRaspberry Pi Picoが追加されました。これは「マイコンボード」と呼ばれるカテゴリーの製品です。今回はUbuntu上でPico用のファームウェアをビルドし,Picoに書き込み,起動する手順を説明します。

Raspberry Pi Pico

Raspberry Pi Picoは,これまでのRaspberry Piとは異なり「マイコンボード」とも呼ばれる,省電力・小サイズ・低コストなデバイスです。プロセッサーとしてデュアルコアのCortex-M0+(最大133MHz)に加えて,264KBのSRAMや2MBのFlash Memoryが搭載されています。結果的に,Debian/Ubuntuのような一般的なLinux OSは動作しません※1⁠。

※1
もちろんそれなりにがんばればUnixライクなCLIを備えたOSを構築することは可能です。

Raspberry Pi Picoのマイコンボードとしての特徴のひとつが余計な専用ツールが不要なことです。実行イメージのコンパイルは一般的なGCCコンパイラーでできますし,イメージの書き込みに至っては普通のUSBケーブルを接続して,USBマスストレージとして見えるフォルダーにドラッグアンドドロップするだけです。必要な情報のほとんどはRaspberry Piの公式サイトに資料としてまとまっているため,ちょっと使ってみるだけなら苦労することもないでしょう※2⁠。

※2
日本語の情報も既にたくさん存在します。もちろん今回のような入門記事も数多く執筆されているため,あえて本連載で取り上げなくても良いのですが,将来的な記事の事前準備として執筆することにしました。

必要な機材は次のとおりです。

  • Raspberry Pi Pico本体
  • USB 2.0 Micro-Bのプラグが付いたUSBケーブル※3
  • 上記を接続するPC
※3
同じMicro-BでもUSB 3.xだと刺さらないので注意してください。PC側につなぐコネクタはなんでもかまいません。

なおPicoはピン有り・無しの両方が売られています。いろんなオプションボードを試してみたいものの,はんだ付けは苦手という人はピン有りを選んでおきましょう。

PCもUSB給電ができ,USBマスストレージクラスに対応しているるなら種類は問いません。Picoの場合,Raspberry Piのみを用いて開発する方法も想定しているようですし,ドキュメントの解説もそちらがメインです。

上記を用意したら最初にサンプルプログラムを動かしましょう。正式な由来は不明なのですが,この手のデバイスは「まずLEDを光らせる」のが社会人としてのマナーなんだそうです※4⁠。そして幸いにもサンプルページにはビルド済みのLEDを光らせるファームウェアが用意されています。

※4
たとえば旧約聖書の創世記でも,GNDを用意したあとに「光あれ」とLEDを点灯している思われる様子が見えます。

購入直後はおそらく,Flashは空のはずです。この場合,PicoをUSBケーブルでPCに接続するとUSBマスストレージとして認識し,自動的にマウントされます。dmesgとlsusbの出力結果は次のとおりです。

$ sudo dmesg
(中略)
[  753.792803] usb 1-1: new full-speed USB device number 8 using xhci_hcd
[  753.942280] usb 1-1: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00
[  753.942293] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  753.942299] usb 1-1: Product: RP2 Boot
[  753.942303] usb 1-1: Manufacturer: Raspberry Pi
[  753.942307] usb 1-1: SerialNumber: E0C912D24340
[  753.975352] usb-storage 1-1:1.0: USB Mass Storage device detected
[  753.975457] scsi host0: usb-storage 1-1:1.0
[  753.975571] usbcore: registered new interface driver usb-storage
[  753.977555] usbcore: registered new interface driver uas
[  754.981713] scsi 0:0:0:0: Direct-Access     RPI      RP2              1    PQ: 0 ANSI: 2
[  754.982348] sd 0:0:0:0: Attached scsi generic sg0 type 0
[  754.982926] sd 0:0:0:0: [sda] 262144 512-byte logical blocks: (134 MB/128 MiB)
[  754.983245] sd 0:0:0:0: [sda] Write Protect is off
[  754.983254] sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00
[  754.983561] sd 0:0:0:0: [sda] No Caching mode page found
[  754.983574] sd 0:0:0:0: [sda] Assuming drive cache: write through
[  755.005984]  sda: sda1
[  755.037747] sd 0:0:0:0: [sda] Attached SCSI removable disk

$ lsusb | grep Rasp
Bus 001 Device 008: ID 2e8a:0003 Raspberry Pi RP2 Boot

もし認識しないようなら,一旦ケーブルを抜いてからPico上にあるBOOTSELボタンを押しながらUSBケーブルを接続してください。慣れるまでは腕が3本ぐらいほしくなる手順です。USBコネクタはPC側を挿抜したほうがやりやすいと思います。とにかくUSBマスストレージとして認識されるはずです。

ちなみにディレクトリの中身を見るとINDEX.HTMINFO_UF2.TXTというファイルが見えるかと思います。前者はRaspberry Piのマイクロコントローラーのページ?version=シリアルナンバーのパラメーター付きでアクセスするだけです。後者は次のようなファームウェアの情報が表示されます。

shibata@nuc:~$ cat /media/shibata/RPI-RP2/INFO_UF2.TXT
UF2 Bootloader v1.0
Model: Raspberry Pi RP2
Board-ID: RPI-RP2

どちらも気にすることはないでしょう。

デスクトップ版のUbuntuなら,Picoは「/media/shibata/RPI-RP2/」以下にマウントされています。よって次のようにファームウェアを書き込みましょう。

$ wget https://rptl.io/pico-blink -O blink.uf2
$ cp blink.uf2 /media/shibata/RPI-RP2/

これだけでPicoは自動的に再起動し,おもむろにLEDの点滅が始まります。やりました。

ここではCLIからコピーしましたが,もちろんファイルアプリからドラッグアンドドロップでコピーしても問題ありません。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。