【M5Stack_Core2】VS code環境構築

VS code環境構築を構築します。

いままで、Adruinoを使ってきましたがそろそろライブラリの中身を見な(調査し)がら開発するのに限界を感じてVS codeに再チャレンジしました。過去インストールして導入したのですが動かず。PlatformIO IDEという拡張機能を使ったんですがいろいろと設定とかライブラリの整合性とかSDKなどわからないことが多く断念した実績があります。今回は、単純にAdruino環境をそのままVS codeでつかっちゃおーという拡張機能ですので簡単に動作しました。備忘録として残しておきます。

大前提
* Arduinoでプログラムがボード(マイコン)にupdateできる環境をすでにある。
* VSCodeがインストールされている。

手順

  1. 開発ディレクトリを作って、サンプルスケッチをコピーし、Arduinoでサンプルスケッチが動作することを確認する
  2. 拡張機能の追加 Arduino for Visual Studio Code (Microsoft) をインストールする
  3. メニューからフォルダを開くで「開発ディレクトリ」を選択。エクスプローラーが開く
  4. エクスプローラーからサンプルスケッチ(.ino)を開く
  5. Ctrl+Shift+PでArduino: Board Configを選択
  6. Arduino Board Configウインドから開発ボードを選ぶ。Arduinoの設定と同じにする。ソースをセーブしてVS Codeを再起動
  7. エクスプローラー上に.vscodeが追加されていることを確認して、「c_cpp_properties.json」を選択
  8. includePathにArduinoのライブラリを追加
  9. Ctrl+Shift+PでArduino: Select Serial Portを選択。Arduinoの設定と同じにする。
  10. Ctrl+Shift+Pで「Arduino」と打ち込みArduino拡張機能の確認をする(どんな機能があるか見る)1. エクスプローラーでスケッチを選んで(.ino)、ソースコードウインドの右上にあるアイコンArduino: Verify(Ctrl+Alt+R) Arduinoの(レ)検証ボタンと同等
  11. ソースコードウインドの右上にあるアイコンArduino: Update(Ctrl+Alt+U) Arduinoの(→)マイコンに書き込みボタンと同等
  12. 出力LOG文字化け対策下記参照
  13. Serial Port選択バグ対策下記参照

Arduino
f:id:chiyoh:20200919120709p:plain

VS Code
f:id:chiyoh:20200919120430p:plain

Arduino for Visual Studio Code出力の文字化け対策

元ネタ lang-ship.com

Arduino for Visual Studio Code (Microsoft)のバージョンが違うのでPATH等が違うが
"C:\Users\%username%\.vscode\extensions\vsciot-vscode.vscode-arduino-0.3.2\out\src\common\util.js" このファイルの下記の部分を丸ごとコメント化する。

        /*if (os.platform() === "win32") {
            try {
                const chcp = childProcess.execSync("chcp.com");
                codepage = chcp.toString().split(":").pop().trim();
            }
            catch (error) {
                outputChannel_1.arduinoChannel.warning(`Defaulting to code page 850 because chcp.com failed.\
                \rEnsure your path includes %SystemRoot%\\system32\r${error.message}`);
                codepage = "850";
            }
        }*/

Serial Port選択バグ

バージョンによってセレクト画面が出ないことがある。過去に修正されたがまたバグっているっぽい。
Arduino拡張機能のソース設定は、.vscodeに書き込まれるので直接arduino.jsonにport設定(追加)をする。前の行の,(カンマ)を忘れない。

{
    "board": "m5stack:esp32:m5stack-core2",
    "configuration": "PSRAM=enabled,PartitionScheme=default,CPUFreq=240,UploadSpeed=921600,DebugLevel=none",
    "sketch": "Core2_Factory_test\\Core2_Factory_test.ino",
    "port": "COM5"
}

libraryパスの追加

ソースコード#include <M5Core2.h>‘が波線になったので.vscodeのc_cpp_properties.json`にパスの追加
"C:\Users\%username%\Documents\Arduino\libraries\M5Core2\src\M5Core2.h"がソース元なのでこのディレクトリを追加する。カンマでちゃんとつながるようにする。 %username%は、自分のLoginアカウントに合わせる(windows版の話その他は、pathを合わせる)

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "C:\\Users\\%username%\\Documents\\Arduino\\libraries\\M5Core2\\src\\**",
                "C:\\Users\\%username%\\AppData\\Local\\Arduino15\\packages\\m5stack\\tools\\**",
                "C:\\Users\\%username%\\AppData\\Local\\Arduino15\\packages\\m5stack\\hardware\\esp32\\1.0.4\\**",
                "C:\\Users\\%username%\\Documents\\Arduino\\libraries\\**"
            ],
            "forcedInclude": [],
            "intelliSenseMode": "msvc-x64",
            "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe",
            "cStandard": "c11",
            "cppStandard": "c++17"
        }
    ],
    "version": 4
}