前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >esp8266 OTA远程、无线升级

esp8266 OTA远程、无线升级

原创
作者头像
巴法
修改2021-11-21 13:11:59
2K0
修改2021-11-21 13:11:59
举报
文章被收录于专栏:巴法

第一步、编译生成.bin升级固件

本教程需要用到 arduino IDE的esp8266开发环境,关于arduino IDE 的ESP8266环境配置可参考:环境配置: 点击跳转

如果已安装好esp8266 开发环境,继续:

使用arduino IDE软件,打开随便一个需要升级的程序,点击「项目」-「导出已编译的二进制文件」即可生成.bin固件,如下图。

ota20211120.png
ota20211120.png

生成的固件在程序所在文件夹中如下图所示:

ota2021112001.png
ota2021112001.png

第二步、上传.bin固件到巴法云

在巴法云控制台 ,点击跳转,随便新建个主题,例如 主题 light002,如下图所示:

ota20211120002.png
ota20211120002.png

然后点击OTA,如下图所示:

ota20211120003.png
ota20211120003.png

进去后,点击上传固件,找到刚刚生成的固件上传即可,上传后复制固件链接,如下图:

ota20211120006.png
ota20211120006.png

第三步、远程升级

唯一的要求:等待升级的esp8266有网就行。

示例一:

最简单测试版本:

程序流程讲解:开机-->等待联网-->成功联网-->升级。

如下:

代码语言:txt
复制
#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,执行升级函数

代码语言:txt
复制
   if(getMsg  == "on"){       //如果收到指令on==打开灯
     turnOnLed();
   }else if(getMsg == "off"){ //如果收到指令off==关闭灯
      turnOffLed();
    }else if(getMsg == "update"){  //如果收到指令update
      updateBin();//执行升级函数
    }

示例二完整程序下载:点击下载

由于固件链接地址是不变的,所以就算重新上传了固件,也可以一直持续向上升级。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步、编译生成.bin升级固件
  • 第二步、上传.bin固件到巴法云
  • 第三步、远程升级
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档