Arduino IDE 2.0 + ESP32-C3 で困ったこと。

★祝200投稿★

スイッチサイエンス: M5Stamp C3U Mate (Rev.3)

これは問題なかったが、

秋月電子: Wi-Fiモジュール ESP32-C3-WROOM-02-N4 (Rev.4)

これは非同期のWiFiScanが失敗してしまう。同期では成功するのでコードを確認してみると同期と非同期で違うタイムアウト値になっていて同期と同じタイムアウト値で実行した場合は成功する。非同期のタイムアウト値が小さすぎるだけの問題のようだが、そもそも同期と非同期で違うタイムアウト値にしている意味がわからない。単なるコーディングミスなのかな? とりあえず次のようにして解決。

その他、

・SoftwareSerialは動作しない。(処理能力不足?)
・IDEからSPIFFS用のデータを書き込む機能がない。(現在対応中?)
・IDEからネットワーク書き込みすると”書き込み中...”のままになる。IDE再起動が必要。(バグ?)

のような問題がある。1番目はHWシリアルが2ポート使えるのでなんとかなると思うが困ってしまうのが2番目と3番目だ。ESP32シリーズ共通の問題だと思うが対応されるまでのつなぎとしてSPIFFSデータの書き込みとArduinoOTA用のバッチファイルを作ってみた。但し、下記ボードの特定バージョンに依存しているので他のバージョンやボードではツールパス等の修正が必要になる。

【M5Stack by M5Stack official version 2.0.6】
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json

処理手順としては作業ディレクトリ内から.inoファイルを検索した後、Arduino-IDEのコンパイル出力先ディレクトリ内(%TEMP%/arduino/sketches/xxxxx)からスケッチのコンパイル結果が格納されているディレクトリを特定し必要なデータを取り出して処理する。

※コンパイル成功後にスケッチフォルダを作業ディレクトリとしてバッチファイルを実行する必要があることに注意しよう。

【spiffs.bat】

spiffs ポート名(COMxx)

スケッチ・フォルダのDATAサブフォルダ内のファイルをまとめて書き込む。

【otaupd.bat】

otaupd IPアドレス(192.168.XX.XX)

コンパイル結果をネットワーク経由(ArduinoOTA)で書き込む。