VSCodeでPICO WのC++開発環境構築

Pico Wの開発環境の種類

今回は、Raspberry Pi PICO Wの開発を、VSCodeを使って、C++で出来るようにする方法をご紹介致します。 一見簡単そうに見えるテーマですが、いざやってみると、つまづく点も多く、資料もとぼしく、かなり大変でしたので、動画にまとめました。

ピコWの開発環境は4つあります。

  1. MicroPython
    これは最も一般向けの開発環境です。言語がPythonですので、入門者でも気軽にプログラミングできます。 ドキュメントやネット上の情報も豊富にあります。Pythonはスクリプト言語のため、動作が遅く、メモリ消費も多いという欠点があります。 IDEはThonnyを使います。VSCodeでも開発環境を構築することができます。それについては、私のショート動画で紹介していますので、そちらを見て下さい。
  2. CircuitPython
    教育現場での利用を主眼に作られた環境です。
  3. Pico SDK(C++)
    Raspberry Piの公式の開発環境です。ハードウェアの細かな制御が可能で、高度なプロジェクトに向いています。その分、使いこなす難易度は高いです。
  4. Arduino SDK(C++)
    おそらくPicoW開発では、2番目にポピュラーな開発環境です。C++をベースにしたArduino言語で開発します。Arduinoの豊富なライブラリを使うことが出来ます。コンパイル言語ですので、Pythonよりも遥かに高速です。初心者から上級者まで活用できます。 高度なハードウェア制御が必要な時はPico SDKに劣ります。

今回は、4つ目のArduino SDKの開発環境を構築致します。

PicoをArduinoで開発する場合、SDKは、「Arduino公式版」の他に「EarlePhilhower(アール・フィルハウアー版」があります。Pico wに対応しているのは「EarlePhilhower版」の方になりますので、こちらを使ってセットアップしていきます。 セットアップにあたっては、前準備として、VSCodeとGitのインストールを完了させておいて下さい。

Windowsの場合、長いパスを有効にする

最初に、Windowsユーザーの場合は、長いパスを有効にします。Mac、Linuxユーザーの方はここを飛ばして次のチャプターに飛んで下さい。

Windowsユーザーの場合、ファイルのパスの長さは制限されており、デフォルトだと、GitHubのリポジトリ取得の際にエラーになってしまいます。

私は最初、これを知らなくて、5時間くらいエラーに悩まされました。対処は公式ドキュメントに書いてありました。ドキュメントはしっかり読まないとダメですね。

これを回避するために以下の手順を実行します。

  1. gitで長いパスを有効にする。
  2. Windows OS で長いパスを有効にする。
  3. コンピュータを再起動する。

順番にやっていきましょう。

  1. gitで長いパスを有効にする。
    管理者権限でGit Bash等のターミナルを開きます。そして次のコマンドを入力します。
    git config –system core.longpaths true
  2. Windows OS で長いパスを有効にする。
    Windowsのスタートボタンの横にある、検索に、gpedit.msc と入力し、ローカルグループポリシーエディターを開きます。
    ローカル コンピュータ ポリシー、コンピュータの構成、管理用テンプレート、システム、ファイルシステムとたどって移動します。
    Win32 ロング パスを有効にする。をダブルクリックしてダイアログを開きます。
    有効を選択してOKで閉じます。
  3. コンピュータを再起動してください。

VSCodeへ拡張機能のインストール

VSCodeに2つの拡張機能をインストールします。

  1. C/C++(Microsoft)をインストールして下さい
  1. PlatformIO IDEをインストールして下さい。

開発プロジェクトの作成

プログラムを作るためのプロジェクトフォルダを作って下さい。今回は、Lチカのプログラムを仮に作りますので、blink2という名前のフォルダを作りました。

そしてその下に、srcフォルダを作り、LチカのC++のプログラムはそのsrcフォルダの中に作って下さい。

プロジェクトフォルダ直下。ここではblink2フォルダ直下に、platformio.ini というファイルを作り、中身を以下の内容にして下さい。

セミコロン以降はコメントですので、コメントは入力不要です。

[platformio]
default_envs = pico

[common]
build_type = release

[env:pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = rpipicow
framework = arduino
board_build.core = earlephilhower

monitor_speed = 115200
build_flags = 
    -D ARDUINO_RASPBERRY_PI_PICO_W ; enable use Pico SDK
    -D PICO_STDIO_USB              ; enable stdio over USB

PlatformIOの初回環境構築

左のPlatformIOのスズメバチのようなアイコンをクリックします。

そして、Pick a folderをクリックします。

プロジェクトフォルダを選択し、フォルダーの選択、をクリックします。

初回は環境準備のため、PlatformIOのセットアップが動きます。右下の進捗状況を見ながら、終了までしばらく待ちましょう。私の環境では、小一時間かかりました。

インストールが完了したら Project has been successfully updated! のメッセージが表示されます。

ビルド

ビルド、つまりコンパイルから、ピコWへのプログラムの書き込みまでの手順を解説します。

再びスズメバチメニューをクリックして開くと、エクスプローラ欄が変化します。

Buildをクリックしてコンパイルします。

ビルドが成功したらSUCCESSのメッセージが出ます。

アップロード

ビルドが終わったら、プログラムをピコWに転送します。

pico WのBootselボタンを押しながらPCに接続します。

Windowsの場合、デバイスマネージャーを開くとRP2 Bootが警告マークが付いています。このデバイスがPICO Wになります。

警告を消して、シリアルポートとして見えるようにします。

Zadigをダウンロードします。

https://zadig.akeo.ie/

ダウンロードが終わったら実行します。

RP2 Bootが選択されていることを確認します。USB Serial(CDC)を選択します。Install Driverをクリックします。

デバイスマネージャのポート(COMとLPT)欄のRP2 Bootを探し、COMポート番号を調べます。この例ではCOM8になります。

platformio.iniに今調べたポート番号の指定を追加します。

[platformio]
default_envs = pico

[common]
build_type = release

[env:pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = rpipicow
framework = arduino
board_build.core = earlephilhower

upload_port = COM8
monitor_speed = 115200
build_flags = 
    -D ARDUINO_RASPBERRY_PI_PICO_W ; enable use Pico SDK
    -D PICO_STDIO_USB              ; enable stdio over USB

左メニューの Uploadか、下メニューの → を選択すると、ボードへプログラムの書き込みがはじまります。

SUCCESSの表示が出たら成功です。

ピコW上でプログラムが動き出します。

転送が上手くいかない場合

転送が上手くいかなかった人は、プロジェクトフォルダから、.pio、build、picoとたどってください。中にfirmware.uf2というファイルがあります。これがピコWに書き込むファイルになります。ピコWのフォルダにドラッグドロップして書き込んで下さい。

まとめ

以上がVSCodeでのArduinoSDKをつかったピコWの開発環境になります。

キモはplatformio.iniファイルの書き方です。詳細な記載方法は、arduino-picoの公式ページや、platformioのドキュメントにありますので参照してください。

これでPythonを使った開発よりも、ピコWのポテンシャルを引き出せる開発ができるようになると思います。

Aruduino-Pico(公式)

PlatformIOドキュメント