Raspberry Pi Pico 公式の環境構築でビルドできなかったけど解決した記録

## 概要

私は Raspberry Pi Pico W の環境として、
以下のページにに書いた通り、 PlatformIO を使用しようとしていました。

https://qiita.com/uduki-oh-yeah/items/12f833ea80dec9b12795

PlatformIOでは一通りの処理は記載できるのですが、3点課題が発生したことにより、 公式推奨環境を使うように移行しました。

公式環境を使っていなかった理由、使えるようになった理由を書きたいと思います。


## もともと使っていた環境

2025年1月ごろの環境です。

| 環境 | バージョン |
|:-:|:-:|
| VSCode  | 1.96.4  |
| PlatformIO  | 3.3.4  |
| OS  | Windows10  |
| マイコン  | Raspberry Pi Pico W (WH)  |


``` platformio.ini
[env:pico]
platform = raspberrypi
board = pico
framework = arduino
```


## 【PlatformIO版の課題1】 picoの標準ヘッダが使えない

世にあるRaspberryPiPico用のサンプルコードをPlatformIOで動かそうとすると、動くことは稀です。
PlatformIO版は、 `pico/stdlib.h` や `pico/stdio.h` がincludeできないのです。(重要)
Arduino系にラップされているので、ローレベルのAPIは使えないことに気が付きました。

参考：

https://qiita.com/74th/items/3863129561a752d8bb44

https://community.platformio.org/t/include-pico-stdlib-h-causes-errors/22997


## 【PlatformIO版の課題2】使えないライブラリがある

詳細まで確認できてはおりませんが、 IRemote という有名なライブラリを使用しようと、PlatformIOから依存を追加しました。
サンプルコード通りに動かそうと思ったのですが、ビルドは通れど起動しなくなる事象が発生。
`IrReceiver.begin(IR_RECEIVE_PIN);` もしくは `irrecv.enableIRIn();` を書くと Picoのシリアルモニターに接続できなくなり、 以降COMも認識しなくなり、 BOOTSEL押しながらソフト書き換えないといけなくなるのですよね。「USBデバイスが認識されません」のメッセージも出ます。

かなり調べたと思うのですが、全然情報がなく、IRemoteライブラリを使えずに困り果てました。
これは環境が悪いのかもしれないな…と思い、あきらめることに。

ちなみに使おうと思った IRemote はこちら。

https://github.com/Arduino-IRremote/Arduino-IRremote

起動しなくなる事象としては以下のページにある 「起動しない、COM認識しなくなった（RP2040） 」の部分と事象は同じですが…UART系のピンは避けてGPIOを指定しているので、なんとなく違いそう…。

https://tamanegi-digick.com/it/ard-trouble/#toc7



## 【PlatformIO版の課題3】Pico W ではオンボードのLチカができない

Raspberry Pi Pico W には、オンボードにLEDがあります。
動作していることの確認に使用したいのですが、PlatformIO版では使えなさそうなのです。

というのも、PlatformIO版は、 Pico W ではなく、正確には Pico用のboard指定なのですよね。


Pico と Pico Wはほぼ違いはないのですが、
ちょうどオンボードLEDのピンは違うのです。

Pico では 25番がLEDピンなのですが、
Pico W では WL_GPIO0 となっており、25番を HOGH/Low しても何も起きません。

earlephilhower版ボード では 32番とのことですが、残念ながら「pico」ボードでは32番を指定しても光りませんでした。

https://garchiving.com/how-about-onbord-led-raspberry-pi-pico-w/#google_vignette


## 公式の開発環境

2025年1月25日現在の Raspberry Pi Picoの公式の開発環境は、
**VSCode + Raspberry Pi Pico 拡張機能** を使用した環境です。

英語版の開発環境方法

https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf


## 公式の開発環境を使っていなかった理由

* マイコン開発の勉強はM5Stack系から始めたため PlatformIO が大好きだった
* 一回公式の手順通りに環境構築しようとしたが、 getting started にある **blink example がどう頑張ってもプロジェクト作成されず**あきらめた

getting started に書いてあることすらできないのであれば、この開発環境は無謀だと判断したのが大きいです。

しかし、課題が3つもあるためどうにかして乗り換えようと思いました。


## blink プロジェクトが作れなくていろいろ調べた内容

あまり重要ではありませんが、同じ問題で困った人のために記録を残します。

### 発生手順
1. VSCodeに Raspberry Pi Pico 拡張を導入する
1. ツールメニューから "New Project From Example" を選択
1. 表示された New Example Pico Project 画面で、 blink / Pico W を選択し "Create" 押下

この手順を行うと、ふつうは右下にプログレスが出ながら「作成中です」のようなメッセージが表示されます。
しかし、私の場合はCreateを押下しても、プログレスやメッセージが表示されず、無視された状態となり、プロジェクトが作成されませんでした。

### 無理やりプロジェクトは作れた

無理やりプロジェクトを作った手順です。誰の役にも立たない情報…

1. ツールメニューから "New C/C++ Project"を選択
1. 表示された New Pico Project画面で、 Exampleボタンを押し、 blink を選択
1. "Create" ボタン押下

この手順ならプロジェクト自体は作れました。

### プロジェクトは作れても、ビルドが実行できなかった

ツールメニューから "Compile Project" を選択すればビルドされるはず！と思ったのですが、ビルドはエラーで停止しました。

VSCode に表示されるエラーは以下。

```
ninja: error: loading 'build.ninja': The system cannot find the file specified.

ninja: Entering directory `C:\repo\MySecondPico/build'
```

### エラー箇所を調べる

以下のページに、Compile Project 実行時にどんなことをしているのか記載されています。

https://zenn.dev/usagi1975/articles/2024-08-29-000_pico_development2

エラー文言に ninja という単語があったので、怪しいコマンドを VSCode のターミナルから実行したところ、同じエラーが発生しました。

原因は `ninja` コマンドでした。

ただ、このコマンドで失敗している理由としては、一つ前のコマンドである `cmake -G Ninja ..` が途中終了していることが原因のようでした。

私の環境で `cmake -G Ninja ..` を実行した場合、以下でログが止まります。

```
PS C:\repo\MySecondPico\build> cmake -G Ninja ..
PICO_SDK_PATH is C:/Users/うづき/.pico-sdk/sdk/2.1.0
Target board (PICO_BOARD) is 'pico2_w'.
Using board configuration from C:/Users/うづき/.pico-sdk/sdk/2.1.0/src/boards/include/boards/pico2_w.h
Auto-converting non-specific PICO_PLATFORM='rp2350' to 'rp2350-arm-s'
Defaulting platform (PICO_PLATFORM) to 'rp2350-arm-s' based on PICO_BOARD setting.
-- Defaulting build type to 'Release' since not specified.
Defaulting compiler (PICO_COMPILER) to 'pico_arm_cortex_m33_gcc' since not specified.
Configuring toolchain based on PICO_COMPILER 'pico_arm_cortex_m33_gcc'
Defaulting PICO_GCC_TRIPLE to 'arm-none-eabi'
```

このコマンドの結果は正常であれば、以下のページのログのようにもっと続くはずなのです。

https://github.com/raspberrypi/pico-sdk/issues/1990





## 公式環境のプロジェクトが作れないことの対処方法

結局解決したのは**今までの経験からの勘**でした。

* 去年Windowsを再インストールしなおしたばかりで、変なデータやレジストリがあるとは思えない
* 調べても同じ事象が全然出てこない
* つまり通常では考えられない何かが起きている
* ログを見ていて、なんとなく、日本語フォントが気になりだしてくる…………**日本語？**

急に閃いて、**Windowsのアカウント名を日本語**にしたことが影響しているのではないかと思いました。

　→ **結果：大当たり**

 **Windowsに英名の新規ユーザーを作り直し**環境構築しなおしたところ、無事にblinkプロジェクトの作成＆ninjaコマンドによるコンパイルが完了するところまで確認できました。


予想ですが、 ".pico-sdk"フォルダはWindowsユーザーフォルダ直下に作られるので影響しているものと思われます。



## 最終的にビルドできたバージョン

| 環境 | バージョン |
|:-:|:-:|
| VSCode  | 1.96.4  |
| Raspberry Pi Pico拡張  | 0.17.3  |
| OS  | Windows10  |
| マイコン  | Raspberry Pi Pico W (WH)  |



 ## 結論

VSCode + Raspberry Pi Pico 拡張　を使って環境構築するときは、 英名Windowsユーザー名を使いましょう。

そもそも、Windowsの日本語ユーザー名はプログラム開発には向かないのでやめましょう。（自戒）
絶対に…何かしらの…影響が…でます…