【Arduino開発】Platform IOでdebug版、release版を分けてビルドして実機へアップロードする方法
みなさん、Arduino開発でPlatform IOは導入されてますでしょうか? Arduino IDEをやめて VS Code で開発してらっしゃる方は多いです。さらにVS CodeにPlatform IOを導入すると、もっとArduino開発が楽しくなりますよ^^ とくにESP32の開発では、Platform IO 無しではコンパイルに時間がかかってどうしようもありません。Platform IOを導入してからはコンパイルもサクサク、開発がスムーズになりました。 Platform IOの導入方法は情報がたくさんありますので他の方に任せるとして、この記事ではpioコマンドを使ったビルドと実機へのアップロードの手順をご紹介いたします。
新規ターミナルを開く場合の注意点
ターミナルで pio コマンドを使えるようにするためには、ちょっとした注意があります。 VSCodeのエクスプローラーでターゲットとなる .ino ファイルを選択した状態で、下部の New Terminal をクリックしなければなりません。
pioコマンドでビルド(コンパイル)する
pio コマンドでプロジェクトをビルド(コンパイル)するには、ターミナルで次のコマンドを実行します。$ pio run
もちろん、下部に設置されているビルドアイコンやショートーカットキーからビルドもできますが、platformio.ini に複数の環境設定を書き込んでいる場合は、より細かくビルドを指定したい場合が出てきます。そんな時にpioコマンドを使うときめ細かなビルドができて、開発もスムーズになります。
特定の環境のみビルドしたい
例えば platformio.ini に次のようなリリース版とデバッグ版を分けて設定している場合、開発中はデバッグ版のみコンパイルしたほうが速いですよね?
...
[env:release]
platform = https://github.com/platformio/platform-espressif32.git
board = esp32dev
framework = arduino
monitor_speed = 115200
platform_packages =
framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32#2.0.2
...
[env:debug]
platform = https://github.com/platformio/platform-espressif32.git
board = esp32dev
framework = arduino
monitor_speed = 115200
platform_packages =
framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32#2.0.2
build_flags =
;====================== MQTT CONFIG ======================
-DMQTT_WITHOUT_SSL
'-DWIFI_SSID="xxxxxx"'
'-DWIFI_PASSWORD="xxxxx"'
'-DWIFI_API_HOST="192.168.61.5:9998"'
'-DPUBLISH_INTERVAL=10000'
...
私の場合は企業様へソースコードを納品することがありますので、WiFiやテストURLなどの情報はハードコーディングせず、ビルド時のコマンドでマクロを定義させてます。そのためにdebug版とrelease版で開発環境を分けてます。
例えば上記の設定ファイルで debug 環境のみビルドするには、次のように -e オプションで環境名を指定してビルドできます。
$ pio run -e debug
こうすると relese 版はビルドされないのでコンパイルも速く済みます。
実機へスケッチをアップロードする
実機へビルドしたバイナリ(スケッチ)をアップロードするには次のように書きます。
$ pio run -e debug -t upload
実機にアップロードしたらシリアルモニタを開きたい
単純にシリアルモニタを開きたい場合は次のコマンドで実行できます。
$ pio device monitor
プログラムが実機にアップロードされたら、自動でシリアルモニタを開きたいですよね。その場合は次の通りです。
$ pio run -e debug -t upload && pio device monitor
またシリアルモニタを使う場合は、platformio.ini に monitor_speed = 115200 を書くことをお忘れなく。