M5Stack プログラミング環境、aruduinoIDE と VSCode PlatformIO の共存を調査 #電子工作初心者 #スタックチャン #M5Stack
M5Stack のプログラミング環境として、Aruduino IDE と VSCode PlatformIO の両方を使う環境を整備している。スタックチャンのソースコードをいじる前に、整理しておきたいと思って。
Aruduino IDE は、特に問題は無い(というか、イジリ所が分からない)。問題は VSCode & PlatformIO 、ライブラリー周りが、よく分からなくて、調査、実験してみたので、整理。
「問題はライブラリー」
[Aruduino] フォルダ直下に、以下のフォルダーやファイルがある物とする。
[libraries]
[ProjectDirName] プロジェクトフォルダー
ー [lib]
- [.pio]ー[libdeps]-[env name] ライブラリ収集フォルダー?
- [ProjectDirName] ソースコード(プロジェクトフォルダーと同名が必要)
ー platformio.ini 環境設定ファイル
こういうフォルダ構成で、platformio.ini に以下の様に記述する。(今回の、ライブラリに関係の無い記述は、無視している)
① [platformio]
② src_dir = ProjectDirName
③ lib_dir = ../libraries
④ [env]
⑤ lib_deps =
M5Core2
M5Stack-Avatar
⑥ ; ESP32-A2DP
⑦ https://github.com/pschatzmann/ESP32-A2DP
まず、①の [platformio]セクションを追加する。②でソースファイル置き場のフォルダー名を指定する。aruduino IDE の関係上、これは、プロジェクトフォルダー名 [ProjectDirName] と同じである必要がある。(蛇足で、PlatformIO が自動作成したフォルダ src は、main.cpp ごと削除しておく)
追記: ソースファイルは必ず、プロジェクトフォルダー内にフォルダーを作って、そこに入れる事。例えば src_dir = ./ 等とすると、ビルドで生成されたオブジェクトをも参照してしまい、ビルドエラーとなる。
③でライブラリーの置き場所フォルダー名を指定する。これを指定しないと、デフォルトの lib が適用される。ライブラリフォルダー名は、[ProjectDirName] プロジェクトフォルダーからの相対パスで指定してもいいし、絶対パスで指定してもいい。
ここに、 ../libraries と指定すると、aruduino IDE がダウンロードしたライブラリーを、そのまま利用できる。ただし、その場合、ライブラリーの変更は、全てのプロジェクトに影響を与えてしまうので、注意が必要。
追記: ../libraries を指定するとリンクエラーになる場合がある。その際は、プロジェクトフォルダー内に作ったフォルダー( ./lib 等)を指定するのがよい。
④の [env] セクションでは、使用するライブラリーの名前を指定する。PIO HOME でライブラリーを指定すると、ここに記述される。
コメントにしたい場合は、セミコロン ; を文頭に書く。ローカルに無い場合は、github の URL を記述してもいい。
以上で、Aruduino IDE と VSCode PlatformIO の両方で同じライブラリーデータを使うことが出来るようになる。
これは、うまく説明できないのだけれど、platformio.ini に複数の [env] 環境を記述して切り替えてビルドすることができる。以下の様に書いておく。
[env] デフォルトの共通環境
[env:env1] env1 環境
[env:env2] env2 環境
・・・
[env] は共通して先に設定され、その後に、各名前の付けられた環境設定が実行される物と思われる(不確か)。[env] の値は ${env.lib_deps} 等で参照できる。
この状態で、以下の写真のステータスバーの矢印先のアイコンをクリックすると、環境を選ぶプルダウンリストが出てくるので、それを選択すると、デフォルトの環境を指定できる。


さてと、これで、M5Stack の開発環境の基本は把握できたと思うので、ゆっくりと、スタックチャンのファームウェアーをいじっていきたい。
ただ、私の持っている M5Stack Core2 は、細かいポートにアクセスできない感じなので、M5Stack fire を買おうか迷い始めてる。Core2 に、汎用ポートにアクセスできるオプションのスタックとか、無いのかなぁ

Core2 の PCBに、直接リード線を半田付けするのだけは、避けたい
