【ESP32專欄】ESP32 OTA無線更新系列 — OTA Web Upload

作者:尤濬哲

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功能。

(作者為本刊共筆作者,原文連結,其專欄文章同步發表於作者部落格;責任編輯:謝涵如)

尤濬哲

Author: 尤濬哲

身兼助理教授/專欄作家/知名部落客,以及點點滴滴科技研發總監等身份,專長包括人工智慧、多媒體互動(Unity)、智慧互動裝置(APP、Arduino)、虛擬實境與擴增實境互動、IoT 實做開發。 學歷:中山大學資訊管理研究所 博士

Share This Post On

發表

跳至工具列