Модуль 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();
}

, 👍0