从零开始的ESP8266探索(14)-OTA Updates功能说明与记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Naisu_kun/article/details/85706511

目的

OTA Updates,简单来说就是通过无线网进行固件的升级功能,类似于我们手机系统的更新,作为后期需要持续维护升级的产品来说该功能也是比较重要的。

参考说明

Arduino for esp8266中共有三种OTA Updates方式,一种通过Arduino IDE进行、一种通过浏览器进行,还有一种通过ESP8266模块自己去访问放在网络上的固件实现升级。其本质实现都一样,就是把新的固件数据下载放到闪存中,然后将闪存中的新固件数据移动到程序区域,相当于新固件覆盖了旧固件。
官方说明:https://arduino-esp8266.readthedocs.io/en/latest/ota_updates/readme.html#
https://github.com/esp8266/Arduino/tree/master/libraries/ArduinoOTA
https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer/examples/WebUpdate
https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266httpUpdate

使用示例

这里仅演示通过浏览器升级的方式,先用串口将下面代码上传到ESP8266模块中:

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

const char *ssid = "********"; //你要连接的网络
const char *password = "********"; //连接的网络密码

ESP8266WebServer webServer(80);
ESP8266HTTPUpdateServer httpUpdater;

void setup(void)
{
    Serial.begin(115200);
    Serial.println();

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
        Serial.print(".");
    }
    Serial.print("Connected, IP address: ");
    Serial.println(WiFi.localIP());

    httpUpdater.setup(&webServer); //httpUpdater绑定到webServer上
    webServer.begin(); //启用WebServer

    Serial.println("first time");
}

void loop(void)
{
    webServer.handleClient(); //处理http事务
}

上传结束后将Serial.println("first time");一行改为Serial.println("second time");,然后Arduino IDE中选择项目->导出已编译的二进制文件,等待导出完成就可以进行测试了:
在这里插入图片描述
在第一次使用Arduino IDE上传结束后需要重启模块,不然会出现上图中的error提示;

总结

使用OTA Updates可以不需要物理连接线对设备固件进行更新,方便了产品的后期维护升级。

猜你喜欢

转载自blog.csdn.net/Naisu_kun/article/details/85706511