PlatformIO IDE における複数の対象環境の指定方法

PlatformIO IDE で、複数の対象環境(ボード)の指定をすることができる。

MH-ET Live ESP32 Minikit と WeMos D1 Mini を対象にした場合を例とする。

詳細については、Project Configuration File platformio.ini (https://docs.platformio.org/en/latest/projectconf.html) を参照して欲しい。

環境の追加

PlatformIO IDE の PIO Homeで「+New Project」をクリックし、Project Wizardを起動し、プロジェクトを作成する際にボードを選べばそのボードのための platformio.ini が作成される。

ここでは、Project Wizardで作成された次のplatformio.ini を基にする。

WeMos D1 R2 & mini の環境を追加するために WeMos D1 R2 & miniのボードIDを探す。

PlatformIO IDE の PIO HomeからBoardsを選ぶ。Board Explorerにキーワードを入力して対象を絞り、該当するボードの「+」をクリックすると表示される。

次の例は、WeMos D1  mini をキーワードとして検索し、WeMos D1 R2 & mini  を選択したところである。WeMos D1 R2 & mini のボードIDは、d1_mini である。

また、d1_mini の platfrom は espressif8266 である。フレームワークは選択できるが、ここでは arduino を選択する。

環境名は env: にボードIDを加えたものを使うとする。ここでは、 env:d1_mini となる。

それぞれの環境毎に設定を行うことができる。

たとえば、build_flags でビルド時のフラグを指定し、シリアルモニターの速度を monitor_speed で 115200 bps に指定すると次のようになる。

上記の状態でボトムにあるアイコンバー  のビルドをクリックしてビルドを行うと、両方の環境でのビルドが行われる。

特定の環境のみのビルド

特定の環境のみのビルドをしたい場合には、タスクを指定する必要がある。

アイコンバーの Run Task  をクリックしてタスクパネルをオープンするか、メニューバーの「タスク(T)」から「タスクの実行(R)…」を選択する。

env:d1_mini の環境のビルドをしたい場合には、パネルの中から「PlatformIO: Build (d1_mini)」を選択する。

デフォルト環境の設定

デフォルト環境を設定することができる。次のセクションを追加することで、env:mhetesp32minikit がデフォルト環境になり、アイコンバーからビルドすると env:mhetesp32minikit の環境のみがビルドされるようになる。

[platformio]
env_default=mhetesp32minikit

設定の参照

設定は環境毎に行う必要がある。

しかし、プロジェクト全体で共通のビルドオプションなどがあり、値の設定などを1か所だけで行いたい場合には、共通環境のセクションを作成して、その中で値などを設定する。ビルド対象のセクションでは、その共通環境のセクションを参照することができる。

たとえば、これまでの例の build_flags のマクロ定義の共通部分と、monitor_speed を共有環境 [env] で設定して、それを ${環境.フラグ}の形式で参照すると以下のようになる。

[platformio]
env_default=mhetesp32minikit

[env]
build_flags =
    -D USE_PAHO=1
    -D USE_SPARKFUN_LIBRARIES=1

monitor_speed = 115200

[env:mhetesp32minikit]
platform = espressif32
board = mhetesp32minikit
framework = arduino

build_flags =
    ${env.build_flags}

monitor_speed = ${env.monitor_speed}

[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino

build_flags =
    ${env.build_flags}
    -D ARDUINO_ESP8266_WEMOS_D1MINI=1

monitor_speed = ${env.monitor_speed}