Энергосбережение ESP 8266 на Wemos mini D1

kinguf

✩✩✩✩✩✩✩
11 Мар 2024
2
0
Использую следующий код для подключению к WIFI, но подключение идет около 5 секунд, нет ли более быстрого решения?
Нужно в связи питанием его от батареи

код:
#include <ESP8266WiFi.h>

const char* ssid = "YourNetworkName";
const char* password = "YourNetworkPassword";
IPAddress staticIP(192, 168, 1, 100); // Задайте статический IP-адрес
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

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

  // Connect to Wi-Fi with static IP
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.config(staticIP, gateway, subnet);
  WiFi.begin(ssid, password);

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

  Serial.println("");
  Serial.println("Wi-Fi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // Код для выполнения в цикле, если это необходимо
}
после этого в коде будет еще сон и пробуждение каждые 10 мин и отправка в MQTT на брокер значений измеренных температур
 

Сотнег

★★★★★★★
15 Янв 2020
4,407
1,509
@kinguf,
вероятно, на разных версиях ядра будет разный результат.
Если будете выяснять, поделитесь!

Можно перед попытками соединения вставить delay на какое-то время бесполезных попыток.
Вроде бы, это должно снизить энергопотребление.

И вы ведь потом удалите все эти Serial.print, Serial.begin?
Стоило окружить их в #IFDEF.
 
  • Лойс +1
Реакции: kinguf

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Код не удачный. Сам начинал с такого.
Если отвалится сеть, то будет бесконечный цикл подключения, и хуже всего то, что если он будет достаточно долго, то есп не сможет подключиться к сети даже при восстановлении связи (проверено неоднократно на есп8266 и есп32)
Для оптимизации я бы сейчас сделал так: включил режим подключения к сети, включил датчик температуры, получил бы данные, и уже тут ожидать подключение , но не более 10 циклов. (исходя из задержки в 500мс и 5сек на подключение). И далее уже если подключилось, то передавать значения, а что делать если нет - Вам решать, я у себя просто игнорирую и ухожу в сон.
1710176571503.png
Хорошо, если при включении не будет работать USB-TTL, это позволит сэкономить батарейку.
 

kinguf

✩✩✩✩✩✩✩
11 Мар 2024
2
0
Учту рекомендации, после отладки тогда буду отключать порт
C++:
Serial.end();  // Закрывает последовательный порт, отключая USB-TTL
на время наладки все выводы в порт заключу в конструкцию #IFDEF .

с другого форума подсказали добавить
C++:
if ((WiFi.SSID() == my_ssid) && (WiFi.psk() == my_password))
{
  WiFi.begin();
}
не знаю почему, но с этой конструкцией connect с WIFI уменьшается с 5сек до 1.4сек