我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


今天來介紹ESP32 OTA遠端更新

OTA為OverTheAir的縮寫,意思就是空中更新程式碼,個人認為這個IoT產業非常重要的一環,畢竟當你的裝置從實驗室走到實際場域後,一定會遇到很多問題,如果場域分散在很多不同的地方,光程式改版就會讓你疲於奔波,帶著USB線到處更新你的ESP32,想想就很累,如果今天你的裝置支援OTA,那你在家裡就可以直接更新客戶端裝置的程式,是不是很方便。

OTA並非是ESP32的專屬功能,很多Arduino系列也都支援,以目前筆者所觀察到的OTA目前來說主要分成以下四種模式

1. Basic OTA:在Arduino IDE中形成一個虛擬的Port,選擇該Port即可上傳新的程式碼

2. OTAWebUpload:ESP32會變成一台Webserver,透過ESP32的網頁上傳ArduinoIDE編譯過得bin(binary)檔

3. HTTP Update:將編譯好的bin檔放在一個公開的網站上,讓ESP32主動下載

4. Stream Update:透過MQTT將編譯好的bin檔直接上傳到ESP32中

除了4之外,目前我都實做過,本篇先從最簡單的1. Basic OTA開始吧。


Basic OTA是內建的功能,只要檔案/範例ArduinoOTA/BasicOTA就可以找到,範例程式這裡就不列出。

image

上傳時選擇Partition Scheme為Default 4MB wiht spiffs(1.2MM APP/1.5M SPIFFS)

image

修改好程式最上面的WiFi設定後,上傳即可

image

BasicOTA由於筆者很少用,程式內容我就不一一說明

程式上傳後,如果網路有連上,理論上就可以在ArduinoIDE中找到裝置

image

找到的畫面會向下面這樣,在原本序列埠下方會出現一個ESP32虛擬的Port,後方則為ESP32的IP。

image

不過經過反覆測試,需要注意以下狀況

1. 電腦與ESP32必須使用同一個區域網路,切必須關閉防火牆

2. 無法使用手機AP分享網路:我將電腦及ESP32都選用手機分享的網路,但是無論如何測試就是找不到.....

3. 電腦可能需要重新開機

4. 結論就是這種模式似乎不是很穩定(也可能是我家網路的問題吧....)

不過網路程式碼更新,只要選擇上面的虛擬Port不用再插USB就可以更新了。

image

這裡再附註兩點說明一下

1. delay問題:當使用OTA時,太長的delay就會導致送出需求時沒被ESP32收到,因此建議程式有delay的地方修改為檢測時間,與之前介紹MQTT時類似,其方式如下:

image

2. 為了能持續使用OTA功能,新一版的程式碼也必須包含OTA功能,否則這版燒上去,就沒有OTA了

 

 

arrow
arrow
    全站熱搜

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