Este guia rápido mostra como reconectar seu ESP32 a uma rede Wi-Fi após uma desconexão. Isso é útil quando: o ESP32 perde temporariamente o sinal Wi-Fi; o ESP32 está temporariamente fora do alcance Wi-Fi do roteador; o roteador é reiniciado; o roteador perde a conectividade com a Internet ou outras situações.
A função WiFi.reconnect() foi criada para que o ESP32 reconecte a rede WIFI novamente em caso de perda repentina da conexão, e quando o serviço estiver restabelecido e o roteador esteja online novamente, o ESP32 consiga conectar sem a necessidade de reiniciar todo sistema.
Estamos usando a biblioteca WiFi.h que pode ser adquirida no gerenciador de biblioteca da IDE Arduino ou no GitHub, LINK
Código completo para testar no seu ESP32
#include <WiFi.h> const char* ssid = "rede"; const char* password = "senhadarede"; void WiFiStationConnected(WiFiEvent_t event, WiFiEventInfo_t info){ Serial.println("Conectado ao AP com sucesso!"); } /* * Essa função simplesmente imprime o endereço IP no Serial Monitor. */ void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info){ Serial.println("WiFi conectado"); Serial.print("IP : "); Serial.println(WiFi.localIP()); } /* * Essa função imprime uma mensagem indicando que a conexão foi perdida e tenta reconectar: */ void WiFiStationDisconnected(WiFiEvent_t event, WiFiEventInfo_t info){ Serial.println("Desconectado do ponto de acesso WiFi"); Serial.print("WiFi perdeu a conexão. Motivo: "); Serial.println(info.disconnected.reason); Serial.println("Tentando reconectar"); WiFi.begin(ssid, password); } void setup(){ Serial.begin(115200); // delete old config WiFi.disconnect(true); delay(1000); /* * SYSTEM_EVENT_STA_CONNECTED: o ESP32 está conectado em modo estação a um ponto de acesso/hotspot (seu roteador); * SYSTEM_EVENT_STA_DISCONNECTED: a estação ESP32 desconectada do ponto de acesso. */ WiFi.onEvent(WiFiStationConnected, SYSTEM_EVENT_STA_CONNECTED); WiFi.onEvent(WiFiGotIP, SYSTEM_EVENT_STA_GOT_IP); WiFi.onEvent(WiFiStationDisconnected, SYSTEM_EVENT_STA_DISCONNECTED); /* Remove WiFi event Serial.print("WiFi Event ID: "); Serial.println(eventID); WiFi.removeEvent(eventID);*/ WiFi.begin(ssid, password); Serial.println(); Serial.println(); Serial.println("Aguarde pelo WiFi... "); } void loop(){ delay(1000); }
.
Teste realizado na IDE Arduino
Veja na saÃda serial vemos que o ESP32 conectou no WIFI com sucesso exibindo o IP que recebeu do roteador WIFI.
Ao desligar o roteador o programa detectou a falta da conexão com o roteador e exibiu a mensagem na saÃda serial da IDE Arduino. Após religar o roteador o programa detectou o sinal novamente e reconectou no WiFi.