ESP8266 OTA之瀏覽器更新

ESP8266的瀏覽器更新的過程是這樣的

  1. 用ESP8266先建立一個Web服務器然后提供一個更新界面(ESP8266HTTPUpdateServer)
  2. 通過Arduino將源文件編譯為*.bin的二進制文件
  3. 通過mDNS功能在瀏覽器中訪問ESP8266的服務器頁面(如:http://esp8266.local/update)
  4. 通過Web界面將本地編譯好的*.bin二進制固件文件上傳到ESP8266中
  5. 上傳完成編譯文件后ESP8266將固件寫入Sketch中

先刷入以下代碼

/**
/*
  To upload through terminal you can use: curl -F "image=@firmware.bin" esp8266-webupdate.local/update
*/

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <ESP8266HTTPUpdateServer.h>

const char* host = "esp8266-webupdate";
const char* ssid = "........";
const char* password = "........";

ESP8266WebServer httpServer(80);
ESP8266HTTPUpdateServer httpUpdater;

void setup(void) {

  Serial.begin(115200);
  Serial.println();
  Serial.println("Booting Sketch...");
  WiFi.mode(WIFI_AP_STA);
  WiFi.begin(ssid, password);

  while(WiFi.waitForConnectResult() != WL_CONNECTED){
    WiFi.begin(ssid, password);
    Serial.println("WiFi failed, retrying.");
  }

  MDNS.begin(host);

  httpUpdater.setup(&httpServer);
  httpServer.begin();

  MDNS.addService("http", "tcp", 80);
  Serial.printf("HTTPUpdateServer ready! Open http://%s.local/update in your browser\n", host);
}

void loop(void){
  httpServer.handleClient();
}

然后在偏好設置中的Show verbose output dump選項中選中"Complation"

當固件刷新后,打開串口調(diào)試器就可以看到OTA的更新頁面的地址:

直接在瀏覽器打開該地址:

是不是很丑?而且你是無法進行任何的美化的!

對代碼進行編譯,在最后就會出現(xiàn)便宜后的二進制格式的固件更新文件:

回到瀏覽器點擊"Choose file" 按鈕就可以將固件上傳到ESP8266中去:

更新結(jié)束。

結(jié)論

這種更新模式其實只適用于在開發(fā)期的一些應急的場景,例如:ESP8266已安裝到原型機或者產(chǎn)品內(nèi)且

  1. 無法與電腦相連進行直接的固件刷新。
  2. 無法直接連接更新服務器進行固件更件

這種更新界面是無法提供給最終用戶使用的,因為要進行固件更新的話用戶得先獲得固件的文件,然后還得通過一個非常丑的Web頁面將文件上傳上去。所以說這種方式只能給開發(fā)人員在應急的情況下將就地用一下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容