Здравствуйте уважаемые коллеги
такая вот хрень непонятная. какое то время назад на еспэшке вайфай стал странно себя вести. посте прошивки или холодного старта не подключается (в примере бегут точки). после программного или кнопочного ресета взлетает соколом. некоторое время терпел , теперь кручу и так и эдак всё едино…
вставил некоторые свои заморочки в код из примера для иллюстрации
ПРИМЕР
#include <WiFi.h>
const char* ssid1 = "SSID_name";
const char* password1 = "MY_COOL_PWD";
IPAddress ip1(192, 168, 8, 200);
IPAddress gateway1(192, 168, 8, 1);
IPAddress subnet1(255, 255, 0, 0);
IPAddress ip(192, 168, 8, 100);
const int GMT_offset = +2;
const char* host = "example.com";
const char* url = "/index.html";
IPAddress dns(1, 1, 1, 1);
void setup()
{
Serial.begin(115200);
if (!WiFi.config(ip1, gateway1, subnet1, dns)) {
Serial.println("STA Failed to configure");
}
Serial.print("Connecting to ");
Serial.println(ssid1);
WiFi.begin(ssid1, password1);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.print("ESP Mac Address: ");
Serial.println(WiFi.macAddress());
Serial.print("Subnet Mask: ");
Serial.println(WiFi.subnetMask());
Serial.print("Gateway IP: ");
Serial.println(WiFi.gatewayIP());
Serial.print("DNS: ");
Serial.println(WiFi.dnsIP());
}
void loop()
{
delay(5000);
Serial.print("connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
Serial.print("Requesting URL: ");
Serial.println(url);
// This will send the request to the server
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Read all the lines of the reply from server and print them to Serial
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
}
Непомогло
Я обычно делал
WiFi.mode(WIFI_OFF);
delay(1000);
WiFi.mode(WIFI_STA);
И дальше бегин и все остальное, но оно перестало помогать
Что с этим, что без этого, все равно со второго запуска
Вот и я думаю а чем ESP.restart отличается от рестарта после перепрошивки, или холодный пуск от нажимания кнопки ресет. И почему проц запускается, не работает нормально только коннект к вайфай.
Нет у меня сейчас ни деталей, ни паяльника нормального.
Учитывая, что если за два периода ожидания не приконнектилось, то уже и не взлетит, то на третьем я делаю программный рестарт и все цепляется после него. Но это костыль
Выглядит так, как будто отъехал конденсатор, после первого запуска он нагревается и начинает работать(кандëр нагревом можно временно восстановить) или ещë какая-то деталь, которая от нагрева восстанавливается и начинает работать.
Оно то да, но ведь криво? А должно быть все прекрасно
Причем два года на этой плате и этом роутере и в этой стране все работало сразу, а теперь и внезапно только после пререзагрузки.
Обновил пакет для esp32с 1.0.6 на 3.0.последний. Пришлось поковыряться с разными мелочами, в основном связанными с работой тфт экрана.
Однако! Проблема с коннектом со второго старта осталась.
inspiritus а вот это зря, ставьте 2.0.17 если esp32… иначе запаритесь потом каждый проект править… проблему не решит наверное, но от гемороя в будущем спасет)))
Дык я это и делаю. Только с таймаутом в 3 секунды, исходя из практической статистики. Просто старт удлиняется, хочется от этого избавиться. Причем иногда, по непонятным причинам стартует сразу.
Ужасно интересно, все то, то неизвестно