esp8266 OTA远程、无线升级
2023-03-15 22:07:06 时间
第一步、编译生成.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();//执行升级函数
}
示例二完整程序下载:点击下载
由于固件链接地址是不变的,所以就算重新上传了固件,也可以一直持续向上升级。
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十