【ESP32專欄】ESP32 OTA無線更新系列——Basic 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

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了

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

尤濬哲

Author: 尤濬哲

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

Share This Post On

發表

跳至工具列