admin管理员组

文章数量:1567245

做了好多玩意儿,想升级程序还得拆机接串口。很是麻烦。所以就研究了一下云端更新固件。别说真得很好用。分享一下程序过程。给有需要得人。

我不用arduino IDE写程序,敲代码太麻烦。我用Mixly拼程序。哈哈!省事。

第一步,用米思器写拼完程序后,复制到arduino IDE 里导出二进制文件 后缀为bin文件。然后复制到你更新得网址站地址。

然后可以在esp8266添加更新条件。如按钮进行判断更新。如blynk添加按钮更新等等。可以随意控制

以下为图片教程+测试源码

程序使用方法为:下载到esp8266后,在串口调试窗口输入“R” 点发送 即可触发更新固件函数。更新状态串口输出

米思器测试程序图

测试源代码:

#include <ESP8266httpUpdate.h>
#include <ESP8266WiFi.h>

String data;
String updateUrl;

void update() {
  WiFiClient client;
  ESPhttpUpdate.setLedPin(LED_BUILTIN, LOW);
  ESPhttpUpdate.onStart(update_started);
  ESPhttpUpdate.onEnd(update_finished);
  ESPhttpUpdate.onProgress(update_progress);
  ESPhttpUpdate.onError(update_error);
  t_httpUpdate_return ret = ESPhttpUpdate.update(client, updateUrl);
}

void update_error(int err) {
  Serial.print(String(" HTTP 升级固件错误或失败!") + String(err));
}

void update_progress(int cur, int totaol) {
  Serial.println(String(String(String(String("正在更新文件") + String(cur)) + String("bit")) + String(totaol)) + String("bytes"));
}

void update_finished() {
  Serial.println("恭喜你,更新固件成功!系统将会重新启动!");
}

void update_started() {
  Serial.println("开始更新固件");
}

void shibai() {
  Serial.println("联网失败!请配网");
}

void setup(){
  data = "";
  updateUrl = "http://www.lnwqh.xyz:8066/update/update.bin";
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  int cnt = 0;
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  if (cnt++ >= 10){
  WiFi.beginSmartConfig();
  while (1) {
  delay(1000);
  if (WiFi.smartConfigDone()) {
  Serial.println();
  Serial.println("SmartConfig: Success");
  break;
  }
  Serial.print("|");
  shibai();//无判断条件:可不创建函数。加判断条件:请创建shibai();。
  }
  }
  }
  WiFi.printDiag(Serial);
  Serial.println(WiFi.localIP());
  Serial.println("网络配置成功。可以上网啦!");
}

void loop(){
  if (Serial.available() > 0) {
    data = Serial.readString();
    if (data == "R") {
      update();

    }

  }

}

有问题留言或加公众号。希望志同道合的伙伴加入
让我们一起学习一起进步。嗨起来!哈哈哈

本文标签: 固件OTAwifiupdate