Arduinoの開発環境として、これまでArduino IDEを使っていましたが、Visual Studio CodeのPlatformIOエクステンションを試したところ非常に使いやすかったので紹介します。
下図の右のような画面構成で、プログラムの編集画面、ツリービュー、コンソール(ログやシリアルモニタ表示)が一体になった開発環境です。
本ページではVisual Studio Code(以降VSCodeと呼ぶ)のインストールからArduinoでLチカを行うまでの方法を説明します。
動作環境
以下の環境で動作確認しましたが、Windowsでも同様にできると思います。
項目 | 内容 |
---|---|
OS | macOS 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の編集画面では変数や関数名を途中まで入力した際に候補が表示される機能を利用できることが、ある程度コードの規模が大きくなった際に大きなメリットになると思います。
また、シリアルポートの自動探索も地味にありがたいのと、使用ボードなどの設定をプロジェクト毎に保管するため、複数のボードの開発を行き来するような場合、メニューから設定を切り替える必要がなく便利だと思います。
まとめ
Visual Studio CodeのPlatformIOエクステンションを使用してArduinoのプログラミング環境を構築する方法を紹介しました。
これにより、Arduino IDEを使う理由がほぼ無くなりましたが、シリアルプロッター(シリアル出力された数値をグラフ表示する機能、参考ページ)はArduino IDEにしか無いようなので、これを使う場合のみArduino IDEを立ち上げることになりそうです。
書籍紹介
これ1冊でできる! Arduinoではじめる電子工作 超入門 改訂第4版
開発環境Arduino IDEの立ち上げ方から説明されており、これからArduinoを触る方にやさしい入門書です。
I2C通信など電子工作で必須となる知識およびプログラミングのスキルが身につきます。
参考文献
- PlatformIO is an open source ecosystem for IoT development (https://docs.platformio.org/en/latest/)