概要
私は Raspberry Pi Pico W の環境として、
以下のページにに書いた通り、 PlatformIO を使用しようとしていました。
PlatformIOでは一通りの処理は記載できるのですが、3点課題が発生したことにより、 公式推奨環境を使うように移行しました。
公式環境を使っていなかった理由、使えるようになった理由を書きたいと思います。
もともと使っていた環境
2025年1月ごろの環境です。
環境 | バージョン |
---|---|
VSCode | 1.96.4 |
PlatformIO | 3.3.4 |
OS | Windows10 |
マイコン | Raspberry Pi Pico W (WH) |
[env:pico]
platform = raspberrypi
board = pico
framework = arduino
【PlatformIO版の課題1】 picoの標準ヘッダが使えない
世にあるRaspberryPiPico用のサンプルコードをPlatformIOで動かそうとすると、動くことは稀です。
PlatformIO版は、 pico/stdlib.h
や pico/stdio.h
がincludeできないのです。(重要)
Arduino系にラップされているので、ローレベルのAPIは使えないことに気が付きました。
参考:
【PlatformIO版の課題2】使えないライブラリがある
詳細まで確認できてはおりませんが、 IRemote という有名なライブラリを使用しようと、PlatformIOから依存を追加しました。
サンプルコード通りに動かそうと思ったのですが、ビルドは通れど起動しなくなる事象が発生。
IrReceiver.begin(IR_RECEIVE_PIN);
もしくは irrecv.enableIRIn();
を書くと Picoのシリアルモニターに接続できなくなり、 以降COMも認識しなくなり、 BOOTSEL押しながらソフト書き換えないといけなくなるのですよね。「USBデバイスが認識されません」のメッセージも出ます。
かなり調べたと思うのですが、全然情報がなく、IRemoteライブラリを使えずに困り果てました。
これは環境が悪いのかもしれないな…と思い、あきらめることに。
ちなみに使おうと思った IRemote はこちら。
起動しなくなる事象としては以下のページにある 「起動しない、COM認識しなくなった(RP2040) 」の部分と事象は同じですが…UART系のピンは避けてGPIOを指定しているので、なんとなく違いそう…。
【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番を指定しても光りませんでした。
公式の開発環境
2025年1月25日現在の Raspberry Pi Picoの公式の開発環境は、
VSCode + Raspberry Pi Pico 拡張機能 を使用した環境です。
英語版の開発環境方法
公式の開発環境を使っていなかった理由
- マイコン開発の勉強はM5Stack系から始めたため PlatformIO が大好きだった
- 一回公式の手順通りに環境構築しようとしたが、 getting started にある blink example がどう頑張ってもプロジェクト作成されずあきらめた
getting started に書いてあることすらできないのであれば、この開発環境は無謀だと判断したのが大きいです。
しかし、課題が3つもあるためどうにかして乗り換えようと思いました。
blink プロジェクトが作れなくていろいろ調べた内容
あまり重要ではありませんが、同じ問題で困った人のために記録を残します。
発生手順
- VSCodeに Raspberry Pi Pico 拡張を導入する
- ツールメニューから "New Project From Example" を選択
- 表示された New Example Pico Project 画面で、 blink / Pico W を選択し "Create" 押下
この手順を行うと、ふつうは右下にプログレスが出ながら「作成中です」のようなメッセージが表示されます。
しかし、私の場合はCreateを押下しても、プログレスやメッセージが表示されず、無視された状態となり、プロジェクトが作成されませんでした。
無理やりプロジェクトは作れた
無理やりプロジェクトを作った手順です。誰の役にも立たない情報…
- ツールメニューから "New C/C++ Project"を選択
- 表示された New Pico Project画面で、 Exampleボタンを押し、 blink を選択
- "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 実行時にどんなことをしているのか記載されています。
エラー文言に 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'
このコマンドの結果は正常であれば、以下のページのログのようにもっと続くはずなのです。
公式環境のプロジェクトが作れないことの対処方法
結局解決したのは今までの経験からの勘でした。
- 去年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の日本語ユーザー名はプログラム開発には向かないのでやめましょう。(自戒)
絶対に…何かしらの…影響が…でます…