ESP32 – это микроконтроллер, способный выполнять обновления по беспроводной сети (over-the-air или OTA). OTA-обновления позволяют обновлять прошивку вашего ESP32 по беспроводной сети без необходимости физического подключения его к компьютеру.
Обновления по беспроводной сети (OTA) – это процесс обновления встроенного программного обеспечения устройства по беспроводной сети без необходимости физического подключения его к компьютеру. OTA-обновления полезны, поскольку позволяют обновлять устройство удаленно, а также могут сэкономить время и усилия, устраняя необходимость физического доступа к устройству для выполнения обновления. OTA-обновления обычно используются для устройств, которые установлены в труднодоступных местах или требуют частого обновления, например устройств Интернета вещей (IoT). Для выполнения OTA-обновлений вам необходимо настроить веб-сервер, который обслуживает файл обновления встроенного ПО, и настроить ESP32 для подключения к этому серверу и загрузки файла обновления. Затем вы можете использовать библиотеку ArduinoOTA для выполнения обновления. Рассмотрим пример кода, демонстрирующий, как настроить OTA-обновления на ESP32 с использованием библиотеки ArduinoOTA.
Во-первых, вам нужно будет включить библиотеки ArduinoOTA и WiFi в верхнюю часть вашего скетча:
#include <ArduinoOTA.h>
#include <WiFi.h>
Затем настройте соединение Wi-Fi, вызвав функцию WiFi.begin() и передав имя и пароль вашей сети Wi-Fi:
const char* ssid = "your_wifi_name";
const char* password = "your_wifi_password";
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Инициализируйте библиотеку ArduinoOTA, вызвав функцию ArduinoOTA.begin(). Установите имя хоста и пароль для OTA-обновления с помощью функций ArduinoOTA.setHostname() и ArduinoOTA.setPassword():
ArduinoOTA.setHostname("esp32-ota");
ArduinoOTA.setPassword("password");
Настройте функцию для обработки входящих запросов на обновление OTA с помощью функции ArduinoOTA.onStart():
void handleOTAStart() {
Serial.println("OTA update starting...");
}
ArduinoOTA.onStart(handleOTAStart);
Настройте функцию для обработки хода обновления OTA с помощью функции ArduinoOTA.onProgress():
void handleOTAProgress(unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
}
ArduinoOTA.onProgress(handleOTAProgress);
Настройте функцию для обработки завершения OTA-обновления с помощью функции ArduinoOTA.onEnd():
void handleOTAEnd() {
Serial.println("\nOTA update complete!");
ESP.restart();
}
ArduinoOTA.onEnd(handleOTAEnd);
Наконец, вызовите функцию ArduinoOTA.handle() в основном цикле вашей программы, чтобы прослушивать и обрабатывать запросы на обновление OTA:
void loop() {
ArduinoOTA.handle();
}
Вот и все! Выполнив эти шаги, вы теперь сможете выполнять OTA-обновления на своем ESP32. Не забудьте тщательно протестировать OTA-обновления перед их развертыванием на производственных устройствах. А весь код ниже:
#include <ArduinoOTA.h>
#include <WiFi.h>
const char* ssid = "your_wifi_name";
const char* password = "your_wifi_password";
void handleOTAStart() {
Serial.println("OTA update starting...");
}
void handleOTAProgress(unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
}
void handleOTAEnd() {
Serial.println("\nOTA update complete!");
ESP.restart();
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
ArduinoOTA.begin();
ArduinoOTA.setHostname("esp32-ota");
ArduinoOTA.setPassword("password");
ArduinoOTA.onStart(handleOTAStart);
ArduinoOTA.onProgress(handleOTAProgress);
ArduinoOTA.onEnd(handleOTAEnd);
}
void loop() {
ArduinoOTA.handle();
// Свой код в бесконечном цикле можно писать здесь
}
Резюмируя, в этом коде ESP32 подключается к указанной сети Wi-Fi, а затем инициализирует библиотеку ArduinoOTA. Он устанавливает имя хоста и пароль для OTA-обновления и регистрирует обработчики событий для начала, хода и окончания обновления. Наконец, функция ArduinoOTA.handle() вызывается в основном цикле программы для прослушивания и обработки запросов на обновление OTA.
ESP-WROOM-32 DevKit
Плата ESP-WROOM-32 DevKit на основе популярного Wi-Fi/Bluetooth модуля ESP32