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を単体でインストールしました。
$ 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 でビルド情報を書き換えて開発してください。以下は、私の開発環境の一例です。
[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を使う場合は、まず新しいプロジェクトを作成してデフォルトライブラリをインストールすることを推奨します。それでも問題が解決しない場合は、下図のメニューを実行することでリンクできるかもしれません。
また開発を進める上で、ファイル名をリファクタリングしたり、外部からフォルダを追加した後も、ファイルが見つからないエラーが赤い波線で示されることがあります。そんな時はキャッシュのクリアを行うと直る可能性があります。以下手順です:
- 「File」メニューから「Invalidate Caches / Restart」を選択
- 「Clear file system cache and Local History」にチェックを入れて「Invalidate and Restart」を実行
まとめ
ClionとJetBrains製品のIDEは非常に強力で便利です。VS Codeよりもプログラミング作業に集中しやすいと感じます。