Wio 3G + ArduinoをPlatformIOでビルドとデバッグできるようにしてみた

Seeed K.K. の中井です。

私はWio 3G + Arduinoという組み合わせで動作確認することが多いのですが、 Arduino IDE上でのデバッグはいわゆるprintfデバッグ(シリアルコンソールに動作ログを出力)がメインになっていて、 デバッグ効率が悪いなぁと感じていました。

そこでこの記事では、PlatformIO上でリッチデバッグできる環境を構築してみたのでご紹介したいと思います。

尚、本記事の内容については公式にサポートするものではありませんので、お問い合わせいただいてもご対応できませんのでご注意ください。

f:id:mnakai:20200409101439j:plain

構築する前に試したこと

手軽にデバッグできないか、いくつか確認してみましたがどれも思うようにはいかず。。

Visual Studio CodeのExtensionである「Arduino for Visual Studio Code」も試してみましたが、 まだ色々なボードでデバッグできる状態になってはいませんでした。これからに期待。

PlatformIOでは、Wio 3GはST STM32プラットフォームパッケージに収録されているのですが、 対応するフレームワークが、「Mbed」と「STM32Cube」となっており、Arduinoを選択することはできません。※執筆時点のVer 6.0.0の場合

f:id:mnakai:20200409101457j:plain

今回構築した環境

ないなら作ってみるかというノリでやってみたのが、今回の環境構築です。 結果的にはPlatformIO上でリッチなデバッグができるようになったので非常に満足しています。

PlatformIOの大まかな構成としては、下記のようになっています。

  • platform

    • 各ボードが利用するフレームワークやツールチェーン、ツール類などが定義されたファイルが収録
  • framework

    • arduinoなどのフレームワークのソースコードや、ツール類などが収録

既存のPlatformIOの環境を壊さないようにしたかったので、 プラットフォームパッケージとフレームワークパッケージの2つを開発しています。 もちろん利用できるものは利用してです。

尚、Wio 3Gのみに対応させているのは、手元にそれ以外のボードがないからです。。

プラットフォームパッケージをインストール

さて本題です。今回構築した環境をインストールします。 プラットフォームパッケージのインストールは、PlatformIO Terminalからインストールします。

  • PlatformIO Terminalを開く

f:id:mnakai:20200409101508j:plain

  • 次のコマンドを実行
platformio platform install https://github.com/mnakai3/platform-wio.git

インストール後には、一度 PlatformIO (Visual Studio Code)を再起動します。

正常にインストールが完了していれば、Seeed Wioプラットフォームが追加され、Arduinoフレームワークに対応しているWio 3Gがインストールされています。

f:id:mnakai:20200409101517j:plain

Wio 3Gを選択したプロジェクトを作成してデバッグ

早速インストールしたWio 3Gを選択してプロジェクトを作成します。 プロジェクトに必要なフレームワークパッケージやツール類などが自動的にインストールされます。

f:id:mnakai:20200409101527j:plain

動作確認は、「Wio cell lib for Arduino」に収録されている「basic/LedSetRGB」を使ってみます。 同ライブラリを利用するには、PlatformIOにライブラリをインストールする必要があります。

f:id:mnakai:20200409101535j:plain

LedSetRGB.inoのコードをコピーして、作成したプロジェクトのsrc/main.cppにペースト。

platformio.iniにライブラリを登録します。

[env:seeed_wio_3g]
platform = seeedwio
board = seeed_wio_3g
framework = arduino

lib_deps =
  # Using a library name
  Wio cell lib for Arduino

コードの準備が整ったので、作業用PCとWio 3GをUSBケーブルで接続。一応、setup()にブレークポイントを貼っておき、F5でデバッグ開始。 ビルドとアップロードが実行され、特に設定が変更されていなければarduinoのmain()でbreakされます。

f:id:mnakai:20200409101545j:plain

続行(F5)すると、先ほどブレークポイントを貼ったsetup()でbreakされます。

f:id:mnakai:20200409101603j:plain

終わりに

今回の環境構築ではWio 3Gにしか対応することができていませんが、 機会があれば他のWioにも対応させていきたいと思っています。

作成したコードはgithubにアップしてありますので、ご興味があれば閲覧することもできます。

変更履歴

日付 変更者 変更内容
2020/4/9 mnakai 作成