ESP8266 OTA上传程序 – ArduinoOTA库

1、通过数据线上传程序
#include <ESP8266WiFi.h>
#include <ArduinoOTA.h>

//设置Wifi接入信息
const char* ssid = "AAAA";
const char* password = "12345678";

void setup() {
  Serial.begin(9600);            
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);    //设置ESP8266工作模式为无线终端模式
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  //OTA设置并启动
  ArduinoOTA.setHostname("ESP8266");
  ArduinoOTA.setPassword("12345678");
  ArduinoOTA.begin();
  
  Serial.println("OTA ready");
}
void loop() {
  ArduinoOTA.handle();
}
2、程序上传后,重新启动 Arduino IDE,通过 Arduino IDE 正确选择 ESP8266 的 OTA端口。

3、点击 Arduino IDE 的”上传”按钮后,Arduino IDE 将会弹出对话框让用户输入 OTA上传密码。完成密码输入后,您将看到程序开始上传。程序上传结束后,ESP8266 将会自动重启开发板,新的程序也将在重启后开始运行。


OTA的局限性:
    1、程序占用空间变大。在OTA上传新程序过程中, ESP8266开发板将会保持旧程序的运行。这将导致ESP8266开发板的程序占用空间翻倍。假如您的程序非常复杂,占用空间很大,那么使用OTA上传就不太适合了。

    2、Arduino IDE无法通过OTA端口与开发板进行串口通讯。当 Arduino IDE 的上传端口选为“网络端口”,Arduino IDE 将无法获取ESP8266的串口通讯数据。不过 ESP8266 的串口通讯并不会因为OTA功能而受到影响。换句话说,您可以使用其它电脑串口通讯软件,如Putty等,来实现 ESP8266 与电脑之间的串口通讯。

    3、使用OTA上传程序的电脑与ESP8266必须连接同一WiFi。