第一步、編譯生成.bin升級固件
本教程需要用到 arduino IDE的esp8266開發環境,關於arduino IDE 的ESP8266環境配置可參考:環境配置: 點擊跳轉
如果已安裝好esp8266 開發環境,繼續:
使用arduino IDE軟件,打開隨便一個需要升級的程序,點擊「項目」-「導出已編譯的二進制文件」即可生成.bin固件,如下圖。
生成的固件在程序所在文件夾中如下圖所示:
第二步、上傳.bin固件到巴法雲
在巴法雲控制台 ,點擊跳轉,隨便新建個主題,例如 主題 light002,如下圖所示:
然后點擊OTA,如下圖所示:
進去后,點擊上傳固件,找到剛剛生成的固件上傳即可,上傳后復制固件鏈接,如下圖:
第三步、遠程升級
唯一的要求:等待升級的esp8266有網就行。
示例一:
最簡單測試版本:
程序流程講解:開機-->等待聯網-->成功聯網-->升級。
如下:
#include <ESP8266WiFi.h>
#include <ESP8266httpUpdate.h>
/******需要修改的地方****************/
#define wifi_name "newhtc" //WIFI名稱,區分大小寫,不要寫錯
#define wifi_password "qq123456" //WIFI密碼
//固件鏈接,在巴法雲控制台復制、粘貼到這里即可
String upUrl = "http://bin.bemfa.com/b/3BcN2Q1NGY4NWFmNDI5NzZlZTNjMjY5M2U2OTJhNmJiNTk=light002.bin";
/**********************************/
/**
* 主函數
*/
void setup() {
Serial.begin(115200); //波特率115200
WiFi.begin(wifi_name, wifi_password); //連接wifi
while (WiFi.status() != WL_CONNECTED) { //等待連接wifi
delay(500);
Serial.print(".");
}
Serial.println("start update");
updateBin(); //開始升級
}
/**
* 循環函數
*/
void loop() {
}
/**
* 固件升級函數
* 在需要升級的地方,加上這個函數即可,例如setup中加的updateBin();
* 原理:通過http請求獲取遠程固件,實現升級
*/
void updateBin(){
WiFiClient UpdateClient;
t_httpUpdate_return ret = ESPhttpUpdate.update(UpdateClient, upUrl);
switch(ret) {
case HTTP_UPDATE_FAILED: //當升級失敗
Serial.println("[update] Update failed.");
break;
case HTTP_UPDATE_NO_UPDATES: //當無升級
Serial.println("[update] Update no Update.");
break;
case HTTP_UPDATE_OK: //當升級成功
Serial.println("[update] Update ok.");
break;
}
}
示例二:
采用遠程指令控制是否升級,可先了解遠程控制燈的程序,
例如通過app控制esp8266開關燈:點擊跳轉
app采用發送on、off的指令,當esp8266收到on,執行開燈,當esp8266收到off,執行關燈。如果開關燈沒問題,我們當然也可以發生其他指令,我們可以隨便假設個指令,讓esp8266收到該指令,執行固件升級即可。
例如收到指令update,執行升級函數
if(getMsg == "on"){ //如果收到指令on==打開燈
turnOnLed();
}else if(getMsg == "off"){ //如果收到指令off==關閉燈
turnOffLed();
}else if(getMsg == "update"){ //如果收到指令update
updateBin();//執行升級函數
}
示例二完整程序下載:點擊下載
由於固件鏈接地址是不變的,所以就算重新上傳了固件,也可以一直持續向上升級。