• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Потеря связи по WiFi

Для измерения параметров в теплице используется плата esp32, которая по запросу от ПК по ip адресу сообщает клиенту (ПК) на браузер параметры среды. Иногда процесс без сбоев длится несколько суток, но иногда связь пропадает. Приходится посещать теплицу и кнопкой reset перезапускать измерения. Существует ли метод, реализуемый на плате, проверки потери связи для ее восстановления (resete32).
 
По моему, вы не поняли вопроса. Я спрашивал о способе или фрагменте программы, работающей на плате, которая периодически проверяет есть ли связь и восстанавливает ее.
 

pvvx

Активный участник сообщества
Спрашиваем у DeepSeek: Пример программы для ESP8266 в Arduino, которая периодически проверяет соединение по WiFi c AP и производит переподключение.
Ответ:

Вот пример программы для ESP8266 в Arduino IDE, которая периодически проверяет соединение с WiFi точкой доступа (AP) и выполняет переподключение при потере соединения:
Код:
#include <ESP8266WiFi.h>

// Настройки WiFi
const char* ssid = "your_SSID";       // Замените на ваш SSID
const char* password = "your_PASSWORD"; // Замените на ваш пароль

// Таймеры для проверки подключения
unsigned long previousMillis = 0;
const unsigned long interval = 10000; // Интервал проверки (10 секунд)

void setup() {
  Serial.begin(115200);
  Serial.println("\nStart");
  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  
  connectToWiFi(); // Первоначальное подключение
}

void loop() {
  unsigned long currentMillis = millis();
  
  // Периодическая проверка соединения
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    
    if (WiFi.status() != WL_CONNECTED) {
      Serial.println("WiFi disconnected! Attempting to reconnect...");
      connectToWiFi();
    } else {
      Serial.println("WiFi connected");
      Serial.print("IP address: ");
      Serial.println(WiFi.localIP());
      Serial.print("RSSI: ");
      Serial.println(WiFi.RSSI());
    }
  }
  
  // Здесь может быть ваш основной код
  // ...
}

void connectToWiFi() {
  Serial.println("Connecting to WiFi...");
  WiFi.disconnect(); // На всякий случай отключаемся
  WiFi.begin(ssid, password);
  
  int attempts = 0;
  while (WiFi.status() != WL_CONNECTED && attempts < 20) {
    delay(500);
    Serial.print(".");
    attempts++;
  }
  
  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("\nConnected!");
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());
  } else {
    Serial.println("\nFailed to connect to WiFi");
  }
}
Как это работает:
  1. При старте модуль пытается подключиться к WiFi
  2. В основном цикле каждые 10 секунд проверяется состояние подключения
  3. Если соединение потеряно, выполняется попытка переподключения
  4. Функция connectToWiFi() содержит логику подключения с таймаутом
Дополнительные улучшения:
  1. Можно добавить светодиодную индикацию состояния
  2. Можно реализовать смену AP если основной недоступен
  3. Можно добавить Deep Sleep при длительном отсутствии соединения
  4. Можно добавить сохранение параметров WiFi в EEPROM
Важные моменты:
  • Не забывайте заменить "your_SSID" и "your_PASSWORD" на реальные данные
  • Интервал проверки можно изменить под свои нужды
  • Количество попыток подключения (20) можно регулировать
Для более надежной работы в реальных проектах стоит добавить обработку различных состояний WiFi (WL_CONNECTED, WL_CONNECT_FAILED, WL_DISCONNECTED и т.д.).


@Владимир Андреевич - Хватит спрашивать и теребить людей на всякую фигню. Пользуйтесь ИИ - заодно научитесь правильно задавать вопросы.
 
Извините, действительно задумывался о том, что использование ИИ закроет форумы! А хочется человеческого общения.
Ну и конечно горизонт фигни у каждого свой!
 

pvvx

Активный участник сообщества
Извините, действительно задумывался о том, что использование ИИ закроет форумы! А хочется человеческого общения.
Ну и конечно горизонт фигни у каждого свой!
Ничего "ИИ" кроме Ардуинщиков не закроет ещё десятки лет. Только очистит от глупых вопросов.
Первыми падут всякие программисты на C++ и других языках высокого уровня, т.к. ИИ эти прослойки созданные для кожаных мешков не нужны. Оптимально писать сразу в код CPU...
 
Сверху Снизу