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
Basic OTA是內建的功能,只要檔案/范例ArduinoOTA/BasicOTA就可以找到,范例程序這里就不列出。
上傳時選擇Partition Scheme為Default 4MB wiht spiffs(1.2MM APP/1.5M SPIFFS)
修改好程序最上面的WiFi設定后,上傳即可。
BasicOTA由于筆者很少用,程序內容我就不一一說明。
程序上傳后,如果網絡有連上,理論上就可以在ArduinoIDE中找到裝置。
找到的畫面會向下面這樣,在原本串行端口下方會出現一個ESP32虛擬的Port,后方則為ESP32的IP。
注意事項
經過反復測試,需要注意以下狀況:
1.計算機與ESP32必須使用同一個局域網絡,切必須關閉防火墻
2.無法使用手機AP分享網絡:我將計算機及ESP32都選用手機分享的網絡,但是無論如何測試就是找不到…..
3.計算機可能需要重新啟動
4.結論就是這種模式似乎不是很穩定(也可能是我家網絡的問題吧….)
不過網絡程序代碼更新,只要選擇上面的虛擬Port不用再插USB就可以更新了。
這里再附注兩點說明一下
1.delay問題:當使用OTA時,太長的delay就會導致送出需求時沒被ESP32收到,因此建議程序有delay的地方修改為檢測時間,與之前介紹MQTT時類似,其方式如下:
2.為了能持續使用OTA功能,新一版的程序代碼也必須包含OTA功能,否則這版燒上去,就沒有OTA了
審核編輯:湯梓紅
-
OTA
+關注
關注
7文章
605瀏覽量
36197 -
BASIC
+關注
關注
0文章
41瀏覽量
12761 -
ESP32
+關注
關注
20文章
1006瀏覽量
18832
原文標題:ESP32 OTA無線更新系列——Basic OTA
文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
如何從ESP32中刪除OTA?
請問esp32 ota升級如何獲取更新進度?
樂鑫ESP32空中下載(OTA)解決方案實操
OTA升級失敗的原因?
求助,esp32 ota升級如何獲取更新進度?
在ESP32中使用esp_ota_write()來寫flash出現5379是啥意思?
MQTT和HTTP OTA同時使用就不能OTA了怎么解決?
esp32 OTA升級確定運行分區時重啟的原因?
如何使用GSM網絡的ESP32 OTA更新?
通過OTA從Google Drive下載文件來更新ESP32,OTA更新時退出是為什么?
如何使用Arduino IDE對ESP32進行無線編程

支持 OTA 更新的MCU很多 為何 ESP32這么受歡迎?

評論