Raspberry Pi Picoを買ってみました。
環境構築の方法は**Getting started with Raspberry Pi Pico**に載っていますが、開発環境はRaspberry Pi 4上で構築するのが基本となっているようです。Windowsでのやり方も一応載っていますが、コマンドライン上での操作となるとWSL(Windows Subsystem for Linux)を使うのが便利なので、その方法をまとめてみました。
必要なもの
- Raspberry Pi Pico本体 (できれば2枚)
- 2枚あると片方をデバッグプローブにすることでJTAGデバッグが可能になるので便利です。
- ピンヘッダ
- Raspberry Pi Picoにはピンヘッダがマウントされていないので、ブレッドボードに挿すためのピンヘッダを別途用意して、基板にはんだ付けする必要があります。
- Picoの基板には両側に20ピンずつ2列、あとJTAGデバッグ用に3ピン必要なので、適宜折り取って20ピンのヘッダは基板の裏面に、3ピンのヘッダは基板の表面にはんだ付けします。
- ブレッドボード
- Raspberry Pi Picoにいろいろ繋げて遊ぶために使います。
- ジャンパワイヤ
- ブレッドボード上で配線をつなげたり、後述のUSBシリアル変換アダプタをつなぐのに必要です。通常はオス~オスタイプだけあれば良いですが、他の基板やケーブルとつなぐ際にはメスが必要になることもあるので、
オス~オスタイプ、
オス~メスタイプ、
メス~メスタイプ
を一通り揃えておけば、後で繋げるときにあれが足りない、というようなことがなくてよいと思います。 - USBシリアル変換アダプタ
- Raspberry Pi PicoのGPIOに出るシリアル(UART)出力をPCのターミナルソフトで見るために必要です。もちろん変換アダプタをPCにつなぐためのUSBケーブルも。
Raspberry Pi Picoにピンヘッダをはんだ付けすると、こんな感じになります。
環境構築
Windows上に以下のアプリをインストールします。
- WSL(Windows Subsystem for Linux)
- WSL上で動かすLinuxはUbuntu-20.04を推奨します。Ubuntu-18.04だと入っているCmakeが古いため、Pico SDKのビルドが通らないためです。
- 既存の環境があってUbuntu-18.04を使用したい場合は、Ubuntu 18.04 に Cmake の Latest Release をインストールする などを参考にして最新のCmakeに入れ替えてやることで使えるようになるようです。
- WSLのバージョンはWSL1でもWSL2でも構いません。ビルドの速度はWSL2の方が圧倒的に速いのですが、JTAGデバッグの準備がそこそこ面倒です(こんな感じで)。
- USBシリアル変換アダプタのドライバ
- 購入した変換アダプタに対応するものを使用します。 上記のリンク先にあるFTDIのチップの変換アダプタの場合はFTDI社のドライバを使用します。
- ターミナルソフト (TeraTermなど)
- Pico SDKのシリアル接続のデフォルトは「115,200bps 8bit パリティなし ストップビット1」なので、通信パラメータもこのように設定しておきます。
- Visual Studio Code
- "Remote - WSL" 機能拡張を入れておくと、WSL上のファイルもWindows上のものと同様に編集できます。
WSL上の環境構築
Getting started with Raspberry Pi Pico の Chapter 2. The Pico SDK に従って以下を実行します。Chapter 1. Quick Pico Setup は 開発環境にRaspberry Pi 4を使う場合の設定手順なので、実行しないように!
$ cd ~/
$ mkdir pico
$ cd pico
$ git clone -b master https://github.com/raspberrypi/pico-sdk.git
$ cd pico-sdk
$ git submodule update --init
$ cd ..
$ git clone -b master https://github.com/raspberrypi/pico-examples.git
$ sudo apt update
$ sudo apt install cmake gcc-arm-none-eabi build-essential
(Ubuntu-18.04の場合は、最後のapt installでcmakeはインストールせずに自前でビルドします)
Pico SDKの位置を環境変数PICO_SDK_PATH
に設定しておきます。.bashrc
に以下の記述を追加します。
export PICO_SDK_PATH=${HOME}/pico/pico-sdk
サンプルアプリのビルドと実行
Chapter 3. Blinking an LED in C
ビルドの手順はドキュメントと全く同一です。
$ cd pico-examples
$ mkdir build
$ cd build
$ cmake ..
Using PICO_SDK_PATH from environment ('/home/xxxx/pico-sdk')
PICO SDK is located at /home/xxxx/pico/pico-sdk
.
.
.
-- Build files have been written to: /home/xxxx/pico/pico-examples/build
$ cd blink
$ make -j4
Scanning dependencies of target ELF2UF2Build
Scanning dependencies of target boot_stage2_original
[ 0%] Creating directories for 'ELF2UF2Build'
.
.
.
[100%] Linking CXX executable blink.elf
[100%] Built target blink
実行もドキュメントの通りです。Raspberry Pi PicoのBOOTSELボタンを押しながらPCのUSB端子に接続するとマスストレージデバイスとして認識されるので、ビルドでできたblink.uf2
をドラッグ&ドロップします。
ファイルのコピーが行われると、Raspberry Pi Picoが再起動してLED点滅を始めます。
ビルド直後のコマンドラインで、
$ explorer.exe .
を実行するとそのフォルダがWindowsのエクスプローラで表示されるので便利です。
ドキュメントでは 3.2.2. Using the command line でコマンドラインでcpコマンドによって書き込む手順も紹介されていますが、WSLではこの手順はうまく動作しないようです。
(追記) WSLからPowerShellを呼び出してコマンドラインから書き込めるようにしました。【小ネタ】WSL利用時のRaspberry Pi Picoへの書き込みをコマンドラインから行う を参照してください。
Chapter 4. Saying "Hello World" in C
ビルド・実行手順はChapter 3.同様です。UART出力を見る際は 9.2.5.1. UART output を参考にして USBシリアル変換アダプタとジャンパワイヤで接続し、Windowsのターミナルソフトで見てください。