оптемезируй код улучши его и убери задержки #include <WiFi.h>  // Для ESP32/ESP8266. Замените на <WiFiNINA.h>, если используете другую плату.

//////////////////////////
// Настройки WiFi
//////////////////////////

const char* WIFI_SSID     = "TERRA";          // Название вашей WiFi сети
const char* WIFI_PASSWORD = "ae2w4b9w";       // Пароль от вашей WiFi сети

//////////////////////////
// Настройки TCP-сервера
//////////////////////////

const int SERVER_PORT = 8080;                 // Порт, на котором будет работать сервер

//////////////////////////
// Определение пинов для моторов
//////////////////////////

const int IN1 = 4;
const int IN2 = 5;
const int IN3 = 6;
const int IN4 = 7;

//////////////////////////
// Инициализация сервера
//////////////////////////

WiFiServer server(SERVER_PORT);

void setup() {
  // Инициализация серийного порта для отладки
  Serial.begin(9600);
  delay(10); // Задержка для стабилизации
  Serial.println();
  Serial.println("Arduino: TCP SERVER");

  // Настройка пинов как выходы и установка их в LOW (отключены)
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  stop();  // Остановка моторов при старте

  // Подключение к WiFi сети
  Serial.print("Подключение к WiFi сети: ");
  Serial.println(WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

  // Ожидание подключения
  int retryCount = 0;
  while (WiFi.status() != WL_CONNECTED) {
    delay(50);
    Serial.print(".");
    retryCount++;
    if (retryCount > 60) { // Через 30 секунд прерываем попытку
      Serial.println();
      Serial.println("Не удалось подключиться к WiFi сети.");
      // Можно добавить повторную попытку подключения или перезагрузку устройства
      // Например, перезагрузка:
      // ESP.restart();
      return;
    }
  }

  // Успешное подключение
  Serial.println();
  Serial.println("WiFi подключен!");
  Serial.print("Локальный IP-адрес: ");
  Serial.println(WiFi.localIP());

  // Запуск TCP-сервера
  server.begin();
  Serial.print("TCP сервер запущен на порту ");
  Serial.println(SERVER_PORT);
}

void loop() {
  // Проверка наличия новых клиентов
  WiFiClient client = server.available();
  if (client) {
    Serial.println("Новый клиент подключен!");

    while (client.connected()) {
      if (client.available()) {
        String command = client.readStringUntil('\n'); // Чтение команды до символа перевода строки
        command.trim(); // Удаление пробелов и символов новой строки
        Serial.print("Получена команда: ");
        Serial.println(command);

        // Обработка команды
        if (command == "w") {
          forward();
          client.println("Вперед");
        }
        else if (command == "s") {
          backward();
          client.println("Назад");
        }
        else if (command == "a") {
          left();
          client.println("Налево");
        }
        else if (command == "d") {
          right();
          client.println("Направо");
        }
        else if (command == "stop") {
          stop();
          client.println("Стоп");
        }
        else if (command == "ip") {
          // Команда для получения текущего IP-адреса Arduino
          client.print("Текущий IP: ");
          client.println(WiFi.localIP());
        }
        else {
          client.println("Неизвестная команда");
        }
      }
    }

    // Отключение клиента после завершения
    client.stop();
    Serial.println("Клиент отключен.");
  }
}

//////////////////////////
// Функции Управления Моторами
//////////////////////////

// Функция для движения вперёд
void forward() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  Serial.println("Движение вперёд");
}

// Функция для движения назад
void backward() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  Serial.println("Движение назад");
}

// Функция для поворота налево
void left() {
  digitalWrite(IN1, LOW);  // Левый мотор остановлен
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH); // Правый мотор вперёд
  digitalWrite(IN4, LOW);
  Serial.println("Поворот налево");
}

// Функция для поворота направо
void right() {
  digitalWrite(IN1, HIGH); // Левый мотор вперёд
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);  // Правый мотор остановлен
  digitalWrite(IN4, LOW);
  Serial.println("Поворот направо");
}

// Функция для остановки
void stop() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  Serial.println("Остановка");
}