ESP32 와이파이의 전반적인 내용은 여기 사이트에 있고

https://randomnerdtutorials.com/esp32-useful-wi-fi-functions-arduino/

 

ESP32 Useful Wi-Fi Library Functions (Arduino IDE) | Random Nerd Tutorials

ESP32 Wi-Fi Functions: scan networks, connect to a network, connection strength, connection status, reconnect, Wi-Fi status and modes, IP address, static IP address and more.

randomnerdtutorials.com

 

 

위 사이트에서 와이파이 재연결에 대한 내용은 아래 사이트에 정리되어있다.

https://randomnerdtutorials.com/solved-reconnect-esp32-to-wifi/

 

[SOLVED] Reconnect ESP32 to Wi-Fi Network After Lost Connection | Random Nerd Tutorials

Reconnect your ESP32 to a Wi-Fi network after losing the connection. Reconnect when the ESP32 loses Wi-Fi signal, router restarts, or other situations.

randomnerdtutorials.com

 

여기서 

 

1. 시간 간격과 연결 상태를 비교하여 재연결

2. 와이파이 이벤트 핸들러를 통해 재연결

 

로 2가지 방식이 있다. 

 

 

첫번째 방법은 

 

WiFi.reconnect(); 함수를 사용하는데

loop 문을 계속 돌리면서

시간 개념(interval)이 들어가

메모리 소모가 약간 있을 수 있다.

 

 

두번째 방법은 

 

변화를 감지하면 이벤트 핸들러가 호출되어서

자동으로 작동하기 때문에

loop에서 계산될 필요가 없다.

 

 

보드 : ESP32 Dev Module

 

2번째 방법에 감동하여 아주 약간만 손본 코드이다.

#include <WiFi.h>
 
const char* ssid = "";		//아이디
const char* password = "";	//비밀번호

void WiFiStationConnected(WiFiEvent_t event, WiFiEventInfo_t info){
  Serial.println("Connected to AP successfully!");
}

void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info){
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void WiFiStationDisconnected(WiFiEvent_t event, WiFiEventInfo_t info){
  Serial.println("Disconnected from WiFi access point");
  Serial.print("WiFi lost connection. Reason: ");
  Serial.println(info.disconnected.reason);
  Serial.println("Trying to Reconnect");
  WiFi.begin(ssid, password);
}

void WiFionEvent(){
  WiFi.onEvent(WiFiStationConnected, SYSTEM_EVENT_STA_CONNECTED);
  WiFi.onEvent(WiFiGotIP, SYSTEM_EVENT_STA_GOT_IP);
  WiFi.onEvent(WiFiStationDisconnected, SYSTEM_EVENT_STA_DISCONNECTED);
}

void setup(){
  Serial.begin(115200);
  WiFi.disconnect(true);
  delay(1000);
  WiFionEvent();

  /* Remove WiFi event
  Serial.print("WiFi Event ID: ");
  Serial.println(eventID);
  WiFi.removeEvent(eventID);*/
  WiFi.begin(ssid, password);
  Serial.println("Wait for WiFi... ");
}

void loop(){
  
}

 

결과물

 

+ Recent posts