WioLTEをVSCode(PlatformIO)で開発する
この記事について
この記事ではSeeed社から発売されているWio LTEをVisualStudio CodeにインストールしたPlatformIO環境で開発する方法を紹介します。PlatformIOの対応プラットフォームにWioLTEがなかったためビルドスクリプトと設定情報を用意しました。
Wio LTEについて
Wio LTEはSeeed社から発売されているLTE SIMが刺さるCortex-M4(STM32F407)の開発ボードです。I2CやUART, デジタル、アナログI/OをGrove端子で提供しています。また、Arduino互換ボードを謳い開発にはArduino IDEを使います。他のArduinoとほぼ違いなく開発ができます。その他にはEspruinoというJavaScriptで開発を行うフレームワークを使う方法もあります。GitHubのリポジトリにはmbed対応のリポジトリもあるようです。 Arduinoのライブラリなどをそのまま流用したいという理由から、Arduino IDEでの開発を選択するとArduino IDEを使うことになります。しかし、Arduino IDEはビルドとバイナリの転送ができるメモ帳と言っても過言ではない使い勝手の悪さです。「()」やダブルコーテーションの入力補助やコードのサジェッションを受けることができません。また、Gitなどの構成管理ツールと言った他の開発ツールとのインテグレーションが気軽にできません。高機能なエディタやターミナルのツールを駆使することになります。 そこで今回はPlatformIOを使いVSCodeでWIo LTEの開発を行っていきます。
PlatformIO
PlatformIOはPythonで書かれた組み込み向けの開発ツールです。ArduinoだけでなくMbedやネイティブな環境での開発をサポートしています。開発ボード(CPU)-フレームワークの関係を管理し、そのためのツールとインストールとビルド転送をラップしているイメージです。
PlatformIOは前述のようにPythonで書かれており、コマンドラインで実行します。しかし、VSCodeやAtomエディタにPlatformIO IDEというプラグンが用意されており各エディタにインテグレーションすることができます。 PlatformIOは前述のように開発ボードの種類(CPU)-フレームワークの関係を管理しています。逆に言うと開発ボードに対応した定義がなければPlatformIO上で開発することができません。現在対応しているプラットフォームはPlatformIOのコマンドから調べることができます。現在のところWio LTEはPlatformIOに登録されていません。またSTM32F4とArduinoフレームワークで開発を行うプラットフォームを試してみましたが、ビルドがうまくいきませんでした。そこで、Wio LTEのプラットフォーム定義を作成する必要があります。
プラットフォームを定義する
PlatformIOで独自にプラットフォームの定義を行う場合、大きく、以下の3つが必要になります。
詳細は以下のドキュメントを参考にしていください。 Custom Development Platform — PlatformIO 3.5.3a3 documentation
platform.jsonはプラットフォームの基本的な定義を記載します。一番重要なのはどの開発ツールを利用するのか、どこからダウンロードするかです。ここでいう開発ツールは開発のためのフレームワーク、コンパイルや実行ファイルを作るためのビルドツール、開発ボードへ実行ファイルを転送するアップロードです。
それぞれ以下のように設定しています。
名前 | 説明 |
---|---|
oolchain-gccarmnoneeabi | ARMのコンパイラリンカなどのビルドツール |
framework-Seeed_STM32F4 | Wio LTE用のArduinoフレームワーク Seeed社のリポジトリに公開されているものにPlatformIO用のJSONファイルを追加 |
tool-stm32duino | DFUのアップロードツール |
board.jsonは対象のボードのコンパイルオプションやCPUの設定を記載します。ビルドスクリプトから参照してい利用します。ビルドスクリプトはSConsというPython製のビルドツールを使って記載します。Makefileの置き換えとして開発されたようです。ビルドスクリプトにはコンパイル、リンクのためパスのしていや各種フラグの設定を行います。また、アップロード方法についても定義しておきます。
今回作成したプラットフォームの定義は以下のリポジトリに置いています。
利用方法
- PlatformIOのインストール
以下のページを参考にVSCodeへPlatformIO IDE Pluginをインストールしてください。
PlatformIO IDE for VSCode — PlatformIO 3.5.3a3 documentation
- Wio LTEプラットフォームの設定
以下のようにプラットホーム定義をcloneします。clone先のリポジトリはPlatformIOのホームディレクトリ配下にあるplatformsディレクトリです。macOSの場合はホームディレクトリ配下の.platformsの中になります。Windowsの場合はおそらくユーザディレクトリ配下の.platforms以下となります。
> cd $USER_HOME/.platformio/platforms > git clone https://github.com/masato-ka/platform-wiolte.git
また、WioLTEforArduinoライブラリをlibフォルダにクローンします。
>cd $USER_HOME/.platformio/lib >git clone https://github.com/SeeedJP/WioLTEforArduino
- プロジェクトの作成
VSCodeを立ち上げるとPlatformIOのホーム画面が立ち上がるようになります。ホーム画面にある 「New Project」を選択後、Wio LTEとArduinoを選択しFinishを押下します。
その後、プロジェクトが作成され、後はArduino IDEと同様にコードを書いてビルド後アップロードします。VSCodeの下側にビルドボタンとアップロードボタン、シリアルモニタのボタンが表示されるはずです。またアップロード時にはWio LTEをDFUモードにしてください。コードを書くとこのようにサジェッションが出てきます。
まとめ
簡単に書いてますが、ビルドスクリプトを作成するのに手間取りました。もしよければ使っていただけると嬉しいです。OSX環境しか試してませんが、他の環境でももれなく動くはずです。不具合があれば報告していただければ可能な範囲で対応します。公式で対応されるのが待たれます。PlatformIO本体への登録ってどうやるんだろうな。。。 また今回の内容をLTにまとめて2/6のSORACOM UG LT大会で話せればと思っています。(抽選に当たってと仕事が片付けば。。。)