![](https://jhalfmoon.com/dbc/wp-content/uploads/2018/11/JH-2-150x150.png)
パソコン更新をきっかけにツール類を厳選の上、最新版をインストールしつつあります。前回は最近正式リリースの Arduino IDE 2.0 をインストールして動作確認。今回は PlatformIO を新パソコンに導入し、動作確認をしたいと思います。ターゲットはSTM32マイコン搭載、Nucleo F072RBボードです。
※「鳥なき里のマイコン屋」投稿順Indexはこちら
PlatformIOは、多種類のマイコン、開発ボード、フレームワーク(OSやライブラリ等を含む)を活用できるマイコン開発用のIDEです。VScodeの「イクステンション」としてインストールするのは非常に簡単です。冒頭のアイキャッチ画像にありますように、VScodeの「拡張機能(Marketplace)」でPlatformIO IDEを探して「インストール」ボタンを押すだけです。
この「インストール」の時点では、PlatformIOの「コア」な部分はインストールされますが、各種マイコンのツールチェーンなどはまだインストールされていません。
VScodeの拡張機能なので、「お知らせ」が届くたびにアップデートしていれば常に最新版を使っていることになります。今回新パソコンに改めてインストールしたバージョンを旧パソコンと比べてみましたが同一バージョンでした。
ターゲットボードとプラットフォームを指定すれば環境ができあがる
なんといってもPlatformIOのすごいところは、ターゲットボードとFrameworkを指定すれば、ビルドに使うツールチェーンや、ライブラリなど一切合切を自動でダウンロードしてセットアップしてくれるところです(使用の初回は結構な分量をダウンロードするので、多少時間がかかります。調子にのっていろいろなマイコンやフレームワークを試していると大量のファイルがストレージに溜まります。旧パソコンではかなりな分量っす。)
これにはProject Wizardというものを使います。こんな感じ。
過去にも以下記事で同じようなことをしています。
鳥なき里のマイコン屋(76) VS CodeでNucleo、PlatformIO超便利!
上記ではターゲットボードがST社のNucleo F401RE、フレームワークはArm Mbed OSでした。今回は、以下でやってみたいと思います。
-
- ターゲットボード、Nucleo F072RB
- フレームワーク、Arduino
前回 ArduinoIDE 2.0を使ってみたとおり、Arduinoには専用の開発環境があるわけですが、PlatformIOにはまたそれなりのメリットがあります。
とりあえずWizardを実行後のVScodeの様子が以下に。ArduinoIDEの場合、.inoという拡張子のソース(CPPのソースに一枚レイヤをかぶせてメンドイところを隠蔽してある感じのもの)を使うのですが、PlatformIOでArduinoフレームワークを指定した場合、ソースファイルの拡張子は .cpp です。といっても本物のmain()関数は裏に隠してあって、setup()関数と loop()関数を書くスタイルはArduinoIDEと同じです。以下の見掛けの違いは、本家 ArduinoIDEでは Arduino.hヘッダを呼び出さなくてもOKなのに対して、PlatformIOでは#include必要というところでしょうか。
前回、ArduinoIDE 2.0で使ったソースをコピペしたものが以下に。ターゲットボードもマイコンも、そして開発ツールも違うのですが、#include文以外はまったく同じソースでLチカ可能です。さすがArduino。
ビルドしてFlash書き込み、そして実行
VScode上にPlatformIOをインストールしてある場合、PlatformIO HOMEというものが自動起動すると、VScodeの最下行にビルド等のためのアイコンが配置されます(赤線の部分。)
お家アイコンをクリックすると管理ツールやWizardなどを開けるPlatformIO HOMEが開きます。チェック・アイコンでビルド、右矢印アイコンでFlash書き込み(アップロード)です。
ビルドするとコンパイル、リンクが実施され、エラーがあれば表示されます。
今回は成功しているので、右矢印アイコンでアップロードします。Nucleo F072RBボードの場合、USBケーブルで接続するだけで自動認識されます。初回などボードと環境に適したアップロード用のツールが不在であればこれまた自動ダウンロードしてインストールされます。以下みるとボードとの通信には、Nucleo内蔵のST-Linkを使い、自動ダウンロードしたOpenOCDを使っているのがわかります。
Nucleo F072RBへの書き込みの最後のところが以下に。書き込み成功しております。
こうしているとNucleoボードは、ほぼほぼArduinoのつもりで使えますな。あたりまえか。