我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址: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吧。


1. 第一次燒錄OTAWebUpload程式碼

OTAWebUpload一樣是ArduinoIDE內建的範例,在檔案/範例/ArduinOTA/OTAWebUpload可以找到

image

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

image

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

image

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

image

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

image

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

image

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

image


2. 上傳bin檔

接下來我們要準備下一個要上傳到EPS32上的程式bin檔,bin就是將原始碼編譯後的binary二進位檔,由於我們使用Arduino時編譯上傳的過程我們是不太關心的,所以可能大部分的使用者都不知道原始檔有經過編譯成bin。

當我們從原來的OTAWebUpload範例修改成下一版的程式後,例如筆者在此加入LED閃耀的功能,修改的程式部份如下,如上一節所說明避免過長的delay影響程式上傳,建議改用最後更新的方式。

image

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

image

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

image

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

image

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

image

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

 

    文章標籤

    esp32 arduino ota overtheair

    全站熱搜

    夜市 小霸王 發表在 痞客邦 留言(1) 人氣()