はじめてのSeeeduino v4.2 / PlatformIOを使ってLEDとボタンを動かしてみる

Seeedの新米 中井です。元々Linuxばかりを動かしてきたので、マイコンボードはほとんど経験がありませんので、 手始めにPlatformIOを使ってArduinoに慣れていこうと思います。

f:id:mnakai:20200207135802j:plain

今回使用するデバイスはコチラです。 www.seeedstudio.com www.seeedstudio.com

ビルド環境の構築

PlatformIO IDEを利用するには、VS Codeが必要となります。 合わせてインストールしてください。 インストール方法は、このはてなブログでもたくさん見つかりますので割愛させてください。

ということで、PlatformIOがインストールされている前提で操作していきたいと思います。 まずは、今回使用するボード(Platform)のライブラリ?をインストールするところからはじめるようです。

PIO Homeから左の [Platforms] をクリックし、 [Embedded] タブをクリックします。

f:id:mnakai:20200207140611j:plain

PlatformIOが対応している組み込み用のプラットフォームが一覧されるので、その中から "Atmel AVR" を選択します。

[Install] をクリックすればPlatformのインストールは完了です。 他のデバイスを利用する際には、適切なPlatformをインストールする必要があります。

f:id:mnakai:20200207140652j:plain

サンプルプロジェクトで動作確認

さっそく今回用意してあるGroveモジュールを動かしてしまいたいところではありますが、 1つずつ確認しながら進めるということで、まずはLチカのサンプルでビルドとアップロード方法の確認をしてみたいと思います。

先ほどは [Platforms] - [Embedded] でしたが、次は [Platforms] - [Installed] をクリックします。 インストール済みの「Atmel AVR」をクリックし、 [Examples] を選択します。 ここからは、選択したPlatformに対応するサンプルプロジェクトがインポートできるようになっています。 「arduino-blink」を選択して [Import] をクリックしましょう!

f:id:mnakai:20200207140710j:plain

インポートが終わると、ワークスペースに「arduino-blink」プロジェクトが追加されます。

f:id:mnakai:20200207140726j:plain

どんなソースコードになっているかをサラッと確認するには、"src/Blink.cpp" をクリックします。 イニシャライズ(setup関数)として、LEDに接続されたGPIOを出力設定にし、その後メイン処理(loop関数)にあたる無限ループ内でLEDのON/OFF (GPIOのHigh/Low) を行う単純なコードですね。

f:id:mnakai:20200207140739j:plain

さて、ビルドですが、通常はPlatformIOのショートカットボタンで実行できるのですが、このサンプルには様々なboardに対応できるようにパラメータが設定されているようで、 ショートカットからビルドすると時間がかかってしまうようです。 そのため、「Seeeduino v4.2」の設定を追加して、対象ボードのみのビルドを実施してみます。

"platformio.ini" を開いて、次のように変更を加えておきます。変更後は、「Ctrl+s」で保存します。

f:id:mnakai:20200207140757j:plain

ちなみにここで使用したBoard IDは何でもよいというわけではありません。 ボード毎にIDが振られているようなのでそちらを設定します。 下の画像のように [PIO Home] - [Platforms] - [Installed] - [Atmel AVR] で "Seeeduino" を展開すると確認できます。

f:id:mnakai:20200207140812j:plain

ショートカットから "New Terminal" を開いて、次のようにビルドコマンドを実行します。

PS C:\path\to\dir\xxx-arduino-blink> platformio run -e seeeduino

f:id:mnakai:20200207140830j:plain

続いてSeeeduinoにビルドしたファームウェアをアップロードします。 Seeeduinoと作業PCをUSBケーブルで接続し、ターミナルで次のアップロードコマンドを実行します。

PS C:\path\to\dir\xxx-arduino-blink> platformio run -e seeeduino --target upload

このコマンドを実行すると、アップロードに使用されるCOMポートは自動的に検出されるようです。 コマンド実行後、SeeeduinoのUSBコネクタの隣のLEDが点滅しました!

なるほど。なかなか簡単ですね!

ちなみに、コマンドはインポートしたプロジェクトに収録されている "README.rst" に記載されていました。

ようやくLEDとボタンを制御

さてさて、PlatformIOの使い方はなんとなく理解したので、次は本題のGrove - Blue LED Buttonを動かしてみます。

Groveモジュールは、Seeed Wikiにサンプルコードがあるので、それを利用したいと思います。

wiki.seeedstudio.com

今回は先ほど利用したプロジェクトを再利用して使いました。 wikiにあるArduinoサンプルコードをコピーして、"src/Blink.cpp" にペースト。 ざっくりソースコートを眺めてみると、ledPinとbuttonPinの値を変更すればよさそうですね。

さて、どの値にすればいいのか、、んー。。 ということで、Seeeduino v4.2のwikiを確認しました。

wiki.seeedstudio.com

このページのサンプルでは、LEDを光らせるためにD13を利用しています。

LED-D13: The LED is connected to D13 pin of the board. This can be used as an on-board LED indicator for programs/sketches.

サンプルコードでは、次のようになっています。

// initialize digital pin 13 as an output
pinMode(13, OUTPUT);

SeeeduinoのGroveコネクタは、I2Cポートが2つ、UARTポートが1つ用意されています。 回路図をみると、I2CポートのI2Cバスは共有されているので、こちらは触りたくないなぁと思い、 UARTポートのD0D1を利用したいと思います。

f:id:mnakai:20200207140849j:plain

  • ledPin = 0

  • buttonPin = 1

を先ほどコピペしたコードに設定して、さぁビルド。Warningが出ているけど、、まぁ見なかったことに。 アップロードコマンドを実行して、、、動作するかと思いきや、Groveモジュールを接続していないことに気づき。。

いったんPCからSeeeduinoを取り外し、UARTポートにGroveモジュールを取り付け、再度PCに接続。

無事動作させることができました!

変更履歴

日付 変更者 変更内容
2020/02/07 mnakai 作成