作者:尤濬哲
ESP32 OTA的第二種模式是OTA Web Upload,一樣是ArduinoIDE內的範例,方式是將ESP32變成一台Webserver,透過ESP32的網頁上傳ArduinoIDE編譯過得bin(binary)檔,這方式雖然貌似較BasicOTA把功能直接做在ArduinoIDE上麻煩,但是較為穩定,根據之前的經驗在ArduinoIDE上的WiFi虛擬Port不一定能正常使用,而走Http模式的Web為TCP/IP模式,相對非常穩定,兩者相比,如果需要穩定性高的還是採用OTA Web Upload吧。
第一次燒錄OTA Web Upload程式碼
OTA Web Upload一樣是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功能。
(作者為本刊共筆作者,原文連結,其專欄文章同步發表於作者部落格;責任編輯:謝涵如)
- 舊瓶裝新酒還是新瓶裝舊酒?Jetson Orin Super效能實測 - 2025/03/12
- 低成本空氣品質感測器 – 夏普 GP2Y10開箱實驗 - 2023/03/16
- 【ESP32專欄】ESP32 MQTT與深度睡眠 - 2022/06/20
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!