ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
5 декабря
1558016 Топик полностью
SciFi (Вчера, 14:20, просмотров: 74) ответил Лaгyнoв на а как мне wifi настроить и TCP-подключение?
На такие вопросы хорошо отвечает тот же Грок. 

WIFI модуль на ESP8266. Как мне wifi настроить и TCP-подключение без AT команд?


Чтобы настроить Wi-Fi и работать с TCP-соединением на ESP8266 без использования AT-команд, нужно программировать сам микроконтроллер напрямую — то есть прошить в него свою программу (скетч) на C++ через Arduino IDE, PlatformIO, ESP-IDF или другие среды.

Самый простой и популярный способ — использовать Arduino Core for ESP8266. Ниже полный рабочий пример: подключение к Wi-Fi как клиент (station) и создание TCP-клиента (например, подключение к серверу по IP и порту).

1. Установка Arduino IDE + ESP8266


Открой Arduino IDE → Файл → Настройки

В поле «Дополнительные ссылки для менеджера плат» добавь:

https://arduino.esp8266.com/stable/package_esp8266com_index.json

Инструменты → Плата → Менеджер плат → ищи «esp8266» → установи последнюю версию.

Выбери свою плату (NodeMCU 1.0, Wemos D1 mini и т.д.) и порт.


2. Пример кода: Wi-Fi + TCP-клиент (без AT-команд)

#include <ESP8266WiFi.h>

// ================= НАСТРОЙКИ =================
const char* ssid     = "ТВОЯ_ТОЧКА_ДОСТУПА";
const char* password = "ТВОЙ_ПАРОЛЬ";

const char* server_ip   = "192.168.1.100";  // IP сервера, к которому подключаемся
const uint16_t server_port = 12345;         // порт сервера
// =============================================

WiFiClient client;  // Это и есть наш TCP-клиент

void setup() {
  Serial.begin(115200);
  delay(10);

  // Подключаемся к Wi-Fi
  Serial.println();
  Serial.print("Подключение к ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);         // режим клиента (Station)
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("Wi-Fi подключён!");
  Serial.print("IP адрес: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // Пытаемся подключиться к TCP-серверу каждые 10 секунд
  if (!client.connected()) {
    Serial.println("Пытаемся подключиться к серверу...");
    if (client.connect(server_ip, server_port)) {
      Serial.println("Подключено к серверу!");
      client.println("Привет от ESP8266!");  // отправляем что-нибудь
    } else {
      Serial.println("Не удалось подключиться :(");
      delay(5000);
      return;
    }
  }

  // Если есть данные от сервера — читаем
  while (client.available()) {
    char c = client.read();
    Serial.write(c);
  }

  // Отправляем данные раз в 5 секунд (пример)
  static uint32_t lastSend = 0;
  if (millis() - lastSend > 5000) {
    lastSend = millis();
    if (client.connected()) {
      client.printf("Время работы: %lu мс\n", millis());
    }
  }

  delay(10);
}

3. Если нужен TCP-сервер (чтобы ESP8266 принимал подключения)

#include <ESP8266WiFi.h>

const char* ssid = "ТВОЯ_ТОЧКА";
const char* password = "ПАРОЛЬ";

WiFiServer server(12345);   // сервер на порту 12345
WiFiClient client;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) delay(500);
  Serial.println(WiFi.localIP());

  server.begin();
  server.setNoDelay(true);
}

void loop() {
  if (!client.connected()) {
    client = server.available();  // ждём нового клиента
    if (client) {
      Serial.println("Новый клиент подключился");
    }
  }

  if (client && client.connected()) {
    if (client.available()) {
      String line = client.readStringUntil('\n');
      Serial.println("Получено: " + line);
      client.println("Эхо: " + line);
    }
  }
}


4. Полезные функции (Arduino ESP8266)




5. Альтернативы Arduino


Если захочется больше производительности и гибкости:

PlatformIO + Arduino core (то же самое, но удобнее)

ESP-IDF (официальный фреймворк Espressif, на чистом C)

MicroPython / CircuitPython — можно писать на Python без AT-команд

Но для 95 % задач Arduino core — самый быстрый и простой старт.

Заливай скетч, открывай Serial Monitor на 115200 — и всё будет работать без единой AT-команды. Удачи! 🚀

ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้