Reconectando o WIFI no microcontrolador ESP32 em perda da conexão

Programação

wifi-reconectando


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.

teste wifi esp32 ide arduino

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.

teste na ide arduino reconectando no wifi

Fonte
Equipe SuaDica
Mais Dicas