プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

WSL2でRaspberry Pi Pico Wの開発環境を構築する

はじめに

以前は、Ubuntuをインストールした専用のLinuxマシンでRaspberry Pi Picoの開発を行っていました。しかし、ここ2~3年でWSL(Windows Subsystem for Linux)も非常に発展してきているようなので、Windows上で開発が完結できないか試してみました。
結論から言うと、Windows上のWSL2環境でRaspberry Pi Pico Wの開発が問題なく可能でした。
今回はその環境構築の手順をまとめておきます。
ここでは、Raspberry Pi Pico wは2ではありません。

手順1:WSL環境の構築

まず、Windows上でWSLを使えるように有効化(Activate)します。
基本的にwsl --installコマンドで必要な機能のインストールからUbuntuの導入まで一括で行ってくれるはずのようですが、なぜかうまくいかなかったようなので、各ステップを個別に実行して導入しました。
以下の操作は管理者権限で起動したPowerShellで行います。

$ wsl --install

WSLを利用するために必要な「Windows Subsystem for Linux」と「仮想マシン プラットフォーム」を有効化します。
現在の状態は以下のコマンドで確認できます。

$ dism.exe /online /get-features | select-string "Linux","Virtual" -Context 0,1

もし無効 (State: Disabled) になっていれば、以下のコマンドで有効化します。

$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

上記コマンドを実行したら、一度Windowsを再起動してください。
再起動後、WSLのデフォルトバージョンを2に設定し、Ubuntuをインストールします。

$ wsl --set-default-version 2
$ wsl --install -d Ubuntu

インストールが完了したら、以下のコマンドでWSLの状態を確認します。STATEがRunningになっていれば、Ubuntuが正常に起動しています。

$ wsl -l -v
NAME STATE VERSION
Ubuntu Running 2

これで、WindowsのスタートメニューにUbuntuのアイコンが追加され、いつでもここから起動できるようになります。

手順2:Raspberry Pi Pico W 開発環境の構築

次に、起動したUbuntu上でPicoの開発環境を構築します。
公式のPico SDKとサンプルコードのリポジトリを取得します。

$ git clone https://github.com/raspberrypi/pico-sdk.git --branch master
$ cd pico-sdk
$ git submodule update --init
$ cd ..
$ git clone https://github.com/raspberrypi/pico-examples.git --branch master

git submodule update --initは、SDKが必要とするライブラリをダウンロードするためのコマンドです。

pico-examples ディレクトリに移動し、ビルド用のディレクトリを作成します。
その後、cmake を実行してビルド環境をセットアップします。

$ cd pico-examples
$ mkdir build
$ cd build
$ export PICO_SDK_PATH=../../pico-sdk
$ cmake -DPICO_BOARD=pico_w -DWIFI_SSID="Your Network" -DWIFI_PASSWORD="Your Password" ..

cmakeコマンドの引数は以下の通りです。ご自身の環境に合わせて設定してください。

-DPICO_BOARD=pico_w
// ビルド対象のボードをPico Wに指定する
-DWIFI_SSID="Your Network"
// 接続するWi-FiのSSIDを指定する
-DWIFI_PASSWORD="Your Password"
// Wi-Fiのパスワードを指定する

ここでは例として、Raspberry Pi Pico wでLチカを行う wifi/blink サンプルをビルドしてみます。

$ cd pico_w/wifi/blink
$ make -j4

これでビルドが開始されます。make -j4 のように -j オプションを付けると、CPUのコアを複数使って並列でビルドするため、処理が高速になります。
ビルドが完了すると、カレントディレクトリに blink.uf2 というファイルが生成されます。このファイルを、BOOTSELモードで起動したPicoにドラッグ&ドロップすればプログラムが書き込まれます。

また、同様にwifi/wifi_scanを書き込んでみると、Wi-Fiも動いていることが確認できました。

ここで、SerialはUSBポートではなく、UARTとなりますので、別途USBシリアルを用意して受信する必要があります。
USBケーブルからシリアルを出力するには設定を変更する必要があります。
(書き込みはUSBケーブルですが、ここでのUSBケーブルは電源を供給しているだけ。)

まとめ

Windows上のWSL2環境でRaspberry Pi Pico Wのプログラムをビルドできました。
以前のようにLinux専用機を用意する必要がなく、使い慣れたWindows環境で開発が進められるのは非常に便利です。
また、今回は必ずしも必要ないですがWSLのUbuntuに対してSSHTeratermなどから接続できるように設定しておくと便利なこともあります。