Raspberry Pi Pico W で SDK

Raspberry Pi Pico W で SDK を使用したプログラム開発

概要

Raspberry Pi Pico W で SDK を使用したプログラム開発方法のメモ

公式ドキュメントサイト

セットアップ手順

以下を参考すれば大体分かります。
公式スタートアップガイド(日本語版)
公式スタートアップガイド

以下は作業メモ。
環境はWSL2上のubuntu20.04。

[!NOTE] RaspberryPi用のセットアップのスクリプトはここ にある pico_setup.sh
それ以外のLinuxでもうごくっぽいですが、余計なものまで入ってしまいそうなので、ここでは手動でセットアップします。

必要なツールをインストールする

以下のコマンドでインストールできます。 gitとかは既に入ってるものとして。

sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential

SDKをダウンロードする

ますは作業ディレクトリを作成してSDKをダウンロードします。
以下では /work/Pico を作業ディレクトリとしています。

mkdir -p /work/Pico && cd /work/Pico
git clone https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk/
git submodule update --init
cd ..

環境変数の設定

以下のコマンドを実行し、環境変数を設定します。
上でSDKのダウンロード先を変更している場合はそれにあわせて変更してください。

export PICO_SDK_PATH=/work/Pico/pico-sdk

次回起動時にそなえて、~/.bashrc に同様のコマンドを追加しておきます。

サンプルプログラムをダウンロードする

git clone https://github.com/raspberrypi/pico-examples.git

Lチカしてみる

公式スタートアップガイドの 「Chapter 3. Blinking an LED in C」にあるのはPico用のサンプルなので、Pico Wでは使えません。
(正確にはGPIO端子にLEDを接続すれば使えるが、オンボードのLEDは点滅しない)
で、Pico W 用の手順をまとめてみました。

cmakeの実行

cd pico-examples
mkdir build && cd build
cmake .. -DPICO_BOARD=pico_w

[!NOTE] cmake のオプションに -DPICO_BOARD=pico_wを追加することでPico W用の設定が有効になります。

Lチカプログラムのビルド

その場でmakeするとすべてのサンプルプログラムがビルドされますが、時間がかかるので Lチカプログラムだけビルドします。

cd pico_w/wifi/blink/
make

これで pico-examples/build/pico_w/wifi/blinkpicow_blink.uf2をpicoに書き込めばボード上のLEDが点滅するはず。

[!NOTE] Pico W のLチカのソースは pico-examples/pico_w/wifi/blink

pico-examples\pico はpico用(Wなし)なので、実行してもオンボードのLEDが点灯しません。 これを実行するには外付けLEDが必要です。

コンソール出力をUSBに出力する

デフォルトでコンソール入出力はUART0に割り当てられています(端子はGP0(TX)/GP1(RX))。
UARTに接続するのが面倒なときはUSBから仮想COMポートに入出力できます。
手順は、ソースディレクトリの CMakeLists.txtに以下を追加してmakeします。
例ではターゲット名にpicow_blinkを使用していますが、使用するターゲットに合わせて変更してください。

# enable usb output, disable uart output
pico_enable_stdio_usb(picow_blink 1)
pico_enable_stdio_uart(picow_blink 0)

[!NOTE] CMakeLists.txtを変更した場合でも makeを実行すればこの変更も反映されます。

出来上がったuf2ファイルをPicoに書き込んだら自動的にリブートされるので、
PCに仮想COMポートドライバがインストールされたらTeratermで対象のCOMポートに接続します。

自作プロジェクトの作成

サンプルプログラムを改造してうんぬんするのはダサいので、自作のプロジェクトを作ってみます。
一から作るのは面倒なので、プロジェクト生成ツールを使います。

プロジェクト生成ツールのダウンロード

githubにプロジェクト生成ツールのリポジトリがあるのでダウンロードします。
以下では 前に作成した作業ディレクトリ /work/Pico をダウンロードディレクトリとしています。

cd /work/Pico
git clone https://github.com/raspberrypi/pico-project-generator.git

ダウロードしたプログラムを直接起動しても良いですが、
オプション指定など忘れっぽいので起動スクリプトを用意しておきます。

pathの通ったディレクトリ(~/binなど)に以下の内容でファイルを作成し、実行属性を付与します。
ファイル名はpico_projectとでもしておいてください。
実行ファイルのパスはダウンロード先に合わせて変更してね。
追加したいオプションがあったらご自由にどうぞ。
GUIを起動するので、最後に & をつけてバックグラウンド実行します。

/work/Pico/pico-project-generator/pico_project.py --nouart --usb  --gui &

プロジェクトの作成

上で作成したスクリプトを実行するとProject Generator のウィンドウが表示されます。
このウィンドウで必要な設定を行います。

OKボタンをクリックしたらプロジェクトが作成され、cmakeが実行されます。
実行結果を表示するウィンドウが表示されますので、確認してOKボタンでクローズしてください。
Locationで指定したディレクトリ下のProjectNameで指定した名前のディレクトリに ProjectNameで指定した名前.c が生成されているので必要な変更を行います。

あとはコンソールでLocationで指定したディレクトリ下のProjectNameで指定したディレクトリ下の buildディレクトリに移動し、makeを実行します。