Модуль ESP32 DEV с фиксированным IP-адресом и OTA
Я пытался использовать OTA на ESP32 с фиксированным IP-адресом.
Я использую библиотеку ArduinoOTA: arduino-esp32/libraries/ArduinoOTA at master · espressif/arduino-esp32 · GitHub
В коде OTA без фиксированного IP_Adress работает хорошо. Предоставление фиксированного IP-адреса внутри кода также работает хорошо.
Только если я объединим два OTA с фиксированным IP-адресом, больше невозможно будет выбрать порт в IDE и получить доступ к плате ESP.
Я не хочу использовать и позволять DHCP-серверу в моем маршрутизаторе устанавливать IP-адрес.
Следует коду, который я использую
Заранее спасибо за помощь.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
const char *ssid = "_ _ _";
const char *password = "_ _ _";
#define OLED_ADDR 0x3C
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define SSD1306_NO_SPLASH
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Static definition IP-Adress-------------------------------
IPAddress staticIP(192, 168, 1, 111);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 1, 1);
void setup() {
Serial.begin(115200);
delay(500);
// Static definition IP-Adress-------------------------------
if (WiFi.config(staticIP, gateway, subnet, dns, dns) == false) {
Serial.println("Configuration failed.");
}
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
ArduinoOTA
.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH)
type = "sketch";
else // U_SPIFFS
type = "filesystem";
Serial.println("Start updating " + type);
})
.onEnd([]() {
Serial.println("\nEnd");
})
.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
})
.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();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(30, 20);
display.println(F("Starting"));
display.display();
delay(1000);
}
void loop() {
ArduinoOTA.handle();
display.clearDisplay();
display.setTextSize(1);
display.setCursor(20, 20);
display.println("IP-Adress:");
display.setCursor(20, 30);
display.println(WiFi.localIP());
display.display();
}
@Carlos Costa, 👍0
0
Смотрите также:
- Почему OTA не работает с платой ESP32-CAM Ai-Thinker?
- ОТА-программа SPIFFS на ESP8266
- Чтение текста построчно с SD
- Esp32: совместим ли OTA с FREERTOS
- Arduino создает массив Json с двойными значениями и 2 десятичными знаками
- Обновление ESP32 OTA через MQTT с помощью "update.h"
- ESP32, ArduinoOTA.h, LittleFS.h и загрузка файлов данных по OTA
- Обновление OTA для ESP32 в Arduino ide от другой новой разработки