ArduinoOTA 库是一个库,它允许无线 Wi-Fi 更新 Arduino 程序(以及 ESP3226、ESP32)。开发连接对象时,它是一个基本库。它允许更新程序,而无需拆卸微控制器(Arduino,ESP8266,ESP32)将其连接到他的电脑。 这个库最初是为了更新 Arduino 程序而开发的,ESP8266 和 ESP32 是完全支持的。
对于本教程,我们将仅讨论 ESP8266。
ArduinoOTA 库被集成到 ESP8266 库中,而不需要额外的安装。如果你是 ESP 的新手,那么下面是如何安装 ESP 库和支持。从 Arduino 菜单打开首选项(preferences),并添加到这个包的列表:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
然后转到对应的管理器并查找 esp8266,然后单击安装。
安装完成后,新的示例将会添加到示例菜单中。选择您的 ESP8266 来显示可用的示例。在 ArduinoOTA 子菜单中打开 BasicOTA 示例。
该程序,包含您在 ESP 项目中管理无线升级所需的一切。
#include <esp8266wifi.h>
#include <esp8266mdns.h>
#include <wifiudp.h>
#include <arduinoota.h>
const char* ssid = "..........";
const char* password = "..........";
void setup() {
Serial.begin(115200);
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
// Port defaults to 8266
// ArduinoOTA.setPort(8266);
// Hostname defaults to esp8266-[ChipID]
ArduinoOTA.setHostname("Demo OTA ESP8266");
// No authentication by default
ArduinoOTA.setPassword((const char *)"123");
ArduinoOTA.onStart([]() {
Serial.println("Start");
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
else if (error == OTA_END_ERROR) Serial.println("End Failed");
});
ArduinoOTA.begin();
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
ArduinoOTA.handle();
}
在烧录程序之前,请更改 ssid 变量(要连接的Wi-Fi网络)和密码(密码)。
在这里,程序使用 ESP8266WiFi 库来连接到网络。您也可以使用前面介绍的 WiFiManager 库。
建立连接后,可以定义其他(可选)参数:
在以下情况下,还有其他四种方法可以连接处理:
在大多数情况下,您不需要添加其它东西。特别是,这些功能已经能使我们能够,随时了解操作的进行情况。
在设置结束时,一旦所有功能定义完成,通过调用 begin()
方法启动无线更新支持。
最后,对于所有的工作,都需要在 loop()
循环中调用 ArduinoOTA.handle()
方法。
上传程序并打开终端,确认 ESP8266 已正确连接到 Wi-Fi 网络。
Arduino IDE 会自动检测支持远程更新的设备。它们被添加到名为 “Network ports” 的新区域中的端口列表中。
> 似乎在版本 1.8.x 的 Arduino IDE 中带有一个防止设备更新的错误。如果您的 ESP 在启动 ESP 后几秒钟内没有出现,请重新启动 Arduino IDE。
要更新程序,只需选择 ESP 作为端口,而不是日常的串行端口。然后照常上传程序。在这里,由于需要密码,IDE中会出现一个输入窗口。它只会被要求一次:
远程更新的远程更新(或失败),可以直接从 Arduino IDE 进行跟踪。
无线设置打开串口监视器是不可能的。一个小的 Web 界面将会是必需的。你可以阅读教程:ESP8266: Understanding Web Server programming with Arduino code,以了解如何将 Web 服务器和 HTML 界面添加到 ESP8266 项目。
原文链接:ArduinoOTA: Wireless Update (OTA) from the Arduino IDE of ESP8266 Programs
观光\评论区