ESP8266的OTA升级有两种方式,一种是利用ArduinoOTA库,另一种是通过ESP8266HTTPUpdateServer库。
ArduinoOTA库
使用ArduinoOTA库可以在Arduino IDE内直接进行远程更新。优势的代码简洁,操作方便。
#include <ArduinoOTA.h> //头文件
//setup:
ArduinoOTA.setHostname("ESP8266");
//设置上传名称
ArduinoOTA.setPassword("12345678"); //设置上传密码,这两项可以不写。
ArduinoOTA.begin(); //启动OTA
//loop:
ArduinoOTA.handle(); //持续查看是否有更新请求
在IDE中选择:工具->端口->网络端口
ESP8266HTTPUpdateServer库
该方法较为麻烦,通过服务器和网页进行上传。
#include <ESP8266WiFi.h>
//头文件
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPUpdateServer.h>
ESP8266WebServer httpServer(80);
//定义服务器
ESP8266HTTPUpdateServer httpUpdater;
//setup:
//需要先连接WiFi
httpUpdater.setup(&httpServer);
httpServer.begin(); //开启跟新服务
Serial.print("HTTPUpdateServer ready! Open http://");
//打印网页地址
Serial.print(WiFi.localIP());
Serial.println("/update in your browser");
//loop:
httpServer.handleClient(); //持续查看是否有更新请求
ESP8266会通过串口打印OTA更新的地址
访问该网站,随后可以看到下述内容
然后选择对应的文件,Firmware是更新程序,FileSystem是更新文件。
示例
#include <ESP8266WiFi.h>
#include <ArduinoOTA.h> // OTA库
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPUpdateServer.h>
const char *ssid = "ssid";
const char *password = "password";
ESP8266WebServer httpServer(80);
ESP8266HTTPUpdateServer httpUpdater;
int l=0,t=0;
void setup(void)
{
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
Serial.println();
Serial.println("web OAT:blick v1.0"); // 显示版本
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Connecting...");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);
}
Serial.println();
httpUpdater.setup(&httpServer); // 网页更新固件
httpServer.begin();
Serial.print("HTTPUpdateServer ready! Open http://");
Serial.print(WiFi.localIP());
Serial.println("/update in your browser");
// ArduinoOTA.setHostname("ESP8266");
// ArduinoOTA.setPassword("12345678");
ArduinoOTA.begin();
}
void loop(void)
{
int now = millis();
if (now - l >2000)
{
l=now;
if (t==0) digitalWrite(LED_BUILTIN,HIGH),t=1;
else digitalWrite(LED_BUILTIN,LOW),t=0;
}
httpServer.handleClient();
ArduinoOTA.handle();
}
Comments | NOTHING