Clion x PlatformIOでESP32(Arduino)開発

JetBrains製品の使いやすさに感心している中、ESP32(Arduino)のC++開発をClionで行うことに成功しました。これにより、「VS Code x PlatfromIO」から「Clion x PlatformIO」へ開発環境を変更できました。情報が少なかったため苦労しましたが、ChatGPTやGoogle検索を駆使して解決できました。この記事では、Clion x PlatformIOでのESP32(Arduino)開発環境の整え方を紹介します。

事前準備: PlatformIOプラグインのインストール

VS Codeの拡張機能でPlatformIOをインストールしてましたが、VS Codeと密接してるためClionからは使えないようです。改めてPlatformIOを単体でインストールしました。

shell
$ wget -O get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
$ python3 get-platformio.py

その後シェルにパスを通します。例: ~/.zshrc

export PATH="$PATH:/Users/xxxxx/.platformio/penv/bin"

Clionのインストール

JetBrainsの公式ウェブサイトからClionをダウンロードし、インストールします。有料ですが、仕事になるようであればVS Codeよりかなりオススメです。phpStorm初め、まとめ買いできるプランもあるのでそちらを選ぶと割安でした。(4000円/月くらい)

ClionでPlatformIOを使えるようにする

  • Clionを開きます。
  • 「File」メニューから「Settings」を選択します。
  • 「Plugins」セクションを開き、「Marketplace」タブで「PlatformIO」を検索します。
  • 「PlatformIO for CLion」プラグインを見つけ、インストールします。

新しいPlatformIOプロジェクトの作成

すでにVScode x PlatformIOでのプロジェクトがある場合にも、まずはClionで新しいPlatformIOプロジェクトの作成をすることをおすすめします。

  • 「File」メニューから「New Project」を選択します。
  • 「PlatformIO」セクションからESP32のプロジェクトを選択します。
  • 必要な設定を行い、「Create」をクリックしてプロジェクトを作成します。

このことにより、ESP32の標準プログラムががローカル環境へインストールされ、IDE上で標準クラスの定義へのジャンプが機能します。

ESP32開発ボードの設定

後は通常通り platformio.ini でビルド情報を書き換えて開発してください。以下は、私の開発環境の一例です。

ini
[platformio]
;src_dir = lib/Adafruit_Seesaw/examples/soilsensor_example
;src_dir = lib/Adafruit_Seesaw/examples/with_display
;src_dir = lib/AE_TSL2572/examples/demo
;src_dir = lib/mhz19_uart/examples/demo
;src_dir = lib/DHT22/examples/demo
;src_dir = lib/Relay/examples/relay_test
;src_dir = lib/Relay/examples/solenoid_valve_demo
;src_dir = lib/Relay/examples/solenoid_valve_online
;src_dir = lib/TGS2450/examples/demo
;src_dir = lib/TGS2450/examples/arduino_uno
;src_dir = lib/TGS2450/examples/uno_debugger
;src_dir = lib/phMeter/examples/demo
;src_dir = lib/phMeter/examples/phMonitor
;src_dir = lib/DS18B20/examples/demo
;src_dir = lib/WS2812B/examples/simple
;src_dir = lib/WS2812B/examples/rainbow
;src_dir = lib/WS2812B/examples/demo
;src_dir = lib/SoilMoistureSensor/examples/demo
;src_dir = lib/ADS1115/examples/demo
;src_dir = lib/ML8511/examples/demo
src_dir = lib/RFID_READER/examples/test_r200

; プログラムのビルドアップロード -> $ pio run -e esp32 -t upload && pio device monitor
; クリーンビルド -> $ pio run --target clean

[env:esp32]
platform = https://github.com/platformio/platform-espressif32.git
board = esp32dev
framework = arduino
monitor_speed = 115200
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32#2.0.2
build_flags =
 '-DWIFI_SSID="hoge"'
 '-DWIFI_PASSWORD="fuga"'
 '-DDEBUG_MODE=1'

[env:uno]
platform = atmelavr
board = uno
framework = arduino
monitor_speed = 115200

コーディング

通常はsrcフォルダ内にあるmain.cppでプログラムを記述しますが、先のビルド設定のように lib/xxxxx/examples/test 内のinoファイルを単体テストできたりします。C++ベースのライブラリを開発したい場合に便利です。

ビルドとアップロード

まだ設定を詰められず、Clionのツールバーから「Build」や「Upload」ができてません。Clion側にもpioのパスを設定する必要があるのでしょう。デバッガーも使えそうなので便利そうではありますが。

とりあえず、プロジェクトディレクトリ下でターミナルから以下のコマンドを叩いてビルド&アップロードできます。&&以降は、アップロードが成功したらシリアルモニタを開く意味です。

$ pio run -e esp32 -t upload && pio device monitor

現在、ClionはあくまでEditorとして使っており、ビルドはCLIのpioに任せてます。進展あればまた追記します。

クラス名や関数名などの名前解決してくれない、リンクへ飛ばない

ClionでPlatformIOを使う場合は、まず新しいプロジェクトを作成してデフォルトライブラリをインストールすることを推奨します。それでも問題が解決しない場合は、下図のメニューを実行することでリンクできるかもしれません。

また開発を進める上で、ファイル名をリファクタリングしたり、外部からフォルダを追加した後も、ファイルが見つからないエラーが赤い波線で示されることがあります。そんな時はキャッシュのクリアを行うと直る可能性があります。以下手順です:

  1. 「File」メニューから「Invalidate Caches / Restart」を選択
  2. 「Clear file system cache and Local History」にチェックを入れて「Invalidate and Restart」を実行

まとめ

ClionとJetBrains製品のIDEは非常に強力で便利です。VS Codeよりもプログラミング作業に集中しやすいと感じます。

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

人気のArduino互換機
Arduinoで人気の周辺パーツ
あると便利な道具
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容です。ほかのArduino書籍と比べて図や説明がとてもていねいで読みやすいです。Arduinoで一通りのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書を既に読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

Seeed Studio関連製品
ATmega32U4搭載ボード