/m5stack-platformio-boilerplate-code

PlatformIO IDE 向け M5Stack 定型コード環境 / Boilerplate Code for M5Stack in PlatformIO IDE Environment

Primary LanguageC++MIT LicenseMIT

In English

PlatformIO IDE 向け M5Stack 定型コード環境

Arduino IDE 環境と同じように PlatformIO IDE 環境でも setup()loop()の中身を書いてすぐにコンパイルして実行できます。

対応機種

機種名 環境名 備考
M5Stack BASIC env:m5stack-basic 公式ライブラリを使用。
M5Stack Fire env:m5stack-fire 公式ライブラリを使用。
M5Stack M5GO env:m5stack-m5go 公式ライブラリを使用。
M5Stack CORE2 env:m5stack-core2 公式ライブラリを使用(不具合があるためM5Unifiedベースではないv0.1.8に固定)。
M5Stack CORES3 env:m5stack-cores3
env:m5stack-cores3-m5unified
公式ライブラリを使用。
M5Unified を使用。USB CDC On Boot が有効。
M5StickC env:m5stack-c 公式ライブラリを使用。
M5StickC Plus env:m5stack-c-plus 公式ライブラリを使用。
M5ATOM Matrix env:m5stack-atom-matrix
env:m5stack-atom-matrix-m5unified
公式ライブラリを使用。
M5Unified を使用。
M5ATOM Lite env:m5stack-atom-lite
env:m5stack-atom-lite-m5unified
公式ライブラリを使用。
M5Unified を使用。
M5ATOM Echo env:m5stack-atom-echo
env:m5stack-atom-echo-m5unified
公式ライブラリを使用。
M5Unified を使用。
M5ATOM U env:m5stack-atom-u
env:m5stack-atom-u-m5unified
公式ライブラリを使用。
M5Unified を使用。
M5ATOMS3 env:m5stack-atoms3
env:m5stack-atoms3-m5unified
公式ライブラリを使用(M5Unifiedベース)。USB CDC On Boot が有効。
M5Unified を使用。USB CDC On Boot が有効。
M5ATOMS3 Lite env:m5stack-atoms3-lite
env:m5stack-atoms3-lite-m5unified
公式ライブラリを使用(M5Unifiedベース)。USB CDC On Boot が有効。
M5Unified を使用。USB CDC On Boot が有効。
M5ATOMS3 U env:m5stack-atoms3-u
env:m5stack-atoms3-u-m5unified
公式ライブラリを使用(M5Unifiedベース)。USB CDC On Boot が有効。
M5Unified を使用。USB CDC On Boot が有効。
M5Stack CoreInk env:m5stack-core-ink 公式ライブラリを使用。
M5Stack Paper env:m5stack-paper 公式ライブラリを使用。
M5StampS3 env:m5stack-stamps3
env:m5stack-stamps3-m5unified
公式ライブラリはなし。
M5Unified を使用。USB CDC On Boot が有効。
M5Capsule env:m5stack-capsule-m5unified M5Unified を使用。USB CDC On Boot が有効。
M5Dial env:m5stack-dial
env:m5stack-dial-m5unified
公式ライブラリを使用(M5Unifiedベース)。
M5Unifiedを使用。USB CDC On Boot が有効。
M5Cardputer env:m5stack-cardputer 公式ライブラリを使用(M5Unifiedベース)。USB CDC On Boot が有効。
M5DinMeter env:m5stack-din-meter 公式ライブラリを使用(M5Unifiedベース)。USB CDC On Boot が有効。
M5NanoC6 env:m5stack-nanoc6 公式ライブラリを使用。

事前準備

コード整形の設定

コードの整形は.vscode/settings.json"C_Cpp.clang_format_style": "file"にしているため,.clang-formatで設定できます。ご自身の好きな設定に変更してください。

環境設定

接続ポートの設定

platformio.ini[platformio]セクションにあるupload_portmonitor_portのコメントを外し,upload_portに設定するポートを実機が接続しているポートに変更します。

upload_port = COM16
monitor_port = ${env.upload_port}

※PlatformIO IDE v3.0.0より,ステータスバーからポートの切り替えができるようになりました。

環境の設定

「Switch PlatformIO Project Environment」(VSCode のステータスバーにある)で機種に合った環境名を設定します。

platformio.ini[platformio]セクションでdefault_envsを明示的に指定することでも環境を設定できます(既に書いてあるので,いずれかのコメントを外す)。以下の例ではm5stack-basicを指定しています。

[platformio]
default_envs = m5stack-basic
; default-envs = m5stack-fire
; default-envs = m5stack-m5go
; default_envs = m5stack-core2
; default_envs = m5stack-cores3
; default_envs = m5stack-cores3-m5unified
; default_envs = m5stick-c
; default_envs = m5stick-c-plus
; default_envs = m5stack-atom-matrix
; default_envs = m5stack-atom-lite
; default_envs = m5stack-atom-echo
; default_envs = m5stack-atom-u
; default_envs = m5stack-atom-matrix-m5unified
; default_envs = m5stack-atom-lite-m5unified
; default_envs = m5stack-atom-echo-m5unified
; default_envs = m5stack-atom-u-m5unified
; default_envs = m5stack-atoms3
; default_envs = m5stack-atoms3-lite
; default_envs = m5stack-atoms3-u
; default_envs = m5stack-atoms3-m5unified
; default_envs = m5stack-atoms3-lite-m5unified
; default_envs = m5stack-atoms3-u-m5unified
; default_envs = m5stack-coreink
; default_envs = m5stack-paper
; default_envs = m5stack-stamps3
; default_envs = m5stack-stamps3-m5unified
; default_envs = m5stack-capsule-m5unified
; default_envs = m5stack-dial
; default_envs = m5stack-dial-m5unified
; default_envs = m5stack-cardputer
; default_envs = m5stack-din-meter
; default_envs = m5stack-nanoc6

外部ライブラリの追加

外部ライブラリを使用する場合は,[env]セクションにあるlib_depsに追加します。

lib_deps =
    fastled/FastLED

コードの記述

main.cppsetup()loop()にコードを書きます。必要なヘッダファイルはmain.hppで環境名に合わせて実機に合ったヘッダファイルをインクルードするようにしています。

各機種でM5.begin()の引数がまちまちでわかりにくく,CoreS3.begin()のように機種固有の名前が付いている場合もあるので,M5_BEGINM5_UPDATEというマクロで差異を吸収しています。 また,機種によってはM5のインスタンスに機種固有の名前(M5Stack CoreS3の公式ライブラリの場合はM5ではなくCoreS3)がついている場合があるので,どの場合でも同じM5DEVでアクセスできるように設定しています。

共通の書き方でログの出力をするために,M5DEV_LOGE()M5DEV_LOGW()M5DEV_LOGI()M5DEV_LOGD()M5DEV_LOGV()を定義しました。

それぞれの定義内容に関してはmain.hppを参照してください。

注意:M5Unified でSD.hSPIFFS.hを使用する場合は,#include "main.hpp"より前に入れてください。

// clang-format off
#include <SPIFFS.h>
#include "main.hpp"
// clang-format on

実機へのアップロード

PlatformIO: Upload(VSCode のステータスバーにある → ボタン)を実行します。