Visual Studio Code & PlatformIOで快適Arduino開発

スポンサーリンク

はじめに

Arduinoの開発環境として、これまでArduino IDEを使っていましたが、Visual Studio CodeのPlatformIOエクステンションを試したところ非常に使いやすかったので紹介します。
下図の右のような画面構成で、プログラムの編集画面、ツリービュー、コンソール(ログやシリアルモニタ表示)が一体になった開発環境です。

本ページではVisual Studio Code(以降VSCodeと呼ぶ)のインストールからArduinoでLチカを行うまでの方法を説明します。

動作環境

以下の環境で動作確認しましたが、Windowsでも同様にできると思います。

項目内容
OSmacOS Mojave 10.14.6
ArduinoボードNodeMCUボード(ESP8266MOD)
その他LED, 150Ω抵抗, ブレッドボード, ワイヤー, MicroUSBケーブル

インストール

VSCodeはこのページからダウンロードします。
VSCodeを立ち上げ、PlatformIOのエクステンションをインストールします。

私の場合、テキストエディタはVimが使いやすいので、Vimエクステンションをインストールしています。こちらはお好みで。

なお、今回使用したNodeMCUボードはUSB-Serial BridgeとしてCP2102が搭載されているので、CP210x用ドライバのダウンロードページからドライバをインストールしました。

使い方

PlatformIOエクステンションをインストールすると左のメニューアイコン部にアリ(?)のマークのアイコンができるので、そこから「Open」→「New Project」とクリックしていきます。

続いてプロジェクトの名前を入力し、ボードを選択します。ボード入力欄に”nodemcu”などのように使用するボード名の一部を入力すると候補が絞られて目的のボードを探しやすくなります。

FrameworkはArduinoとして「Finish」をクリックします。
新規プロジェクトを作ると、空のsetup(), loop()関数が書かれたmain.cppができるので、このファイルを編集していきます。

#include <Arduino.h>

int num = 0;
void setup()
{
  Serial.begin(9600);
  pinMode(D1, OUTPUT);
}

void loop()
{
  Serial.println(num);
  digitalWrite(D1, LOW);
  delay(500);
  digitalWrite(D1, HIGH);
  delay(500);
  num++;
}

上記はLチカのプログラムで、シリアルモニタに1秒毎にカウントアップする数値を出力を行なう例です。

ブレッドボードを使い、以下のようにD1端子から抵抗とLEDを経由してGNDに接続し、USBケーブルでArduinoボードとパソコンとつないでおきます。このときLEDの足が短い方がGND側になるようにします。

コンパイル(ビルド)と書き込みは、下の方にある「→」をクリックするか、アリのアイコンから「Upload」をクリックすることで実行できます。

これでLチカさせることができました。

シリアルモニタを使用するには、下の方にあるプラグのマークをクリックするか、アリのアイコンから「Monitor」をクリックします。

なお、platformio.iniファイルで各種環境設定を行えますが、今回の内容については、初期状態のまま追加設定は何もせずに動作しました。
シリアルポートは自動で探してくれるようで便利です。
書き込み時およびシリアルモニタのボーレートについても何も設定せずに動作しました。試しにSerial.begin(115200);に変更するとシリアルモニタが文字化けしました。この場合、以下の設定をplatformio.iniに追加すると文字化けが無くなりました(デフォルト値が9600になっているようです)。
monitor_speed = 115200

各種設定についてはPlatformIOのページに詳細が記載されています。

感想

以前の投稿でIDE for GRをコマンドラインから使う方法を紹介しました。がじぇるねのIDE for GR向けの内容ですが、本家Arduino IDEでも同様にできます。コマンドラインから、さっとVimでプログラムを編集したり、コンパイルしたいという理由でこのような方法を採っていました。
今回のVSCode & PlatformIOの環境でもVimキーバインドで編集でき、コンソールウィンドウ部分はコマンドライン入力も可能なため、これらの点において同等と言えます。
さらにVSCodeの編集画面では変数や関数名を途中まで入力した際に候補が表示される機能を利用できることが、ある程度コードの規模が大きくなった際に大きなメリットになると思います。
また、シリアルポートの自動探索も地味にありがたいのと、使用ボードなどの設定をプロジェクト毎に保管するため、複数のボードの開発を行き来するような場合、メニューから設定を切り替える必要がなく便利だと思います。

以上からArduino IDEを使う理由がほぼ無くなりましたが、シリアルプロッター(シリアル出力された数値をグラフ表示する機能、参考ページ)はArduino IDEにしか無いようなので、これを使う場合のみArduino IDEを立ち上げることになりそうです。

参考文献

タイトルとURLをコピーしました