ESP32FarmwearUploader
- Digital0 JPY

ESP32 OTA およびシリアル アップローダー このプロジェクトは、OTA (Over-The-Air) およびシリアル アップロード方式で ESP32 ファームウェアを更新するための GUI ツールを提供します。 このツールは利便性と使いやすさを考慮して設計されており、ユーザーはファームウェア ファイルを選択し、デバイスの IP アドレスを指定し、手動のコマンド ライン操作なしでアップロードを実行できます。 ※本アプリは同人ソフトウェアの為ユーザーに不利益があった場合でも保証は致しかねます。予めご了承ください。 ※本ソフトウェアは全てChatGPTによってコーディングされています。 動作は確認の上公開していますが不具合があった場合は使用を中止し報告ください。 ※動作確認はM5stamps3でOTA、USBシリアルの書き込みをテストしました。
使い方
ESP32FarmwearUploader.exeを起動してください。 OTAアップロード 1.OTA UpdateのBrowseからfirmwere.binを選択しESP32のIPアドレスを入力 例 192.168.0.4 2.OTA Updateを押すとアップロードされます。 3.アクセス許可が出たら許可してください。 シリアルアップロード 1.対応するUSBドライバをインストール 例 CH340 CP201x 2.通信用USBケーブルでESP32とPCを接続 3.デバイスマネージャのCOMポートでESP32のCOMポート番号を調べる 4.SerialUpdateのBrowseからそれぞれbootloader.bin、patitions.bin,firmwere.binを選択 5.3で調べたCOMポート番号を一覧から選択。表示されていなければRefreshを押す 6.select Baud Rateは基本そのままで問題ない。 7.Serial Updateを押すとアップロードされます。 その他 ESP32FarmwearUploader.exe単体では使えません。 espota.py、esptool.exeを含めてください。
ファームウェア配布側の使い方
以下を参考にESP32のファームウエアをOTAアップロードに対応させてください。 OTAアップロードの場合のファームウェア配布 VScode、PlatformIOでビルドした場合ログにfirmwere.binのパスが表示されます。 firmwere.binをZipなどでバージョンが分かる名前にして配布してください。 firmwere.binは名前を変更しないでください。 Serialアップロードの場合のファームウェア配布 VScode、PlatformIOでビルドした場合ログにfirmwere.binのパスが表示されます。 同じフォルダ内にbootloader.bin、patitions.binがあると思うのでbootloader.bin、patitions.bin,firmwere.bin の3つをセットにしZipなどでバージョンが分かる名前にして配布してください。 -------------------------------------------------------------------------------- #include <WiFi.h> #include <WebServer.h> #include <ArduinoOTA.h> // WiFi設定 const char* ssid = "Your_SSID"; // WiFi SSIDを設定してください const char* password = "Your_PASSWORD"; // WiFiパスワードを設定してください void setupOTA() { // OTAの初期化 ArduinoOTA.onStart([]() { String type; if (ArduinoOTA.getCommand() == U_FLASH) { type = "sketch"; } else { // U_SPIFFS type = "filesystem"; } // OTAの開始時にシリアル出力 Serial.println("Start updating " + type); }); 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); if (error == OTA_AUTH_ERROR) { Serial.println("Auth Failed"); } else if (error == OTA_BEGIN_ERROR) { Serial.println("Begin Failed"); } else if (error == OTA_CONNECT_ERROR) { Serial.println("Connect Failed"); } else if (error == OTA_RECEIVE_ERROR) { Serial.println("Receive Failed"); } else if (error == OTA_END_ERROR) { Serial.println("End Failed"); } }); ArduinoOTA.begin(); Serial.println("OTA ready"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void setup() { // シリアル通信の初期化 Serial.begin(115200); // WiFi接続の初期化 WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print("Connecting to WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" Connected!"); // OTAの初期化 setupOTA(); } void loop() { // OTAのハンドリング ArduinoOTA.handle(); // ここに他のコードを追加できます delay(1000); } --------------------------------------------------------------
ソースコード公開
GitHubで公開しています。 https://github.com/Kirisame-Nanoha/ESP32-OTA-Serial-Uploader/tree/main
アップデート履歴
公開したけどpythonがインストールされてない環境で動作しない報告頂いたので一時非公開 espota.pyではなくespota.exeをビルドこちらを参照するようにしてOTAアップロードは出来るようになりました。 USBシリアルのesptool.exeはどうやら破損していた見たいです 正常な奴と差し替えてます pythonのインストールされていないPCでOTAアップロードとUSBシリアルアップロードできるのを確認しました