ESP32-S3 のチビ開発ボードを PlatformIO IDE で開発する際のメモ

最終更新日

ESP32-S3 はそれ自体が USB ホスト機能を持ち、USB シリアル変換 IC を省略することで開発ボードの小型化ができるようになりました。そのせいなのかそれともまだ新しいチップなので対応が不十分なのかわかりませんが、開発時にちょっとまごまごすることがありました。これは筆者が WaveShare ESP32-S3-Zero を PlatformIO IDE for VSCode で開発した時に対応が必要だった部分のメモです。

platformio.ini の記述

[env:esp32-s3-devkitc-1]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
board_upload.flash_size = 4MB
board_build.partitions = huge_app.csv
build_flags = 
	-DARDUINO_USB_CDC_ON_BOOT=1
	-DBOARD_HAS_PSRAM
board_build.arduino.memory_type = dio_opi
monitor_speed = 115200
board_build.filesystem = littlefs

プロジェクト作成時の Board 選択は「Espressif ESP32-S3-DevKitC-1-N8 (8 MB QD, No PSRAM)」とします。M-1 を選んでも違いはないと思います。つか、Wemos とか Lolin とかあるのに何故 Waveshare が無いんや…
デフォルトではフラッシュサイズが 8MB になっているようなので明示的に 4M を指定します。これを忘れてファームウェアをアップロードするとボードが再起動ループに入ってしまいます(経験者)。
パーティションスキームはお好みで。
USB シリアル変換 IC が省略されているボードでは build_flags-DARDUINO_USB_CDC_ON_BOOT=1 を指定しないと Serial.Print() 等のシリアルモニタ出力がされません。
デフォルトで PSRAM は無効になっています。せっかく搭載されているので有効化しておきます。memory_type はこのボードでは記述しなくてもよいのですが、4M 以上の PSRAM を搭載している場合は、 qio_opi を指定しないと PSRAM が認識されません。
ファイルシステムを使う場合は SPIFFS が非推奨らしいので LittleFS を使います。LittleFS はディレクトリ構造が使えるのでむしろ積極的に選びます。これを記述しておくと、Project Tasks の Build Filesystem Image で勝手に LittleFS イメージを作ってくれます。

Windows 環境で自動的にアップロードモードにならない場合

2024年3月現在、Windows 版 PlatformIO では S3-Zero 等にファームウェアをアップロードする際、自動ではボードがアップロードモードにならず、その都度 B (Boot) ボタンと R (Reset) ボタンの同時押しでモードを切り替える必要があります。これがなかなか煩わしいです。この現象は Windows 環境のみで発生し、esptool.py をアップデートすることで解決します。2024年3月現在、PlatformIO 同梱の esptool.py はバージョン 4.5.1 で、最新は 4.7.0 です。

GitHub の Release から最新版のソースコードをダウンロードします。展開したら中身を %homepath%\.platformio\packages\tool-esptoolpy\ の中に上書きコピーします。
そのままだと実行時に「モジュール intelhex がないよ」と怒られるのでインストールします。PowerSell を開き、次のコマンドを順に実行します。

cd
.\.platformio\penv\Scripts\activate
pip install intelhex

I2C とか SPI とかのピンアサインが自由

ESP32-WROOM とか WROVER では配置が決められていましたが、S3 では一部のピンを除いてプログラム側で自由に指定できるようです。最初ちょっとまごまごしました。SPI を2系統使いたい場合の指定の仕方とかまだ分かってませんけど。

リセットするとシリアルモニタが切断される

これはもうどうしようもありません。個人的には「開発時は USB シリアル変換 IC 付きのもの、運用時はチビボード」と使い分けるのが吉かと思います。
USB シリアル変換 IC 付きの例→ [ 1 ] [ 2 ]


コメント

Gravatar 対応