PlatformIO IDE for VSCodeの設定

PlatformIO IDEでマイコンにプログラムを書き込む

はじめに

Visual Studio Code (VSCode)は、Microsoft社が提供する軽量ながら強力なソース コード エディターで、デスクトップ上で実行され、Windows、macOS、および Linux で使用できます。PlatformIO IDEは、VSCodeの拡張機能で、ビルドが早く、ライブラリやボードのバージョンがプロジェクト毎に管理されているのが特長です。

用意するもの

  • Basic Kit 2
  • パソコン (Windows、macOS、または Linux)

事前準備

Pythonのインストール

PlatformIO IDEを動かすには、Pythonが必要です。こちらを参照して、Pythonインストールして下さい。

PlatformIO IDEのインストール

  1. PlatformIO IDEは、VSCodeの拡張機能なので、まず、VSCodeをインストールして下さい。
  2. 拡張機能(画面左のバー)をクリックし、検索窓に以下を入力して、拡張機能をインストールします。
    • Japanese Language Pack for Visual Studio Code
    • platformio ide
    • Serial Monitor
    • teleplot

STM32CubeProg とArduino IDEのインストール

STM32MCUにプログラムを書き込むために、以下のインストールが必要になります。

STM32MCUのBoardファイルの準備

STM32MCUは、NUCLEO-L452REとピンアサインが異なるため、STM32MCUのBoardファイル(③、④)が必要になります。PlatformIOで NUCLEO-L452REのプロジェクトを立ち上げると①と②がPCにダウンロードされます。次に③と④をGitHubからダウンロードしてpcの保存すれば完了です。

Nucleo L452REのプロジェクトの立ち上げ

  1. VSCodeを立ち上げ、ファイル新しいウィンドウを開きます。

  2. PlatformIO(画面左のバー)をクリックし、PLATFORMIO QUICK ACCESS(画面左)を表示させます。

  3. PIO Home/Openをクリックします。

  4. New Projectをクリックすると、Project Wizardが表示されます。NameBoadFrameworkを以下の通り入力して、Finishをクリックします。新しいBoardを選択した時、プログラミングに必要なファイルのダウンロードするために数分かかります。

    • Name:Testと記入
    • Board:ST Nucleo L452REを選択
    • Framework:Arduino を選択
  5. C:\Users\ユーザ名\ .platformio の下に、①と②のふたつのフォルダが出来ていることを確認して下さい。

③Leafony_AP03と④Leafony_AP03.jsonのダウンロードと保存

  1. 以下からダウンロードし、所定の場所に保存して下さい。

    • https://github.com/Leafony/platformio-LEAFONY_AP03
  2. Project WizardのBoardの検索窓にLeafony_AP03が表示されることを確認して下さい。

クイックスタート

「Hello Wold」の事例で、platformIO IDEの使い方を紹介します。

  1. VSCodeを立ち上げ、ファイル新しいウィンドウを開きます。

  2. PlatformIO(画面左のバー)をクリックし、PLATFORMIO QUICK ACCESS(画面左)を表示させます。

  3. PIO Home/Openをクリックします。

  4. New Projectをクリックすると、Project Wizardが表示されます。NameBoadFrameworkを以下の通り入力して、Finishをクリックします。新しいBoardを選択した時、プログラミングに必要なファイルのダウンロードするために数分かかります。

    • Name:STM32_Hello_World_Pjtと記入
    • Board:LEAFONY_AP03を選択
    • Framework:Arduino を選択

  5. platformio.ini (画面左)を開き、 Projectで定義したBoardとFrameworkが、正しく定義されていることを確認します。

[env:LEAFONY_AP03]
platform = ststm32
board = LEAFONY_AP03
framework = arduino
  1. STM32 MCUは、COMポートの番号とプログラムファイルの実行場所をplatformio.iniに記載して下さい。COMポートの番号は、シリアルモニターから確認出来ます。


Windowsの場合

;upload_protocol for Windows
upload_port = COM<番号>
upload_command = %%userprofile%%\AppData\Local\Arduino15\packages\STM32\tools\STM32Tools\1.4.0\tools\win\stm32CubeProg.bat 1 $SOURCE $UPLOAD_PORT -s

macOSの場合

;upload_protocol for macOS
upload_port = cu.usbserial-<シリアル番号>
upload_command = /Users/<ユーザ名>/Library/Arduino15/packages/STM32/tools/STM32Tools/1.4.0/tools/macosx/stm32CubeProg.sh 1 $SOURCE $UPLOAD_PORT -s
  1. また、 シリアル通信のボーレートをmonitor_speed =で定義し、platformio.iniに記載して下さい。
monitor_speed = 115200
  1. src/main.cpp(画面左)を開き、以下のコードを貼り付けて下さい。
    PlatformIO IDEのコードは、Arduino IDEのスケッチの先頭に#include <Arduino.h>を加えます。
#include <Arduino.h>

void setup() {
  Serial.begin(115200);
  delay(10);
}

void loop(){
  Serial.println("Hello World");
  delay(1000);
}
  1. PlatformIO ツールバー(画面下のバー)のProject Environment Switcherボタンを押すと、アクティブなプロジェクが画面上側に全て表示されます。実行するプロジェクトを正しく選択して、Buildボタンを押して下さい。


  2. こちら を参考に、LeafonyをPCに接続し、STM32 MCUリーフのプログラムスイッチをプログラム側(LED点灯)にし下さい。

  3. Uploadボタンを押すと、プログラムがMCUに書き込まれます。SUCCESS TooK XX.XX secondsと表示が出ても、以下の表示が出ていない時は、正しく書き込まれていないので、注意をして下さい。


  4. 正しく書き込まれたら、プログラムスイッチを実行側(LED消灯)にして下さい。

  5. MCUのリセットボタンを押して、プログラムを実行させます。

  6. シリアルモニターボタンを押して起動させ、Hello Wolrdを表示が出来れば完成です。

CPUの周波数を80MHz(デフォルト)から16MHzに設定変更

CPUの周波数は、80MHz(デフォルト)に設定されています。省電力を実現するためにCPUの周波数を下げることは有効な手段なので、CPUの周波数を16MHzに設定出来るようにしました。設定方法を以下に記します。

  1. platformio.iniに以下を追記して下さい。
; Enable function to set CPU frequency to 16 MHz in Leafony_tools.cpp
build_flags = -D CPUCLOCK_LOW
  1. leafony_tools.cppのファイルを以下からダウンロードし、srcに保存して下さい。

    • https://github.com/Leafony/platformio-LEAFONY_AP03
  2. 以下のソースコードを実行して、CPUの周波数が16MHzに設定されていることをシリアルモニターで確認して下さい。


ライブラリ

  1. インストールの仕方
    ライブラリは、platformio.ini の最後の行に、lib_deps =で定義すれば、PCにインストールされます。定義の仕方は、GitHubのURLを直接指定する方法とLibrariesで指定する方法の二通りがあります。

  2. 各リーフのライブラリ一覧は、以下の通りです。

Item lib_deps Tags Description
BLE https://github.com/Leafony/TBGLib Bluetoothライブラリ
4-Sensors adafruit/Adafruit Unified Sensor@^1.1.6 ユニファイドセンサドライバ
adafruit/Adafruit BusIO@^1.14.1 Bus IOライブラリ
https://github.com/ameltech/sme-hts221-library 温湿度センサライブラリ
closedcube/ClosedCube OPT3001@^1.1.2 照度センサライブラリ
adafruit/Adafruit LIS3DH@1.1.2 1.1.2 加速度センサライブラリ
LCD tomozh/ST7032@0.0.0-alpha+sha.501bf64fe6 LCDライブラリ
AVR MCU paulstoffregen/MsTimer2@^1.1 タイマ割り込みライブラリ
RTC&MicroSD adafruit/RTClib@^2.1.1 RTCライブラリ
STM32 MCU stm32duino/STM32duino RTC @1.2.0 1.2.0 STM32RTCライブラリ
stm32duino/STM32duino Low Power@^1.2.2 STM32LowPowerライブラリ
LTE-M https://github.com/Leafony/LteLeafV4 LTE-Mライブラリ

シリアルプロッター 

PlatformIOには、Arduino IDEにあるシリアルプロッターがないため、VSCodeの拡張機能であるTeleplot for VSCodeを導入します。サンプルのソースコードをダウンロードして、試して下さい。

  1. GitHubからソースコードをダウンロードし、パソコンの所定の場所に保存1 します。

  2. プログラムを実行して下さい。

  3. 画面下のteleplotの表示をクリックして、COMポートを指定して、Open を押すとグラフが表示されます

  4. >varName:1234\nという形式のシリアルメッセージは、すべてteleplotに表示されます。詳しくは、こちらを参照して下さい。

 // Plot a sinus
  Serial.print(">sin:");
  Serial.println(sin(i));

  // Plot a cosinus
  Serial.print(">cos:");
  Serial.println(cos(i));

STM32 Beginner Examples

PlatformIO IDEを使った簡単なソースコードを準備しました。GitHubからダウンロードし、パソコンの所定の場所に保存1 してプログラムを試して下さい。

Item Source code
温湿度センサ読み取り STM32_Thermo-Hygrometer_Pjt
照度センサ読み取り STM32_Illuminance_Meter_Pjt
加速度センサ読み取り STM32_Accelerometer_Pjt

Tips

MCUとBoardとの関係

LeafonyのMCUとPlatformIO IDEのBoardとの関係は、以下の様になります。

Type Item Platform Board Upload
AP01 AVR MCU atmelavr Arduino Pro or Pro Mini ATmega328(3.3v,8Mhz) COMポートの自動検出
AP02 ESP32 MCU Espressif 32 Espressif ESP32 Dev Module COMポートの自動検出
AP03 STM32 MCU ststm32 LEAFONY_AP03 COMポートの自動検出が出来ない。

プログラムを記述する時のArduino IDEとの違い

  1. #include <Arduino.h>をプログラムの先頭に記述
    Arduino IDEは、プログラム言語としてはC++を使っており、基本的な型の宣言やよく使うライブラリのヘッダファイルはArduino.hを書かなくても自動的にインクルードされますが、PlatformIO IDEは、Arduino.hがプログラムの先頭に必要に記述する必要があります。

  2. 独自関数は使用する関数の前に定義
    Arduino IDEは、独自関数の定義を使用する関数の後に書いてもビルドがSUCCESSになりますが、PlatformIO IDEは、C++のルールに従って独自関数は使用する関数の前に定義する必要があります。

例えば、以下は、独自関数の設定は、使用する関数の後に書いてあるのでビルドがFAILになります。

void setup() {
  // put your setup code here, to run once:
  func();

}

void func() {
  ;
}

以下は、独自関数の定義は、使用する関数の前に書いてあるのでビルドがSUCSESSになります。

void func() {
  ;
}

void setup() {
  // put your setup code here, to run once:
  func();

}

以下は、プロトタイプ宣言するので、ビルドがSUCSESSになります。

// Prototypes
void func(void);

void setup() {
  // put your setup code here, to run once:
  func();

}

void func() {
  ;
}

プロジェクトフォルダの名前変更や削除

Project Wizarで、New Projectを立ち上げると、フォルダが作成され、デフォルトでは、~/Documents/PlatformIO/Projects に保存されます。 Projectの名前変更やフォルダの削除は、Project Wizarではなく、エクスプローラから直接出来ます。

プロジェクトフォルダの保存場所の設定

プロジェクトフォルダの保存場所の設定は、Project Wizarではなく、ターミナルから行います。

  1. VSCodeを立ち上げ、ファイル新しいウィンドウを開きます。

  2. PlatformIO(画面左のバー)をクリックし、PLATFORMIO QUICK ACCESS(画面左)を表示させます。

  3. PIO Home/Openをクリックします。

  4. 以下のコードを実行します。
     pio settings set projects_dir <設定したい(絶対)パス>

  5. VSCodeを再起動します。

参考

前のページに戻る


  1. Windows 64bitのV2.12.0、V2.6.0、V2.4.0は、動作確認済み。v2.5.0は動作しないので要注意。
    ↩︎

最終更新 February 6, 2023