ESP32系ではOTA(Over-The-Air)アップデートが出来るらしい。同一ネットワークのWiFiであれば、WiFi経由でソフトの書き換えができるらしいのである。しかし、一度も試したことはないし、具体的にどうすればよいか分からないので、Google Geminiに訊いてみる。
すると、まず以下のようなコードを入れる必要がある、とのこと。
#include <WiFi.h>
#include <ArduinoOTA.h>
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
// --- OTA設定の開始 ---
// ポート番号(デフォルト: 3232)
// ArduinoOTA.setPort(3232);
// ホスト名の設定(IDEのポート一覧に表示される名前)
ArduinoOTA.setHostname("my-esp32s3-device");
// パスワード設定(任意)
// ArduinoOTA.setPassword("admin");
ArduinoOTA.onStart([]() {
Serial.println("Start updating");
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
});
ArduinoOTA.begin();
// --- OTA設定の終了 ---
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
ArduinoOTA.handle(); // これを忘れるとOTAできません
// ここに自分のメイン処理を書く
}
次にPCにPythonをインストールする必要がある。
Arduino IDEがWiFiで転送する際にはPythonコードで動かすため。
Pythonインストールの際には下部にある 「Add Python to PATH」(または Add python.exe to PATH)というチェックボックスに必ずチェックを入れる必要がある、とのこと。

さっそく、これをESP32S3のWebラジオに組み込んで、OTAで書き換えに対応させようと企てて試してみた。
すると、Webラジオの再生をしようとしたあたりで、クラッシュしてリブートを繰り返してしまう。
あれれ?
Google Geminiにクラッシュしたときのシリアルモニタのデータを送って見解を聞いたら、
「ネットワークの負荷が急増し、オーディオ用のタスクとOTAがリソースを奪い合ってクラッシュしている可能性があります。 」
こりゃいかん、もとに戻そうと修正前のコードを書いて再起動させても、なぜかクラッシュしてリブートを繰り返してしまう。
おいおい、壊れたのか?
WiFi設定を保存する領域に変なデータが書き込まれた?
かなり前のVer1.0のプログラムを書いても元に戻らない(涙)
ボードライブラリを最新版にしたり、昔のコードを書き直してみる等をしているうちに、何とか復帰して動くようになった。
めっちゃ焦った。
なんか、これ以上試すのは怖くなった。
ESP32S3のWebラジオでは色々詰め込みすぎたせいか?
簡単なプログラムで動かす時が来たら、改めて再チャレンジするかもしれない。
「詰め込みすぎニャ」
