ESP32 OTA的第二種模式是OTAWebUpload,一樣是ArduinoIDE內的範例,方式是將ESP32變成一台Webserver,透過ESP32的網頁上傳ArduinoIDE編譯過得bin(binary)檔
我的ESP32實做書籍:我出書了 ESP32 物聯網專題
博客來網址:https://www.books.com.tw/products/0010901195
實作說明
ESP32 OTA的第二種模式是OTAWebUpload,一樣是ArduinoIDE內的範例,方式是將ESP32變成一台Webserver,透過ESP32的網頁上傳ArduinoIDE編譯過得bin(binary)檔,這方式雖然貌似較BasicOTA把功能直接做在ArduinoIDE上麻煩,但是較為穩定,根據之前的經驗在ArduinoIDE上的WiFi虛擬Port不一定能正常使用,而走Http模式的Web為TCP/IP模式,相對非常穩定,兩者相比,如果需要穩定性高的還是採用OTAWebUpload吧。
第一次燒錄OTAWebUpload程式碼
OTAWebUpload一樣是ArduinoIDE內建的範例,在檔案/範例/ArduinOTA/OTAWebUpload可以找到

開啟之後,首先要修改的是最前面第8-9行的WiFi SSID及密碼,至於host則改不改無所謂(mDNS用)。

程式上傳完成後,就可以看到取得的IP

用瀏覽器開啟上面這個IP就可以看到ESP32所模擬的網站登入畫面

由於這個是用來更新程式碼的,所以當然要有帳密了,不然隨便有人跑來登入,隨便上傳程式碼,你的ESP32就被綁架了,哈哈,至於帳密是多少?很愚蠢的,帳密已經寫在html原始檔,都是admin。

要修改這個帳密也很簡單,Arduino原始檔中的第17-97行都是網頁的原始檔,帳密可以在第47行看到,不過改這個實際上沒什麼意思,因為只要會檢視原始檔的都知道怎麼找帳密。

完成帳號密碼登入ESP32網站後,就可以準備上傳編譯的bin檔。

上傳bin檔
接下來我們要準備下一個要上傳到EPS32上的程式bin檔,bin就是將原始碼編譯後的binary二進位檔,由於我們使用Arduino時編譯上傳的過程我們是不太關心的,所以可能大部分的使用者都不知道原始檔有經過編譯成bin。
當我們從原來的OTAWebUpload範例修改成下一版的程式後,例如筆者在此加入LED閃耀的功能,修改的程式部份如下,如上一節所說明避免過長的delay影響程式上傳,建議改用最後更新的方式。

原始碼修改完畢後,要如何取得bin檔呢?可以直接使用功能表的草稿碼/匯出已編譯的二進位檔

此時ArduinoIDE會要求將檔案存檔,且會將bin檔案匯出到原始檔的資料夾中。如下圖的「ota.ino.esp32.bin」

接下來我們把bin檔透過上面ESP32的網站進行上傳

上傳完畢後,ESP32會自己重新開機,不過網頁沒有任何更新完畢的提示訊息。不過假設測試時你有接著序列視窗的話,是可以看到更新訊息的。

一樣的記得每一個版本的OTA程式都必須保留原本OTA的程式碼,才能在下一次更新時保有OTA功能。